diff --git a/apiserver/plane/app/views/workspace/base.py b/apiserver/plane/app/views/workspace/base.py index 35c77faf95..662cd32263 100644 --- a/apiserver/plane/app/views/workspace/base.py +++ b/apiserver/plane/app/views/workspace/base.py @@ -2,8 +2,10 @@ import csv import io from datetime import date - +import requests from dateutil.relativedelta import relativedelta + +# Django imports from django.db import IntegrityError from django.db.models import ( Count, @@ -15,8 +17,6 @@ from django.db.models import ( ) from django.db.models.fields import DateField from django.db.models.functions import Cast, ExtractDay, ExtractWeek - -# Django imports from django.http import HttpResponse from django.utils import timezone @@ -49,6 +49,7 @@ from django.views.decorators.cache import cache_control from django.views.decorators.vary import vary_on_cookie from plane.utils.constants import RESTRICTED_WORKSPACE_SLUGS from plane.payment.bgtasks.member_sync_task import member_sync_task +from django.conf import settings class WorkSpaceViewSet(BaseViewSet): @@ -167,6 +168,33 @@ class WorkSpaceViewSet(BaseViewSet): path="/api/users/me/settings/", multiple=True, user=False ) def destroy(self, request, *args, **kwargs): + # Get the workspace + workspace = self.get_object() + + # Fetch the workspace subcription + if settings.PAYMENT_SERVER_BASE_URL: + # Make a cancel request to the payment server + response = requests.post( + f"{settings.PAYMENT_SERVER_BASE_URL}/api/subscriptions/check/", + headers={ + "content-type": "application/json", + "x-api-key": settings.PAYMENT_SERVER_AUTH_TOKEN, + }, + json={"workspace_id": str(workspace.id)}, + ) + # Check if the response is successful + response.raise_for_status() + # Return the response + response = response.json() + # Check if the response contains the product key + if response.get("subscription_exists"): + return Response( + {"error": "workspace has active subscription"}, + status=status.HTTP_400_BAD_REQUEST, + ) + else: + # Delete the workspace + return super().destroy(request, *args, **kwargs) return super().destroy(request, *args, **kwargs) diff --git a/apiserver/plane/app/views/workspace/member.py b/apiserver/plane/app/views/workspace/member.py index 191ad07cad..addd047c5a 100644 --- a/apiserver/plane/app/views/workspace/member.py +++ b/apiserver/plane/app/views/workspace/member.py @@ -146,6 +146,8 @@ class WorkSpaceMemberViewSet(BaseViewSet): if serializer.is_valid(): serializer.save() + # Sync workspace members + member_sync_task.delay(slug) return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) diff --git a/apiserver/plane/ee/urls/app/ai.py b/apiserver/plane/ee/urls/app/ai.py index b5fa5aa1d7..b212bf9704 100644 --- a/apiserver/plane/ee/urls/app/ai.py +++ b/apiserver/plane/ee/urls/app/ai.py @@ -1,7 +1,7 @@ # Django imports from django.urls import path -from plane.ee.views import RephraseGrammarEndpoint +from plane.ee.views.app import RephraseGrammarEndpoint urlpatterns = [ diff --git a/apiserver/plane/ee/urls/app/cycle.py b/apiserver/plane/ee/urls/app/cycle.py index e8ac4daae1..2613fd9dc9 100644 --- a/apiserver/plane/ee/urls/app/cycle.py +++ b/apiserver/plane/ee/urls/app/cycle.py @@ -1,6 +1,6 @@ from django.urls import path -from plane.ee.views import ( +from plane.ee.views.app import ( WorkspaceActiveCycleEndpoint, ) diff --git a/apiserver/plane/ee/urls/app/issue.py b/apiserver/plane/ee/urls/app/issue.py index 89a3ce9071..b74bf68ba4 100644 --- a/apiserver/plane/ee/urls/app/issue.py +++ b/apiserver/plane/ee/urls/app/issue.py @@ -1,18 +1,18 @@ from django.urls import path -from plane.ee.views import ( +from plane.ee.views.app import ( BulkIssueOperationsEndpoint, BulkArchiveIssuesEndpoint, - BulkSubscribeIssuesEndpoint + BulkSubscribeIssuesEndpoint, ) urlpatterns = [ - path( + path( "workspaces//projects//bulk-operation-issues/", BulkIssueOperationsEndpoint.as_view(), name="bulk-operations-issues", ), - path( + path( "workspaces//projects//bulk-archive-issues/", BulkArchiveIssuesEndpoint.as_view(), name="bulk-archive-issues", diff --git a/apiserver/plane/ee/views/app/__init__.py b/apiserver/plane/ee/views/app/__init__.py index e69de29bb2..5cd5ace194 100644 --- a/apiserver/plane/ee/views/app/__init__.py +++ b/apiserver/plane/ee/views/app/__init__.py @@ -0,0 +1,7 @@ +from plane.ee.views.app.ai import RephraseGrammarEndpoint +from plane.ee.views.app.cycle import WorkspaceActiveCycleEndpoint +from plane.ee.views.app.issue import ( + BulkIssueOperationsEndpoint, + BulkArchiveIssuesEndpoint, + BulkSubscribeIssuesEndpoint, +) diff --git a/apiserver/plane/ee/views/app/cycle/active_cycle.py b/apiserver/plane/ee/views/app/cycle/active_cycle.py index 2a0cbc8440..e084de36ea 100644 --- a/apiserver/plane/ee/views/app/cycle/active_cycle.py +++ b/apiserver/plane/ee/views/app/cycle/active_cycle.py @@ -21,6 +21,10 @@ from django.contrib.postgres.aggregates import ArrayAgg from django.contrib.postgres.fields import ArrayField # Module imports +from plane.db.models import Cycle, UserFavorite, Issue, Label, User, Project +from plane.utils.analytics_plot import burndown_plot + +# ee imports from plane.ee.views.base import BaseAPIView from plane.ee.permissions import ( WorkspaceUserPermission, @@ -28,8 +32,8 @@ from plane.ee.permissions import ( from plane.ee.serializers import ( WorkspaceActiveCycleSerializer, ) -from plane.db.models import Cycle, UserFavorite, Issue, Label, User, Project -from plane.utils.analytics_plot import burndown_plot +from plane.payment.flags.flag_decorator import check_feature_flag +from plane.payment.flags.flag import FeatureFlag class WorkspaceActiveCycleEndpoint(BaseAPIView): @@ -232,6 +236,7 @@ class WorkspaceActiveCycleEndpoint(BaseAPIView): ) return results + @check_feature_flag(FeatureFlag.WORKSPACE_ACTIVE_CYCLES) def get(self, request, slug): favorite_subquery = UserFavorite.objects.filter( diff --git a/apiserver/plane/ee/views/app/issue/bulk_operations.py b/apiserver/plane/ee/views/app/issue/bulk_operations.py index dfcb7cc569..5dd998c026 100644 --- a/apiserver/plane/ee/views/app/issue/bulk_operations.py +++ b/apiserver/plane/ee/views/app/issue/bulk_operations.py @@ -22,10 +22,12 @@ from plane.db.models import ( IssueLabel, IssueAssignee, Workspace, - IssueSubscriber + IssueSubscriber, ) from plane.bgtasks.issue_activities_task import issue_activity from plane.ee.bgtasks import bulk_issue_activity +from plane.payment.flags.flag_decorator import check_feature_flag +from plane.payment.flags.flag import FeatureFlag class BulkIssueOperationsEndpoint(BaseAPIView): @@ -33,6 +35,7 @@ class BulkIssueOperationsEndpoint(BaseAPIView): ProjectEntityPermission, ] + @check_feature_flag(FeatureFlag.BULK_OPS) def post(self, request, slug, project_id): issue_ids = request.data.get("issue_ids", []) if not len(issue_ids): @@ -271,7 +274,13 @@ class BulkIssueOperationsEndpoint(BaseAPIView): # Bulk update all the objects Issue.objects.bulk_update( bulk_update_issues, - ["priority", "start_date", "target_date", "state_id", "completed_at"], + [ + "priority", + "start_date", + "target_date", + "state_id", + "completed_at", + ], batch_size=100, ) @@ -303,6 +312,7 @@ class BulkArchiveIssuesEndpoint(BaseAPIView): ProjectEntityPermission, ] + @check_feature_flag(FeatureFlag.BULK_OPS) def post(self, request, slug, project_id): issue_ids = request.data.get("issue_ids", []) @@ -358,6 +368,7 @@ class BulkSubscribeIssuesEndpoint(BaseAPIView): ProjectEntityPermission, ] + @check_feature_flag(FeatureFlag.BULK_OPS) def post(self, request, slug, project_id): issue_ids = request.data.get("issue_ids", []) workspace = Workspace.objects.filter(slug=slug).first() diff --git a/apiserver/plane/ee/views/app/page/publish.py b/apiserver/plane/ee/views/app/page/publish.py index 14d0472ce5..c5d6c6ec01 100644 --- a/apiserver/plane/ee/views/app/page/publish.py +++ b/apiserver/plane/ee/views/app/page/publish.py @@ -10,6 +10,8 @@ from plane.ee.permissions import ( ) from plane.db.models import DeployBoard, Workspace, Page from plane.app.serializers import DeployBoardSerializer +from plane.payment.flags.flag_decorator import check_feature_flag +from plane.payment.flags.flag import FeatureFlag class ProjectPagePublishEndpoint(BaseAPIView): @@ -18,6 +20,7 @@ class ProjectPagePublishEndpoint(BaseAPIView): ProjectMemberPermission, ] + @check_feature_flag(FeatureFlag.PAGE_PUBLISH) def post(self, request, slug, project_id, page_id): workspace = Workspace.objects.get(slug=slug) # Fetch the page @@ -62,6 +65,7 @@ class ProjectPagePublishEndpoint(BaseAPIView): serializer = DeployBoardSerializer(deploy_board) return Response(serializer.data, status=status.HTTP_201_CREATED) + @check_feature_flag(FeatureFlag.PAGE_PUBLISH) def patch(self, request, slug, project_id, page_id): # Get the deploy board deploy_board = DeployBoard.objects.get( @@ -96,6 +100,7 @@ class ProjectPagePublishEndpoint(BaseAPIView): return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + @check_feature_flag(FeatureFlag.PAGE_PUBLISH) def get(self, request, slug, project_id, page_id): # Get the deploy board deploy_board = DeployBoard.objects.get( @@ -123,6 +128,7 @@ class WorkspacePagePublishEndpoint(BaseAPIView): WorkSpaceAdminPermission, ] + @check_feature_flag(FeatureFlag.PAGE_PUBLISH) def post(self, request, slug, page_id): workspace = Workspace.objects.get(slug=slug) # Fetch the page @@ -165,6 +171,7 @@ class WorkspacePagePublishEndpoint(BaseAPIView): serializer = DeployBoardSerializer(deploy_board) return Response(serializer.data, status=status.HTTP_201_CREATED) + @check_feature_flag(FeatureFlag.PAGE_PUBLISH) def patch(self, request, slug, page_id): deploy_board = DeployBoard.objects.get( entity_identifier=page_id, entity_name="page", workspace__slug=slug @@ -194,6 +201,7 @@ class WorkspacePagePublishEndpoint(BaseAPIView): return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + @check_feature_flag(FeatureFlag.PAGE_PUBLISH) def get(self, request, slug, page_id): deploy_board = DeployBoard.objects.get( entity_identifier=page_id, entity_name="page", workspace__slug=slug diff --git a/apiserver/plane/ee/views/app/page/workspace.py b/apiserver/plane/ee/views/app/page/workspace.py index a479d34ec4..3593d4c5f6 100644 --- a/apiserver/plane/ee/views/app/page/workspace.py +++ b/apiserver/plane/ee/views/app/page/workspace.py @@ -31,6 +31,8 @@ from plane.db.models import ( from plane.ee.views.base import BaseViewSet from plane.bgtasks.page_transaction_task import page_transaction +from plane.payment.flags.flag_decorator import check_feature_flag +from plane.payment.flags.flag import FeatureFlag def unarchive_archive_page_and_descendants(page_id, archived_at): @@ -90,6 +92,7 @@ class WorkspacePageViewSet(BaseViewSet): .distinct() ) + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def create(self, request, slug): workspace = Workspace.objects.get(slug=slug) serializer = WorkspacePageSerializer( @@ -112,6 +115,7 @@ class WorkspacePageViewSet(BaseViewSet): return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def partial_update(self, request, slug, pk): try: page = Page.objects.get( @@ -175,6 +179,7 @@ class WorkspacePageViewSet(BaseViewSet): status=status.HTTP_400_BAD_REQUEST, ) + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def retrieve(self, request, slug, pk=None): page = self.get_queryset().filter(pk=pk).first() if page is None: @@ -188,6 +193,7 @@ class WorkspacePageViewSet(BaseViewSet): status=status.HTTP_200_OK, ) + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def lock(self, request, slug, pk): page = Page.objects.filter( pk=pk, @@ -198,6 +204,7 @@ class WorkspacePageViewSet(BaseViewSet): page.save() return Response(status=status.HTTP_204_NO_CONTENT) + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def unlock(self, request, slug, pk): page = Page.objects.filter( pk=pk, @@ -209,11 +216,13 @@ class WorkspacePageViewSet(BaseViewSet): return Response(status=status.HTTP_204_NO_CONTENT) + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def list(self, request, slug): queryset = self.get_queryset() pages = WorkspacePageSerializer(queryset, many=True).data return Response(pages, status=status.HTTP_200_OK) + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def archive(self, request, slug, pk): page = Page.objects.get( pk=pk, @@ -241,6 +250,7 @@ class WorkspacePageViewSet(BaseViewSet): status=status.HTTP_200_OK, ) + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def unarchive(self, request, slug, pk): page = Page.objects.get( pk=pk, @@ -270,6 +280,7 @@ class WorkspacePageViewSet(BaseViewSet): return Response(status=status.HTTP_204_NO_CONTENT) + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def destroy(self, request, slug, pk): page = Page.objects.get( pk=pk, @@ -310,6 +321,7 @@ class WorkspacePagesDescriptionViewSet(BaseViewSet): WorkspaceEntityPermission, ] + @check_feature_flag(FeatureFlag.WORKSPACE_PAGES) def retrieve(self, request, slug, pk): page = Page.objects.get( pk=pk, diff --git a/apiserver/plane/ee/views/app/views/project.py b/apiserver/plane/ee/views/app/views/project.py index d11a77a93b..8eb988f65b 100644 --- a/apiserver/plane/ee/views/app/views/project.py +++ b/apiserver/plane/ee/views/app/views/project.py @@ -13,6 +13,8 @@ from plane.db.models import ( IssueView, ) from plane.ee.views.base import BaseViewSet +from plane.payment.flags.flag_decorator import check_feature_flag +from plane.payment.flags.flag import FeatureFlag class IssueViewEEViewSet(BaseViewSet): @@ -41,6 +43,7 @@ class IssueViewEEViewSet(BaseViewSet): return Response(status=status.HTTP_204_NO_CONTENT) + @check_feature_flag(FeatureFlag.VIEW_ACCESS_PRIVATE) def access(self, request, slug, project_id, pk): access = request.data.get("access", 1) diff --git a/apiserver/plane/ee/views/app/views/publish.py b/apiserver/plane/ee/views/app/views/publish.py index 5237039684..b8915f0e0f 100644 --- a/apiserver/plane/ee/views/app/views/publish.py +++ b/apiserver/plane/ee/views/app/views/publish.py @@ -10,6 +10,8 @@ from plane.ee.permissions import ( ) from plane.db.models import DeployBoard, Workspace, IssueView from plane.app.serializers import DeployBoardSerializer +from plane.payment.flags.flag_decorator import check_feature_flag +from plane.payment.flags.flag import FeatureFlag class WorkspaceViewsPublishEndpoint(BaseAPIView): @@ -18,6 +20,7 @@ class WorkspaceViewsPublishEndpoint(BaseAPIView): WorkSpaceAdminPermission, ] + @check_feature_flag(FeatureFlag.VIEW_PUBLISH) def post(self, request, slug, view_id): workspace = Workspace.objects.get(slug=slug) # Fetch the view @@ -63,6 +66,7 @@ class WorkspaceViewsPublishEndpoint(BaseAPIView): serializer = DeployBoardSerializer(deploy_board) return Response(serializer.data, status=status.HTTP_201_CREATED) + @check_feature_flag(FeatureFlag.VIEW_PUBLISH) def patch(self, request, slug, view_id): deploy_board = DeployBoard.objects.get( entity_identifier=view_id, entity_name="view", workspace__slug=slug @@ -92,6 +96,7 @@ class WorkspaceViewsPublishEndpoint(BaseAPIView): return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + @check_feature_flag(FeatureFlag.VIEW_PUBLISH) def get(self, request, slug, view_id): deploy_board = DeployBoard.objects.get( entity_identifier=view_id, entity_name="view", workspace__slug=slug @@ -99,6 +104,7 @@ class WorkspaceViewsPublishEndpoint(BaseAPIView): serializer = DeployBoardSerializer(deploy_board) return Response(serializer.data, status=status.HTTP_200_OK) + @check_feature_flag(FeatureFlag.VIEW_PUBLISH) def delete(self, request, slug, view_id): deploy_board = DeployBoard.objects.get( entity_identifier=view_id, entity_name="view", workspace__slug=slug @@ -113,6 +119,7 @@ class IssueViewsPublishEndpoint(BaseAPIView): ProjectMemberPermission, ] + @check_feature_flag(FeatureFlag.VIEW_PUBLISH) def post(self, request, slug, project_id, view_id): # Fetch the view issue_view = IssueView.objects.get( @@ -157,6 +164,7 @@ class IssueViewsPublishEndpoint(BaseAPIView): serializer = DeployBoardSerializer(deploy_board) return Response(serializer.data, status=status.HTTP_201_CREATED) + @check_feature_flag(FeatureFlag.VIEW_PUBLISH) def patch(self, request, slug, project_id, view_id): deploy_board = DeployBoard.objects.get( entity_identifier=view_id, @@ -189,6 +197,7 @@ class IssueViewsPublishEndpoint(BaseAPIView): return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + @check_feature_flag(FeatureFlag.VIEW_PUBLISH) def get(self, request, slug, project_id, view_id): deploy_board = DeployBoard.objects.get( entity_identifier=view_id, @@ -199,6 +208,7 @@ class IssueViewsPublishEndpoint(BaseAPIView): serializer = DeployBoardSerializer(deploy_board) return Response(serializer.data, status=status.HTTP_200_OK) + @check_feature_flag(FeatureFlag.VIEW_PUBLISH) def delete(self, request, slug, project_id, view_id): deploy_board = DeployBoard.objects.get( entity_identifier=view_id, diff --git a/apiserver/plane/ee/views/app/views/workspace.py b/apiserver/plane/ee/views/app/views/workspace.py index cec4400403..a8a8e1a3ee 100644 --- a/apiserver/plane/ee/views/app/views/workspace.py +++ b/apiserver/plane/ee/views/app/views/workspace.py @@ -13,6 +13,8 @@ from plane.db.models import ( IssueView, ) from plane.ee.views.base import BaseViewSet +from plane.payment.flags.flag_decorator import check_feature_flag +from plane.payment.flags.flag import FeatureFlag class WorkspaceViewEEViewSet(BaseViewSet): @@ -53,6 +55,7 @@ class WorkspaceViewEEViewSet(BaseViewSet): return Response(status=status.HTTP_204_NO_CONTENT) + @check_feature_flag(FeatureFlag.VIEW_ACCESS_PRIVATE) def access(self, request, slug, pk): access = request.data.get("access", 1) diff --git a/apiserver/plane/ee/views/space/page.py b/apiserver/plane/ee/views/space/page.py index 84ed4abc4a..2b4d2002be 100644 --- a/apiserver/plane/ee/views/space/page.py +++ b/apiserver/plane/ee/views/space/page.py @@ -21,6 +21,9 @@ from plane.ee.serializers import ( from plane.app.serializers import ( IssuePublicSerializer, ) +from plane.payment.flags.flag_decorator import check_workspace_feature_flag +from plane.payment.flags.flag import FeatureFlag +from plane.payment.flags.flag_decorator import ErrorCodes class PagePublicEndpoint(BaseAPIView): @@ -34,10 +37,24 @@ class PagePublicEndpoint(BaseAPIView): deploy_board = DeployBoard.objects.get( anchor=anchor, entity_name="page" ) - # Get the page object - page = Page.objects.get(pk=deploy_board.entity_identifier) - serializer = PagePublicSerializer(page) - return Response(serializer.data, status=status.HTTP_200_OK) + + # Check if the workspace has access to feature + if check_workspace_feature_flag( + feature_key=FeatureFlag.PAGE_PUBLISH, + slug=deploy_board.workspace.slug, + ): + # Get the page object + page = Page.objects.get(pk=deploy_board.entity_identifier) + serializer = PagePublicSerializer(page) + return Response(serializer.data, status=status.HTTP_200_OK) + else: + return Response( + { + "error": "Payment required", + "error_code": ErrorCodes.PAYMENT_REQUIRED.value, + }, + status=status.HTTP_402_PAYMENT_REQUIRED, + ) class PagePublicIssuesEndpoint(BaseAPIView): @@ -52,35 +69,48 @@ class PagePublicIssuesEndpoint(BaseAPIView): anchor=anchor, entity_name="page" ) - # Get the issue's embedded inside the page - page_issues = PageLog.objects.filter( - page_id=deploy_board.entity_identifier, entity_name="issue" - ).values_list("entity_identifier", flat=True) + if check_workspace_feature_flag( + feature_key=FeatureFlag.PAGE_PUBLISH, + slug=deploy_board.workspace.slug, + ): - issue_queryset = ( - Issue.issue_objects.annotate( - sub_issues_count=Issue.issue_objects.filter( - parent=OuterRef("id") + # Get the issue's embedded inside the page + page_issues = PageLog.objects.filter( + page_id=deploy_board.entity_identifier, entity_name="issue" + ).values_list("entity_identifier", flat=True) + + issue_queryset = ( + Issue.issue_objects.annotate( + sub_issues_count=Issue.issue_objects.filter( + parent=OuterRef("id") + ) + .order_by() + .annotate(count=Func(F("id"), function="Count")) + .values("count") ) - .order_by() - .annotate(count=Func(F("id"), function="Count")) - .values("count") - ) - .filter(pk__in=page_issues) - .select_related("project", "workspace", "state", "parent") - .prefetch_related("assignees", "labels") - .prefetch_related( - Prefetch( - "issue_reactions", - queryset=IssueReaction.objects.select_related("actor"), + .filter(pk__in=page_issues) + .select_related("project", "workspace", "state", "parent") + .prefetch_related("assignees", "labels") + .prefetch_related( + Prefetch( + "issue_reactions", + queryset=IssueReaction.objects.select_related("actor"), + ) + ) + .prefetch_related( + Prefetch( + "votes", + queryset=IssueVote.objects.select_related("actor"), + ) ) ) - .prefetch_related( - Prefetch( - "votes", - queryset=IssueVote.objects.select_related("actor"), - ) + serializer = IssuePublicSerializer(issue_queryset, many=True) + return Response(serializer.data, status=status.HTTP_200_OK) + else: + return Response( + { + "error": "Payment required", + "error_code": ErrorCodes.PAYMENT_REQUIRED.value, + }, + status=status.HTTP_402_PAYMENT_REQUIRED, ) - ) - serializer = IssuePublicSerializer(issue_queryset, many=True) - return Response(serializer.data, status=status.HTTP_200_OK) diff --git a/apiserver/plane/ee/views/space/views.py b/apiserver/plane/ee/views/space/views.py index f34858890f..6148f6b878 100644 --- a/apiserver/plane/ee/views/space/views.py +++ b/apiserver/plane/ee/views/space/views.py @@ -12,6 +12,9 @@ from plane.db.models import ( from plane.ee.serializers import ( ViewsPublicSerializer, ) +from plane.payment.flags.flag_decorator import check_workspace_feature_flag +from plane.payment.flags.flag import FeatureFlag +from plane.payment.flags.flag_decorator import ErrorCodes class ViewsPublicEndpoint(BaseAPIView): @@ -25,7 +28,22 @@ class ViewsPublicEndpoint(BaseAPIView): deploy_board = DeployBoard.objects.get( anchor=anchor, entity_name="view" ) - # Get the views object - views = IssueView.objects.get(pk=deploy_board.entity_identifier) - serializer = ViewsPublicSerializer(views) - return Response(serializer.data, status=status.HTTP_200_OK) + + # Check if the workspace has access to feature + if check_workspace_feature_flag( + feature_key=FeatureFlag.PAGE_PUBLISH, + slug=deploy_board.workspace.slug, + ): + # Get the views object + views = IssueView.objects.get(pk=deploy_board.entity_identifier) + serializer = ViewsPublicSerializer(views) + return Response(serializer.data, status=status.HTTP_200_OK) + # Check if the workspace has access to feature + else: + return Response( + { + "error": "Payment required", + "error_code": ErrorCodes.PAYMENT_REQUIRED.value, + }, + status=status.HTTP_402_PAYMENT_REQUIRED, + ) diff --git a/apiserver/plane/payment/bgtasks/member_sync_task.py b/apiserver/plane/payment/bgtasks/member_sync_task.py index d82d1ec897..0231952a15 100644 --- a/apiserver/plane/payment/bgtasks/member_sync_task.py +++ b/apiserver/plane/payment/bgtasks/member_sync_task.py @@ -10,48 +10,65 @@ from celery import shared_task # Module imports from plane.db.models import WorkspaceMember, Workspace +from plane.utils.exception_logger import log_exception @shared_task def member_sync_task(slug): - # Do not run this task if payment server base url is not set - if settings.PAYMENT_SERVER_BASE_URL: - # workspace from slug - workspace = Workspace.objects.filter(slug=slug).first() - workspace_id = str(workspace.id) + try: + # Do not run this task if payment server base url is not set + if settings.PAYMENT_SERVER_BASE_URL: + # workspace from slug + workspace = Workspace.objects.filter(slug=slug).first() + workspace_id = str(workspace.id) - # Get all active workspace members - workspace_members = ( - WorkspaceMember.objects.filter( - workspace_id=workspace_id, is_active=True, member__is_bot=False + # Get all active workspace members + workspace_members = ( + WorkspaceMember.objects.filter( + workspace_id=workspace_id, + is_active=True, + member__is_bot=False, + ) + .annotate( + user_email=F("member__email"), + user_id=F("member__id"), + user_role=F("role"), + ) + .values("user_email", "user_id", "user_role") ) - .annotate(user_email=F("member__email"), user_id=F("member__id")) - .values("user_email", "user_id") - ) - # Convert user_id to string - for member in workspace_members: - member["user_id"] = str(member["user_id"]) + # Convert user_id to string + for member in workspace_members: + member["user_id"] = str(member["user_id"]) - # Send request to payment server to sync workspace members - response = requests.patch( - f"{settings.PAYMENT_SERVER_BASE_URL}/api/workspaces/{workspace_id}/subscriptions/", - json={ - "slug": slug, - "workspace_id": str(workspace_id), - "members_list": list(workspace_members), - }, - headers={"content-type": "application/json"}, - ) + # Send request to payment server to sync workspace members + response = requests.patch( + f"{settings.PAYMENT_SERVER_BASE_URL}/api/workspaces/{workspace_id}/subscriptions/", + json={ + "slug": slug, + "workspace_id": str(workspace_id), + "members_list": list(workspace_members), + }, + headers={ + "content-type": "application/json", + "x-api-key": settings.PAYMENT_SERVER_AUTH_TOKEN, + }, + ) - # Check if response is successful - if response.status_code == 200: - return - # Workspace does not have a subscription - elif response.status_code == 404: - return - # Invalid request + # Check if response is successful + if response.status_code == 200: + return + # Workspace does not have a subscription + elif response.status_code == 404: + return + # Invalid request + else: + return else: return - else: + except requests.exceptions.RequestException as e: + log_exception(e) + return + except Exception as e: + log_exception(e) return diff --git a/apiserver/plane/payment/flags/flag.py b/apiserver/plane/payment/flags/flag.py new file mode 100644 index 0000000000..3ccb003519 --- /dev/null +++ b/apiserver/plane/payment/flags/flag.py @@ -0,0 +1,30 @@ +from enum import Enum + + +class FeatureFlag(Enum): + # Workspace level active cycles + WORKSPACE_ACTIVE_CYCLES = "WORKSPACE_ACTIVE_CYCLES" + # Bulk operations on issues + BULK_OPS = "BULK_OPS" + # Make views public or private + VIEW_ACCESS_PRIVATE = "VIEW_ACCESS_PRIVATE" + # View publish + VIEW_PUBLISH = "VIEW_PUBLISH" + # View Locking and unlocking + VIEW_LOCKING = "VIEW_LOCKING" + # Workspace level pages + WORKSPACE_PAGES = "WORKSPACE_PAGES" + # OIDC SAML Auth + OIDC_SAML_AUTH = "OIDC_SAML_AUTH" + # Page level issue embeds + PAGE_ISSUE_EMBEDS = "PAGE_ISSUE_EMBEDS" + # Page Publish + PAGE_PUBLISH = "PAGE_PUBLISH" + # Work logging + WORK_LOG = "WORK_LOG" + # Estimate with time + ESTIMATE_WITH_TIME = "ESTIMATE_WITH_TIME" + # Issue list + ISSUE_TYPE_DISPLAY = "ISSUE_TYPE_DISPLAY" + # Settings + ISSUE_TYPE_SETTINGS = "ISSUE_TYPE_SETTINGS" diff --git a/apiserver/plane/payment/flags/flag_decorator.py b/apiserver/plane/payment/flags/flag_decorator.py new file mode 100644 index 0000000000..146cd95c67 --- /dev/null +++ b/apiserver/plane/payment/flags/flag_decorator.py @@ -0,0 +1,73 @@ +# Python imports +from functools import wraps +from enum import Enum + +# Django imports + +# Third party imports +import openfeature.api +from openfeature.evaluation_context import EvaluationContext + +from rest_framework import status +from rest_framework.response import Response + +# Module imports +from .provider import FlagProvider + + +class ErrorCodes(Enum): + PAYMENT_REQUIRED = 1999 + + +def check_feature_flag(feature_key, default_value=True): + """decorator to feature flag""" + + def decorator(view_func): + @wraps(view_func) + def _wrapped_view(instance, request, *args, **kwargs): + # Function to generate cache key + openfeature.api.set_provider(FlagProvider()) + client = openfeature.api.get_client() + if client.get_boolean_value( + flag_key=feature_key.value, + default_value=default_value, + evaluation_context=EvaluationContext( + str(request.user.id), + {"slug": kwargs.get("slug")}, + ), + ): + response = view_func(instance, request, *args, **kwargs) + else: + response = Response( + { + "error": "Payment required", + "error_code": ErrorCodes.PAYMENT_REQUIRED.value, + }, + status=status.HTTP_402_PAYMENT_REQUIRED, + ) + return response + + return _wrapped_view + + return decorator + + +def check_workspace_feature_flag( + feature_key, slug, user_id=None, default_value=True +): + """Function to check workspace feature flag""" + # Function to generate cache key + openfeature.api.set_provider(FlagProvider()) + client = openfeature.api.get_client() + + # Function to check if the feature flag is enabled + flag = client.get_boolean_value( + flag_key=feature_key.value, + default_value=default_value, + evaluation_context=EvaluationContext( + user_id, + {"slug": slug}, + ), + ) + # Return the flag + return flag diff --git a/apiserver/plane/payment/flags/provider.py b/apiserver/plane/payment/flags/provider.py new file mode 100644 index 0000000000..4a4af68ddf --- /dev/null +++ b/apiserver/plane/payment/flags/provider.py @@ -0,0 +1,98 @@ +# Python imports +import requests + +# Django imports +from django.conf import settings + +# Third party imports +from openfeature.provider.provider import AbstractProvider +from openfeature.provider.metadata import Metadata +from openfeature.flag_evaluation import FlagResolutionDetails + +# Module imports +from plane.utils.exception_logger import log_exception + + +class FlagProvider(AbstractProvider): + def get_metadata(self) -> Metadata: + return Metadata(name="PlaneProvider") + + def make_request(self, slug, user_id, feature_key, default_value): + # Make a request to the feature flag server to get the value of the feature flag + if settings.FEATURE_FLAG_SERVER_BASE_URL: + try: + # Make a request to the feature flag server + response = requests.post( + f"{settings.FEATURE_FLAG_SERVER_BASE_URL}/api/feature-flags/", + headers={ + "x-api-key": settings.FEATURE_FLAG_SERVER_AUTH_TOKEN, + "Content-Type": "application/json", + }, + json={ + "workspace_slug": slug, + "user_id": user_id, + "flag_key": feature_key, + }, + ) + # If the request is successful, return the value of the feature flag + response.raise_for_status() + # Get the value of the feature flag from the response + resp = response.json() + return resp.get("value", default_value) + # If the request fails, log the exception and return the default value + except requests.exceptions.RequestException as e: + log_exception(e) + return default_value + return default_value + + def resolve_boolean_details( + self, + flag_key, + default_value, + evaluation_context, + ): + # Get the targeting key and attributes from the evaluation context + targetting_key = evaluation_context.targeting_key + attributes = evaluation_context.attributes + slug = attributes.get("slug") + # Get the value of the feature flag + value = self.make_request( + user_id=targetting_key, + slug=slug, + feature_key=flag_key, + default_value=default_value, + ) + # Return the value of the feature flag + return FlagResolutionDetails(value=value) + + def resolve_string_details( + self, + flag_key, + default_value, + evaluation_context, + ): + pass + + def resolve_integer_details( + self, + flag_key, + default_value, + evaluation_context, + ): + pass + + def resolve_float_details( + self, + flag_key, + default_value, + evaluation_context, + ): + pass + + def resolve_object_details( + self, + flag_key, + default_value, + evaluation_context, + ): + pass diff --git a/apiserver/plane/payment/urls.py b/apiserver/plane/payment/urls.py index e81d4eeb7c..bfaa51b789 100644 --- a/apiserver/plane/payment/urls.py +++ b/apiserver/plane/payment/urls.py @@ -6,6 +6,7 @@ from .views import ( WorkspaceProductEndpoint, WebsitePaymentLinkEndpoint, WebsiteUserWorkspaceEndpoint, + SubscriptionEndpoint, ) urlpatterns = [ @@ -34,4 +35,9 @@ urlpatterns = [ WebsiteUserWorkspaceEndpoint.as_view(), name="website-workspaces", ), + path( + "workspaces//subscriptions/", + SubscriptionEndpoint.as_view(), + name="subscription", + ), ] diff --git a/apiserver/plane/payment/views/__init__.py b/apiserver/plane/payment/views/__init__.py index 31235a9cfb..55f192a932 100644 --- a/apiserver/plane/payment/views/__init__.py +++ b/apiserver/plane/payment/views/__init__.py @@ -4,3 +4,4 @@ from .product import ( WebsiteUserWorkspaceEndpoint, ) from .payment import PaymentLinkEndpoint, WebsitePaymentLinkEndpoint +from .subscription import SubscriptionEndpoint diff --git a/apiserver/plane/payment/views/payment.py b/apiserver/plane/payment/views/payment.py index f6d916aff8..a658275650 100644 --- a/apiserver/plane/payment/views/payment.py +++ b/apiserver/plane/payment/views/payment.py @@ -30,7 +30,9 @@ class PaymentLinkEndpoint(BaseAPIView): workspace__slug=slug, is_active=True, member__is_bot=False ) .annotate( - user_email=F("member__email"), user_id=F("member__id") + user_email=F("member__email"), + user_id=F("member__id"), + user_role=F("role"), ) .values("user_email", "user_id") ) @@ -114,7 +116,9 @@ class WebsitePaymentLinkEndpoint(BaseAPIView): workspace__slug=slug, is_active=True, member__is_bot=False ) .annotate( - user_email=F("member__email"), user_id=F("member__id") + user_email=F("member__email"), + user_id=F("member__id"), + user_role=F("role"), ) .values("user_email", "user_id") ) diff --git a/apiserver/plane/payment/views/product.py b/apiserver/plane/payment/views/product.py index 47929df72b..16570313b5 100644 --- a/apiserver/plane/payment/views/product.py +++ b/apiserver/plane/payment/views/product.py @@ -27,17 +27,40 @@ class ProductEndpoint(BaseAPIView): def get(self, request, slug): try: if settings.PAYMENT_SERVER_BASE_URL: - count = WorkspaceMember.objects.filter( - workspace__slug=slug + # Get all the paid users in the workspace + paid_count = WorkspaceMember.objects.filter( + workspace__slug=slug, + is_active=True, + member__is_bot=False, + role__gt=10, ).count() + + # Get all the viewers and guests in the workspace + free_count = WorkspaceMember.objects.filter( + workspace__slug=slug, + is_active=True, + member__is_bot=False, + role__lte=10, + ).count() + + # If paid users are currently the pay workspace count + workspace_count = paid_count + + # If free users are more than 5 times the paid users, then workspace count is free users - 5 * paid users + if free_count > 5 * paid_count: + workspace_count = free_count - 5 * paid_count + + # Fetch the products from the payment server response = requests.get( - f"{settings.PAYMENT_SERVER_BASE_URL}/api/products/?quantity={count}", + f"{settings.PAYMENT_SERVER_BASE_URL}/api/products/?quantity={workspace_count}", headers={ "content-type": "application/json", "x-api-key": settings.PAYMENT_SERVER_AUTH_TOKEN, }, ) + # Check if the response is successful response.raise_for_status() + # Convert the response to json response = response.json() return Response(response, status=status.HTTP_200_OK) else: @@ -96,7 +119,12 @@ class WebsiteUserWorkspaceEndpoint(BaseAPIView): role=20, ) .annotate(uuid_str=Cast("workspace_id", CharField())) - .values("uuid_str", "workspace__slug", "workspace__name", "workspace__logo") + .values( + "uuid_str", + "workspace__slug", + "workspace__name", + "workspace__logo", + ) ) workspaces = [ diff --git a/apiserver/plane/payment/views/subscription.py b/apiserver/plane/payment/views/subscription.py new file mode 100644 index 0000000000..3693babfa5 --- /dev/null +++ b/apiserver/plane/payment/views/subscription.py @@ -0,0 +1,47 @@ +# Python imports +import requests + +# Django imports +from django.conf import settings + +# Third party imports +from rest_framework import status +from rest_framework.response import Response + +# Module imports +from .base import BaseAPIView +from plane.app.permissions.workspace import WorkspaceOwnerPermission +from plane.db.models import Workspace + + +class SubscriptionEndpoint(BaseAPIView): + + permission_classes = [ + WorkspaceOwnerPermission, + ] + + def post(self, request, slug): + # Get the workspace + workspace = Workspace.objects.get(slug=slug) + + # Fetch the workspace subcription + if settings.PAYMENT_SERVER_BASE_URL: + # Make a cancel request to the payment server + response = requests.post( + f"{settings.PAYMENT_SERVER_BASE_URL}/api/subscriptions/check/", + headers={ + "content-type": "application/json", + "x-api-key": settings.PAYMENT_SERVER_AUTH_TOKEN, + }, + json={"workspace_id": str(workspace.id)}, + ) + # Check if the response is successful + response.raise_for_status() + # Return the response + response = response.json() + # Check if the response contains the product key + return Response(response, status=status.HTTP_200_OK) + return Response( + {"error": "error in checking workspace subscription"}, + status=status.HTTP_400_BAD_REQUEST, + ) diff --git a/apiserver/plane/settings/common.py b/apiserver/plane/settings/common.py index 22414c72bb..d740f9b0a2 100644 --- a/apiserver/plane/settings/common.py +++ b/apiserver/plane/settings/common.py @@ -366,6 +366,14 @@ ADMIN_BASE_URL = os.environ.get("ADMIN_BASE_URL", None) SPACE_BASE_URL = os.environ.get("SPACE_BASE_URL", None) APP_BASE_URL = os.environ.get("APP_BASE_URL") -# Cloud server base url +# payment server base url PAYMENT_SERVER_BASE_URL = os.environ.get("PAYMENT_SERVER_BASE_URL", False) PAYMENT_SERVER_AUTH_TOKEN = os.environ.get("PAYMENT_SERVER_AUTH_TOKEN", "") + +# feature flag server base urls +FEATURE_FLAG_SERVER_BASE_URL = os.environ.get( + "FEATURE_FLAG_SERVER_BASE_URL", False +) +FEATURE_FLAG_SERVER_AUTH_TOKEN = os.environ.get( + "FEATURE_FLAG_SERVER_AUTH_TOKEN", "" +) diff --git a/apiserver/requirements/base.txt b/apiserver/requirements/base.txt index f19ad07612..d0d790c3ea 100644 --- a/apiserver/requirements/base.txt +++ b/apiserver/requirements/base.txt @@ -65,5 +65,7 @@ pytz==2024.1 PyJWT==2.8.0 # SAML python3-saml==1.16.0 +# feature flag +openfeature-sdk==0.7.0 # graphql strawberry-graphql-django==0.43.0 diff --git a/packages/editor/src/ee/extensions/document-extensions.tsx b/packages/editor/src/ee/extensions/document-extensions.tsx index 05932ef466..c46a78633e 100644 --- a/packages/editor/src/ee/extensions/document-extensions.tsx +++ b/packages/editor/src/ee/extensions/document-extensions.tsx @@ -39,13 +39,19 @@ export const DocumentEditorAdditionalExtensions = (props: Props) => { }, ]; - const extensions = [SlashCommand(fileHandler.upload, slashCommandAdditionalOptions)]; + let extensions = []; + // If searchCallback is provided, then add the slash command for issue embed. This check is required as the searchCallback is optional. + if (issueEmbedConfig?.searchCallback) { + extensions = [SlashCommand(fileHandler.upload, slashCommandAdditionalOptions)]; + } else { + extensions = [SlashCommand(fileHandler.upload)]; + } - if (issueEmbedConfig) + if (issueEmbedConfig && issueEmbedConfig.searchCallback) extensions.push( IssueEmbedSuggestions.configure({ suggestion: { - render: () => IssueListRenderer(issueEmbedConfig?.searchCallback), + render: () => issueEmbedConfig.searchCallback && IssueListRenderer(issueEmbedConfig.searchCallback), }, }) ); diff --git a/packages/editor/src/ee/types/issue-embed.ts b/packages/editor/src/ee/types/issue-embed.ts index 8d8ddb7e7e..2e7f127b0e 100644 --- a/packages/editor/src/ee/types/issue-embed.ts +++ b/packages/editor/src/ee/types/issue-embed.ts @@ -10,7 +10,7 @@ export type TReadOnlyEmbedConfig = { }; export type TIssueEmbedConfig = { - searchCallback: (searchQuery: string) => Promise; + searchCallback?: (searchQuery: string) => Promise; widgetCallback: ({ issueId, projectId, diff --git a/packages/types/src/payment.d.ts b/packages/types/src/payment.d.ts index a772112bbd..0d352d0cc2 100644 --- a/packages/types/src/payment.d.ts +++ b/packages/types/src/payment.d.ts @@ -19,5 +19,5 @@ export type IPaymentProduct = { export type IWorkspaceProductSubscription = { product: TProductSubscriptionType; - expiry_date: string | null; + current_period_end_date: string | null; }; diff --git a/turbo.json b/turbo.json index c660f1a004..28aa44f8be 100644 --- a/turbo.json +++ b/turbo.json @@ -27,7 +27,8 @@ "NEXT_PUBLIC_PRO_PLAN_MONTHLY_REDIRECT_URL", "NEXT_PUBLIC_PRO_PLAN_YEARLY_REDIRECT_URL", "NEXT_PUBLIC_DISCO_BASE_URL", - "NEXT_PUBLIC_PRO_SELF_HOSTED_PAYMENT_URL" + "NEXT_PUBLIC_PRO_SELF_HOSTED_PAYMENT_URL", + "NEXT_PUBLIC_FEATURE_FLAG_SERVER_BASE_URL" ], "tasks": { "build": { diff --git a/web/app/[workspaceSlug]/(projects)/active-cycles/error.tsx b/web/app/[workspaceSlug]/(projects)/active-cycles/error.tsx new file mode 100644 index 0000000000..af1e9f0208 --- /dev/null +++ b/web/app/[workspaceSlug]/(projects)/active-cycles/error.tsx @@ -0,0 +1,7 @@ +"use client"; + +import { CustomError } from "@/components/common"; + +export default function ActiveCyclesError() { + return ; +} diff --git a/web/core/components/common/custom-error.tsx b/web/core/components/common/custom-error.tsx new file mode 100644 index 0000000000..1b82b08afb --- /dev/null +++ b/web/core/components/common/custom-error.tsx @@ -0,0 +1,43 @@ +"use client"; + +import { Button } from "@plane/ui"; + +export const CustomError = () => { + const handleRefresh = () => { + window.location.reload(); + }; + + return ( +
+
+
+
+

Yikes! That doesn{"'"}t look good.

+

+ That crashed Plane, pun intended. No worries, though. Our engineers have been notified. If you have more + details, please write to{" "} + + support@plane.so + {" "} + or on our{" "} + + Discord + + . +

+
+
+ +
+
+
+
+ ); +}; diff --git a/web/core/components/common/index.ts b/web/core/components/common/index.ts index 12f4dd6481..e57eae30ac 100644 --- a/web/core/components/common/index.ts +++ b/web/core/components/common/index.ts @@ -4,4 +4,5 @@ export * from "./latest-feature-block"; export * from "./breadcrumb-link"; export * from "./logo-spinner"; export * from "./logo"; +export * from "./custom-error"; export * from "./count-chip"; diff --git a/web/core/layouts/auth-layout/workspace-wrapper.tsx b/web/core/layouts/auth-layout/workspace-wrapper.tsx index 0e4604f494..bde4292c38 100644 --- a/web/core/layouts/auth-layout/workspace-wrapper.tsx +++ b/web/core/layouts/auth-layout/workspace-wrapper.tsx @@ -13,6 +13,8 @@ import { Button, TOAST_TYPE, setToast, Tooltip } from "@plane/ui"; import { LogoSpinner } from "@/components/common"; import { useMember, useProject, useUser, useWorkspace } from "@/hooks/store"; import { usePlatformOS } from "@/hooks/use-platform-os"; +// plane web hooks +import { useFeatureFlags } from "@/plane-web/hooks/store/use-feature-flags"; // images import PlaneBlackLogo from "@/public/plane-logos/black-horizontal-with-blue-logo.png"; import PlaneWhiteLogo from "@/public/plane-logos/white-horizontal-with-blue-logo.png"; @@ -35,6 +37,7 @@ export const WorkspaceAuthWrapper: FC = observer((props) workspace: { fetchWorkspaceMembers }, } = useMember(); const { workspaces } = useWorkspace(); + const { loader: featureFlagsLoader, fetchFeatureFlags } = useFeatureFlags(); const { isMobile } = usePlatformOS(); const planeLogo = resolvedTheme === "dark" ? PlaneWhiteLogo : PlaneBlackLogo; @@ -42,6 +45,13 @@ export const WorkspaceAuthWrapper: FC = observer((props) const currentWorkspace = (allWorkspaces && allWorkspaces.find((workspace) => workspace?.slug === workspaceSlug)) || undefined; + // fetching feature flags + useSWR( + workspaceSlug && currentUser ? `WORKSPACE_FEATURE_FLAGS_${workspaceSlug}_${currentUser.id}` : null, + workspaceSlug && currentUser ? () => fetchFeatureFlags(workspaceSlug.toString(), currentUser.id) : null, + { revalidateIfStale: false, revalidateOnFocus: false } + ); + // fetching user workspace information useSWR( workspaceSlug && currentWorkspace ? `WORKSPACE_MEMBERS_ME_${workspaceSlug}` : null, @@ -80,7 +90,7 @@ export const WorkspaceAuthWrapper: FC = observer((props) }; // if list of workspaces are not there then we have to render the spinner - if (allWorkspaces === undefined) { + if (featureFlagsLoader || allWorkspaces === undefined) { return (
diff --git a/web/ee/components/active-cycles/root.tsx b/web/ee/components/active-cycles/root.tsx index b4b0bcdc72..b103e8c5f5 100644 --- a/web/ee/components/active-cycles/root.tsx +++ b/web/ee/components/active-cycles/root.tsx @@ -1,4 +1,9 @@ // plane web components -import { WorkspaceActiveCyclesList } from "@/plane-web/components/active-cycles"; +import { WorkspaceActiveCyclesList, WorkspaceActiveCyclesUpgrade } from "@/plane-web/components/active-cycles"; +import { WithFeatureFlagHOC } from "@/plane-web/components/feature-flags"; -export const WorkspaceActiveCyclesRoot = () => ; +export const WorkspaceActiveCyclesRoot = () => ( + }> + + +) diff --git a/web/ee/components/active-cycles/workspace-active-cycles-upgrade.tsx b/web/ee/components/active-cycles/workspace-active-cycles-upgrade.tsx index c773486878..a0a4f47829 100644 --- a/web/ee/components/active-cycles/workspace-active-cycles-upgrade.tsx +++ b/web/ee/components/active-cycles/workspace-active-cycles-upgrade.tsx @@ -1 +1,90 @@ -export * from "ce/components/active-cycles/workspace-active-cycles-upgrade"; \ No newline at end of file +"use client"; + +import React from "react"; +import { observer } from "mobx-react"; +import Image from "next/image"; +// icons +import { Crown } from "lucide-react"; +// ui +import { Button } from "@plane/ui"; +// constants +import { WORKSPACE_ACTIVE_CYCLES_DETAILS } from "@/constants/cycle"; +// helper +import { cn } from "@/helpers/common.helper"; +// hooks +import { useUser } from "@/hooks/store"; +import { useWorkspaceSubscription } from "@/plane-web/hooks/store"; + +export const WorkspaceActiveCyclesUpgrade = observer(() => { + // store hooks + const { + userProfile: { data: userProfile }, + } = useUser(); + const { toggleProPlanModal } = useWorkspaceSubscription(); + + const isDarkMode = userProfile?.theme.theme === "dark"; + + return ( +
+
+
+
+

On-demand snapshots of all your cycles

+

+ Monitor cycles across projects, track high-priority issues, and zoom in cycles that need attention. +

+
+
+ +
+ + l-1 + +
+
+ + r-1 + + + r-2 + +
+
+
+ {WORKSPACE_ACTIVE_CYCLES_DETAILS.map((item) => ( +
+
+

{item.title}

+ +
+ {item.description} +
+ ))} +
+
+ ); +}); diff --git a/web/ee/components/cycles/active-cycles/list-page.tsx b/web/ee/components/cycles/active-cycles/list-page.tsx index d668f38904..a431e061fd 100644 --- a/web/ee/components/cycles/active-cycles/list-page.tsx +++ b/web/ee/components/cycles/active-cycles/list-page.tsx @@ -5,6 +5,7 @@ import { Spinner } from "@plane/ui"; // components import { WORKSPACE_ACTIVE_CYCLES_LIST } from "@/constants/fetch-keys"; // plane web components +import { WorkspaceActiveCyclesUpgrade } from "@/plane-web/components/active-cycles/"; import { ActiveCycleInfoCard } from "@/plane-web/components/cycles/active-cycles"; // constants // services @@ -24,7 +25,7 @@ export const ActiveCyclesListPage: FC = (props) => { const { workspaceSlug, cursor, perPage, updateTotalPages, updateResultsCount } = props; // fetching active cycles in workspace - const { data: workspaceActiveCycles } = useSWR( + const { data: workspaceActiveCycles, error } = useSWR( workspaceSlug && cursor ? WORKSPACE_ACTIVE_CYCLES_LIST(workspaceSlug as string, cursor, `${perPage}`) : null, workspaceSlug && cursor ? () => cycleService.workspaceActiveCycles(workspaceSlug.toString(), cursor, perPage) : null ); @@ -36,6 +37,11 @@ export const ActiveCyclesListPage: FC = (props) => { } }, [updateTotalPages, updateResultsCount, workspaceActiveCycles]); + if (error) { + if (error.error_code === 1999) return ; + else throw Error(error.error); + } + if (!workspaceActiveCycles) { return (
diff --git a/web/ee/components/feature-flags/index.tsx b/web/ee/components/feature-flags/index.tsx new file mode 100644 index 0000000000..608dafc39b --- /dev/null +++ b/web/ee/components/feature-flags/index.tsx @@ -0,0 +1 @@ +export * from './with-feature-flag-hoc'; \ No newline at end of file diff --git a/web/ee/components/feature-flags/with-feature-flag-hoc.tsx b/web/ee/components/feature-flags/with-feature-flag-hoc.tsx new file mode 100644 index 0000000000..e91a8f6319 --- /dev/null +++ b/web/ee/components/feature-flags/with-feature-flag-hoc.tsx @@ -0,0 +1,15 @@ +import { ReactNode } from "react"; +// plane web hooks +import { E_FEATURE_FLAGS, useFlag } from "@/plane-web/hooks/store/use-flag"; + +interface IWithFeatureFlagHOC { + flag: keyof typeof E_FEATURE_FLAGS; + fallback: ReactNode; + children: ReactNode; +} + +export const WithFeatureFlagHOC = ({ flag, fallback, children }: IWithFeatureFlagHOC) => { + const isFeatureEnabled = useFlag(flag); + + return <>{isFeatureEnabled ? children : fallback}; +}; diff --git a/web/ee/components/license/cloud-badge.tsx b/web/ee/components/license/cloud-badge.tsx index 5079ae1590..359fb0b444 100644 --- a/web/ee/components/license/cloud-badge.tsx +++ b/web/ee/components/license/cloud-badge.tsx @@ -17,11 +17,11 @@ export const CloudEditionBadge = observer(() => { // params const { workspaceSlug } = useParams(); // states - const [isProPlanModalOpen, setIsProPlanModalOpen] = useState(false); const [isProPlanDetailsModalOpen, setProPlanDetailsModalOpen] = useState(false); // hooks const { captureEvent } = useEventTracker(); - const { currentWorkspaceSubscribedPlan, fetchWorkspaceSubscribedPlan } = useWorkspaceSubscription(); + const { isProPlanModalOpen, currentWorkspaceSubscribedPlanDetail, toggleProPlanModal, fetchWorkspaceSubscribedPlan } = + useWorkspaceSubscription(); // fetch workspace current plane information useSWR( workspaceSlug && process.env.NEXT_PUBLIC_DISCO_BASE_URL ? `WORKSPACE_CURRENT_PLAN_${workspaceSlug}` : null, @@ -36,7 +36,7 @@ export const CloudEditionBadge = observer(() => { ); const handleProPlanPurchaseModalOpen = () => { - setIsProPlanModalOpen(true); + toggleProPlanModal(true); captureEvent("pro_plan_modal_opened", {}); }; @@ -45,7 +45,7 @@ export const CloudEditionBadge = observer(() => { captureEvent("pro_plan_details_modal_opened", {}); }; - if (!currentWorkspaceSubscribedPlan) + if (!currentWorkspaceSubscribedPlanDetail) return ( @@ -54,28 +54,35 @@ export const CloudEditionBadge = observer(() => { return ( <> - setIsProPlanModalOpen(false)} /> - setProPlanDetailsModalOpen(false)} /> - {currentWorkspaceSubscribedPlan === "FREE" && ( - + {currentWorkspaceSubscribedPlanDetail.product === "FREE" && ( + <> + toggleProPlanModal(false)} /> + + )} - {currentWorkspaceSubscribedPlan === "PRO" && ( - + {currentWorkspaceSubscribedPlanDetail.product === "PRO" && ( + <> + setProPlanDetailsModalOpen(false)} + /> + + )} ); diff --git a/web/ee/components/license/plane-cloud-billing.tsx b/web/ee/components/license/plane-cloud-billing.tsx index 7e94d23c02..a72c3cb660 100644 --- a/web/ee/components/license/plane-cloud-billing.tsx +++ b/web/ee/components/license/plane-cloud-billing.tsx @@ -1,23 +1,122 @@ +import { useState } from "react"; +import { observer } from "mobx-react"; +import Image from "next/image"; +import { useParams } from "next/navigation"; +import { ExternalLink } from "lucide-react"; // ui -import { Button } from "@plane/ui"; -// constants -import { MARKETING_PRICING_PAGE_LINK } from "@/constants/common"; +import { Button, Loader, TOAST_TYPE, getButtonStyling, setToast } from "@plane/ui"; +// store hooks +import { cn } from "@/helpers/common.helper"; +import { renderFormattedDate } from "@/helpers/date-time.helper"; +import { useWorkspaceSubscription } from "@/plane-web/hooks/store"; +// services +import { PaymentService } from "@/plane-web/services/payment.service"; +// assets +import PlaneLogo from "@/public/plane-logos/blue-without-text.png"; -export const PlaneCloudBilling: React.FC = () => ( -
-
-
-

Billing & Plans

-
-
-
+const paymentService = new PaymentService(); + +export const PlaneCloudBilling: React.FC = observer(() => { + // params + const { workspaceSlug } = useParams(); + // states + const [isLoading, setIsLoading] = useState(false); + // hooks + const { currentWorkspaceSubscribedPlanDetail, toggleProPlanModal } = useWorkspaceSubscription(); + + const handleSubscriptionPageRedirection = () => { + setIsLoading(true); + paymentService + .getWorkspaceSubscriptionPageLink(workspaceSlug.toString()) + .then((response) => { + if (response.url) { + window.open(response.url, "_blank"); + } + }) + .catch(() => { + setToast({ + type: TOAST_TYPE.ERROR, + title: "Error!", + message: "Failed to redirect to subscription page. Please try again.", + }); + }) + .finally(() => { + setIsLoading(false); + }); + }; + + return ( +
-

Current plan

-

You are currently using the free plan

- - - +
+

+ Billing and plans{" "} + + {"View all plans"} + + +

+
-
-
-); +
+ {!currentWorkspaceSubscribedPlanDetail && ( + + + + + )} + {currentWorkspaceSubscribedPlanDetail?.product === "FREE" && ( +
+
+
+ Plane +

Free plan

+
+
+ +
+
+
+ )} + {currentWorkspaceSubscribedPlanDetail?.product === "PRO" && ( +
+
+
+ Plane pro +

Plane Pro

+
+ (Renew on: {renderFormattedDate(currentWorkspaceSubscribedPlanDetail.current_period_end_date)}) +
+
+
+ +
+
+
+ )} +
+ + ); +}); diff --git a/web/ee/components/pages/editor/embed/issue-embed-upgrade-card.ts b/web/ee/components/pages/editor/embed/issue-embed-upgrade-card.ts deleted file mode 100644 index 02bff5a0ab..0000000000 --- a/web/ee/components/pages/editor/embed/issue-embed-upgrade-card.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "ce/components/pages/editor/embed/issue-embed-upgrade-card"; diff --git a/web/ee/components/pages/editor/embed/issue-embed-upgrade-card.tsx b/web/ee/components/pages/editor/embed/issue-embed-upgrade-card.tsx new file mode 100644 index 0000000000..20cc2dcb68 --- /dev/null +++ b/web/ee/components/pages/editor/embed/issue-embed-upgrade-card.tsx @@ -0,0 +1,33 @@ +import { Crown } from "lucide-react"; +// ui +import { Button } from "@plane/ui"; +import { useWorkspaceSubscription } from "@/plane-web/hooks/store"; + +export const IssueEmbedUpgradeCard: React.FC = (props) => { + const { toggleProPlanModal } = useWorkspaceSubscription(); + return ( +
+
+ {props.node?.attrs?.project_identifier}-{props?.node?.attrs?.sequence_id} +
+
+
+
+
+ +
+
+ Embed and access issues in pages seamlessly, upgrade to plane pro now. +
+
+ +
+
+
+ ); +}; diff --git a/web/ee/components/pages/extra-actions.tsx b/web/ee/components/pages/extra-actions.tsx index 6408cefdf1..50f24a6c1c 100644 --- a/web/ee/components/pages/extra-actions.tsx +++ b/web/ee/components/pages/extra-actions.tsx @@ -11,6 +11,7 @@ import { usePage } from "@/hooks/store"; import { PublishPageModal } from "@/plane-web/components/pages"; // plane web hooks import { usePublishPage } from "@/plane-web/hooks/store"; +import { useFlag } from "@/plane-web/hooks/store/use-flag"; export const PageDetailsHeaderExtraActions = observer(() => { // states @@ -21,12 +22,15 @@ export const PageDetailsHeaderExtraActions = observer(() => { const { anchor, isCurrentUserOwner } = usePage(pageId.toString()); const { fetchProjectPagePublishSettings, getPagePublishSettings, publishProjectPage, unpublishProjectPage } = usePublishPage(); + const isPagePublishEnabled = useFlag("PAGE_PUBLISH"); // derived values const isDeployed = !!anchor; const pagePublishSettings = getPagePublishSettings(pageId.toString()); const publishLink = `${SPACE_BASE_URL}/pages/${anchor}`; + if (!isPagePublishEnabled) return null; + return ( <> void; +}; + +type TLinkCallToAction = { + variant: "link"; + label: string; + url: string; +}; + +export type TPlanCard = { + variant: TPlaneCardVariant; + planName: string; + isActive: boolean; + priceDetails: { + price: string; + user?: string; + duration?: string; + }; + callToAction: TButtonCallToAction | TLinkCallToAction; + baseFeature?: string; + features: string[]; +}; + +export const PlanCard: FC = (props) => { + const { variant, planName, isActive, priceDetails, callToAction, baseFeature, features } = props; + + return ( +
+
+
+
{planName}
+ {isActive && ( +
+ Current plan +
+ )} +
+
+
{priceDetails.price}
+
+ {priceDetails.user} + {priceDetails.duration} +
+
+
+ {callToAction.variant === "button" ? ( + + ) : ( + + {callToAction.label} + + )} +
+
+
+
{baseFeature}
+
    + {features.map((feature) => ( +
  • + + + + {feature} +
  • + ))} +
+
+
+ ); +}; diff --git a/web/ee/components/workspace/billing/plane-cloud-plans.tsx b/web/ee/components/workspace/billing/plane-cloud-plans.tsx new file mode 100644 index 0000000000..9f490d403a --- /dev/null +++ b/web/ee/components/workspace/billing/plane-cloud-plans.tsx @@ -0,0 +1,144 @@ +import { FC } from "react"; +import { observer } from "mobx-react"; +// helpers +import { cn } from "@/helpers/common.helper"; +// hooks +import { useAppTheme } from "@/hooks/store"; +// plane web components +import { PlanCard, TPlanCard } from "@/plane-web/components/workspace/billing"; +// plane web hooks +import { useWorkspaceSubscription } from "@/plane-web/hooks/store"; + +const freePlanFeatures = [ + "Unlimited projects", + "Unlimited issues", + "Cycles and Modules", + "Layouts + Views", + "Pages", + "Intake", +]; + +const onePlanFeatures = [ + "OIDC and SAML", + "Active Cycles", + "Real-time collab", + "Limited time tracking", + "Linked pages", + "Docker, Kubernetes + more", +]; + +const proPlanFeatures = [ + "Active Cycles + other Cycles features", + "Bulk ops", + "Time tracking", + "Customizable dashboards", + "On-demand reports", + "Shared and public views", +]; + +const enterprisePlanFeatures = [ + "Unlimited Issues", + "Unlimited file upload", + "Priority support", + "Custom Theming", + "Access to Roadmap", + "Plane AI", +]; + +export const PlaneCloudPlans: FC = observer(() => { + // hooks + const { sidebarCollapsed } = useAppTheme(); + const { toggleProPlanModal } = useWorkspaceSubscription(); + + const planePlans: TPlanCard[] = [ + { + variant: "free", + planName: "Free", + isActive: true, + priceDetails: { + price: "$0", + user: "per user", + duration: "per month", + }, + callToAction: { + variant: "link", + label: "Start for free", + url: "https://plane.so/pricing", + }, + features: freePlanFeatures, + }, + { + variant: "one", + planName: "One", + isActive: false, + priceDetails: { + price: "$799", + user: "100 users", + duration: "Two years' support", + }, + callToAction: { + variant: "link", + label: "Get One", + url: "https://plane.so/one", + }, + baseFeature: "Everything in Free +", + features: onePlanFeatures, + }, + { + variant: "pro", + planName: "Pro", + isActive: false, + priceDetails: { + price: "$7", + user: "per user", + duration: "per month", + }, + callToAction: { + variant: "button", + label: "Get Pro", + onClick: () => toggleProPlanModal(true), + }, + baseFeature: "Everything in One +", + features: proPlanFeatures, + }, + { + variant: "enterprise", + planName: "Enterprise", + isActive: false, + priceDetails: { + price: "Custom", + }, + callToAction: { + variant: "link", + label: "Talk to Sales", + url: "https://plane.so/contact", + }, + baseFeature: "Everything in Pro +", + features: enterprisePlanFeatures, + }, + ]; + + return ( +
+ {planePlans.map((plan) => ( +
+ +
+ ))} +
+ ); +}); diff --git a/web/ee/components/workspace/upgrade-badge.tsx b/web/ee/components/workspace/upgrade-badge.tsx index 1c7fcfb644..0ce2a6abdf 100644 --- a/web/ee/components/workspace/upgrade-badge.tsx +++ b/web/ee/components/workspace/upgrade-badge.tsx @@ -1 +1,38 @@ -export * from "ce/components/workspace/upgrade-badge"; +import { FC } from "react"; +import { observer } from "mobx-react"; +// helpers +import { cn } from "@/helpers/common.helper"; +// store +import { useWorkspaceSubscription } from "@/plane-web/hooks/store"; + +type TUpgradeBadge = { + className?: string; + size?: "sm" | "md"; +}; + +export const UpgradeBadge: FC = observer((props) => { + const { className, size = "sm" } = props; + // store hooks + const { currentWorkspaceSubscribedPlanDetail } = useWorkspaceSubscription(); + // derived values + const isSubscribedToPro = currentWorkspaceSubscribedPlanDetail?.product === "PRO"; + + if (!currentWorkspaceSubscribedPlanDetail || isSubscribedToPro) { + return null; + } + + return ( +
+ Pro +
+ ); +}); diff --git a/web/ee/hooks/store/use-feature-flags.ts b/web/ee/hooks/store/use-feature-flags.ts new file mode 100644 index 0000000000..684da5694e --- /dev/null +++ b/web/ee/hooks/store/use-feature-flags.ts @@ -0,0 +1,11 @@ +import { useContext } from "react"; +// context +import { StoreContext } from "@/lib/store-context"; +// plane web stores +import { IFeatureFlagsStore } from "@/plane-web/store/feature-flags/feature-flags.store"; + +export const useFeatureFlags = (): IFeatureFlagsStore => { + const context = useContext(StoreContext); + if (context === undefined) throw new Error("useFeatureFlags must be used within StoreProvider"); + return context.featureFlags; +}; diff --git a/web/ee/hooks/store/use-flag.ts b/web/ee/hooks/store/use-flag.ts new file mode 100644 index 0000000000..6dc4c6bf3c --- /dev/null +++ b/web/ee/hooks/store/use-flag.ts @@ -0,0 +1,25 @@ +import { useContext } from "react"; +// context +import { StoreContext } from "@/lib/store-context"; + +export enum E_FEATURE_FLAGS { + BULK_OPS = "BULK_OPS", + ESTIMATE_WITH_TIME = "ESTIMATE_WITH_TIME", + ISSUE_TYPE_DISPLAY = "ISSUE_TYPE_DISPLAY", + ISSUE_TYPE_SETTINGS = "ISSUE_TYPE_SETTINGS", + OIDC_SAML_AUTH = "OIDC_SAML_AUTH", + PAGE_ISSUE_EMBEDS = "PAGE_ISSUE_EMBEDS", + PAGE_PUBLISH = "PAGE_PUBLISH", + VIEW_ACCESS_PRIVATE = "VIEW_ACCESS_PRIVATE", + VIEW_LOCK = "VIEW_LOCK", + VIEW_PUBLISH = "VIEW_PUBLISH", + WORKSPACE_ACTIVE_CYCLES = "WORKSPACE_ACTIVE_CYCLES", + WORKSPACE_PAGES = "WORKSPACE_PAGES", + WORK_LOGS = "WORK_LOGS", +} + +export const useFlag = (flag: keyof typeof E_FEATURE_FLAGS, defaultValue: boolean = false): boolean => { + const context = useContext(StoreContext); + if (context === undefined) throw new Error("useFlag must be used within StoreProvider"); + return context.featureFlags.flags[E_FEATURE_FLAGS[flag]] ?? defaultValue; +}; diff --git a/web/ee/hooks/use-bulk-operation-status.ts b/web/ee/hooks/use-bulk-operation-status.ts index 7b7d57fb18..aef0bbae89 100644 --- a/web/ee/hooks/use-bulk-operation-status.ts +++ b/web/ee/hooks/use-bulk-operation-status.ts @@ -1 +1,8 @@ -export const useBulkOperationStatus = () => true; +// plane web hooks +import { useFlag } from "@/plane-web/hooks/store/use-flag"; + +export const useBulkOperationStatus = () => { + // store hooks + const isBulkOpsEnabled = useFlag("BULK_OPS"); + return isBulkOpsEnabled; +}; diff --git a/web/ee/hooks/use-issue-embed.tsx b/web/ee/hooks/use-issue-embed.tsx index 9e33149d94..4f13cde85b 100644 --- a/web/ee/hooks/use-issue-embed.tsx +++ b/web/ee/hooks/use-issue-embed.tsx @@ -5,13 +5,18 @@ import { TPageEmbedResponse, TPageEmbedType } from "@plane/types"; // ui import { PriorityIcon } from "@plane/ui"; // plane web components -import { IssueEmbedCard } from "@/plane-web/components/pages"; +import { IssueEmbedCard, IssueEmbedUpgradeCard } from "@/plane-web/components/pages"; +// plane web hooks +import { useFlag } from "@/plane-web/hooks/store/use-flag"; // services import { ProjectPageService } from "@/services/page"; const pageService = new ProjectPageService(); export const useIssueEmbed = (workspaceSlug: string, projectId: string, queryType: TPageEmbedType = "issue") => { + // store hooks + const isIssueEmbedEnabled = useFlag("PAGE_ISSUE_EMBEDS"); + const fetchIssues = async (searchQuery: string): Promise => { const response = await pageService.searchEmbed(workspaceSlug, projectId, { query_type: queryType, @@ -52,6 +57,8 @@ export const useIssueEmbed = (workspaceSlug: string, projectId: string, queryTyp return ; }; + const upgradeCallback = () => ; + const issueEmbedProps: TEmbedConfig["issue"] = { searchCallback, widgetCallback, @@ -61,8 +68,23 @@ export const useIssueEmbed = (workspaceSlug: string, projectId: string, queryTyp widgetCallback, }; + const issueEmbedUpgradeProps: TEmbedConfig["issue"] = { + widgetCallback: upgradeCallback, + }; + + const issueEmbedReadOnlyUpgradeProps: TReadOnlyEmbedConfig["issue"] = { + widgetCallback: upgradeCallback, + }; + + if (isIssueEmbedEnabled) { + return { + issueEmbedProps, + issueEmbedReadOnlyProps, + }; + } + return { - issueEmbedProps, - issueEmbedReadOnlyProps, + issueEmbedProps: issueEmbedUpgradeProps, + issueEmbedReadOnlyProps: issueEmbedReadOnlyUpgradeProps, }; }; diff --git a/web/ee/services/feature-flag.service.ts b/web/ee/services/feature-flag.service.ts new file mode 100644 index 0000000000..12b0f872cb --- /dev/null +++ b/web/ee/services/feature-flag.service.ts @@ -0,0 +1,22 @@ +// services +import { APIService } from "@/services/api.service"; + +export type TFeatureFlagsResponse = { + values: { + [featureFlag: string]: boolean; + }; +}; + +export class FeatureFlagService extends APIService { + constructor() { + super(""); + } + + async getFeatureFlags(data = {}): Promise { + return this.post(`/flags/`, data) + .then((response) => response?.data) + .catch((error) => { + throw error?.response?.data; + }); + } +} diff --git a/web/ee/services/payment.service.ts b/web/ee/services/payment.service.ts index cbeb5824ed..d9e1e993d3 100644 --- a/web/ee/services/payment.service.ts +++ b/web/ee/services/payment.service.ts @@ -9,7 +9,7 @@ export class PaymentService extends APIService { super(API_BASE_URL); } - listProducts(workspaceSlug: string): Promise { + async listProducts(workspaceSlug: string): Promise { return this.get(`/api/payments/workspaces/${workspaceSlug}/products/`) .then((response) => response?.data) .catch((error) => { @@ -17,7 +17,7 @@ export class PaymentService extends APIService { }); } - getCurrentWorkspacePaymentLink(workspaceSlug: string, data = {}) { + async getCurrentWorkspacePaymentLink(workspaceSlug: string, data = {}) { return this.post(`/api/payments/workspaces/${workspaceSlug}/payment-link/`, data) .then((response) => response?.data) .catch((error) => { @@ -25,7 +25,7 @@ export class PaymentService extends APIService { }); } - getWorkspaceCurrentPlane(workspaceSlug: string): Promise { + async getWorkspaceCurrentPlan(workspaceSlug: string): Promise { return this.get(`/api/payments/workspaces/${workspaceSlug}/current-plan/`) .then((response) => response?.data) .catch((error) => { @@ -33,6 +33,14 @@ export class PaymentService extends APIService { }); } + async getWorkspaceSubscriptionPageLink(workspaceSlug: string) { + return this.post(`/api/payments/workspaces/${workspaceSlug}/subscriptions/`) + .then((response) => response?.data) + .catch((error) => { + throw error?.response?.data; + }); + } + async getPaymentLink(data = {}) { return this.post(`/api/payments/website/payment-link/`, data) .then((response) => response?.data) diff --git a/web/ee/store/feature-flags/feature-flags.store.ts b/web/ee/store/feature-flags/feature-flags.store.ts new file mode 100644 index 0000000000..95dcb59497 --- /dev/null +++ b/web/ee/store/feature-flags/feature-flags.store.ts @@ -0,0 +1,50 @@ +import { set } from "lodash"; +import { action, makeObservable, observable, runInAction } from "mobx"; +// services +import { FeatureFlagService, TFeatureFlagsResponse } from "@/plane-web/services/feature-flag.service"; +// plane web store + +const featureFlagService = new FeatureFlagService(); + +type TFeatureFlagsMaps = { + [featureFlag: string]: boolean; +}; + +export interface IFeatureFlagsStore { + loader: boolean; + flags: TFeatureFlagsMaps; + fetchFeatureFlags: (workspaceSlug: string, userId: string) => Promise; +} + +export class FeatureFlagsStore implements IFeatureFlagsStore { + loader = false; + flags: TFeatureFlagsMaps = {}; + + constructor() { + makeObservable(this, { + loader: observable.ref, + flags: observable, + fetchFeatureFlags: action, + }); + } + + fetchFeatureFlags = async (workspaceSlug: string, userId: string) => { + try { + set(this, "loader", true); + const response = await featureFlagService.getFeatureFlags({ workspace_slug: workspaceSlug, user_id: userId }); + runInAction(() => { + if (response.values) { + Object.keys(response.values).forEach((key) => { + set(this.flags, key, response.values[key]); + }); + } + set(this, "loader", false); + }); + return response; + } catch (error) { + set(this, "loader", false); + console.error("Error fetching feature flags", error); + throw error; + } + }; +} diff --git a/web/ee/store/root.store.ts b/web/ee/store/root.store.ts index 6efbca2057..44f3095d71 100644 --- a/web/ee/store/root.store.ts +++ b/web/ee/store/root.store.ts @@ -1,23 +1,26 @@ // plane web store +import { FeatureFlagsStore, IFeatureFlagsStore } from "@/plane-web/store/feature-flags/feature-flags.store"; import { IPublishPageStore, PublishPageStore } from "@/plane-web/store/pages/publish-page.store"; import { IWorkspacePageStore, WorkspacePageStore } from "@/plane-web/store/pages/workspace-page.store"; -// store import { IWorkspaceSubscriptionStore, WorkspaceSubscriptionStore, } from "@/plane-web/store/subscription/subscription.store"; +// store import { CoreRootStore } from "@/store/root.store"; export class RootStore extends CoreRootStore { workspacePages: IWorkspacePageStore; publishPage: IPublishPageStore; workspaceSubscription: IWorkspaceSubscriptionStore; + featureFlags: IFeatureFlagsStore; constructor() { super(); this.workspacePages = new WorkspacePageStore(this); this.publishPage = new PublishPageStore(this); this.workspaceSubscription = new WorkspaceSubscriptionStore(this); + this.featureFlags = new FeatureFlagsStore(); } resetOnSignOut() { @@ -25,5 +28,6 @@ export class RootStore extends CoreRootStore { this.workspacePages = new WorkspacePageStore(this); this.publishPage = new PublishPageStore(this); this.workspaceSubscription = new WorkspaceSubscriptionStore(this); + this.featureFlags = new FeatureFlagsStore(); } } diff --git a/web/ee/store/subscription/subscription.store.ts b/web/ee/store/subscription/subscription.store.ts index 3ee4c9c264..54b97cd59a 100644 --- a/web/ee/store/subscription/subscription.store.ts +++ b/web/ee/store/subscription/subscription.store.ts @@ -1,7 +1,7 @@ import { set } from "lodash"; import { action, computed, makeObservable, observable, runInAction } from "mobx"; // types -import { IWorkspaceProductSubscription, TProductSubscriptionType } from "@plane/types"; +import { IWorkspaceProductSubscription } from "@plane/types"; // services import { PaymentService } from "@/plane-web/services/payment.service"; // plane web store @@ -10,41 +10,56 @@ import { RootStore } from "@/plane-web/store/root.store"; const paymentService = new PaymentService(); type TWorkspaceSubscriptionMap = { - [workspaceSlug: string]: TProductSubscriptionType; + [workspaceSlug: string]: IWorkspaceProductSubscription; }; export interface IWorkspaceSubscriptionStore { subscribedPlan: TWorkspaceSubscriptionMap; - currentWorkspaceSubscribedPlan: TProductSubscriptionType | undefined; + isProPlanModalOpen: boolean; + currentWorkspaceSubscribedPlanDetail: IWorkspaceProductSubscription | undefined; + toggleProPlanModal: (value?: boolean) => void; fetchWorkspaceSubscribedPlan: (workspaceSlug: string) => Promise; } export class WorkspaceSubscriptionStore implements IWorkspaceSubscriptionStore { subscribedPlan: TWorkspaceSubscriptionMap = {}; + isProPlanModalOpen = false; constructor(private rootStore: RootStore) { makeObservable(this, { subscribedPlan: observable, - currentWorkspaceSubscribedPlan: computed, + isProPlanModalOpen: observable.ref, + currentWorkspaceSubscribedPlanDetail: computed, + toggleProPlanModal: action, fetchWorkspaceSubscribedPlan: action, }); } - get currentWorkspaceSubscribedPlan() { + get currentWorkspaceSubscribedPlanDetail() { if (!this.rootStore.router.workspaceSlug) return undefined; return this.subscribedPlan[this.rootStore.router.workspaceSlug] || undefined; } + toggleProPlanModal = (value?: boolean) => { + this.isProPlanModalOpen = value ?? !this.isProPlanModalOpen; + }; + fetchWorkspaceSubscribedPlan = async (workspaceSlug: string) => { try { - const response = await paymentService.getWorkspaceCurrentPlane(workspaceSlug); + const response = await paymentService.getWorkspaceCurrentPlan(workspaceSlug); runInAction(() => { - set(this.subscribedPlan, workspaceSlug, response?.product || "FREE"); + set(this.subscribedPlan, workspaceSlug, { + product: response?.product || "FREE", + current_period_end_date: response?.current_period_end_date, + }); }); return response; } catch (error) { runInAction(() => { - set(this.subscribedPlan, workspaceSlug, "FREE"); + set(this.subscribedPlan, workspaceSlug, { + product: "FREE", + current_period_end_date: null, + }); }); throw error; } diff --git a/web/next.config.js b/web/next.config.js index c41102d659..d4670a7f55 100644 --- a/web/next.config.js +++ b/web/next.config.js @@ -81,6 +81,15 @@ const nextConfig = { destination: `${GOD_MODE_BASE_URL}/:path*`, }); } + + if (process.env.NEXT_PUBLIC_FEATURE_FLAG_SERVER_BASE_URL) { + const FEATURE_FLAG_SERVER_BASE_URL = process.env.NEXT_PUBLIC_FEATURE_FLAG_SERVER_BASE_URL; + rewrites.push({ + source: "/flags/", + destination: `${FEATURE_FLAG_SERVER_BASE_URL}/api/feature-flags/`, + }); + } + return rewrites; }, }; diff --git a/yarn.lock b/yarn.lock index a427ee3808..30b5769b56 100644 --- a/yarn.lock +++ b/yarn.lock @@ -46,9 +46,9 @@ "@babel/runtime" "^7.0.0" "@atlaskit/pragmatic-drag-and-drop@^1.1.0", "@atlaskit/pragmatic-drag-and-drop@^1.1.10", "@atlaskit/pragmatic-drag-and-drop@^1.1.3": - version "1.1.11" - resolved "https://registry.yarnpkg.com/@atlaskit/pragmatic-drag-and-drop/-/pragmatic-drag-and-drop-1.1.11.tgz#6cadcd0cd54f72598967642fd60f6187ae7612fe" - integrity sha512-oAwMGM68d7PrAHvcgwzJbOtZJKW6BJsc2eDWfVWb7W+lGo8tWDIFdMSmR2K+EczV03lXgdnQbRWDMcOrZ/98mQ== + version "1.1.12" + resolved "https://registry.yarnpkg.com/@atlaskit/pragmatic-drag-and-drop/-/pragmatic-drag-and-drop-1.1.12.tgz#9b2a094af99eacc592eb18e9111e41a36730a3a9" + integrity sha512-mg9fDg0T8XnxIbjnwUYL4U+zlpEJO24iS61FI071JFYaiX3A2J+zGMYzu3EyiWpamU8R7yeLoROtw1Fbs7MX6Q== dependencies: "@babel/runtime" "^7.0.0" bind-event-listener "^3.0.0" @@ -1038,7 +1038,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.1", "@babel/runtime@^7.5.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.7.tgz#f4f0d5530e8dbdf59b3451b9b3e594b6ba082e12" integrity sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw== @@ -1138,9 +1138,9 @@ "@egjs/component" "^3.0.2" "@chromatic-com/storybook@^1.4.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@chromatic-com/storybook/-/storybook-1.5.0.tgz#a1312b7fc8ac0df2d43c51e48014e024fd4b9561" - integrity sha512-LkLKv7SWu/6kGep1ft2HA1T/cm14wU0zoW71gE4cZRcgUoRQJtyhITFTLHrjqAxz6bVqNgqzQtd5oBZ2nK3L3g== + version "1.6.0" + resolved "https://registry.yarnpkg.com/@chromatic-com/storybook/-/storybook-1.6.0.tgz#a55233e098e824f83fcfb1d730d56694249a969e" + integrity sha512-6sHj0l194KMBIZ0D5SeJ+Ys+zslehKHcC2d6Hd/YEn4cCl7p9mLuxrZjvf8xharGKy8vf9Q1tKrU2YdldzUBoQ== dependencies: chromatic "^11.4.0" filesize "^10.0.12" @@ -1542,9 +1542,9 @@ eslint-visitor-keys "^3.3.0" "@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1": - version "4.10.1" - resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.10.1.tgz#361461e5cb3845d874e61731c11cfedd664d83a0" - integrity sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA== + version "4.11.0" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.11.0.tgz#b0ffd0312b4a3fd2d6f77237e7248a5ad3a680ae" + integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A== "@eslint/eslintrc@^2.1.4": version "2.1.4" @@ -1571,41 +1571,41 @@ resolved "https://registry.yarnpkg.com/@fal-works/esbuild-plugin-global-externals/-/esbuild-plugin-global-externals-2.1.2.tgz#c05ed35ad82df8e6ac616c68b92c2282bd083ba4" integrity sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ== -"@floating-ui/core@^1.0.0": - version "1.6.2" - resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.2.tgz#d37f3e0ac1f1c756c7de45db13303a266226851a" - integrity sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg== +"@floating-ui/core@^1.6.0": + version "1.6.4" + resolved "https://registry.yarnpkg.com/@floating-ui/core/-/core-1.6.4.tgz#0140cf5091c8dee602bff9da5ab330840ff91df6" + integrity sha512-a4IowK4QkXl4SCWTGUR0INAfEOX3wtsYw3rKK5InQEHMGObkR8Xk44qYQD9P4r6HHw0iIfK6GUKECmY8sTkqRA== dependencies: - "@floating-ui/utils" "^0.2.0" + "@floating-ui/utils" "^0.2.4" "@floating-ui/dom@^1.0.0": - version "1.6.5" - resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.5.tgz#323f065c003f1d3ecf0ff16d2c2c4d38979f4cb9" - integrity sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw== + version "1.6.7" + resolved "https://registry.yarnpkg.com/@floating-ui/dom/-/dom-1.6.7.tgz#85d22f731fcc5b209db504478fb1df5116a83015" + integrity sha512-wmVfPG5o2xnKDU4jx/m4w5qva9FWHcnZ8BvzEe90D/RpwsJaTAVYPEPdQ8sbr/N8zZTAHlZUTQdqg8ZUbzHmng== dependencies: - "@floating-ui/core" "^1.0.0" - "@floating-ui/utils" "^0.2.0" + "@floating-ui/core" "^1.6.0" + "@floating-ui/utils" "^0.2.4" -"@floating-ui/react-dom@^2.0.8", "@floating-ui/react-dom@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.0.tgz#4f0e5e9920137874b2405f7d6c862873baf4beff" - integrity sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA== +"@floating-ui/react-dom@^2.0.8", "@floating-ui/react-dom@^2.1.1": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@floating-ui/react-dom/-/react-dom-2.1.1.tgz#cca58b6b04fc92b4c39288252e285e0422291fb0" + integrity sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg== dependencies: "@floating-ui/dom" "^1.0.0" "@floating-ui/react@^0.26.4": - version "0.26.17" - resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.17.tgz#efa2e1a0dea3d9d308965c5ccd49756bb64a883d" - integrity sha512-ESD+jYWwqwVzaIgIhExrArdsCL1rOAzryG/Sjlu8yaD3Mtqi3uVyhbE2V7jD58Mo52qbzKz2eUY/Xgh5I86FCQ== + version "0.26.19" + resolved "https://registry.yarnpkg.com/@floating-ui/react/-/react-0.26.19.tgz#e3c713bec8a7264caa6f8195e0865f9210f483a1" + integrity sha512-Jk6zITdjjIvjO/VdQFvpRaD3qPwOHH6AoDHxjhpy+oK4KFgaSP871HYWUAPdnLmx1gQ+w/pB312co3tVml+BXA== dependencies: - "@floating-ui/react-dom" "^2.1.0" - "@floating-ui/utils" "^0.2.0" + "@floating-ui/react-dom" "^2.1.1" + "@floating-ui/utils" "^0.2.4" tabbable "^6.0.0" -"@floating-ui/utils@^0.2.0": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.2.tgz#d8bae93ac8b815b2bd7a98078cf91e2724ef11e5" - integrity sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw== +"@floating-ui/utils@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@floating-ui/utils/-/utils-0.2.4.tgz#1d459cee5031893a08a0e064c406ad2130cced7c" + integrity sha512-dWO2pw8hhi+WrXq1YJy2yCuWoL20PddgGaqTgVe4cOS9Q6qklXCiA1tJEqX6BEwRNSCP84/afac9hd4MS+zEUA== "@headlessui/react@^1.7.13", "@headlessui/react@^1.7.19", "@headlessui/react@^1.7.3": version "1.7.19" @@ -1806,7 +1806,7 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" -"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.4.15": version "1.4.15" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== @@ -1844,22 +1844,22 @@ clsx "^2.1.0" prop-types "^15.8.1" -"@mui/core-downloads-tracker@^5.15.19": - version "5.15.19" - resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.19.tgz#7af0025c871f126367a55219486681954e4821d7" - integrity sha512-tCHSi/Tomez9ERynFhZRvFO6n9ATyrPs+2N80DMDzp6xDVirbBjEwhPcE+x7Lj+nwYw0SqFkOxyvMP0irnm55w== +"@mui/core-downloads-tracker@^5.15.21": + version "5.15.21" + resolved "https://registry.yarnpkg.com/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.21.tgz#15ffc56cef7009479229b55126176f988afba96b" + integrity sha512-dp9lXBaJZzJYeJfQY3Ow4Rb49QaCEdkl2KKYscdQHQm6bMJ+l4XPY3Cd9PCeeJTsHPIDJ60lzXbeRgs6sx/rpw== "@mui/material@^5.14.1": - version "5.15.19" - resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.19.tgz#a5bd50b6e68cee4ed39ea91dbecede5a020aaa97" - integrity sha512-lp5xQBbcRuxNtjpWU0BWZgIrv2XLUz4RJ0RqFXBdESIsKoGCQZ6P3wwU5ZPuj5TjssNiKv9AlM+vHopRxZhvVQ== + version "5.15.21" + resolved "https://registry.yarnpkg.com/@mui/material/-/material-5.15.21.tgz#b2c8d756af570a61cb4975acf0e71dafb110b001" + integrity sha512-nTyCcgduKwHqiuQ/B03EQUa+utSMzn2sQp0QAibsnYe4tvc3zkMbO0amKpl48vhABIY3IvT6w9615BFIgMt0YA== dependencies: "@babel/runtime" "^7.23.9" "@mui/base" "5.0.0-beta.40" - "@mui/core-downloads-tracker" "^5.15.19" - "@mui/system" "^5.15.15" + "@mui/core-downloads-tracker" "^5.15.21" + "@mui/system" "^5.15.20" "@mui/types" "^7.2.14" - "@mui/utils" "^5.15.14" + "@mui/utils" "^5.15.20" "@types/react-transition-group" "^4.4.10" clsx "^2.1.0" csstype "^3.1.3" @@ -1867,13 +1867,13 @@ react-is "^18.2.0" react-transition-group "^4.4.5" -"@mui/private-theming@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.14.tgz#edd9a82948ed01586a01c842eb89f0e3f68970ee" - integrity sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw== +"@mui/private-theming@^5.15.20": + version "5.15.20" + resolved "https://registry.yarnpkg.com/@mui/private-theming/-/private-theming-5.15.20.tgz#028c4e3c717a13691ac2c8c98e29aa819d89001a" + integrity sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g== dependencies: "@babel/runtime" "^7.23.9" - "@mui/utils" "^5.15.14" + "@mui/utils" "^5.15.20" prop-types "^15.8.1" "@mui/styled-engine@^5.15.14": @@ -1886,16 +1886,16 @@ csstype "^3.1.3" prop-types "^15.8.1" -"@mui/system@^5.15.15": - version "5.15.15" - resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.15.tgz#658771b200ce3c4a0f28e58169f02e5e718d1c53" - integrity sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ== +"@mui/system@^5.15.20": + version "5.15.20" + resolved "https://registry.yarnpkg.com/@mui/system/-/system-5.15.20.tgz#f1933aabc4c10f8580c7a951ca3b88542ef0f76b" + integrity sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA== dependencies: "@babel/runtime" "^7.23.9" - "@mui/private-theming" "^5.15.14" + "@mui/private-theming" "^5.15.20" "@mui/styled-engine" "^5.15.14" "@mui/types" "^7.2.14" - "@mui/utils" "^5.15.14" + "@mui/utils" "^5.15.20" clsx "^2.1.0" csstype "^3.1.3" prop-types "^15.8.1" @@ -1905,10 +1905,10 @@ resolved "https://registry.yarnpkg.com/@mui/types/-/types-7.2.14.tgz#8a02ac129b70f3d82f2f9b76ded2c8d48e3fc8c9" integrity sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ== -"@mui/utils@^5.15.14": - version "5.15.14" - resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.14.tgz#e414d7efd5db00bfdc875273a40c0a89112ade3a" - integrity sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA== +"@mui/utils@^5.15.14", "@mui/utils@^5.15.20": + version "5.15.20" + resolved "https://registry.yarnpkg.com/@mui/utils/-/utils-5.15.20.tgz#92778d749ce5ded1598639b4e684aaedb1146e08" + integrity sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A== dependencies: "@babel/runtime" "^7.23.9" "@types/prop-types" "^15.7.11" @@ -1924,62 +1924,62 @@ pump "^3.0.0" tar-fs "^2.1.1" -"@next/env@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.3.tgz#d6def29d1c763c0afb397343a15a82e7d92353a0" - integrity sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA== +"@next/env@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.4.tgz#5546813dc4f809884a37d257b254a5ce1b0248d7" + integrity sha512-3EtkY5VDkuV2+lNmKlbkibIJxcO4oIHEhBWne6PaAp+76J9KoSsGvNikp6ivzAT8dhhBMYrm6op2pS1ApG0Hzg== -"@next/eslint-plugin-next@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.3.tgz#287ad8620e7061ba01e8d3313d464db6d217b6df" - integrity sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw== +"@next/eslint-plugin-next@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.4.tgz#c7f965cb76f0b454e726ef0f69157c4fb4e28f53" + integrity sha512-svSFxW9f3xDaZA3idQmlFw7SusOuWTpDTAeBlO3AEPDltrraV+lqs7mAc6A27YdnpQVVIA3sODqUAAHdWhVWsA== dependencies: glob "10.3.10" -"@next/swc-darwin-arm64@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz#db1a05eb88c0224089b815ad10ac128ec79c2cdb" - integrity sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A== +"@next/swc-darwin-arm64@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.4.tgz#da9f04c34a3d5f0b8401ed745768420e4a604036" + integrity sha512-AH3mO4JlFUqsYcwFUHb1wAKlebHU/Hv2u2kb1pAuRanDZ7pD/A/KPD98RHZmwsJpdHQwfEc/06mgpSzwrJYnNg== -"@next/swc-darwin-x64@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz#a3f8af05b5f9a52ac3082e66ac29e125ab1d7b9c" - integrity sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA== +"@next/swc-darwin-x64@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.4.tgz#46dedb29ec5503bf171a72a3ecb8aac6e738e9d6" + integrity sha512-QVadW73sWIO6E2VroyUjuAxhWLZWEpiFqHdZdoQ/AMpN9YWGuHV8t2rChr0ahy+irKX5mlDU7OY68k3n4tAZTg== -"@next/swc-linux-arm64-gnu@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz#4e63f43879285b52554bfd39e6e0cc78a9b27bbf" - integrity sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA== +"@next/swc-linux-arm64-gnu@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.4.tgz#c9697ab9eb422bd1d7ffd0eb0779cc2aefa9d4a1" + integrity sha512-KT6GUrb3oyCfcfJ+WliXuJnD6pCpZiosx2X3k66HLR+DMoilRb76LpWPGb4tZprawTtcnyrv75ElD6VncVamUQ== -"@next/swc-linux-arm64-musl@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz#ebdaed26214448b1e6f2c3e8b3cd29bfba387990" - integrity sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw== +"@next/swc-linux-arm64-musl@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.4.tgz#cbbceb2008571c743b5a310a488d2e166d200a75" + integrity sha512-Alv8/XGSs/ytwQcbCHwze1HmiIkIVhDHYLjczSVrf0Wi2MvKn/blt7+S6FJitj3yTlMwMxII1gIJ9WepI4aZ/A== -"@next/swc-linux-x64-gnu@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz#19e3bcc137c3b582a1ab867106817e5c90a20593" - integrity sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w== +"@next/swc-linux-x64-gnu@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.4.tgz#d79184223f857bacffb92f643cb2943a43632568" + integrity sha512-ze0ShQDBPCqxLImzw4sCdfnB3lRmN3qGMB2GWDRlq5Wqy4G36pxtNOo2usu/Nm9+V2Rh/QQnrRc2l94kYFXO6Q== -"@next/swc-linux-x64-musl@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz#794a539b98e064169cf0ff7741b2a4fb16adec7d" - integrity sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ== +"@next/swc-linux-x64-musl@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.4.tgz#6b6c3e5ac02ca5e63394d280ec8ee607491902df" + integrity sha512-8dwC0UJoc6fC7PX70csdaznVMNr16hQrTDAMPvLPloazlcaWfdPogq+UpZX6Drqb1OBlwowz8iG7WR0Tzk/diQ== -"@next/swc-win32-arm64-msvc@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz#eda9fa0fbf1ff9113e87ac2668ee67ce9e5add5a" - integrity sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A== +"@next/swc-win32-arm64-msvc@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.4.tgz#dbad3906e870dba84c5883d9d4c4838472e0697f" + integrity sha512-jxyg67NbEWkDyvM+O8UDbPAyYRZqGLQDTPwvrBBeOSyVWW/jFQkQKQ70JDqDSYg1ZDdl+E3nkbFbq8xM8E9x8A== -"@next/swc-win32-ia32-msvc@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz#7c1190e3f640ab16580c6bdbd7d0e766b9920457" - integrity sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw== +"@next/swc-win32-ia32-msvc@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.4.tgz#6074529b91ba49132922ce89a2e16d25d2ec235d" + integrity sha512-twrmN753hjXRdcrZmZttb/m5xaCBFa48Dt3FbeEItpJArxriYDunWxJn+QFXdJ3hPkm4u7CKxncVvnmgQMY1ag== -"@next/swc-win32-x64-msvc@14.2.3": - version "14.2.3" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz#2be4e39ee25bfbd85be78eea17c0e7751dc4323c" - integrity sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA== +"@next/swc-win32-x64-msvc@14.2.4": + version "14.2.4" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.4.tgz#e65a1c6539a671f97bb86d5183d6e3a1733c29c7" + integrity sha512-tkLrjBzqFTP8DVrAAQmZelEahfR9OxWpFR++vAI9FBhCiIxtwHwBHC23SBHCTURBtwB4kc/x44imVOnkKGNVGg== "@nivo/annotations@0.80.0": version "0.80.0" @@ -2164,17 +2164,10 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@opentelemetry/api-logs@0.51.1": - version "0.51.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.51.1.tgz#ded1874c04516c2b8cb24828eef3d6c3d1f75343" - integrity sha512-E3skn949Pk1z2XtXu/lxf6QAZpawuTM/IUEXcAzpiUkTd73Hmvw26FiN3cJuTmkpM5hZzHwkomVdtrh/n/zzwA== - dependencies: - "@opentelemetry/api" "^1.0.0" - -"@opentelemetry/api-logs@0.52.0": - version "0.52.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.52.0.tgz#b117c1fc6fc457249739bbe21571cefc55e5092c" - integrity sha512-HxjD7xH9iAE4OyhNaaSec65i1H6QZYBWSwWkowFfsc5YAcDvJG30/J1sRKXEQqdmUcKTXEAnA66UciqZha/4+Q== +"@opentelemetry/api-logs@0.52.1": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz#52906375da4d64c206b0c4cb8ffa209214654ecc" + integrity sha512-qnSqB2DQ9TPP96dl8cDubDvrUyWc0/sK81xHTK8eSUspzDM3bsewX903qclQFvVhgStjRWdC5bLb3kQqMkfV5A== dependencies: "@opentelemetry/api" "^1.0.0" @@ -2183,17 +2176,17 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== -"@opentelemetry/context-async-hooks@^1.25.0": - version "1.25.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.25.0.tgz#bc3dcb1302b34b0f56047dd0d0f56b33013f657f" - integrity sha512-sBW313mnMyFg0cp/40BRzrZBWG+581s2j5gIsa5fgGadswyILk4mNFATsqrCOpAx945RDuZ2B7ThQLgor9OpfA== +"@opentelemetry/context-async-hooks@^1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.25.1.tgz#810bff2fcab84ec51f4684aff2d21f6c057d9e73" + integrity sha512-UW/ge9zjvAEmRWVapOP0qyCvPulWU6cQxGxDbWEFfGOj1VBBZAuOqTo3X6yWmDTD3Xe15ysCZChHncr2xFMIfQ== -"@opentelemetry/core@1.25.0", "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.25.0", "@opentelemetry/core@^1.8.0": - version "1.25.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.25.0.tgz#ad034f5c2669f589bd703bfbbaa38b51f8504053" - integrity sha512-n0B3s8rrqGrasTgNkXLKXzN0fXo+6IYP7M5b7AMsrZM33f/y6DS6kJ0Btd7SespASWq8bgL3taLo0oe0vB52IQ== +"@opentelemetry/core@1.25.1", "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.25.1", "@opentelemetry/core@^1.8.0": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.25.1.tgz#ff667d939d128adfc7c793edae2f6bca177f829d" + integrity sha512-GeT/l6rBYWVQ4XArluLVB6WWQ8flHbdb6r2FCHC3smtdOAbrJBIv35tpV/yp9bmYUJf+xmZpu9DRTIeJVhFbEQ== dependencies: - "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/semantic-conventions" "1.25.1" "@opentelemetry/instrumentation-connect@0.37.0": version "0.37.0" @@ -2205,10 +2198,10 @@ "@opentelemetry/semantic-conventions" "^1.22.0" "@types/connect" "3.4.36" -"@opentelemetry/instrumentation-express@0.40.0": - version "0.40.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.40.0.tgz#e2172b39e7abc218b29564aa59e92c1ab8ca8389" - integrity sha512-ahITgz2cFaMvqGDvxOdgxjgQyGmFccGMIoiwYpZQ+MJQt5qxvRZhau794/McdvtUp4LrK5OfvK1hQp4YsW2VGA== +"@opentelemetry/instrumentation-express@0.40.1": + version "0.40.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-express/-/instrumentation-express-0.40.1.tgz#b4c31a352691b060b330e4c028a8ef5472b89e27" + integrity sha512-+RKMvVe2zw3kIXRup9c1jFu3T4d0fs5aKy015TpiMyoCKX1UMu3Z0lfgYtuyiSTANvg5hZnDbWmQmqSPj9VTvg== dependencies: "@opentelemetry/core" "^1.8.0" "@opentelemetry/instrumentation" "^0.52.0" @@ -2239,14 +2232,14 @@ "@opentelemetry/instrumentation" "^0.52.0" "@opentelemetry/semantic-conventions" "^1.22.0" -"@opentelemetry/instrumentation-http@0.52.0": - version "0.52.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.52.0.tgz#a2fd280a493591d2cf4db534253ca406580569f7" - integrity sha512-E6ywZuxTa4LnVXZGwL1oj3e2Eog1yIaNqa8KjKXoGkDNKte9/SjQnePXOmhQYI0A9nf0UyFbP9aKd+yHrkJXUA== +"@opentelemetry/instrumentation-http@0.52.1": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.52.1.tgz#12061501601838d1c912f9c29bdd40a13a7e44cf" + integrity sha512-dG/aevWhaP+7OLv4BQQSEKMJv8GyeOp3Wxl31NHqE8xo9/fYMfEljiZphUHIfyg4gnZ9swMyWjfOQs5GUQe54Q== dependencies: - "@opentelemetry/core" "1.25.0" - "@opentelemetry/instrumentation" "0.52.0" - "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/core" "1.25.1" + "@opentelemetry/instrumentation" "0.52.1" + "@opentelemetry/semantic-conventions" "1.25.1" semver "^7.5.2" "@opentelemetry/instrumentation-ioredis@0.41.0": @@ -2269,10 +2262,10 @@ "@types/koa" "2.14.0" "@types/koa__router" "12.0.3" -"@opentelemetry/instrumentation-mongodb@0.44.0": - version "0.44.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.44.0.tgz#359ecc72a903f8f586f34d7a57b7e122037621a9" - integrity sha512-VPnmN5LZN8gWQ1znRz7mdZBly4h4G8Fsp8NJYqgM1CEoglX+O/Dj36zesZVSi1InPyDX2hGDTt6Qp3DFYjl7WA== +"@opentelemetry/instrumentation-mongodb@0.45.0": + version "0.45.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-mongodb/-/instrumentation-mongodb-0.45.0.tgz#d6373e30f3e83eba87f7e6e2ea72c1351467d6b5" + integrity sha512-xnZP9+ayeB1JJyNE9cIiwhOJTzNEsRhXVdLgfzmrs48Chhhk026mQdM5CITfyXSCfN73FGAIB8d91+pflJEfWQ== dependencies: "@opentelemetry/instrumentation" "^0.52.0" "@opentelemetry/sdk-metrics" "^1.9.1" @@ -2324,14 +2317,23 @@ "@types/pg" "8.6.1" "@types/pg-pool" "2.0.4" -"@opentelemetry/instrumentation@0.52.0", "@opentelemetry/instrumentation@^0.52.0": - version "0.52.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.52.0.tgz#f8b790bfb1c61c27e0ba846bc6d0e377da195d1e" - integrity sha512-LPwSIrw+60cheWaXsfGL8stBap/AppKQJFE+qqRvzYrgttXFH2ofoIMxWadeqPTq4BYOXM/C7Bdh/T+B60xnlQ== +"@opentelemetry/instrumentation-redis-4@0.40.0": + version "0.40.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-redis-4/-/instrumentation-redis-4-0.40.0.tgz#4a1bc9bebfb869de8d982b1a1a5b550bdb68d15b" + integrity sha512-0ieQYJb6yl35kXA75LQUPhHtGjtQU9L85KlWa7d4ohBbk/iQKZ3X3CFl5jC5vNMq/GGPB3+w3IxNvALlHtrp7A== dependencies: - "@opentelemetry/api-logs" "0.52.0" + "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/redis-common" "^0.36.2" + "@opentelemetry/semantic-conventions" "^1.22.0" + +"@opentelemetry/instrumentation@0.52.1", "@opentelemetry/instrumentation@^0.49 || ^0.50 || ^0.51 || ^0.52.0", "@opentelemetry/instrumentation@^0.52.0", "@opentelemetry/instrumentation@^0.52.1": + version "0.52.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.52.1.tgz#2e7e46a38bd7afbf03cf688c862b0b43418b7f48" + integrity sha512-uXJbYU/5/MBHjMp1FqrILLRuiJCs3Ofk0MeRDk8g1S1gD47U8X3JnSwcMO1rtRo1x1a7zKaQHaoYu49p/4eSKw== + dependencies: + "@opentelemetry/api-logs" "0.52.1" "@types/shimmer" "^1.0.2" - import-in-the-middle "1.8.0" + import-in-the-middle "^1.8.1" require-in-the-middle "^7.1.1" semver "^7.5.2" shimmer "^1.2.1" @@ -2347,53 +2349,41 @@ semver "^7.5.2" shimmer "^1.2.1" -"@opentelemetry/instrumentation@^0.49 || ^0.50 || ^0.51": - version "0.51.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.51.1.tgz#46fb2291150ec6923e50b2f094b9407bc726ca9b" - integrity sha512-JIrvhpgqY6437QIqToyozrUG1h5UhwHkaGK/WAX+fkrpyPtc+RO5FkRtUd9BH0MibabHHvqsnBGKfKVijbmp8w== - dependencies: - "@opentelemetry/api-logs" "0.51.1" - "@types/shimmer" "^1.0.2" - import-in-the-middle "1.7.4" - require-in-the-middle "^7.1.1" - semver "^7.5.2" - shimmer "^1.2.1" - "@opentelemetry/redis-common@^0.36.2": version "0.36.2" resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== -"@opentelemetry/resources@1.25.0", "@opentelemetry/resources@^1.25.0": - version "1.25.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.25.0.tgz#84a1e70097e342aa2047aac97be114ad14966793" - integrity sha512-iHjydPMYJ+Li1auveJCq2rp5U2h6Mhq8BidiyE0jfVlDTFyR1ny8AfJHfmFzJ/RAM8vT8L7T21kcmGybxZC7lQ== +"@opentelemetry/resources@1.25.1", "@opentelemetry/resources@^1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.25.1.tgz#bb9a674af25a1a6c30840b755bc69da2796fefbb" + integrity sha512-pkZT+iFYIZsVn6+GzM0kSX+u3MSLCY9md+lIJOoKl/P+gJFfxJte/60Usdp8Ce4rOs8GduUpSPNe1ddGyDT1sQ== dependencies: - "@opentelemetry/core" "1.25.0" - "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/core" "1.25.1" + "@opentelemetry/semantic-conventions" "1.25.1" "@opentelemetry/sdk-metrics@^1.9.1": - version "1.25.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.0.tgz#0c954d580c17821ae4385d29447718df09e80b79" - integrity sha512-IF+Sv4VHgBr/BPMKabl+GouJIhEqAOexCHgXVTISdz3q9P9H/uA8ScCF+22gitQ69aFtESbdYOV+Fen5+avQng== + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-metrics/-/sdk-metrics-1.25.1.tgz#50c985ec15557a9654334e7fa1018dc47a8a56b7" + integrity sha512-9Mb7q5ioFL4E4dDrc4wC/A3NTHDat44v4I3p2pLPSxRvqUbDIQyMVr9uK+EU69+HWhlET1VaSrRzwdckWqY15Q== dependencies: - "@opentelemetry/core" "1.25.0" - "@opentelemetry/resources" "1.25.0" + "@opentelemetry/core" "1.25.1" + "@opentelemetry/resources" "1.25.1" lodash.merge "^4.6.2" -"@opentelemetry/sdk-trace-base@^1.22", "@opentelemetry/sdk-trace-base@^1.25.0": - version "1.25.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.0.tgz#263f9ce19001c5cd7a814d0eb40ebc6469ae763d" - integrity sha512-6+g2fiRQUG39guCsKVeY8ToeuUf3YUnPkN6DXRA1qDmFLprlLvZm9cS6+chgbW70cZJ406FTtSCDnJwxDC5sGQ== +"@opentelemetry/sdk-trace-base@^1.22", "@opentelemetry/sdk-trace-base@^1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.25.1.tgz#cbc1e60af255655d2020aa14cde17b37bd13df37" + integrity sha512-C8k4hnEbc5FamuZQ92nTOp8X/diCY56XUTnMiv9UTuJitCzaNNHAVsdm5+HLCdI8SLQsLWIrG38tddMxLVoftw== dependencies: - "@opentelemetry/core" "1.25.0" - "@opentelemetry/resources" "1.25.0" - "@opentelemetry/semantic-conventions" "1.25.0" + "@opentelemetry/core" "1.25.1" + "@opentelemetry/resources" "1.25.1" + "@opentelemetry/semantic-conventions" "1.25.1" -"@opentelemetry/semantic-conventions@1.25.0", "@opentelemetry/semantic-conventions@^1.17.0", "@opentelemetry/semantic-conventions@^1.22.0", "@opentelemetry/semantic-conventions@^1.23.0", "@opentelemetry/semantic-conventions@^1.25.0": - version "1.25.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.0.tgz#390eb4d42a29c66bdc30066af9035645e9bb7270" - integrity sha512-M+kkXKRAIAiAP6qYyesfrC5TOmDpDVtsxuGfPcqd9B/iBrac+E14jYwrgm0yZBUIbIP2OnqC3j+UgkXLm1vxUQ== +"@opentelemetry/semantic-conventions@1.25.1", "@opentelemetry/semantic-conventions@^1.17.0", "@opentelemetry/semantic-conventions@^1.22.0", "@opentelemetry/semantic-conventions@^1.23.0", "@opentelemetry/semantic-conventions@^1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.25.1.tgz#0deecb386197c5e9c2c28f2f89f51fb8ae9f145e" + integrity sha512-ZDjMJJQRlyk8A1KZFCc+bCbsyrn1wTwdNt56F7twdfUfnHUZUq77/WfONCj8p72NZOyP7pNTdUWSTYC3GTbuuQ== "@opentelemetry/sql-common@^0.40.1": version "0.40.1" @@ -2417,13 +2407,13 @@ resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.8.tgz#6b79032e760a0899cd4204710beede972a3a185f" integrity sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A== -"@prisma/instrumentation@5.15.0": - version "5.15.0" - resolved "https://registry.yarnpkg.com/@prisma/instrumentation/-/instrumentation-5.15.0.tgz#9ec061b35761579ffa896bdf19c6a0bf53247593" - integrity sha512-fCWOOOajTKOUEp43gRmBqwt6oN9bPJcLiloi2OG/2ED0N5z62Cuza6FDrlm3SJHQAXYlXqLE0HLdEE5WcUkOzg== +"@prisma/instrumentation@5.16.0": + version "5.16.0" + resolved "https://registry.yarnpkg.com/@prisma/instrumentation/-/instrumentation-5.16.0.tgz#ee50f851945364c43e4067b84fe4071235ca3dd2" + integrity sha512-MVzNRW2ikWvVNnMIEgQMcwWxpFD+XF2U2h0Qz7MjutRqJxrhWexWV2aSi2OXRaU8UL5wzWw7pnjdKUzYhWauLg== dependencies: "@opentelemetry/api" "^1.8" - "@opentelemetry/instrumentation" "^0.49 || ^0.50 || ^0.51" + "@opentelemetry/instrumentation" "^0.49 || ^0.50 || ^0.51 || ^0.52.0" "@opentelemetry/sdk-trace-base" "^1.22" "@radix-ui/primitive@1.0.1": @@ -2433,6 +2423,11 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/primitive@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/primitive/-/primitive-1.1.0.tgz#42ef83b3b56dccad5d703ae8c42919a68798bbe2" + integrity sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA== + "@radix-ui/react-compose-refs@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz#7ed868b66946aa6030e580b1ffca386dd4d21989" @@ -2440,6 +2435,11 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/react-compose-refs@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz#656432461fc8283d7b591dcf0d79152fae9ecc74" + integrity sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw== + "@radix-ui/react-context@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.0.1.tgz#fe46e67c96b240de59187dcb7a1a50ce3e2ec00c" @@ -2447,7 +2447,12 @@ dependencies: "@babel/runtime" "^7.13.10" -"@radix-ui/react-dialog@1.0.5", "@radix-ui/react-dialog@^1.0.5": +"@radix-ui/react-context@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-context/-/react-context-1.1.0.tgz#6df8d983546cfd1999c8512f3a8ad85a6e7fcee8" + integrity sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A== + +"@radix-ui/react-dialog@1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz#71657b1b116de6c7a0b03242d7d43e01062c7300" integrity sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q== @@ -2468,6 +2473,26 @@ aria-hidden "^1.1.1" react-remove-scroll "2.5.5" +"@radix-ui/react-dialog@^1.0.5": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz#4906507f7b4ad31e22d7dad69d9330c87c431d44" + integrity sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-context" "1.1.0" + "@radix-ui/react-dismissable-layer" "1.1.0" + "@radix-ui/react-focus-guards" "1.1.0" + "@radix-ui/react-focus-scope" "1.1.0" + "@radix-ui/react-id" "1.1.0" + "@radix-ui/react-portal" "1.1.1" + "@radix-ui/react-presence" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-slot" "1.1.0" + "@radix-ui/react-use-controllable-state" "1.1.0" + aria-hidden "^1.1.1" + react-remove-scroll "2.5.7" + "@radix-ui/react-dismissable-layer@1.0.5": version "1.0.5" resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz#3f98425b82b9068dfbab5db5fff3df6ebf48b9d4" @@ -2480,6 +2505,17 @@ "@radix-ui/react-use-callback-ref" "1.0.1" "@radix-ui/react-use-escape-keydown" "1.0.3" +"@radix-ui/react-dismissable-layer@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz#2cd0a49a732372513733754e6032d3fb7988834e" + integrity sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig== + dependencies: + "@radix-ui/primitive" "1.1.0" + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-escape-keydown" "1.1.0" + "@radix-ui/react-focus-guards@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz#1ea7e32092216b946397866199d892f71f7f98ad" @@ -2487,6 +2523,11 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/react-focus-guards@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz#8e9abb472a9a394f59a1b45f3dd26cfe3fc6da13" + integrity sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw== + "@radix-ui/react-focus-scope@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz#2ac45fce8c5bb33eb18419cdc1905ef4f1906525" @@ -2497,6 +2538,15 @@ "@radix-ui/react-primitive" "1.0.3" "@radix-ui/react-use-callback-ref" "1.0.1" +"@radix-ui/react-focus-scope@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz#ebe2891a298e0a33ad34daab2aad8dea31caf0b2" + integrity sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-id@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.0.1.tgz#73cdc181f650e4df24f0b6a5b7aa426b912c88c0" @@ -2505,6 +2555,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-use-layout-effect" "1.0.1" +"@radix-ui/react-id@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-id/-/react-id-1.1.0.tgz#de47339656594ad722eb87f94a6b25f9cffae0ed" + integrity sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA== + dependencies: + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-portal@1.0.4": version "1.0.4" resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.0.4.tgz#df4bfd353db3b1e84e639e9c63a5f2565fb00e15" @@ -2513,6 +2570,14 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-primitive" "1.0.3" +"@radix-ui/react-portal@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@radix-ui/react-portal/-/react-portal-1.1.1.tgz#1957f1eb2e1aedfb4a5475bd6867d67b50b1d15f" + integrity sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g== + dependencies: + "@radix-ui/react-primitive" "2.0.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-presence@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.0.1.tgz#491990ba913b8e2a5db1b06b203cb24b5cdef9ba" @@ -2522,6 +2587,14 @@ "@radix-ui/react-compose-refs" "1.0.1" "@radix-ui/react-use-layout-effect" "1.0.1" +"@radix-ui/react-presence@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-presence/-/react-presence-1.1.0.tgz#227d84d20ca6bfe7da97104b1a8b48a833bfb478" + integrity sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-use-layout-effect" "1.1.0" + "@radix-ui/react-primitive@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz#d49ea0f3f0b2fe3ab1cb5667eb03e8b843b914d0" @@ -2530,7 +2603,14 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-slot" "1.0.2" -"@radix-ui/react-slot@1.0.2", "@radix-ui/react-slot@^1.0.2": +"@radix-ui/react-primitive@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz#fe05715faa9203a223ccc0be15dc44b9f9822884" + integrity sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw== + dependencies: + "@radix-ui/react-slot" "1.1.0" + +"@radix-ui/react-slot@1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.0.2.tgz#a9ff4423eade67f501ffb32ec22064bc9d3099ab" integrity sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg== @@ -2538,6 +2618,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-compose-refs" "1.0.1" +"@radix-ui/react-slot@1.1.0", "@radix-ui/react-slot@^1.0.2": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-slot/-/react-slot-1.1.0.tgz#7c5e48c36ef5496d97b08f1357bb26ed7c714b84" + integrity sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw== + dependencies: + "@radix-ui/react-compose-refs" "1.1.0" + "@radix-ui/react-use-callback-ref@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz#f4bb1f27f2023c984e6534317ebc411fc181107a" @@ -2545,6 +2632,11 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/react-use-callback-ref@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz#bce938ca413675bc937944b0d01ef6f4a6dc5bf1" + integrity sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw== + "@radix-ui/react-use-controllable-state@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz#ecd2ced34e6330caf89a82854aa2f77e07440286" @@ -2553,6 +2645,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-use-callback-ref" "1.0.1" +"@radix-ui/react-use-controllable-state@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz#1321446857bb786917df54c0d4d084877aab04b0" + integrity sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-escape-keydown@1.0.3": version "1.0.3" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz#217b840c250541609c66f67ed7bab2b733620755" @@ -2561,6 +2660,13 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-use-callback-ref" "1.0.1" +"@radix-ui/react-use-escape-keydown@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz#31a5b87c3b726504b74e05dac1edce7437b98754" + integrity sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw== + dependencies: + "@radix-ui/react-use-callback-ref" "1.1.0" + "@radix-ui/react-use-layout-effect@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz#be8c7bc809b0c8934acf6657b577daf948a75399" @@ -2568,6 +2674,11 @@ dependencies: "@babel/runtime" "^7.13.10" +"@radix-ui/react-use-layout-effect@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz#3c2c8ce04827b26a39e442ff4888d9212268bd27" + integrity sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w== + "@react-spring/animated@~9.4.5": version "9.4.5" resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.4.5.tgz#dd9921c716a4f4a3ed29491e0c0c9f8ca0eb1a54" @@ -2627,17 +2738,17 @@ "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" -"@rollup/plugin-commonjs@24.0.0": - version "24.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-24.0.0.tgz#fb7cf4a6029f07ec42b25daa535c75b05a43f75c" - integrity sha512-0w0wyykzdyRRPHOb0cQt14mIBLujfAv6GgP6g8nvg/iBxEm112t3YPPq+Buqe2+imvElTka+bjNlJ/gB56TD8g== +"@rollup/plugin-commonjs@26.0.1": + version "26.0.1" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-26.0.1.tgz#16d4d6e54fa63021249a292b50f27c0b0f1a30d8" + integrity sha512-UnsKoZK6/aGIH6AdkptXhNvhaqftcjq3zZdT+LY5Ftms6JR06nADcDsYp5hTU9E2lbJUEOhdlY5J4DNTneM+jQ== dependencies: "@rollup/pluginutils" "^5.0.1" commondir "^1.0.1" estree-walker "^2.0.2" - glob "^8.0.3" + glob "^10.4.1" is-reference "1.2.1" - magic-string "^0.27.0" + magic-string "^0.30.3" "@rollup/plugin-node-resolve@^11.2.1": version "11.2.1" @@ -2784,69 +2895,69 @@ dependencies: "@daybrush/utils" "^1.4.0" -"@sentry-internal/browser-utils@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.8.0.tgz#5378f2c19d30a051f0912944a64096210348ef98" - integrity sha512-yE4khknnGpAxy3TeAD9TU1eUqa0GUJ2xluIAsHKkL+RXg3AgEssMO3DBDUbpHp+QANIjzKmZIXtbdTV+1P26aQ== +"@sentry-internal/browser-utils@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/browser-utils/-/browser-utils-8.13.0.tgz#b7c3bdd49d2382f60dde31745716d29dd419b6ba" + integrity sha512-lqq8BYbbs9KTlDuyB5NjdZB6P/llqQs32KUgaCQ/k5DFB4Zf56+BFHXObnMHxwx375X1uixtnEphagWZa+nsLQ== dependencies: - "@sentry/core" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@sentry/core" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" -"@sentry-internal/feedback@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.8.0.tgz#6fb81846d09d3f4dce8e3fd85a8d0f1d7ab49418" - integrity sha512-mybzWx99DuCJxYCVPx12NHVSVbSDF1goEo+rhDGYY8kqyn+snoVBLQtsSdDXYwZyssS1G7Gh6WhX+JVDKcQO9A== +"@sentry-internal/feedback@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/feedback/-/feedback-8.13.0.tgz#100eeeb558536e2390ded8fb58cba3984ac41abd" + integrity sha512-YyJ6SzpTonixvguAg0H9vkEp7Jq8ZeVY8M4n47ClR0+TtaAUp04ZhcJpHKF7PwBIAzc7DRr2XP112tmWgiVEcg== dependencies: - "@sentry/core" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@sentry/core" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" -"@sentry-internal/replay-canvas@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.8.0.tgz#9920120d8f08b67203b0d15cc48739287448ac9c" - integrity sha512-LUoPi38Y8VRnxorIMmKLpfpf+jguhOsovMsZ3ZLc+FvMER62IIvSt4GKK4ARmUBX7+v3r61fdUWqxFs1j3uUTg== +"@sentry-internal/replay-canvas@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay-canvas/-/replay-canvas-8.13.0.tgz#fce0fb82ab85badb421244d75bc616948fb6db64" + integrity sha512-lPlfWVIHX+gW4S8a/UOVutuqMyQhlkNUAay0W21MVhZJT5Mtj0p21D/Cz7nrOQRDIiLNq90KAGK2tLxx5NkiWA== dependencies: - "@sentry-internal/replay" "8.8.0" - "@sentry/core" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@sentry-internal/replay" "8.13.0" + "@sentry/core" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" -"@sentry-internal/replay@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.8.0.tgz#b102c6429a55bae021bd3eb1d9ca1c3b95f9a59a" - integrity sha512-gMRWcjpiLJl03JB4rTMN2I4HOOJ6z611kdhUBYc+RRAue13A6uCSIPElgvlCMREkVmr/8eUKrCcIrpqj9PDJ4w== +"@sentry-internal/replay@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry-internal/replay/-/replay-8.13.0.tgz#84e57e3596e24ad0bc31eb61540c81c3737c09ff" + integrity sha512-DJ1jF/Pab0FH4SeCvSGCnGAu/s0wJvhBWM5VjQp7Jjmcfunp+R3vJibqU8gAVZU1nYRLaqprLdIXrSyP2Km8nQ== dependencies: - "@sentry-internal/browser-utils" "8.8.0" - "@sentry/core" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@sentry-internal/browser-utils" "8.13.0" + "@sentry/core" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" -"@sentry/babel-plugin-component-annotate@2.18.0": - version "2.18.0" - resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.18.0.tgz#3bee98f94945643b0762ceed1f6cca60db52bdbd" - integrity sha512-9L4RbhS3WNtc/SokIhc0dwgcvs78YSQPakZejsrIgnzLzCi8mS6PeT+BY0+QCtsXxjd1egM8hqcJeB0lukBkXA== +"@sentry/babel-plugin-component-annotate@2.20.1": + version "2.20.1" + resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.20.1.tgz#204c63ed006a048f48f633876e1b8bacf87a9722" + integrity sha512-4mhEwYTK00bIb5Y9UWIELVUfru587Vaeg0DQGswv4aIRHIiMKLyNqCEejaaybQ/fNChIZOKmvyqXk430YVd7Qg== -"@sentry/browser@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.8.0.tgz#0c3b83299ad26703e708f0534d4ac97876a010be" - integrity sha512-TkmbjV9pGpQ+OfUtIE8DaU467w73NqPTX/w/+241VlKpE9HbfranMG0N8Bibgt59GwoNIiC0NhmKaMTZg79elQ== +"@sentry/browser@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-8.13.0.tgz#38329ff716d681d8dc5445c1660698b186d05723" + integrity sha512-/tp7HZ5qjwDLtwooPMoexdAi2PG7gMNY0bHeMlwy20hs8mclC8RW8ZiJA6czXHfgnbmvxfrHaY53IJyz//JnlA== dependencies: - "@sentry-internal/browser-utils" "8.8.0" - "@sentry-internal/feedback" "8.8.0" - "@sentry-internal/replay" "8.8.0" - "@sentry-internal/replay-canvas" "8.8.0" - "@sentry/core" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@sentry-internal/browser-utils" "8.13.0" + "@sentry-internal/feedback" "8.13.0" + "@sentry-internal/replay" "8.13.0" + "@sentry-internal/replay-canvas" "8.13.0" + "@sentry/core" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" -"@sentry/bundler-plugin-core@2.18.0": - version "2.18.0" - resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.18.0.tgz#2411cd934e9510c53a2e682497a74172485ac817" - integrity sha512-JvxVgsMFmDsU0Dgcx1CeFUC1scxOVSAOzOcE06qKAVm9BZzxHpI53iNfeMOXwVTUolD8LZVIfgOjkiXfwN/UPQ== +"@sentry/bundler-plugin-core@2.20.1": + version "2.20.1" + resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.20.1.tgz#c9dd35e2177a4c22ecf675558eb84fbc2607e465" + integrity sha512-6ipbmGzHekxeRCbp7eoefr6bdd/lW4cNA9eNnrmd9+PicubweGaZZbH2NjhFHsaxzgOezwipDHjrTaap2kTHgw== dependencies: "@babel/core" "^7.18.5" - "@sentry/babel-plugin-component-annotate" "2.18.0" + "@sentry/babel-plugin-component-annotate" "2.20.1" "@sentry/cli" "^2.22.3" dotenv "^16.3.1" find-up "^5.0.0" @@ -2908,115 +3019,116 @@ "@sentry/cli-win32-i686" "2.32.1" "@sentry/cli-win32-x64" "2.32.1" -"@sentry/core@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.8.0.tgz#0071a27e366abcca8bde9afffb537ae0086434ba" - integrity sha512-SnQ42rOuUO03WvhS+2aogKhEzCW9cxpnpPzs2obxnS04KoAz7VL3oYyIwiACrRTlKpwdb9y6vuO89fDvgqPQbA== +"@sentry/core@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-8.13.0.tgz#5b2a83402013b828bf2c49c82e751ca490f8669a" + integrity sha512-N9Qg4ZGxZWp8eb2eUUHVVKgjBLtFIjS805nG92s6yJmkvOpKm6mLtcUaT/iDf3Hta6nG+xRkhbE3r+Z4cbXG8w== dependencies: - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" "@sentry/nextjs@^8": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-8.8.0.tgz#a265e867a7bb55ad2ee3a014741828a3a0173c31" - integrity sha512-B8bim9QYS6M5tNwhJNo9O02yWOFgIOp1wTma09RocvauHQ23tlaNmsmceMtzym9wFeNPbnuNYy+PkZrJ4epFTw== + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry/nextjs/-/nextjs-8.13.0.tgz#cdc89b5e776f763637f5405b0a248e61e0700ace" + integrity sha512-zXZWCA/sfGVP3MEGrshUZiMM5eOu33o8vDTKExsmGRWGTsR1tkLyLUwxQQSE9PdihUnPqv/Nw27eMXZv2XpJMw== dependencies: - "@opentelemetry/instrumentation-http" "0.52.0" - "@rollup/plugin-commonjs" "24.0.0" - "@sentry/core" "8.8.0" - "@sentry/node" "8.8.0" - "@sentry/opentelemetry" "8.8.0" - "@sentry/react" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" - "@sentry/vercel-edge" "8.8.0" - "@sentry/webpack-plugin" "2.18.0" + "@opentelemetry/instrumentation-http" "0.52.1" + "@rollup/plugin-commonjs" "26.0.1" + "@sentry/core" "8.13.0" + "@sentry/node" "8.13.0" + "@sentry/opentelemetry" "8.13.0" + "@sentry/react" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" + "@sentry/vercel-edge" "8.13.0" + "@sentry/webpack-plugin" "2.20.1" chalk "3.0.0" resolve "1.22.8" rollup "3.29.4" stacktrace-parser "^0.1.10" -"@sentry/node@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-8.8.0.tgz#75cf2e7ed1158181de11c596894fde7fdbf89a27" - integrity sha512-o8lQruMN/6nncquoML0Fjj7icx1GVCvghrXtWeJA0HPcX6ehFoZCi9Oxv4mXViF9ho0CnNrMcBhipOqbDb0Ibw== +"@sentry/node@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-8.13.0.tgz#5c41099b755a7c1f422c72ccbb5cbd93d6ecae94" + integrity sha512-OeZ7K90RhyxfwfreerIi4cszzHrPRRH36STJno2+p3sIGbG5VScOccqXzYEOAqHpByxnti4KQN34BLAT2BFOEA== dependencies: "@opentelemetry/api" "^1.9.0" - "@opentelemetry/context-async-hooks" "^1.25.0" - "@opentelemetry/core" "^1.25.0" - "@opentelemetry/instrumentation" "^0.52.0" + "@opentelemetry/context-async-hooks" "^1.25.1" + "@opentelemetry/core" "^1.25.1" + "@opentelemetry/instrumentation" "^0.52.1" "@opentelemetry/instrumentation-connect" "0.37.0" - "@opentelemetry/instrumentation-express" "0.40.0" + "@opentelemetry/instrumentation-express" "0.40.1" "@opentelemetry/instrumentation-fastify" "0.37.0" "@opentelemetry/instrumentation-graphql" "0.41.0" "@opentelemetry/instrumentation-hapi" "0.39.0" - "@opentelemetry/instrumentation-http" "0.52.0" + "@opentelemetry/instrumentation-http" "0.52.1" "@opentelemetry/instrumentation-ioredis" "0.41.0" "@opentelemetry/instrumentation-koa" "0.41.0" - "@opentelemetry/instrumentation-mongodb" "0.44.0" + "@opentelemetry/instrumentation-mongodb" "0.45.0" "@opentelemetry/instrumentation-mongoose" "0.39.0" "@opentelemetry/instrumentation-mysql" "0.39.0" "@opentelemetry/instrumentation-mysql2" "0.39.0" "@opentelemetry/instrumentation-nestjs-core" "0.38.0" "@opentelemetry/instrumentation-pg" "0.42.0" - "@opentelemetry/resources" "^1.25.0" - "@opentelemetry/sdk-trace-base" "^1.25.0" - "@opentelemetry/semantic-conventions" "^1.25.0" - "@prisma/instrumentation" "5.15.0" - "@sentry/core" "8.8.0" - "@sentry/opentelemetry" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@opentelemetry/instrumentation-redis-4" "0.40.0" + "@opentelemetry/resources" "^1.25.1" + "@opentelemetry/sdk-trace-base" "^1.25.1" + "@opentelemetry/semantic-conventions" "^1.25.1" + "@prisma/instrumentation" "5.16.0" + "@sentry/core" "8.13.0" + "@sentry/opentelemetry" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" optionalDependencies: opentelemetry-instrumentation-fetch-node "1.2.0" -"@sentry/opentelemetry@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-8.8.0.tgz#9c3dd7f1a37081d38279e6db886e51786521d21c" - integrity sha512-azxWHx+y3O9LHwyCCWWHX7tfBVBRT+HUTjhCRt/IPB+4h5TpRYE7okgrAhA3mdpvI9RoUBeYV6nboRH3LhR5+w== +"@sentry/opentelemetry@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry/opentelemetry/-/opentelemetry-8.13.0.tgz#2fb4910b10f8af67749c41f636bf3610c2690203" + integrity sha512-NYn/HNE/SxFXe8pfnxJknhrrRzYRMHNssCoi5M1CeR5G7F2BGxxVmaGsd8j0WyTCpUS4i97G4vhYtDGxHvWN6w== dependencies: - "@sentry/core" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@sentry/core" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" -"@sentry/react@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-8.8.0.tgz#0173a28f8948da318fce65401b7298ad6e4e31da" - integrity sha512-7BZyYQFJCRpWz5dn5SZxrhMU8hHH7eBC7BqNMhtsbctP/ObK6BEt3YJUDjTslkXZMOCXfN9ZdBgYEAGc7EPhFQ== +"@sentry/react@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-8.13.0.tgz#c90e8386f3a43610f6540e44ef202d13a0cac9d8" + integrity sha512-gz+aHZMcl6uvHkmLBGzMGjJJ+Vpl+W0VXJsKB9fdjZDDF5vJpgXTR9mwMEXJ9lKi+cY6tDe0+af+DA8BGJgw0Q== dependencies: - "@sentry/browser" "8.8.0" - "@sentry/core" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@sentry/browser" "8.13.0" + "@sentry/core" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" hoist-non-react-statics "^3.3.2" -"@sentry/types@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.8.0.tgz#dfbea2fd4cb3104b5128ccf37a45c56a411c397e" - integrity sha512-2EOkyHoSOJyCRCsK/O6iA3wyELkRApfY7jNxsC/Amgb5ftuGl/rGO6B4dNKjMJNLNvlkEqZIANoUKOcClBH6yw== +"@sentry/types@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-8.13.0.tgz#0753700af93592b65272e63c396b3c0202dd3105" + integrity sha512-r63s/H5gvQnQM9tTGBXz2xErUbxZALh4e2Lg/1aHj4zIvGLBjA2z5qWsh6TEZYbpmgAyGShLDr6+rWeUVf9yBQ== -"@sentry/utils@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-8.8.0.tgz#f1e940ef1fe8ce44075b3eac040238900d1cccf2" - integrity sha512-agLqo9KlXacj7NOcdYZUYqTKlFcPXdTzCnC2u9J1LxDjru9cogbiw6yyDtxBg3kpgYZubfOPz/7F2z9wCjK1cw== +"@sentry/utils@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-8.13.0.tgz#b2cce61705ea95a639db932f000247bddf13aa16" + integrity sha512-PxV0v9VbGWH9zP37P5w2msLUFDr287nYjoY2XVF+RSolyiTs1CQNI5ZMUO3o4MsSac/dpXxjyrZXQd72t/jRYA== dependencies: - "@sentry/types" "8.8.0" + "@sentry/types" "8.13.0" -"@sentry/vercel-edge@8.8.0": - version "8.8.0" - resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-8.8.0.tgz#342ce3555df3a8a0891d048958f48c7c739e92e8" - integrity sha512-4cnpgrDIDRdjw8Pq0Q9jxWNNkF8CecNbU4w3sJ+X0zbphGoPGa7TdgU1LKHZJPMJYFNRIz2pVOGBNWnPuBzLZg== +"@sentry/vercel-edge@8.13.0": + version "8.13.0" + resolved "https://registry.yarnpkg.com/@sentry/vercel-edge/-/vercel-edge-8.13.0.tgz#16d80366f8c8bf23da152d8d693d5f1a1a22dfac" + integrity sha512-6i2FTpIec/o+lfdtzXRIebo38ca4DWHXmpzfFZJVcYdBFWbu2F3Q6c61tnXGuZhyRjGtEW1ASPlbd8nterQIwQ== dependencies: - "@sentry/core" "8.8.0" - "@sentry/types" "8.8.0" - "@sentry/utils" "8.8.0" + "@sentry/core" "8.13.0" + "@sentry/types" "8.13.0" + "@sentry/utils" "8.13.0" -"@sentry/webpack-plugin@2.18.0": - version "2.18.0" - resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-2.18.0.tgz#f0955d28b1271e9a8b6a2927ab98b1688d7b03e1" - integrity sha512-iQ5OCvuoaIanbq4GRqj4Azay86mVpa64pP9Oi3EJpaURGZNLqwE7bWq9tkr1Dr7zBPBZN7QBmLD3OOeOSzbHuA== +"@sentry/webpack-plugin@2.20.1": + version "2.20.1" + resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-2.20.1.tgz#285d325a0a1bd0a534126b97e0190da9486ff7f6" + integrity sha512-U6LzoE09Ndt0OCWROoRaZqqIHGxyMRdKpBhbqoBqyyfVwXN/zGW3I/cWZ1e8rreiKFj+2+c7+X0kOS+NGMTUrg== dependencies: - "@sentry/bundler-plugin-core" "2.18.0" + "@sentry/bundler-plugin-core" "2.20.1" unplugin "1.0.1" uuid "^9.0.0" @@ -3030,55 +3142,55 @@ resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== -"@storybook/addon-actions@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.1.6.tgz#ac05b295ee88ddba1f5a96499438d997d761392d" - integrity sha512-EbiAdbtXN/UM4by3+qisbrQmElaIfahgNqffbst6GiCTmUCVE5if6geL1mzKd/u/rZOzx5g0EG76x8N9yDjOtg== +"@storybook/addon-actions@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.1.11.tgz#dafa4e84e01924372feda003c449e827347e4afd" + integrity sha512-jqYXgBgOVInStOCk//AA+dGkrfN8R7rDXA4lyu82zM59kvICtG9iqgmkSRDn0Z3zUkM+lIHZGoz0aLVQ8pxsgw== dependencies: - "@storybook/core-events" "8.1.6" + "@storybook/core-events" "8.1.11" "@storybook/global" "^5.0.0" "@types/uuid" "^9.0.1" dequal "^2.0.2" polished "^4.2.2" uuid "^9.0.0" -"@storybook/addon-backgrounds@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.1.6.tgz#77e0a657b7898286c30198a9fce772531cf48df6" - integrity sha512-mrBG5mkcMg6vpRUtNxyYaseD4ucrG+mZiqZnXcx8LWzwDMOd4mOODvap286z+Si0Fl1etbGDDhPU9+hV+o1arw== +"@storybook/addon-backgrounds@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-8.1.11.tgz#83d361abee4ca6e4e8a2bd5de37f1006d705aa19" + integrity sha512-naGf1ovmsU2pSWb270yRO1IidnO+0YCZ5Tcb8I4rPhZ0vsdXNURYKS1LPSk1OZkvaUXdeB4Im9HhHfUBJOW9oQ== dependencies: "@storybook/global" "^5.0.0" memoizerific "^1.11.3" ts-dedent "^2.0.0" -"@storybook/addon-controls@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.1.6.tgz#1085e82e0aad962990e8662705085561c8ae0ad7" - integrity sha512-hDMsu4yRP/ySb/G7hbd7nSFhVNz+F9hnizJGJX4XGuiSx7rAEYjvfKQKkawxTP+VeAw6iZPj1fukvOrMCQ0xxQ== +"@storybook/addon-controls@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-controls/-/addon-controls-8.1.11.tgz#9bcd96e7cd3262cba03e6cf5509a8eefca7ab097" + integrity sha512-q/Vt4meNVlFlBWIMCJhx6r+bqiiYocCta2RoUK5nyIZUiLzHncKHX6JnCU36EmJzRyah9zkwjfCb2G1r9cjnoQ== dependencies: - "@storybook/blocks" "8.1.6" + "@storybook/blocks" "8.1.11" dequal "^2.0.2" lodash "^4.17.21" ts-dedent "^2.0.0" -"@storybook/addon-docs@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.1.6.tgz#5bffde10bb9e2c050eb2c1559d2d4f790ff6b7d3" - integrity sha512-ejTbjDhaHn6IeTma/pwn8OutDzIqbMJKNhZx24W4FE/qvYInZIK/9gYPU9/oLKZ7FImqP3s1e4+RxDBgsq21lA== +"@storybook/addon-docs@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-docs/-/addon-docs-8.1.11.tgz#7b43d7b5a4b387b14362a367f277f6c84eb5b2c1" + integrity sha512-69dv+CE4R5wFU7xnJmhuyEbLN2PEVDV3N/BbgJqeucIYPmm6zDV83Q66teCHKYtRln3BFUqPH5mxsjiHobxfJQ== dependencies: "@babel/core" "^7.24.4" "@mdx-js/react" "^3.0.0" - "@storybook/blocks" "8.1.6" - "@storybook/client-logger" "8.1.6" - "@storybook/components" "8.1.6" - "@storybook/csf-plugin" "8.1.6" - "@storybook/csf-tools" "8.1.6" + "@storybook/blocks" "8.1.11" + "@storybook/client-logger" "8.1.11" + "@storybook/components" "8.1.11" + "@storybook/csf-plugin" "8.1.11" + "@storybook/csf-tools" "8.1.11" "@storybook/global" "^5.0.0" - "@storybook/node-logger" "8.1.6" - "@storybook/preview-api" "8.1.6" - "@storybook/react-dom-shim" "8.1.6" - "@storybook/theming" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/node-logger" "8.1.11" + "@storybook/preview-api" "8.1.11" + "@storybook/react-dom-shim" "8.1.11" + "@storybook/theming" "8.1.11" + "@storybook/types" "8.1.11" "@types/react" "^16.8.0 || ^17.0.0 || ^18.0.0" fs-extra "^11.1.0" react "^16.8.0 || ^17.0.0 || ^18.0.0" @@ -3088,72 +3200,72 @@ ts-dedent "^2.0.0" "@storybook/addon-essentials@^8.1.1": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-8.1.6.tgz#eca89952ee8f61f495213d44febdf33ea166fa67" - integrity sha512-8ve9eM9dL6JsC5hV98unXtADvwyhIZoa3iWSeTicxWab49tvAfIM9ExwcWmUyPaB4m5q45jBSBXg66bzW2+TFw== + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-essentials/-/addon-essentials-8.1.11.tgz#a32817c71f3ee1836b9b4bc03284f3931a6818ca" + integrity sha512-uRTpcIZQnflML8H+2onicUNIIssKfuviW8Lyrs/KFwSZ1rMcYzhwzCNbGlIbAv04tgHe5NqEyNhb+DVQcZQBzg== dependencies: - "@storybook/addon-actions" "8.1.6" - "@storybook/addon-backgrounds" "8.1.6" - "@storybook/addon-controls" "8.1.6" - "@storybook/addon-docs" "8.1.6" - "@storybook/addon-highlight" "8.1.6" - "@storybook/addon-measure" "8.1.6" - "@storybook/addon-outline" "8.1.6" - "@storybook/addon-toolbars" "8.1.6" - "@storybook/addon-viewport" "8.1.6" - "@storybook/core-common" "8.1.6" - "@storybook/manager-api" "8.1.6" - "@storybook/node-logger" "8.1.6" - "@storybook/preview-api" "8.1.6" + "@storybook/addon-actions" "8.1.11" + "@storybook/addon-backgrounds" "8.1.11" + "@storybook/addon-controls" "8.1.11" + "@storybook/addon-docs" "8.1.11" + "@storybook/addon-highlight" "8.1.11" + "@storybook/addon-measure" "8.1.11" + "@storybook/addon-outline" "8.1.11" + "@storybook/addon-toolbars" "8.1.11" + "@storybook/addon-viewport" "8.1.11" + "@storybook/core-common" "8.1.11" + "@storybook/manager-api" "8.1.11" + "@storybook/node-logger" "8.1.11" + "@storybook/preview-api" "8.1.11" ts-dedent "^2.0.0" -"@storybook/addon-highlight@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.1.6.tgz#9e2ac94db3137c1d1d4cb3095dab9b29e6da4c10" - integrity sha512-QT95TS4OT0SJJVz/1m038COUdS2yWukQOwyq2rCgSM6nU3OHOPf/CldDK4Sdch7Z4jV9kRdRS0Pu4FB5SV+uOw== +"@storybook/addon-highlight@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-highlight/-/addon-highlight-8.1.11.tgz#c4e7af700d3ede709472831b6afb026a0208b388" + integrity sha512-Iu8FCAd4ETsB6QF4xDE/OLLZY3HOFopuLM5KE0f58jnccF5zAVGr1Rj/54p6TeK0PEou0tLRPFuZs+LPlEzrSw== dependencies: "@storybook/global" "^5.0.0" "@storybook/addon-interactions@^8.1.1": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-8.1.6.tgz#e22bf31c09e505c41ebc3fc69ebe2bd6df0c1c2f" - integrity sha512-/5i3wXuNnduTN807BNSX7nJ0a3eQPjN49yUAfLtYtIoNCEsLAza2F5yt8aadKOj1rR6xqROc7y8NMhhC5Cp50A== + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-interactions/-/addon-interactions-8.1.11.tgz#af72827200dc6b62b47c773952146f5e34b708f2" + integrity sha512-nkc01z61mYM1kxf0ncBQLlFnnwW4RAVPfRSxK9BdbFN3AAvFiHCwVZdn71mi+C3L8oTqYR6o32e0RlXk+AjhHA== dependencies: "@storybook/global" "^5.0.0" - "@storybook/instrumenter" "8.1.6" - "@storybook/test" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/instrumenter" "8.1.11" + "@storybook/test" "8.1.11" + "@storybook/types" "8.1.11" polished "^4.2.2" ts-dedent "^2.2.0" "@storybook/addon-links@^8.1.1": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-8.1.6.tgz#83b75f79da2106ca0b5cc3e4db1c6ca7f6096743" - integrity sha512-EuSXoK+tpApjW08ZiC4yE9ePdJkIu36AFPJHA6FVierVU31klW+cbFqps88JpmALZkrlf+pzKf3uBIGLrkBSAw== + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-links/-/addon-links-8.1.11.tgz#3e15ac7fe1b7d298b7200f36b772baf6449a64c2" + integrity sha512-HlV2RQSrZyi+55W1B1a9eWNuJdNpWx0g3j7s2arNlNmbd6/kfWAp84axBstI1tL0nW4svut7bWlCsMSOIden+A== dependencies: "@storybook/csf" "^0.1.7" "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" -"@storybook/addon-measure@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.1.6.tgz#eb901ab670f583ddcf21883ed847db400421133a" - integrity sha512-afG6XzClrkBQ9ZUZQs0rI9z/RYB+qhebG5k1NTCGYJnj7K4c+jso9nQ9vmypOBqlYKwTT2ZG+9xSK1/IhudEvg== +"@storybook/addon-measure@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-measure/-/addon-measure-8.1.11.tgz#d72fdacb8c248b4fc3d1325143517011aa01c960" + integrity sha512-LkQD3SiLWaWt53aLB3EnmhD9Im8EOO+HKSUE+XGnIJRUcHHRqHfvDkN9KX7T1DCWbfRE5WzMHF5o23b3UiAANw== dependencies: "@storybook/global" "^5.0.0" tiny-invariant "^1.3.1" "@storybook/addon-onboarding@^8.1.1": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-onboarding/-/addon-onboarding-8.1.6.tgz#8853df3800b53cd2b662f666aa02a37af170c459" - integrity sha512-y70Y8bAXOb31nT4vL/BiAN2NjwsFRINVdux75HQg+SBUDquCHIurA+hftpcjAUOOunOoLE9udRi2k88vJQvw6A== + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-onboarding/-/addon-onboarding-8.1.11.tgz#6dbf59068c1625befd21f5dda75db1b6b6a86e25" + integrity sha512-oU9Tfnu3PlF71SC0chcDJs/i1MnpfQlB8GTN3TrlMzHXTwKJGz8XTdk2DQ0DB+YPo44Mhg2EavBXeBw6W2EF2g== dependencies: react-confetti "^6.1.0" -"@storybook/addon-outline@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.1.6.tgz#9c00d54670be4bd2cbc0b09f2f32a5ee83e44645" - integrity sha512-YjH3L4kxln0fLF77oDGJ2KF1I0RNrBQ9FRtqZkGMUbplxwYU0BBrguSgVeGxTLN1q/69LmL6wjFP4nLzqZARhA== +"@storybook/addon-outline@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-outline/-/addon-outline-8.1.11.tgz#3bfa20824967e2c744aac852b01f57c2b2273174" + integrity sha512-vco3RLVjkcS25dNtj1lxmjq4fC0Nq08KNLMS5cbNPVJWNTuSUi/2EthSTQQCdpfMV/p6u+D5uF20A9Pl0xJFXw== dependencies: "@storybook/global" "^5.0.0" ts-dedent "^2.0.0" @@ -3165,43 +3277,43 @@ dependencies: "@storybook/node-logger" "^8.0.0-alpha.10" -"@storybook/addon-toolbars@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.1.6.tgz#52f4000db6756d29bdc6a2313b752594ad6a3b81" - integrity sha512-d1GciLzD2ZRqh7+b8+JGuCdx8x/MAobhTy+jKeK79d+QKNtPhqZ1OvyUbwObgD6XLF8B/3DvyP3r52lmYMwlnQ== +"@storybook/addon-toolbars@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-toolbars/-/addon-toolbars-8.1.11.tgz#176a9b12880b5919e7ab12c448f32fe561feeaa7" + integrity sha512-reIKB0+JTiP+GNzynlDcRf4xmv9+j/DQ94qiXl2ZG5+ufKilH8DiRZpVA/i0x+4+TxdGdOJr1/pOf8tAmhNEoQ== -"@storybook/addon-viewport@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.1.6.tgz#4cb1f0e7462e52f37513de74b0266782119fd9a9" - integrity sha512-4EpEkJW1fPqlHIqG7OQtnAaHh9DPj7k+guXpzWjVwHfF6AE0fXIg7Yx6iVDGPyKkRaagPw6nL8DOr2U8YwK4rQ== +"@storybook/addon-viewport@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/addon-viewport/-/addon-viewport-8.1.11.tgz#7985ace7cbb66ef160a79e4040e3491048715f4e" + integrity sha512-qk4IcGnAgiAUQxt8l5PIQ293Za+w6wxlJQIpxr7+QM8OVkADPzXY0MmQfYWU9EQplrxAC2MSx3/C1gZeq+MDOQ== dependencies: memoizerific "^1.11.3" "@storybook/addon-webpack5-compiler-swc@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-1.0.3.tgz#e0d193858de4e0931a359f2837e0cbbe64b9422f" - integrity sha512-ahemZdpFN7Ikz2WTy0sLJ38t6OWLLKweeTNOfUh2ARd3x0CqJxAqWLBAFXJke+2KDFUQg9MTE+1rwHEFCPYUvQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@storybook/addon-webpack5-compiler-swc/-/addon-webpack5-compiler-swc-1.0.4.tgz#07fb85132afc82a25c976000af107ffe045f1b77" + integrity sha512-S/ypdAK9oqwUAt3ZOn44qi3RWdH5uBLbBgtfHSXckqTpQRu7F7A9bRzjK+H5ti4xVADRhxu/xzIBwxWgcCeIXA== dependencies: "@swc/core" "1.5.7" swc-loader "^0.2.3" -"@storybook/blocks@8.1.6", "@storybook/blocks@^8.1.1": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.1.6.tgz#1601ac7200d00a07a31b868f931fcdcd00340d92" - integrity sha512-HBp80G9puOejqlBA0iNlV3gUxc7TkBlNIVG2rmhjcvPZUueldxTUGIGvEfTLdEM6nqzNVZT+duXwqeHHnDcynA== +"@storybook/blocks@8.1.11", "@storybook/blocks@^8.1.1": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/blocks/-/blocks-8.1.11.tgz#a6315f787d11f10ac7198a1c5209c1945f4d07cc" + integrity sha512-eMed7PpL/hAVM6tBS7h70bEAyzbiSU9I/kye4jZ7DkCbAsrX6OKmC7pcHSDn712WTcf3vVqxy5jOKUmOXpc0eg== dependencies: - "@storybook/channels" "8.1.6" - "@storybook/client-logger" "8.1.6" - "@storybook/components" "8.1.6" - "@storybook/core-events" "8.1.6" + "@storybook/channels" "8.1.11" + "@storybook/client-logger" "8.1.11" + "@storybook/components" "8.1.11" + "@storybook/core-events" "8.1.11" "@storybook/csf" "^0.1.7" - "@storybook/docs-tools" "8.1.6" + "@storybook/docs-tools" "8.1.11" "@storybook/global" "^5.0.0" "@storybook/icons" "^1.2.5" - "@storybook/manager-api" "8.1.6" - "@storybook/preview-api" "8.1.6" - "@storybook/theming" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/manager-api" "8.1.11" + "@storybook/preview-api" "8.1.11" + "@storybook/theming" "8.1.11" + "@storybook/types" "8.1.11" "@types/lodash" "^4.14.167" color-convert "^2.0.1" dequal "^2.0.2" @@ -3215,15 +3327,15 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/builder-manager@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-8.1.6.tgz#810ab31c639c7389fcede2b8d12f25a577445a04" - integrity sha512-Y5d+dikKnUuCYyh4VLEF6A+AbWughEgtipVkDKOddSTzn04trClIOKqfhQqEUObydCpgvvfdjGXJa/zDRV/UQA== +"@storybook/builder-manager@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-8.1.11.tgz#1feaad5f11ac79cc2d466a8b4cf254c595950014" + integrity sha512-U7bmed4Ayg+OlJ8HPmLeGxLTHzDY7rxmxM4aAs4YL01fufYfBcjkIP9kFhJm+GJOvGm+YJEUAPe5mbM1P/bn0Q== dependencies: "@fal-works/esbuild-plugin-global-externals" "^2.1.2" - "@storybook/core-common" "8.1.6" - "@storybook/manager" "8.1.6" - "@storybook/node-logger" "8.1.6" + "@storybook/core-common" "8.1.11" + "@storybook/manager" "8.1.11" + "@storybook/node-logger" "8.1.11" "@types/ejs" "^3.1.1" "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" browser-assert "^1.2.1" @@ -3235,19 +3347,19 @@ process "^0.11.10" util "^0.12.4" -"@storybook/builder-webpack5@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-8.1.6.tgz#22662cabe26f5e0815560692aa76d07db1340713" - integrity sha512-FP/vEUSM+/x+6Pof4d3EBaLH4dlzpH97Pzc3RsVD1qvEqVRHUyfbROh5Ud7/+X0m75M2kkpFtmlH/W9fVWzWGw== +"@storybook/builder-webpack5@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-8.1.11.tgz#a0c0208142fa248e6e5c9313d00a7666649e3e9c" + integrity sha512-3/aKmnZu+mHj5LB4VyvzrlHzn2iVjH5y8EUPtFYOkjc2KBkPpF39jBHecfDVCWeO/6kgvAI41t7LLnYB6DZqhw== dependencies: - "@storybook/channels" "8.1.6" - "@storybook/client-logger" "8.1.6" - "@storybook/core-common" "8.1.6" - "@storybook/core-events" "8.1.6" - "@storybook/core-webpack" "8.1.6" - "@storybook/node-logger" "8.1.6" - "@storybook/preview" "8.1.6" - "@storybook/preview-api" "8.1.6" + "@storybook/channels" "8.1.11" + "@storybook/client-logger" "8.1.11" + "@storybook/core-common" "8.1.11" + "@storybook/core-events" "8.1.11" + "@storybook/core-webpack" "8.1.11" + "@storybook/node-logger" "8.1.11" + "@storybook/preview" "8.1.11" + "@storybook/preview-api" "8.1.11" "@types/node" "^18.0.0" "@types/semver" "^7.3.4" browser-assert "^1.2.1" @@ -3275,33 +3387,33 @@ webpack-hot-middleware "^2.25.1" webpack-virtual-modules "^0.5.0" -"@storybook/channels@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-8.1.6.tgz#2fb2b51fe0ae5966e75d25cf995392048f8b62a4" - integrity sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw== +"@storybook/channels@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-8.1.11.tgz#7d4b1877ae31d4c073c17a36b157067e2a71f231" + integrity sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA== dependencies: - "@storybook/client-logger" "8.1.6" - "@storybook/core-events" "8.1.6" + "@storybook/client-logger" "8.1.11" + "@storybook/core-events" "8.1.11" "@storybook/global" "^5.0.0" telejson "^7.2.0" tiny-invariant "^1.3.1" -"@storybook/cli@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-8.1.6.tgz#1f12552b18524e34724cd06de5ffd67d45ab7e0f" - integrity sha512-xsFdBoAbo+2h/UCWuVXiH4Tu49iQ6d+3R1J8F2n4N6rAKxMqAb6fzYnH1GeRYeZk0HGqb2iNc4kBkxj0jW0rKw== +"@storybook/cli@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-8.1.11.tgz#0eb593e23a7c6016b458bfb6e5a365f0657de025" + integrity sha512-4U48w9C7mVEKrykcPcfHwJkRyCqJ28XipbElACbjIIkQEqaHaOVtP3GeKIrgkoOXe/HK3O4zKWRP2SqlVS0r4A== dependencies: "@babel/core" "^7.24.4" "@babel/types" "^7.24.0" "@ndelangen/get-tarball" "^3.0.7" - "@storybook/codemod" "8.1.6" - "@storybook/core-common" "8.1.6" - "@storybook/core-events" "8.1.6" - "@storybook/core-server" "8.1.6" - "@storybook/csf-tools" "8.1.6" - "@storybook/node-logger" "8.1.6" - "@storybook/telemetry" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/codemod" "8.1.11" + "@storybook/core-common" "8.1.11" + "@storybook/core-events" "8.1.11" + "@storybook/core-server" "8.1.11" + "@storybook/csf-tools" "8.1.11" + "@storybook/node-logger" "8.1.11" + "@storybook/telemetry" "8.1.11" + "@storybook/types" "8.1.11" "@types/semver" "^7.3.4" "@yarnpkg/fslib" "2.10.3" "@yarnpkg/libzip" "2.3.0" @@ -3328,25 +3440,25 @@ tiny-invariant "^1.3.1" ts-dedent "^2.0.0" -"@storybook/client-logger@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-8.1.6.tgz#79fcd54e58d5ec72fa2ea53bdb16a98d10ee712f" - integrity sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw== +"@storybook/client-logger@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-8.1.11.tgz#4fbf660869466d5faff89827ac9dee2fc1a084b0" + integrity sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA== dependencies: "@storybook/global" "^5.0.0" -"@storybook/codemod@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-8.1.6.tgz#af0e4cc37945b0f1c9a721dfa869c4c5fedc18f7" - integrity sha512-N5JeimfscAOcME7FIrTCmxcsXxow11vtmPTjYWoeLYokBodaH5RyWcyyQ5KS1ACtt+dHYoX8lepSZA5SBEzYog== +"@storybook/codemod@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-8.1.11.tgz#3a757511ac48fde6c5dbbdc248a6915c72157eba" + integrity sha512-/LCozjH1IQ1TOs9UQV59BE0X6UZ9q+C0NEUz7qmJZPrwAii3FkW4l7D/fwxblpMExaoxv0oE8NQfUz49U/5Ymg== dependencies: "@babel/core" "^7.24.4" "@babel/preset-env" "^7.24.4" "@babel/types" "^7.24.0" "@storybook/csf" "^0.1.7" - "@storybook/csf-tools" "8.1.6" - "@storybook/node-logger" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/csf-tools" "8.1.11" + "@storybook/node-logger" "8.1.11" + "@storybook/types" "8.1.11" "@types/cross-spawn" "^6.0.2" cross-spawn "^7.0.3" globby "^14.0.1" @@ -3356,31 +3468,31 @@ recast "^0.23.5" tiny-invariant "^1.3.1" -"@storybook/components@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/components/-/components-8.1.6.tgz#a698b138d684cd3f70ef70d2d4fc5ed80a9fdd14" - integrity sha512-RDcSj2gBVhK/klfcXQgINtvWe5hpJ1CYUv8hrAon3fWtZmX1+IrTJTorsdISvdHQ99o0WHZ+Ouz42O0yJnHzRg== +"@storybook/components@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/components/-/components-8.1.11.tgz#2b51a55118371cb639dd0f6a1c2520a235c928b6" + integrity sha512-iXKsNu7VmrLBtjMfPj7S4yJ6T13GU6joKcVcrcw8wfrQJGlPFp4YaURPBUEDxvCt1XWi5JkaqJBvb48kIrROEQ== dependencies: "@radix-ui/react-dialog" "^1.0.5" "@radix-ui/react-slot" "^1.0.2" - "@storybook/client-logger" "8.1.6" + "@storybook/client-logger" "8.1.11" "@storybook/csf" "^0.1.7" "@storybook/global" "^5.0.0" "@storybook/icons" "^1.2.5" - "@storybook/theming" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/theming" "8.1.11" + "@storybook/types" "8.1.11" memoizerific "^1.11.3" util-deprecate "^1.0.2" -"@storybook/core-common@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-8.1.6.tgz#991fcf23b75b16720d49f820f9b986472c718426" - integrity sha512-OTlfJFaTOB588ibXrrFm0TAXam6E5xV1VXSjNXL+fIifx8Kjln2HNSy1JKjvcblQneYiV4J1xPCVnAIe0EGHDg== +"@storybook/core-common@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-8.1.11.tgz#02600936b5285ebefbfe9d6caf653aab5e213257" + integrity sha512-Ix0nplD4I4DrV2t9B+62jaw1baKES9UbR/Jz9LVKFF9nsua3ON0aVe73dOjMxFWBngpzBYWe+zYBTZ7aQtDH4Q== dependencies: - "@storybook/core-events" "8.1.6" - "@storybook/csf-tools" "8.1.6" - "@storybook/node-logger" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/core-events" "8.1.11" + "@storybook/csf-tools" "8.1.11" + "@storybook/node-logger" "8.1.11" + "@storybook/types" "8.1.11" "@yarnpkg/fslib" "2.10.3" "@yarnpkg/libzip" "2.3.0" chalk "^4.1.0" @@ -3407,37 +3519,37 @@ ts-dedent "^2.0.0" util "^0.12.4" -"@storybook/core-events@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-8.1.6.tgz#b4819279b1277196e62b1b3f1b113a304c9f675b" - integrity sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw== +"@storybook/core-events@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-8.1.11.tgz#e72f9563aef3286c106021d9926723bc24614f4a" + integrity sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A== dependencies: "@storybook/csf" "^0.1.7" ts-dedent "^2.0.0" -"@storybook/core-server@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-8.1.6.tgz#ebd0258df98a4db390e0f95b6dd0d4befa091cc3" - integrity sha512-rgkeTG8V4emzhPqjlhchsjLay0WtgK7SrXNf1X40oTJIwmbgbReLJ5EmOXBe9rhWSXJ13aKL3l6JuTLAoptSkg== +"@storybook/core-server@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-8.1.11.tgz#329f4d765f6e96d6e0128684179b04788cec2897" + integrity sha512-L6dzQTmR0np/kagNONvvlm6lSvF1FNc9js3vxsEEPnEypLbhx8bDZaHmuhmBpYUzKyUMpRVQTE/WgjHLuBBuxA== dependencies: "@aw-web-design/x-default-browser" "1.4.126" "@babel/core" "^7.24.4" "@babel/parser" "^7.24.4" "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-manager" "8.1.6" - "@storybook/channels" "8.1.6" - "@storybook/core-common" "8.1.6" - "@storybook/core-events" "8.1.6" + "@storybook/builder-manager" "8.1.11" + "@storybook/channels" "8.1.11" + "@storybook/core-common" "8.1.11" + "@storybook/core-events" "8.1.11" "@storybook/csf" "^0.1.7" - "@storybook/csf-tools" "8.1.6" + "@storybook/csf-tools" "8.1.11" "@storybook/docs-mdx" "3.1.0-next.0" "@storybook/global" "^5.0.0" - "@storybook/manager" "8.1.6" - "@storybook/manager-api" "8.1.6" - "@storybook/node-logger" "8.1.6" - "@storybook/preview-api" "8.1.6" - "@storybook/telemetry" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/manager" "8.1.11" + "@storybook/manager-api" "8.1.11" + "@storybook/node-logger" "8.1.11" + "@storybook/preview-api" "8.1.11" + "@storybook/telemetry" "8.1.11" + "@storybook/types" "8.1.11" "@types/detect-port" "^1.3.0" "@types/diff" "^5.0.9" "@types/node" "^18.0.0" @@ -3466,44 +3578,44 @@ watchpack "^2.2.0" ws "^8.2.3" -"@storybook/core-webpack@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-8.1.6.tgz#6db623f87b4d8fe416c2683ca5d2232f81872c8f" - integrity sha512-KjcAEDpHnX0M/7/hUckmZghvb+8FwrShQ2On92jkeL1HgKwzk9HUxFowMJAn1arYfkUT45q9g7HfqSmon36f5Q== +"@storybook/core-webpack@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-8.1.11.tgz#7ef4b40c54520725fdf2f8bfd1a358d7aebe2cf1" + integrity sha512-UQY+t0BDb408OuxW6jQN1ghXcejZlFNgprgvuKlhY3MSv1XwmjrxBDwnLDat4QfBJHFbjdn4eR7pSBzrfE6tKA== dependencies: - "@storybook/core-common" "8.1.6" - "@storybook/node-logger" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/core-common" "8.1.11" + "@storybook/node-logger" "8.1.11" + "@storybook/types" "8.1.11" "@types/node" "^18.0.0" ts-dedent "^2.0.0" -"@storybook/csf-plugin@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.1.6.tgz#28fbf25fea36e755c3c59a6a8309774a5676fb87" - integrity sha512-y2OW84leoWsqfBXb7EoRy2QUmtsI3gpqYqpyD/d5K+vQ+E9CBel2WB8RPrwcYm2L88WPDaufQQDzqyB7aMx4fQ== +"@storybook/csf-plugin@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.1.11.tgz#d09e5b3297c93da513d6760fe81d63649c0be8b2" + integrity sha512-hkA8gjFtSN/tabG0cuvmEqanMXtxPr3qTkp4UNSt1R6jBEgFHRG2y/KYLl367kDwOSFTT987ZgRfJJruU66Fvw== dependencies: - "@storybook/csf-tools" "8.1.6" + "@storybook/csf-tools" "8.1.11" unplugin "^1.3.1" -"@storybook/csf-tools@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-8.1.6.tgz#fd200d288f7e621501b4f3e6c6d6e944eefed7c5" - integrity sha512-jrKfHFNhiLBhWWW4/fm2wgKEVg55e6QuYUHY16KGd7PdPuzm+2Pt7jIl5V9yIj6a59YbjeMpT6jWPKbFx2TuCw== +"@storybook/csf-tools@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-8.1.11.tgz#e89699f6fdc336778f7174a01734f37025ca09c9" + integrity sha512-6qMWAg/dBwCVIHzANM9lSHoirwqSS+wWmv+NwAs0t9S94M75IttHYxD3IyzwaSYCC5llp0EQFvtXXAuSfFbibg== dependencies: "@babel/generator" "^7.24.4" "@babel/parser" "^7.24.4" "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" "@storybook/csf" "^0.1.7" - "@storybook/types" "8.1.6" + "@storybook/types" "8.1.11" fs-extra "^11.1.0" recast "^0.23.5" ts-dedent "^2.0.0" "@storybook/csf@^0.1.7": - version "0.1.8" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.8.tgz#63a83dc493c462d84e0f333e3f3264d319bec716" - integrity sha512-Ntab9o7LjBCbFIao5l42itFiaSh/Qu+l16l/r/9qmV9LnYZkO+JQ7tzhdlwpgJfhs+B5xeejpdAtftDRyXNajw== + version "0.1.11" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.11.tgz#ad685a4fe564a47a6b73571c2e7c07b526f4f71b" + integrity sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg== dependencies: type-fest "^2.19.0" @@ -3512,15 +3624,15 @@ resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-3.1.0-next.0.tgz#9567c6eb621110dcf6554923a975238953d06305" integrity sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ== -"@storybook/docs-tools@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-8.1.6.tgz#cb094620a55ff97f5498d74c1aca8bd90c1ca5e3" - integrity sha512-IhqQHSJ5nEBEJ162P/6/6c45toLinWpAkB7pwbAoP00djZSzfHNdQ4HfpZSGfD4GUJIvzsqMzUlyqCKLAoRPPA== +"@storybook/docs-tools@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-8.1.11.tgz#f779d3dd0fc4545c7c6a74c6c38663e72c51a52e" + integrity sha512-mEXtR9rS7Y+OdKtT/QG6JBGYR1L41mcDhIqhnk7RmYl9qJstVAegrCKWR53sPKFdTVOHU7dmu6k+BD+TqHpyyw== dependencies: - "@storybook/core-common" "8.1.6" - "@storybook/core-events" "8.1.6" - "@storybook/preview-api" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/core-common" "8.1.11" + "@storybook/core-events" "8.1.11" + "@storybook/preview-api" "8.1.11" + "@storybook/types" "8.1.11" "@types/doctrine" "^0.0.3" assert "^2.1.0" doctrine "^3.0.0" @@ -3536,33 +3648,33 @@ resolved "https://registry.yarnpkg.com/@storybook/icons/-/icons-1.2.9.tgz#bb4a51a79e186b62e2dd0e04928b8617ac573838" integrity sha512-cOmylsz25SYXaJL/gvTk/dl3pyk7yBFRfeXTsHvTA3dfhoU/LWSq0NKL9nM7WBasJyn6XPSGnLS4RtKXLw5EUg== -"@storybook/instrumenter@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-8.1.6.tgz#6da6604a4f6f9a16bb43a510a75c09f0025fa408" - integrity sha512-BoNu0QaD5hhcbEVUsvmYDqUOu4HItNBMPUkj6aDCfpLxae5vstH3zsCRVqRcElbfqVhmRzD23w8+9In9M0Fajg== +"@storybook/instrumenter@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-8.1.11.tgz#e2ab66c8f36c43e72d7b0cf3502816cc521e2073" + integrity sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ== dependencies: - "@storybook/channels" "8.1.6" - "@storybook/client-logger" "8.1.6" - "@storybook/core-events" "8.1.6" + "@storybook/channels" "8.1.11" + "@storybook/client-logger" "8.1.11" + "@storybook/core-events" "8.1.11" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "8.1.6" + "@storybook/preview-api" "8.1.11" "@vitest/utils" "^1.3.1" util "^0.12.4" -"@storybook/manager-api@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.1.6.tgz#101ad9be3d6ed95847fcfe9f92a4320d33b67b9d" - integrity sha512-L/s1FdFh/P+eFmQwLtFtJHwFJrGD9H7nauaQlKJOrU3GeXfjBjtlAZQF0Q6B4ZTGxwZjQrzShpt/0yKc6gymtw== +"@storybook/manager-api@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.1.11.tgz#f1a00215512a75026733d7e4eb8212b35d2cfd86" + integrity sha512-QSgwKfAw01K9YvvZj30iGBMgQ4YaCT3vojmttuqdH5ukyXkiO7pENLJj4Y+alwUeSi0g+SJeadCI3PXySBHOGg== dependencies: - "@storybook/channels" "8.1.6" - "@storybook/client-logger" "8.1.6" - "@storybook/core-events" "8.1.6" + "@storybook/channels" "8.1.11" + "@storybook/client-logger" "8.1.11" + "@storybook/core-events" "8.1.11" "@storybook/csf" "^0.1.7" "@storybook/global" "^5.0.0" "@storybook/icons" "^1.2.5" - "@storybook/router" "8.1.6" - "@storybook/theming" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/router" "8.1.11" + "@storybook/theming" "8.1.11" + "@storybook/types" "8.1.11" dequal "^2.0.2" lodash "^4.17.21" memoizerific "^1.11.3" @@ -3570,25 +3682,25 @@ telejson "^7.2.0" ts-dedent "^2.0.0" -"@storybook/manager@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-8.1.6.tgz#94419d0bac98a8dd5adb1ab721b89648a7b8841f" - integrity sha512-B7xc09FYHqC1sknJoWkGHBBCMQlfg7hF+4x42cGhAyYed4TeYAf7b1PDniq8L/PLbUgzTw+A62UC1fMurCcVDQ== +"@storybook/manager@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-8.1.11.tgz#a5bd296a3ae3f8a486b79ae12a7265e3063f0009" + integrity sha512-e02y9dmxowo7cTKYm9am7UO6NOHoHy6Xi7xZf/UA932qLwFZUtk5pnwIEFaZWI3OQsRUCGhP+FL5zizU7uVZeg== -"@storybook/node-logger@8.1.6", "@storybook/node-logger@^8.0.0-alpha.10": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-8.1.6.tgz#a2ccb644c252516d4f3bedffc43816fba50b8ad3" - integrity sha512-IZEiTLFHu8Oom/vdEGpisSw5CfU+cw6/fTaX1P3EVClFOWVuy8/3X5MPu4wJH3jPym6E2DBduIUFeRsiuq61gA== +"@storybook/node-logger@8.1.11", "@storybook/node-logger@^8.0.0-alpha.10": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-8.1.11.tgz#451750347869cf128a02acfee8232d9952f99953" + integrity sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg== -"@storybook/preset-react-webpack@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-8.1.6.tgz#8e95ea0935d90ccf1bb32a4769b0dffb2bf537bd" - integrity sha512-5x5h30Nm8pTguiWAS/Vb1mYSIsoNs2JydXCekIKOVd752Iq+/cDQio6A7gIE6zbtPgfofoa7fuvweiuT6NG2bw== +"@storybook/preset-react-webpack@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-8.1.11.tgz#4d43985cdbbcafd2c52be327156d5079f2828e23" + integrity sha512-2a+1TyztCOlwZAcfBUinzjTpaqsWNrco9Vfq5ueJTmNl/EwtN33sxoAu2bBaUkka8MvPZl5a1VP1b5e2GXHFEQ== dependencies: - "@storybook/core-webpack" "8.1.6" - "@storybook/docs-tools" "8.1.6" - "@storybook/node-logger" "8.1.6" - "@storybook/react" "8.1.6" + "@storybook/core-webpack" "8.1.11" + "@storybook/docs-tools" "8.1.11" + "@storybook/node-logger" "8.1.11" + "@storybook/react" "8.1.11" "@storybook/react-docgen-typescript-plugin" "1.0.6--canary.9.0c3f3b7.0" "@types/node" "^18.0.0" "@types/semver" "^7.3.4" @@ -3601,17 +3713,17 @@ tsconfig-paths "^4.2.0" webpack "5" -"@storybook/preview-api@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.1.6.tgz#2a5e461934596c513f43516935fed7747bd5f503" - integrity sha512-g9EvVg/DYqmjMh1uivJBJnSIvURyuK4LLabYicQNmYdQJscAeXX2bpMcA4aeci9BBm9B2RP7JbSnq7DbXZaJYA== +"@storybook/preview-api@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.1.11.tgz#37734167dac68a7397b3a0245bf636535057af7b" + integrity sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ== dependencies: - "@storybook/channels" "8.1.6" - "@storybook/client-logger" "8.1.6" - "@storybook/core-events" "8.1.6" + "@storybook/channels" "8.1.11" + "@storybook/client-logger" "8.1.11" + "@storybook/core-events" "8.1.11" "@storybook/csf" "^0.1.7" "@storybook/global" "^5.0.0" - "@storybook/types" "8.1.6" + "@storybook/types" "8.1.11" "@types/qs" "^6.9.5" dequal "^2.0.2" lodash "^4.17.21" @@ -3621,10 +3733,10 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/preview@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-8.1.6.tgz#2905f36dc9b28c510f406db8cd3af284c4d95999" - integrity sha512-o9OgOmO10GyX1ZC7WiapYqGdst4TOCPLqWSu3H2nL4ZT7BQLUQfCy30kyoMO7KyxCgc5K5rcqG7qZ/N0tfUgRg== +"@storybook/preview@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-8.1.11.tgz#da251aa4789332154b1837abae0a3186a5442421" + integrity sha512-K/9NZmjnL0D1BROkTNWNoPqgL2UaocALRSqCARmkBLgU2Rn/FuZgEclHkWlYo6pUrmLNK+bZ+XzpNMu12iTbpg== "@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0": version "1.0.6--canary.9.0c3f3b7.0" @@ -3639,33 +3751,33 @@ react-docgen-typescript "^2.2.2" tslib "^2.0.0" -"@storybook/react-dom-shim@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.1.6.tgz#7a1bd75b802a88538a8f8177c9ea074817fe608c" - integrity sha512-qP5nkAmpGFy/gshO+bVjRo1rgo/6UVDElgOd2dlUtYnfdPONiOfWko2XGYKKfxa6Cp7KU35JlZz/kHGqWG31zQ== +"@storybook/react-dom-shim@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.1.11.tgz#d4cc6222eb1f169d10c5403dbb580e4c3e29c142" + integrity sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA== "@storybook/react-webpack5@^8.1.1": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/react-webpack5/-/react-webpack5-8.1.6.tgz#8cb1183464ba611d379416cf00a9834f98b2f210" - integrity sha512-jpRpa85efcv+9Kl1vIuwz+QC/Ug522Tx3oAT2FZTc1ZdIBrjeT+jY0tmEDjemRuadFMpjHvrXyW1HDItP5groQ== + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/react-webpack5/-/react-webpack5-8.1.11.tgz#ebf7647a2e71c6c0107e11edc88b38c856c73fc3" + integrity sha512-VzugGZv9xsZo/mMBj7LsAbQChXIzqKGPRTIO+CQEkDe9HaWBYTJ5Ak46bKw318WYB6QdJcIe8v5sGv68TCStVA== dependencies: - "@storybook/builder-webpack5" "8.1.6" - "@storybook/preset-react-webpack" "8.1.6" - "@storybook/react" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/builder-webpack5" "8.1.11" + "@storybook/preset-react-webpack" "8.1.11" + "@storybook/react" "8.1.11" + "@storybook/types" "8.1.11" "@types/node" "^18.0.0" -"@storybook/react@8.1.6", "@storybook/react@^8.1.1": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.1.6.tgz#84312e1373d7b4adda543d80463c298b09fc9fa0" - integrity sha512-2CSc3MLeaY7QaYAQLwaXRboKkgQnWrSZAo/WTJcSHUr2YFxH5+iECB0Kci12GqaJklhhgmfTfVZ4Jo9ZJ6LQfg== +"@storybook/react@8.1.11", "@storybook/react@^8.1.1": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.1.11.tgz#89408fa34b1ce79a3df17c2f41745fd37ba9f492" + integrity sha512-t+EYXOkgwg3ropLGS9y8gGvX5/Okffu/6JYL3YWksrBGAZSqVV4NkxCnVJZepS717SyhR0tN741gv/SxxFPJMg== dependencies: - "@storybook/client-logger" "8.1.6" - "@storybook/docs-tools" "8.1.6" + "@storybook/client-logger" "8.1.11" + "@storybook/docs-tools" "8.1.11" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "8.1.6" - "@storybook/react-dom-shim" "8.1.6" - "@storybook/types" "8.1.6" + "@storybook/preview-api" "8.1.11" + "@storybook/react-dom-shim" "8.1.11" + "@storybook/types" "8.1.11" "@types/escodegen" "^0.0.6" "@types/estree" "^0.0.51" "@types/node" "^18.0.0" @@ -3682,61 +3794,61 @@ type-fest "~2.19" util-deprecate "^1.0.2" -"@storybook/router@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-8.1.6.tgz#778649dd13b2f75fa657f67c2b01a2c31d43f8e9" - integrity sha512-tvuhB2uXHEKK640Epm1SqVzPhQ9lXYfF7FX6FleJgVYEvZpJpNTD4RojedQoLI6SUUSXNy1Vs2QV26VM0XIPHQ== +"@storybook/router@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-8.1.11.tgz#7e4d04d854f4935586fe298611f572e6a3ccb551" + integrity sha512-nU5lsBvy0L8wBYOkjagh29ztZicDATpZNYrHuavlhQ2jznmmHdJvXKYk+VrMAbthjQ6ZBqfeeMNPR1UlnqR5Rw== dependencies: - "@storybook/client-logger" "8.1.6" + "@storybook/client-logger" "8.1.11" memoizerific "^1.11.3" qs "^6.10.0" -"@storybook/telemetry@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-8.1.6.tgz#0352039912ce158679a6224ec39403328c077fb2" - integrity sha512-qNWjQPF6ufRvLCAavulhNYoqldDIeBvioFuCjLlwbw3BZw3ck7pwh1vZg4AJ0SAfzbnpnXPGrHe31gnxV0D6tw== +"@storybook/telemetry@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-8.1.11.tgz#13b2fbf2a2eb4310c08f4743d0bdeaeba691663a" + integrity sha512-Jqvm7HcZismKzPuebhyLECO6KjGiSk4ycbca1WUM/TUvifxCXqgoUPlHHQEEfaRdHS63/MSqtMNjLsQRLC/vNQ== dependencies: - "@storybook/client-logger" "8.1.6" - "@storybook/core-common" "8.1.6" - "@storybook/csf-tools" "8.1.6" + "@storybook/client-logger" "8.1.11" + "@storybook/core-common" "8.1.11" + "@storybook/csf-tools" "8.1.11" chalk "^4.1.0" detect-package-manager "^2.0.1" fetch-retry "^5.0.2" fs-extra "^11.1.0" read-pkg-up "^7.0.1" -"@storybook/test@8.1.6", "@storybook/test@^8.1.1": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.1.6.tgz#c5c98eae7e25e848ca630759a679c1be64d134b1" - integrity sha512-tyexfYPtOHP83pMHggoGdHadfqh/veLdS+APHxt12zmCNUobxOxnuWmImXThQiyLlXTWecreLvlMvgAIjziBsA== +"@storybook/test@8.1.11", "@storybook/test@^8.1.1": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.1.11.tgz#f95f6c63c5488ba79e3f2dc3460ae7d475cc0fd0" + integrity sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ== dependencies: - "@storybook/client-logger" "8.1.6" - "@storybook/core-events" "8.1.6" - "@storybook/instrumenter" "8.1.6" - "@storybook/preview-api" "8.1.6" - "@testing-library/dom" "^9.3.4" - "@testing-library/jest-dom" "^6.4.2" - "@testing-library/user-event" "^14.5.2" - "@vitest/expect" "1.3.1" - "@vitest/spy" "^1.3.1" + "@storybook/client-logger" "8.1.11" + "@storybook/core-events" "8.1.11" + "@storybook/instrumenter" "8.1.11" + "@storybook/preview-api" "8.1.11" + "@testing-library/dom" "10.1.0" + "@testing-library/jest-dom" "6.4.5" + "@testing-library/user-event" "14.5.2" + "@vitest/expect" "1.6.0" + "@vitest/spy" "1.6.0" util "^0.12.4" -"@storybook/theming@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.1.6.tgz#0d08e8eefbd1a9446095976f1b8810c501215bef" - integrity sha512-0Cl/7/0z2WSfXhZ9XSw6rgEjb0fXac7jfktieX0vYo1YckrNpWFRQP9NCpVPAcYZaFLlRSOqYark6CLoutEsIg== +"@storybook/theming@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.1.11.tgz#a1ca5e1c00cdbd100c8abf5e28180072aff50519" + integrity sha512-Chn/opjO6Rl1isNobutYqAH2PjKNkj09YBw/8noomk6gElSa3JbUTyaG/+JCHA6OG/9kUsqoKDb5cZmAKNq/jA== dependencies: "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@storybook/client-logger" "8.1.6" + "@storybook/client-logger" "8.1.11" "@storybook/global" "^5.0.0" memoizerific "^1.11.3" -"@storybook/types@8.1.6": - version "8.1.6" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-8.1.6.tgz#08f3191408bf4c7375c4321f7402353390ddc438" - integrity sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw== +"@storybook/types@8.1.11": + version "8.1.11" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-8.1.11.tgz#c6e89fb6d543ebd4d3445a465af6aa27fbbe6aaa" + integrity sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw== dependencies: - "@storybook/channels" "8.1.6" + "@storybook/channels" "8.1.11" "@types/express" "^4.7.0" file-system-cache "2.3.0" @@ -3850,32 +3962,32 @@ postcss-selector-parser "6.0.10" "@tanstack/react-virtual@^3.0.0-beta.60": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.5.1.tgz#1ce466f530a10f781871360ed2bf7ff83e664f85" - integrity sha512-jIsuhfgy8GqA67PdWqg73ZB2LFE+HD9hjWL1L6ifEIZVyZVAKpYmgUG4WsKQ005aEyImJmbuimPiEvc57IY0Aw== + version "3.8.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-virtual/-/react-virtual-3.8.1.tgz#bff309a7c684b590a92e92e645e2bbab366a2982" + integrity sha512-dP5a7giEM4BQWLJ7K07ToZv8rF51mzbrBMkf0scg1QNYuFx3utnPUBPUHdzaowZhIez1K2XS78amuzD+YGRA5Q== dependencies: - "@tanstack/virtual-core" "3.5.1" + "@tanstack/virtual-core" "3.8.1" -"@tanstack/virtual-core@3.5.1": - version "3.5.1" - resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.5.1.tgz#f519149bce9156d0e7954b9531df15f446f2fc12" - integrity sha512-046+AUSiDru/V9pajE1du8WayvBKeCvJ2NmKPy/mR8/SbKKrqmSbj7LJBfXE+nSq4f5TBXvnCzu0kcYebI9WdQ== +"@tanstack/virtual-core@3.8.1": + version "3.8.1" + resolved "https://registry.yarnpkg.com/@tanstack/virtual-core/-/virtual-core-3.8.1.tgz#50348857890cdfe8e6c784de3bb028caaa097f5e" + integrity sha512-uNtAwenT276M9QYCjTBoHZ8X3MUeCRoGK59zPi92hMIxdfS9AyHjkDWJ94WroDxnv48UE+hIeo21BU84jKc8aQ== -"@testing-library/dom@^9.3.4": - version "9.3.4" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce" - integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ== +"@testing-library/dom@10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-10.1.0.tgz#2d073e49771ad614da999ca48f199919e5176fb6" + integrity sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" "@types/aria-query" "^5.0.1" - aria-query "5.1.3" + aria-query "5.3.0" chalk "^4.1.0" dom-accessibility-api "^0.5.9" lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/jest-dom@^6.4.2": +"@testing-library/jest-dom@6.4.5": version "6.4.5" resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz#badb40296477149136dabef32b572ddd3b56adf1" integrity sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A== @@ -3889,7 +4001,7 @@ lodash "^4.17.21" redent "^3.0.0" -"@testing-library/user-event@^14.5.2": +"@testing-library/user-event@14.5.2": version "14.5.2" resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== @@ -4280,9 +4392,9 @@ integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== "@types/express-serve-static-core@^4.17.33": - version "4.19.3" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.3.tgz#e469a13e4186c9e1c0418fb17be8bc8ff1b19a7a" - integrity sha512-KOzM7MhcBFlmnlr/fzISFF5vGWVSvN6fTd4T+ExOt08bA/dA5kpSzY52nMsI1KDFmUREpJelPYyuslLRSjjgCg== + version "4.19.5" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz#218064e321126fcf9048d1ca25dd2465da55d9c6" + integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg== dependencies: "@types/node" "*" "@types/qs" "*" @@ -4404,9 +4516,9 @@ integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw== "@types/lodash@^4.14.167", "@types/lodash@^4.14.202", "@types/lodash@^4.17.0", "@types/lodash@^4.17.1": - version "4.17.5" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.5.tgz#e6c29b58e66995d57cd170ce3e2a61926d55ee04" - integrity sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw== + version "4.17.6" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.6.tgz#193ced6a40c8006cfc1ca3f4553444fb38f0e543" + integrity sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA== "@types/markdown-it@^13.0.7": version "13.0.8" @@ -4456,9 +4568,9 @@ "@types/node" "*" "@types/node@*", "@types/node@^20.5.2": - version "20.14.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.2.tgz#a5f4d2bcb4b6a87bffcaa717718c5a0f208f4a18" - integrity sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q== + version "20.14.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.14.9.tgz#12e8e765ab27f8c421a1820c99f5f313a933b420" + integrity sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg== dependencies: undici-types "~5.26.4" @@ -4478,9 +4590,9 @@ integrity sha512-DZxSZWXxFfOlx7k7Rv4LAyiMroaxa3Ly/7OOzZO8cBNho0YzAi4qlbrx8W27JGqG57IgR/6J7r+nOJWw6kcvZA== "@types/node@^18.0.0": - version "18.19.34" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.34.tgz#c3fae2bbbdb94b4a52fe2d229d0dccce02ef3d27" - integrity sha512-eXF4pfBNV5DAMKGbI02NnDtWrQ40hAN558/2vvS4gMpMIxaf6JmD7YjnZbq0Q9TDSSkKBamime8ewRoomHdt4g== + version "18.19.39" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.39.tgz#c316340a5b4adca3aee9dcbf05de385978590593" + integrity sha512-nPwTRDKUctxw3di5b4TfT3I0sWDiWoPQCZjXhvdkINntwr8lcoVCKsTgnXeRubKIlfnV+eN/HYk6Jb40tbcEAQ== dependencies: undici-types "~5.26.4" @@ -4673,15 +4785,15 @@ tsutils "^3.21.0" "@typescript-eslint/eslint-plugin@^7.1.1": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.12.0.tgz#f87a32e8972b8a60024f2f8f12205e7c8108bc41" - integrity sha512-7F91fcbuDf/d3S8o21+r3ZncGIke/+eWk0EpO21LXhDfLahriZF9CGj4fbAetEjlaBdjdSm9a6VeXbpbT6Z40Q== + version "7.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz#8eaf396ac2992d2b8f874b68eb3fcd6b179cb7f3" + integrity sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA== dependencies: "@eslint-community/regexpp" "^4.10.0" - "@typescript-eslint/scope-manager" "7.12.0" - "@typescript-eslint/type-utils" "7.12.0" - "@typescript-eslint/utils" "7.12.0" - "@typescript-eslint/visitor-keys" "7.12.0" + "@typescript-eslint/scope-manager" "7.15.0" + "@typescript-eslint/type-utils" "7.15.0" + "@typescript-eslint/utils" "7.15.0" + "@typescript-eslint/visitor-keys" "7.15.0" graphemer "^1.4.0" ignore "^5.3.1" natural-compare "^1.4.0" @@ -4699,14 +4811,14 @@ debug "^4.3.4" "@typescript-eslint/parser@^7.1.1": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.12.0.tgz#8761df3345528b35049353db80010b385719b1c3" - integrity sha512-dm/J2UDY3oV3TKius2OUZIFHsomQmpHtsV0FTh1WO8EKgHLQ1QCADUqscPgTpU+ih1e21FQSRjXckHn3txn6kQ== + version "7.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.15.0.tgz#f4a536e5fc6a1c05c82c4d263a2bfad2da235c80" + integrity sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A== dependencies: - "@typescript-eslint/scope-manager" "7.12.0" - "@typescript-eslint/types" "7.12.0" - "@typescript-eslint/typescript-estree" "7.12.0" - "@typescript-eslint/visitor-keys" "7.12.0" + "@typescript-eslint/scope-manager" "7.15.0" + "@typescript-eslint/types" "7.15.0" + "@typescript-eslint/typescript-estree" "7.15.0" + "@typescript-eslint/visitor-keys" "7.15.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.62.0": @@ -4717,13 +4829,13 @@ "@typescript-eslint/types" "5.62.0" "@typescript-eslint/visitor-keys" "5.62.0" -"@typescript-eslint/scope-manager@7.12.0": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.12.0.tgz#259c014362de72dd34f995efe6bd8dda486adf58" - integrity sha512-itF1pTnN6F3unPak+kutH9raIkL3lhH1YRPGgt7QQOh43DQKVJXmWkpb+vpc/TiDHs6RSd9CTbDsc/Y+Ygq7kg== +"@typescript-eslint/scope-manager@7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz#201b34b0720be8b1447df17b963941bf044999b2" + integrity sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw== dependencies: - "@typescript-eslint/types" "7.12.0" - "@typescript-eslint/visitor-keys" "7.12.0" + "@typescript-eslint/types" "7.15.0" + "@typescript-eslint/visitor-keys" "7.15.0" "@typescript-eslint/scope-manager@7.2.0": version "7.2.0" @@ -4743,13 +4855,13 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/type-utils@7.12.0": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.12.0.tgz#9dfaaa1972952f395ec5be4f5bbfc4d3cdc63908" - integrity sha512-lib96tyRtMhLxwauDWUp/uW3FMhLA6D0rJ8T7HmH7x23Gk1Gwwu8UZ94NMXBvOELn6flSPiBrCKlehkiXyaqwA== +"@typescript-eslint/type-utils@7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz#5b83c904c6de91802fb399305a50a56d10472c39" + integrity sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg== dependencies: - "@typescript-eslint/typescript-estree" "7.12.0" - "@typescript-eslint/utils" "7.12.0" + "@typescript-eslint/typescript-estree" "7.15.0" + "@typescript-eslint/utils" "7.15.0" debug "^4.3.4" ts-api-utils "^1.3.0" @@ -4758,10 +4870,10 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== -"@typescript-eslint/types@7.12.0": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.12.0.tgz#bf208f971a8da1e7524a5d9ae2b5f15192a37981" - integrity sha512-o+0Te6eWp2ppKY3mLCU+YA9pVJxhUJE15FV7kxuD9jgwIAa+w/ycGJBMrYDTpVGUM/tgpa9SeMOugSabWFq7bg== +"@typescript-eslint/types@7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.15.0.tgz#fb894373a6e3882cbb37671ffddce44f934f62fc" + integrity sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw== "@typescript-eslint/types@7.2.0": version "7.2.0" @@ -4781,13 +4893,13 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/typescript-estree@7.12.0": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.12.0.tgz#e6c1074f248b3db6573ab6a7c47a39c4cd498ff9" - integrity sha512-5bwqLsWBULv1h6pn7cMW5dXX/Y2amRqLaKqsASVwbBHMZSnHqE/HN4vT4fE0aFsiwxYvr98kqOWh1a8ZKXalCQ== +"@typescript-eslint/typescript-estree@7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz#e323bfa3966e1485b638ce751f219fc1f31eba37" + integrity sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ== dependencies: - "@typescript-eslint/types" "7.12.0" - "@typescript-eslint/visitor-keys" "7.12.0" + "@typescript-eslint/types" "7.15.0" + "@typescript-eslint/visitor-keys" "7.15.0" debug "^4.3.4" globby "^11.1.0" is-glob "^4.0.3" @@ -4823,15 +4935,15 @@ eslint-scope "^5.1.1" semver "^7.3.7" -"@typescript-eslint/utils@7.12.0": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.12.0.tgz#c6e58fd7f724cdccc848f71e388ad80cbdb95dd0" - integrity sha512-Y6hhwxwDx41HNpjuYswYp6gDbkiZ8Hin9Bf5aJQn1bpTs3afYY4GX+MPYxma8jtoIV2GRwTM/UJm/2uGCVv+DQ== +"@typescript-eslint/utils@7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.15.0.tgz#9e6253c4599b6e7da2fb64ba3f549c73eb8c1960" + integrity sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA== dependencies: "@eslint-community/eslint-utils" "^4.4.0" - "@typescript-eslint/scope-manager" "7.12.0" - "@typescript-eslint/types" "7.12.0" - "@typescript-eslint/typescript-estree" "7.12.0" + "@typescript-eslint/scope-manager" "7.15.0" + "@typescript-eslint/types" "7.15.0" + "@typescript-eslint/typescript-estree" "7.15.0" "@typescript-eslint/visitor-keys@5.62.0": version "5.62.0" @@ -4841,12 +4953,12 @@ "@typescript-eslint/types" "5.62.0" eslint-visitor-keys "^3.3.0" -"@typescript-eslint/visitor-keys@7.12.0": - version "7.12.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.12.0.tgz#c053b55a996679528beeedd8e565710ce1ae1ad3" - integrity sha512-uZk7DevrQLL3vSnfFl5bj4sL75qC9D6EdjemIdbtkuUmIheWpuiiylSY01JxJE7+zGrOWDZrp1WxOuDntvKrHQ== +"@typescript-eslint/visitor-keys@7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz#1da0726201a859343fe6a05742a7c1792fff5b66" + integrity sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw== dependencies: - "@typescript-eslint/types" "7.12.0" + "@typescript-eslint/types" "7.15.0" eslint-visitor-keys "^3.4.3" "@typescript-eslint/visitor-keys@7.2.0": @@ -4867,35 +4979,18 @@ resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.3.1.tgz#d4c14b89c43a25fd400a6b941f51ba27fe0cb918" integrity sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw== dependencies: - "@vitest/spy" "1.3.1" - "@vitest/utils" "1.3.1" + "@vitest/spy" "1.6.0" + "@vitest/utils" "1.6.0" chai "^4.3.10" -"@vitest/spy@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.3.1.tgz#814245d46d011b99edd1c7528f5725c64e85a88b" - integrity sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig== - dependencies: - tinyspy "^2.2.0" - -"@vitest/spy@^1.3.1": +"@vitest/spy@1.6.0": version "1.6.0" resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.6.0.tgz#362cbd42ccdb03f1613798fde99799649516906d" integrity sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw== dependencies: tinyspy "^2.2.0" -"@vitest/utils@1.3.1": - version "1.3.1" - resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.3.1.tgz#7b05838654557544f694a372de767fcc9594d61a" - integrity sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ== - dependencies: - diff-sequences "^29.6.3" - estree-walker "^3.0.3" - loupe "^2.3.7" - pretty-format "^29.7.0" - -"@vitest/utils@^1.3.1": +"@vitest/utils@1.6.0", "@vitest/utils@^1.3.1": version "1.6.0" resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.6.0.tgz#5c5675ca7d6f546a7b4337de9ae882e6c57896a1" integrity sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw== @@ -5093,9 +5188,9 @@ acorn@^7.4.1: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.11.3, acorn@^8.7.1, acorn@^8.8.1, acorn@^8.8.2, acorn@^8.9.0: - version "8.11.3" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a" - integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg== + version "8.12.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.0.tgz#1627bfa2e058148036133b8d9b51a700663c294c" + integrity sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw== address@^1.0.1: version "1.2.2" @@ -5234,20 +5329,20 @@ aria-hidden@^1.1.1: dependencies: tslib "^2.0.0" -aria-query@5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" - integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== - dependencies: - deep-equal "^2.0.5" - -aria-query@^5.0.0, aria-query@^5.3.0: +aria-query@5.3.0, aria-query@^5.0.0: version "5.3.0" resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.3.0.tgz#650c569e41ad90b51b3d7df5e5eed1c7549c103e" integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A== dependencies: dequal "^2.0.3" +aria-query@~5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz#1e5583ec16763540a27ae52eed99ff899223568f" @@ -5344,7 +5439,7 @@ array.prototype.toreversed@^1.1.2: es-abstract "^1.22.1" es-shim-unscopables "^1.0.0" -array.prototype.tosorted@^1.1.3: +array.prototype.tosorted@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz#fe954678ff53034e717ea3352a03f0b0b86f7ffc" integrity sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA== @@ -5448,10 +5543,10 @@ available-typed-arrays@^1.0.7: dependencies: possible-typed-array-names "^1.0.0" -axe-core@=4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.7.0.tgz#34ba5a48a8b564f67e103f0aa5768d76e15bbbbf" - integrity sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ== +axe-core@^4.9.1: + version "4.9.1" + resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-4.9.1.tgz#fcd0f4496dad09e0c899b44f6c4bb7848da912ae" + integrity sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw== axios@^1.1.3, axios@^1.3.4, axios@^1.6.7: version "1.7.2" @@ -5462,12 +5557,12 @@ axios@^1.1.3, axios@^1.3.4, axios@^1.6.7: form-data "^4.0.0" proxy-from-env "^1.1.0" -axobject-query@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.2.1.tgz#39c378a6e3b06ca679f29138151e45b2b32da62a" - integrity sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg== +axobject-query@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== dependencies: - dequal "^2.0.3" + deep-equal "^2.0.5" babel-core@^7.0.0-bridge.0: version "7.0.0-bridge.0" @@ -5726,9 +5821,9 @@ camelcase-css@^2.0.1: integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA== caniuse-lite@^1.0.30001464, caniuse-lite@^1.0.30001579, caniuse-lite@^1.0.30001599, caniuse-lite@^1.0.30001629: - version "1.0.30001632" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001632.tgz#964207b7cba5851701afb4c8afaf1448db3884b6" - integrity sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg== + version "1.0.30001639" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001639.tgz#972b3a6adeacdd8f46af5fc7f771e9639f6c1521" + integrity sha512-eFHflNTBIlFwP2AIKaYuBQN/apnUoKNhBdza8ZnW/h2di4LCZ4xFqYlxUxo+LQ76KFI1PGcC1QDxMbxTZpSCAg== capital-case@^1.0.4: version "1.0.4" @@ -5843,9 +5938,9 @@ chownr@^2.0.0: integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== chromatic@^11.4.0: - version "11.5.3" - resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-11.5.3.tgz#3a57bfa9bd46057eac32e69d02cbc6e93d04536d" - integrity sha512-EtDDXA4OdhsjE0IuLr5AZvOX+ZYXgqdRPtdTAQrM3nImjlteQ5biBmdEEEcdAXDTPU881rEUaUIy2owecB0wYg== + version "11.5.4" + resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-11.5.4.tgz#57e71f8a5ad54d10656da53c1761198067c189b5" + integrity sha512-+J+CopeUSyGUIQJsU6X7CfvSmeVBs0j6LZ9AgF4+XTjI4pFmUiUXsTc00rH9x9W1jCppOaqDXv2kqJJXGDK3mA== chrome-trace-event@^1.0.2: version "1.0.4" @@ -6099,6 +6194,11 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== +confbox@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.1.7.tgz#ccfc0a2bcae36a84838e83a3b7f770fb17d6c579" + integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA== + consola@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/consola/-/consola-3.2.3.tgz#0741857aa88cfa0d6fd53f1cff0375136e98502f" @@ -6775,14 +6875,14 @@ ejs@^3.1.10, ejs@^3.1.6: jake "^10.8.5" electron-to-chromium@^1.4.796: - version "1.4.796" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.796.tgz#48dd6ff634b7f7df6313bd27aaa713f3af4a2b29" - integrity sha512-NglN/xprcM+SHD2XCli4oC6bWe6kHoytcyLKCWXmRL854F0qhPhaYgUswUsglnPxYaNQIg2uMY4BvaomIf3kLA== + version "1.4.816" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz#3624649d1e7fde5cdbadf59d31a524245d8ee85f" + integrity sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw== emoji-picker-react@^4.5.16: - version "4.9.4" - resolved "https://registry.yarnpkg.com/emoji-picker-react/-/emoji-picker-react-4.9.4.tgz#869256913545405a3bd6d52f5a319ba3580101d0" - integrity sha512-u/3IsmMPr3l9Tcsuwpw4VgHb34W0BjC6iE06EXNHNOnNjBtW0BUN8upba8V3piUht00Sa+/L1+hs/xVmdWsswA== + version "4.11.0" + resolved "https://registry.yarnpkg.com/emoji-picker-react/-/emoji-picker-react-4.11.0.tgz#3a56866efd808f501a98969916302de223c9c828" + integrity sha512-3SWHj2BN+b+dIIkCVnKS9KcCD0SjoQw2tL2u7U+i5kZeRt74hsltY9vjwR+STrxAMOK6rsYTmjniz7/yRi9t+g== dependencies: flairup "0.0.39" @@ -6827,7 +6927,7 @@ endent@^2.0.1: fast-json-parse "^1.0.3" objectorarray "^1.0.5" -enhanced-resolve@^5.12.0, enhanced-resolve@^5.16.0: +enhanced-resolve@^5.12.0, enhanced-resolve@^5.17.0: version "5.17.0" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz#d037603789dd9555b89aaec7eb78845c49089bc5" integrity sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA== @@ -6857,7 +6957,7 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: +es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3: version "1.23.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.23.3.tgz#8f0c5a35cd215312573c5a27c87dfd6c881a0aa0" integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A== @@ -6936,7 +7036,7 @@ es-get-iterator@^1.1.3: isarray "^2.0.5" stop-iteration-iterator "^1.0.0" -es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.19: +es-iterator-helpers@^1.0.19: version "1.0.19" resolved "https://registry.yarnpkg.com/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz#117003d0e5fec237b4b5c08aded722e0c6d50ca8" integrity sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw== @@ -6957,9 +7057,9 @@ es-iterator-helpers@^1.0.15, es-iterator-helpers@^1.0.19: safe-array-concat "^1.1.2" es-module-lexer@^1.2.1, es-module-lexer@^1.5.0: - version "1.5.3" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.3.tgz#25969419de9c0b1fbe54279789023e8a9a788412" - integrity sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg== + version "1.5.4" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" + integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== es-object-atoms@^1.0.0: version "1.0.0" @@ -7222,11 +7322,11 @@ escodegen@^2.1.0: source-map "~0.6.1" eslint-config-next@^14.1.0: - version "14.2.3" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.3.tgz#2fb0f7c4eccda530a4b5054438162b2303786d4f" - integrity sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg== + version "14.2.4" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.4.tgz#eb0bedfe4a894bc2aea918214bb5243ee4fa7d4b" + integrity sha512-Qr0wMgG9m6m4uYy2jrYJmyuNlYZzPRQq5Kvb9IDlYwn+7yq6W6sfMNFgb+9guM1KYwuIo6TIaiFhZJ6SnQ/Efw== dependencies: - "@next/eslint-plugin-next" "14.2.3" + "@next/eslint-plugin-next" "14.2.4" "@rushstack/eslint-patch" "^1.3.3" "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0" eslint-import-resolver-node "^0.3.6" @@ -7301,26 +7401,26 @@ eslint-plugin-import@^2.28.1, eslint-plugin-import@^2.29.1: tsconfig-paths "^3.15.0" eslint-plugin-jsx-a11y@^6.7.1: - version "6.8.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz#2fa9c701d44fcd722b7c771ec322432857fcbad2" - integrity sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA== + version "6.9.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz#67ab8ff460d4d3d6a0b4a570e9c1670a0a8245c8" + integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g== dependencies: - "@babel/runtime" "^7.23.2" - aria-query "^5.3.0" - array-includes "^3.1.7" + aria-query "~5.1.3" + array-includes "^3.1.8" array.prototype.flatmap "^1.3.2" ast-types-flow "^0.0.8" - axe-core "=4.7.0" - axobject-query "^3.2.1" + axe-core "^4.9.1" + axobject-query "~3.1.1" damerau-levenshtein "^1.0.8" emoji-regex "^9.2.2" - es-iterator-helpers "^1.0.15" - hasown "^2.0.0" + es-iterator-helpers "^1.0.19" + hasown "^2.0.2" jsx-ast-utils "^3.3.5" language-tags "^1.0.9" minimatch "^3.1.2" - object.entries "^1.1.7" - object.fromentries "^2.0.7" + object.fromentries "^2.0.8" + safe-regex-test "^1.0.3" + string.prototype.includes "^2.0.0" eslint-plugin-prettier@^5.1.3: version "5.1.3" @@ -7336,15 +7436,15 @@ eslint-plugin-prettier@^5.1.3: integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ== eslint-plugin-react@^7.33.2: - version "7.34.2" - resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.2.tgz#2780a1a35a51aca379d86d29b9a72adc6bfe6b66" - integrity sha512-2HCmrU+/JNigDN6tg55cRDKCQWicYAPB38JGSFDQt95jDm8rrvSUo7YPkOIm5l6ts1j1zCvysNcasvfTMQzUOw== + version "7.34.3" + resolved "https://registry.yarnpkg.com/eslint-plugin-react/-/eslint-plugin-react-7.34.3.tgz#9965f27bd1250a787b5d4cfcc765e5a5d58dcb7b" + integrity sha512-aoW4MV891jkUulwDApQbPYTVZmeuSyFrudpbTAQuj5Fv8VL+o6df2xIGpw8B0hPjAaih1/Fb0om9grCdyFYemA== dependencies: array-includes "^3.1.8" array.prototype.findlast "^1.2.5" array.prototype.flatmap "^1.3.2" array.prototype.toreversed "^1.1.2" - array.prototype.tosorted "^1.1.3" + array.prototype.tosorted "^1.1.4" doctrine "^2.1.0" es-iterator-helpers "^1.0.19" estraverse "^5.3.0" @@ -7758,9 +7858,9 @@ flatted@^3.2.9: integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== flow-parser@0.*: - version "0.237.2" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.237.2.tgz#f3e86ab582db57e4437796e7048632646a21a46f" - integrity sha512-mvI/kdfr3l1waaPbThPA8dJa77nHXrfZIun+SWvFwSwDjmeByU7mGJGRmv1+7guU6ccyLV8e1lqZA1lD4iMGnQ== + version "0.238.3" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.238.3.tgz#a3b762913c016591c15a68165835e31cd085c8d0" + integrity sha512-hNUhucq8V6KWSX1skXUS3vnDmrRNuKWzDvEVK5b+n97uMF32zj2y8pmcLDQEqlY5u926B0GYGWT/3XhwDJfLOQ== follow-redirects@^1.15.6: version "1.15.6" @@ -7780,9 +7880,9 @@ for-each@^0.3.3: is-callable "^1.1.3" foreground-child@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.1.1.tgz#1d173e776d75d2772fed08efe4a0de1ea1b12d0d" - integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg== + version "3.2.1" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.2.1.tgz#767004ccf3a5b30df39bed90718bab43fe0a59f7" + integrity sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA== dependencies: cross-spawn "^7.0.0" signal-exit "^4.0.1" @@ -8057,15 +8157,16 @@ glob@10.3.10: minipass "^5.0.0 || ^6.0.2 || ^7.0.0" path-scurry "^1.10.1" -glob@^10.0.0, glob@^10.3.10: - version "10.4.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.1.tgz#0cfb01ab6a6b438177bfe6a58e2576f6efe909c2" - integrity sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw== +glob@^10.0.0, glob@^10.3.10, glob@^10.4.1: + version "10.4.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-10.4.2.tgz#bed6b95dade5c1f80b4434daced233aee76160e5" + integrity sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w== dependencies: foreground-child "^3.1.0" jackspeak "^3.1.2" minimatch "^9.0.4" minipass "^7.1.2" + package-json-from-dist "^1.0.0" path-scurry "^1.11.1" glob@^7.0.3, glob@^7.1.3, glob@^7.1.6: @@ -8080,17 +8181,6 @@ glob@^7.0.3, glob@^7.1.3, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^8.0.3: - version "8.1.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" - integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^5.0.1" - once "^1.3.0" - glob@^9.3.2: version "9.3.5" resolved "https://registry.yarnpkg.com/glob/-/glob-9.3.5.tgz#ca2ed8ca452781a3009685607fdf025a899dfe21" @@ -8134,9 +8224,9 @@ globby@^11.0.3, globby@^11.0.4, globby@^11.1.0: slash "^3.0.0" globby@^14.0.0, globby@^14.0.1: - version "14.0.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.1.tgz#a1b44841aa7f4c6d8af2bc39951109d77301959b" - integrity sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ== + version "14.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.2.tgz#06554a54ccfe9264e5a9ff8eded46aa1e306482f" + integrity sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw== dependencies: "@sindresorhus/merge-streams" "^2.1.0" fast-glob "^3.3.2" @@ -8388,9 +8478,9 @@ https-proxy-agent@^5.0.0: debug "4" https-proxy-agent@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz#8e97b841a029ad8ddc8731f26595bad868cb4168" - integrity sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg== + version "7.0.5" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz#9e8b5013873299e11fab6fd548405da2d6c602b2" + integrity sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw== dependencies: agent-base "^7.0.2" debug "4" @@ -8462,20 +8552,10 @@ import-in-the-middle@1.4.2: cjs-module-lexer "^1.2.2" module-details-from-path "^1.0.3" -import-in-the-middle@1.7.4: - version "1.7.4" - resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.7.4.tgz#508da6e91cfa84f210dcdb6c0a91ab0c9e8b3ebc" - integrity sha512-Lk+qzWmiQuRPPulGQeK5qq0v32k2bHnWrRPFgqyvhw7Kkov5L6MOLOIU3pcWeujc9W4q54Cp3Q2WV16eQkc7Bg== - dependencies: - acorn "^8.8.2" - acorn-import-attributes "^1.9.5" - cjs-module-lexer "^1.2.2" - module-details-from-path "^1.0.3" - -import-in-the-middle@1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.8.0.tgz#c94d88d53701de9a248f9710b41f533e67f598a4" - integrity sha512-/xQjze8szLNnJ5rvHSzn+dcVXqCAU6Plbk4P24U/jwPmg1wy7IIp9OjKIO5tYue8GSPhDpPDiApQjvBUmWwhsQ== +import-in-the-middle@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/import-in-the-middle/-/import-in-the-middle-1.8.1.tgz#8b51c2cc631b64e53e958d7048d2d9463ce628f8" + integrity sha512-yhRwoHtiLGvmSozNOALgjRPFI6uYsds60EoMqqnXyyv+JOIW/BrrLejuTGBt+bq0T5tLzOHrN0T7xYTm4Qt/ng== dependencies: acorn "^8.8.2" acorn-import-attributes "^1.9.5" @@ -8607,11 +8687,11 @@ is-callable@^1.1.3, is-callable@^1.1.4, is-callable@^1.2.7: integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== is-core-module@^2.11.0, is-core-module@^2.13.0, is-core-module@^2.13.1: - version "2.13.1" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" - integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== + version "2.14.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.14.0.tgz#43b8ef9f46a6a08888db67b1ffd4ec9e3dfd59d1" + integrity sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A== dependencies: - hasown "^2.0.0" + hasown "^2.0.2" is-data-view@^1.0.1: version "1.0.1" @@ -8963,9 +9043,9 @@ jest-worker@^27.4.5: supports-color "^8.0.0" jiti@^1.18.2, jiti@^1.21.0: - version "1.21.3" - resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.3.tgz#b2adb07489d7629b344d59082bbedb8c21c5f755" - integrity sha512-uy2bNX5zQ+tESe+TiC7ilGRz8AtRGmnJH55NC5S0nSUjvvvM2hJHmefHErugGXN4pNv4Qx7vLsnNw9qJ9mtIsw== + version "1.21.6" + resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.21.6.tgz#6c7f7398dd4b3142767f9a168af2f317a428d268" + integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w== joycon@^3.0.1: version "3.1.1" @@ -9231,9 +9311,9 @@ linkifyjs@^4.1.3: integrity sha512-auMesunaJ8yfkHvK4gfg1K0SaKX/6Wn9g2Aac/NwX+l5VdmFZzo/hdPGxEOETj+ryRa4/fiOPjeeKURSAJx1sg== lint-staged@^15.2.2: - version "15.2.5" - resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.5.tgz#8c342f211bdb34ffd3efd1311248fa6b50b43b50" - integrity sha512-j+DfX7W9YUvdzEZl3Rk47FhDF6xwDBV5wwsCPw6BwWZVPYJemusQmvb9bRsW23Sqsaa+vRloAWogbK4BUuU2zA== + version "15.2.7" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-15.2.7.tgz#97867e29ed632820c0fb90be06cd9ed384025649" + integrity sha512-+FdVbbCZ+yoh7E/RosSdqKJyUM2OEjTciH0TFNkawKgvFp1zbGlEC39RADg+xKBG1R4mhoH2j85myBQZ5wR+lw== dependencies: chalk "~5.3.0" commander "~12.1.0" @@ -9247,15 +9327,15 @@ lint-staged@^15.2.2: yaml "~2.4.2" listr2@~8.2.1: - version "8.2.1" - resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.1.tgz#06a1a6efe85f23c5324180d7c1ddbd96b5eefd6d" - integrity sha512-irTfvpib/rNiD637xeevjO2l3Z5loZmuaRi0L0YE5LfijwVY96oyVn0DFD3o/teAok7nfobMG1THvvcHh/BP6g== + version "8.2.3" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-8.2.3.tgz#c494bb89b34329cf900e4e0ae8aeef9081d7d7a5" + integrity sha512-Lllokma2mtoniUOS94CcOErHWAug5iu7HOmDrvWgpw8jyQH2fomgB+7lZS4HWZxytUuQwkGOwe49FvwVaA85Xw== dependencies: cli-truncate "^4.0.0" colorette "^2.0.20" eventemitter3 "^5.0.1" log-update "^6.0.0" - rfdc "^1.3.1" + rfdc "^1.4.1" wrap-ansi "^9.0.0" load-tsconfig@^0.2.0, load-tsconfig@^0.2.3: @@ -9393,9 +9473,9 @@ lowlight@^3.0.0: highlight.js "~11.9.0" lru-cache@^10.2.0: - version "10.2.2" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.2.2.tgz#48206bc114c1252940c41b25b41af5b545aca878" - integrity sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ== + version "10.3.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-10.3.0.tgz#4a4aaf10c84658ab70f79a85a9a3f1e1fb11196b" + integrity sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ== lru-cache@^5.1.1: version "5.1.1" @@ -9438,14 +9518,7 @@ magic-string@^0.25.0, magic-string@^0.25.7: dependencies: sourcemap-codec "^1.4.8" -magic-string@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.27.0.tgz#e4a3413b4bab6d98d2becffd48b4a257effdbbf3" - integrity sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA== - dependencies: - "@jridgewell/sourcemap-codec" "^1.4.13" - -magic-string@^0.30.5: +magic-string@^0.30.3, magic-string@^0.30.5: version "0.30.10" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== @@ -9854,9 +9927,9 @@ minimatch@^8.0.2: brace-expansion "^2.0.1" minimatch@^9.0.1, minimatch@^9.0.4: - version "9.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.4.tgz#8e49c731d1749cbec05050ee5145147b32496a51" - integrity sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw== + version "9.0.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5" + integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow== dependencies: brace-expansion "^2.0.1" @@ -9905,6 +9978,16 @@ mkdirp@^1.0.3: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mlly@^1.7.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/mlly/-/mlly-1.7.1.tgz#e0336429bb0731b6a8e887b438cbdae522c8f32f" + integrity sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA== + dependencies: + acorn "^8.11.3" + pathe "^1.1.2" + pkg-types "^1.1.1" + ufo "^1.5.3" + mobx-react-lite@^4.0.7: version "4.0.7" resolved "https://registry.yarnpkg.com/mobx-react-lite/-/mobx-react-lite-4.0.7.tgz#f4e21e18d05c811010dcb1d3007e797924c4d90b" @@ -9925,9 +10008,9 @@ mobx-utils@^6.0.8: integrity sha512-fPNt0vJnHwbQx9MojJFEnJLfM3EMGTtpy4/qOOW6xueh1mPofMajrbYAUvByMYAvCJnpy1A5L0t+ZVB5niKO4g== mobx@^6.10.0, mobx@^6.12.0: - version "6.12.3" - resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.12.3.tgz#b6a0fde4268116be602d50bffb32f1b90a8fb077" - integrity sha512-c8NKkO4R2lShkSXZ2Ongj1ycjugjzFFo/UswHBnS62y07DMcTc9Rvo03/3nRyszIvwPNljlkd4S828zIBv/piw== + version "6.12.5" + resolved "https://registry.yarnpkg.com/mobx/-/mobx-6.12.5.tgz#ed2e4312bc9dbe3d9ecd063c70a5ba9e7c2b823b" + integrity sha512-xRq2tyY6unAec0ItlsrgoCuxrWXLoIkM5cGPuerm/0nX/CI9FxAO6ttfRYfFa+B5Yz51d59IfKy0mJwxOEwqzQ== module-details-from-path@^1.0.3: version "1.0.3" @@ -10006,11 +10089,11 @@ next-themes@^0.2.1: integrity sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A== next@^14.2.3: - version "14.2.3" - resolved "https://registry.yarnpkg.com/next/-/next-14.2.3.tgz#f117dd5d5f20c307e7b8e4f9c1c97d961008925d" - integrity sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A== + version "14.2.4" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.4.tgz#ef66c39c71e2d8ad0a3caa0383c8933f4663e4d1" + integrity sha512-R8/V7vugY+822rsQGQCjoLhMuC9oFj9SOi4Cl4b2wjDrseD0LRZ10W7R6Czo4w9ZznVSshKjuIomsRjvm9EKJQ== dependencies: - "@next/env" "14.2.3" + "@next/env" "14.2.4" "@swc/helpers" "0.5.5" busboy "1.6.0" caniuse-lite "^1.0.30001579" @@ -10018,15 +10101,15 @@ next@^14.2.3: postcss "8.4.31" styled-jsx "5.1.1" optionalDependencies: - "@next/swc-darwin-arm64" "14.2.3" - "@next/swc-darwin-x64" "14.2.3" - "@next/swc-linux-arm64-gnu" "14.2.3" - "@next/swc-linux-arm64-musl" "14.2.3" - "@next/swc-linux-x64-gnu" "14.2.3" - "@next/swc-linux-x64-musl" "14.2.3" - "@next/swc-win32-arm64-msvc" "14.2.3" - "@next/swc-win32-ia32-msvc" "14.2.3" - "@next/swc-win32-x64-msvc" "14.2.3" + "@next/swc-darwin-arm64" "14.2.4" + "@next/swc-darwin-x64" "14.2.4" + "@next/swc-linux-arm64-gnu" "14.2.4" + "@next/swc-linux-arm64-musl" "14.2.4" + "@next/swc-linux-x64-gnu" "14.2.4" + "@next/swc-linux-x64-musl" "14.2.4" + "@next/swc-win32-arm64-msvc" "14.2.4" + "@next/swc-win32-ia32-msvc" "14.2.4" + "@next/swc-win32-x64-msvc" "14.2.4" no-case@^3.0.4: version "3.0.4" @@ -10122,15 +10205,16 @@ nwsapi@^2.2.10: integrity sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ== nypm@^0.3.8: - version "0.3.8" - resolved "https://registry.yarnpkg.com/nypm/-/nypm-0.3.8.tgz#a16b078b161be5885351e72cf0b97326973722bf" - integrity sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og== + version "0.3.9" + resolved "https://registry.yarnpkg.com/nypm/-/nypm-0.3.9.tgz#ab74c55075737466847611aa33c3c67741c01d8f" + integrity sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw== dependencies: citty "^0.1.6" consola "^3.2.3" execa "^8.0.1" pathe "^1.1.2" - ufo "^1.4.0" + pkg-types "^1.1.1" + ufo "^1.5.3" object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" @@ -10143,9 +10227,9 @@ object-hash@^3.0.0: integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw== object-inspect@^1.13.1: - version "1.13.1" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" - integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== + version "1.13.2" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" + integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== object-is@^1.1.5: version "1.1.6" @@ -10170,7 +10254,7 @@ object.assign@^4.1.4, object.assign@^4.1.5: has-symbols "^1.0.3" object-keys "^1.1.1" -object.entries@^1.1.7, object.entries@^1.1.8: +object.entries@^1.1.8: version "1.1.8" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.8.tgz#bffe6f282e01f4d17807204a24f8edd823599c41" integrity sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ== @@ -10366,6 +10450,11 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +package-json-from-dist@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz#e501cd3094b278495eb4258d4c9f6d5ac3019f00" + integrity sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw== + pako@~0.2.0: version "0.2.9" resolved "https://registry.yarnpkg.com/pako/-/pako-0.2.9.tgz#f3f7522f4ef782348da8161bad9ecfd51bf83a75" @@ -10608,6 +10697,15 @@ pkg-dir@^5.0.0: dependencies: find-up "^5.0.0" +pkg-types@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/pkg-types/-/pkg-types-1.1.2.tgz#3e211ecec23516f59323ba058ec21cbc533ff81a" + integrity sha512-VEGf1he2DR5yowYRl0XJhWJq5ktm9gYIsH+y8sNJpHlxch7JPDaufgrsl4vYjd9hMUY8QVjoNncKbow9I7exyA== + dependencies: + confbox "^0.1.7" + mlly "^1.7.1" + pathe "^1.1.2" + polished@^4.2.2: version "4.3.1" resolved "https://registry.yarnpkg.com/polished/-/polished-4.3.1.tgz#5a00ae32715609f83d89f6f31d0f0261c6170548" @@ -10757,12 +10855,12 @@ postcss@8.4.31: source-map-js "^1.0.2" postcss@^8.4.23, postcss@^8.4.29, postcss@^8.4.33, postcss@^8.4.38: - version "8.4.38" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" - integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + version "8.4.39" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.39.tgz#aa3c94998b61d3a9c259efa51db4b392e1bde0e3" + integrity sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw== dependencies: nanoid "^3.3.7" - picocolors "^1.0.0" + picocolors "^1.0.1" source-map-js "^1.2.0" postgres-array@~2.0.0: @@ -10815,17 +10913,18 @@ postgres-range@^1.1.1: integrity sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w== posthog-js@^1.131.3: - version "1.138.1" - resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.138.1.tgz#02052cdff5087edfa782ac3bb593d48802d0f932" - integrity sha512-hLahTznM0/iSM3vl6QGcmdG/zgCcW2DaQqPf7OtXCoqxNdYCWTNp6/sqepd6CxtDmJfm1S5Cbu1tD9TSksOYcA== + version "1.142.1" + resolved "https://registry.yarnpkg.com/posthog-js/-/posthog-js-1.142.1.tgz#3b91229732938c5c76b5ee6d410698a267e073e9" + integrity sha512-yqeWTWitlb0sCaH5v6s7UJ+pPspzf/lkzPaSE5pMMXRM2i2KNsMoZEAZqbPCW8fQ8QL6lHs6d8PLjHrvbR288w== dependencies: fflate "^0.4.8" preact "^10.19.3" + web-vitals "^4.0.1" preact@^10.19.3: - version "10.22.0" - resolved "https://registry.yarnpkg.com/preact/-/preact-10.22.0.tgz#a50f38006ae438d255e2631cbdaf7488e6dd4e16" - integrity sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw== + version "10.22.1" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.22.1.tgz#6a3589973fe0c6e53211091607d31f4b7b27334d" + integrity sha512-jRYbDDgMpIb5LHq3hkI0bbl+l/TQ9UnkdQ0ww+lp+4MMOdqaUYdFc5qeyP+IV8FAd/2Em7drVPeKdQxsiWCf/A== prelude-ls@^1.2.1: version "1.2.1" @@ -11029,9 +11128,9 @@ prosemirror-menu@^1.2.4: prosemirror-state "^1.0.0" prosemirror-model@^1.0.0, prosemirror-model@^1.19.0, prosemirror-model@^1.19.4, prosemirror-model@^1.20.0, prosemirror-model@^1.21.0, prosemirror-model@^1.8.1: - version "1.21.1" - resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.21.1.tgz#023b804cfc7942bc9b3104e65f59b18bf18514c6" - integrity sha512-IVBAuMqOfltTr7yPypwpfdGT+6rGAteVOw2FO6GEvCGGa1ZwxLseqC1Eax/EChDvG/xGquB2d/hLdgh3THpsYg== + version "1.21.3" + resolved "https://registry.yarnpkg.com/prosemirror-model/-/prosemirror-model-1.21.3.tgz#97fa434d670331c1ab25f75964b1bcd7a948ce61" + integrity sha512-nt2Xs/RNGepD9hrrkzXvtCm1mpGJoQfFSPktGa0BF/aav6XsnmVGZ9sTXNWRLupAz5SCLa3EyKlFeK7zJWROKg== dependencies: orderedmap "^2.0.0" @@ -11087,9 +11186,9 @@ prosemirror-transform@^1.0.0, prosemirror-transform@^1.1.0, prosemirror-transfor prosemirror-model "^1.21.0" prosemirror-view@^1.0.0, prosemirror-view@^1.1.0, prosemirror-view@^1.13.3, prosemirror-view@^1.27.0, prosemirror-view@^1.31.0, prosemirror-view@^1.32.7: - version "1.33.7" - resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.33.7.tgz#fd9841a79a4bc517914a57456370b941bd655729" - integrity sha512-jo6eMQCtPRwcrA2jISBCnm0Dd2B+szS08BU1Ay+XGiozHo5EZMHfLQE8R5nO4vb1spTH2RW1woZIYXRiQsuP8g== + version "1.33.8" + resolved "https://registry.yarnpkg.com/prosemirror-view/-/prosemirror-view-1.33.8.tgz#cfd76dff421730cbca0b6ea40ce36994daaeda41" + integrity sha512-4PhMr/ufz2cdvFgpUAnZfs+0xij3RsFysreeG9V/utpwX7AJtYCDVyuRxzWoMJIEf4C7wVihuBNMPpFLPCiLQw== dependencies: prosemirror-model "^1.20.0" prosemirror-state "^1.0.0" @@ -11161,9 +11260,9 @@ qs@6.11.0: side-channel "^1.0.4" qs@^6.10.0, qs@^6.11.2: - version "6.12.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.1.tgz#39422111ca7cbdb70425541cba20c7d7b216599a" - integrity sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ== + version "6.12.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.2.tgz#5443b587f3bf73ac68968de491e5b25bafe04478" + integrity sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg== dependencies: side-channel "^1.0.6" @@ -11300,9 +11399,9 @@ react-fast-compare@^3.0.1: integrity sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ== react-hook-form@^7.38.0, react-hook-form@^7.51.0: - version "7.51.5" - resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.51.5.tgz#4afbfb819312db9fea23e8237a3a0d097e128b43" - integrity sha512-J2ILT5gWx1XUIJRETiA7M19iXHlG74+6O3KApzvqB/w8S5NQR7AbU8HVZrMALdmDgWpRPYiZJl0zx8Z4L2mP6Q== + version "7.52.1" + resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.52.1.tgz#ec2c96437b977f8b89ae2d541a70736c66284852" + integrity sha512-uNKIhaoICJ5KQALYZ4TOaOLElyM+xipord+Ha3crEFhTntdLvWZqVY49Wqd/0GiVCA/f9NjemLeiNPjG7Hpurg== react-is@18.1.0: version "18.1.0" @@ -11390,7 +11489,7 @@ react-popper@^2.3.0: react-fast-compare "^3.0.1" warning "^4.0.2" -react-remove-scroll-bar@^2.3.3: +react-remove-scroll-bar@^2.3.3, react-remove-scroll-bar@^2.3.4: version "2.3.6" resolved "https://registry.yarnpkg.com/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz#3e585e9d163be84a010180b18721e851ac81a29c" integrity sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g== @@ -11409,6 +11508,17 @@ react-remove-scroll@2.5.5: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" +react-remove-scroll@2.5.7: + version "2.5.7" + resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz#15a1fd038e8497f65a695bf26a4a57970cac1ccb" + integrity sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA== + dependencies: + react-remove-scroll-bar "^2.3.4" + react-style-singleton "^2.2.1" + tslib "^2.1.0" + use-callback-ref "^1.3.0" + use-sidecar "^1.1.2" + react-selecto@^1.25.0: version "1.26.3" resolved "https://registry.yarnpkg.com/react-selecto/-/react-selecto-1.26.3.tgz#f9081c006cee2e2fed85ac1811cfe17136cf81a5" @@ -11725,10 +11835,10 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== -rfdc@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" - integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== +rfdc@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== rimraf@^2.6.3: version "2.7.1" @@ -11811,9 +11921,9 @@ rrweb-cssom@^0.6.0: integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== rrweb-cssom@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.7.0.tgz#51cc1e7f4c20dd81218545b5092939bc6fd81bcd" - integrity sha512-KlSv0pm9kgQSRxXEMgtivPJ4h826YHsuob8pSHcfSZsSXGtvpEAie8S0AnXuObEJ7nhikOb4ahwxDm0H2yW17g== + version "0.7.1" + resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.7.1.tgz#c73451a484b86dd7cfb1e0b2898df4b703183e4b" + integrity sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg== run-parallel@^1.1.9: version "1.2.0" @@ -12249,11 +12359,11 @@ store2@^2.14.2: integrity sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg== storybook@^8.1.1: - version "8.1.6" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.1.6.tgz#c811b2a377ebc9200afa89fef5e878b3d7c9f781" - integrity sha512-qouQEB+sSb9ktE6fGVoBy6CLEUq4NOqDUpt/EhnITaWqzUeAZSQXTcoHg9DXhTMiynnbfqsUcZuK9PZOjgt7/w== + version "8.1.11" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.1.11.tgz#c41b25fee0146a55afccba8978b6349c454313a6" + integrity sha512-3KjIhF8lczXhKKHyHbOqV30dvuRYJSxc0d1as/C8kybuwE7cLaydhWGma7VBv5bTSPv0rDzucx7KcO+achArPg== dependencies: - "@storybook/cli" "8.1.6" + "@storybook/cli" "8.1.11" stream-shift@^1.0.0: version "1.0.3" @@ -12298,14 +12408,22 @@ string-width@^5.0.1, string-width@^5.1.2: strip-ansi "^7.0.1" string-width@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.1.0.tgz#d994252935224729ea3719c49f7206dc9c46550a" - integrity sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw== + version "7.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-7.2.0.tgz#b5bb8e2165ce275d4d43476dd2700ad9091db6dc" + integrity sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ== dependencies: emoji-regex "^10.3.0" get-east-asian-width "^1.0.0" strip-ansi "^7.1.0" +string.prototype.includes@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz#8986d57aee66d5460c144620a6d873778ad7289f" + integrity sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg== + dependencies: + define-properties "^1.1.3" + es-abstract "^1.17.5" + string.prototype.matchall@^4.0.11, string.prototype.matchall@^4.0.6: version "4.0.11" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz#1092a72c59268d2abaad76582dccc687c0297e0a" @@ -13096,16 +13214,16 @@ typescript@4.9.5: integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typescript@^5.3.3, typescript@^5.4.2: - version "5.4.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.4.5.tgz#42ccef2c571fdbd0f6718b1d1f5e6e5ef006f611" - integrity sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ== + version "5.5.3" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.3.tgz#e1b0a3c394190838a0b168e771b0ad56a0af0faa" + integrity sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ== uc.micro@^2.0.0, uc.micro@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-2.1.0.tgz#f8d3f7d0ec4c3dea35a7e3c8efa4cb8b45c9e7ee" integrity sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A== -ufo@^1.4.0: +ufo@^1.5.3: version "1.5.3" resolved "https://registry.yarnpkg.com/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344" integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw== @@ -13278,9 +13396,9 @@ unplugin@1.0.1: webpack-virtual-modules "^0.5.0" unplugin@^1.3.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.10.1.tgz#8ceda065dc71bc67d923dea0920f05c67f2cd68c" - integrity sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg== + version "1.11.0" + resolved "https://registry.yarnpkg.com/unplugin/-/unplugin-1.11.0.tgz#09237b4011075e65c8f4d0ae06e221dee12750e3" + integrity sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g== dependencies: acorn "^8.11.3" chokidar "^3.6.0" @@ -13480,6 +13598,11 @@ wcwidth@^1.0.1: dependencies: defaults "^1.0.3" +web-vitals@^4.0.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-4.2.1.tgz#67eec387ddd0ef4c25574a01ab9dae723eee2b97" + integrity sha512-U6bAxeudnhDqcXNl50JC4hLlqox9DZnngxfISZm3DMZnonW35xtJOVUc091L+DOY+6hVZVpKXoiCP0RiT6339Q== + webidl-conversions@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" @@ -13539,9 +13662,9 @@ webpack-virtual-modules@^0.6.1: integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ== webpack@5: - version "5.91.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.91.0.tgz#ffa92c1c618d18c878f06892bbdc3373c71a01d9" - integrity sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw== + version "5.92.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.92.1.tgz#eca5c1725b9e189cffbd86e8b6c3c7400efc5788" + integrity sha512-JECQ7IwJb+7fgUFBlrJzbyu3GEuNBcdqr1LD7IbSzwkSmIevTm8PF+wej3Oxuz/JFBUZ6O1o43zsPkwm1C4TmA== dependencies: "@types/eslint-scope" "^3.7.3" "@types/estree" "^1.0.5" @@ -13549,10 +13672,10 @@ webpack@5: "@webassemblyjs/wasm-edit" "^1.12.1" "@webassemblyjs/wasm-parser" "^1.12.1" acorn "^8.7.1" - acorn-import-assertions "^1.9.0" + acorn-import-attributes "^1.9.5" browserslist "^4.21.10" chrome-trace-event "^1.0.2" - enhanced-resolve "^5.16.0" + enhanced-resolve "^5.17.0" es-module-lexer "^1.2.1" eslint-scope "5.1.1" events "^3.2.0"