diff --git a/authentik/admin/api/system.py b/authentik/admin/api/system.py
index b0e7f074fdca..5b2e91ce53c4 100644
--- a/authentik/admin/api/system.py
+++ b/authentik/admin/api/system.py
@@ -16,6 +16,7 @@
from authentik import get_full_version
from authentik.core.api.utils import PassiveSerializer
+from authentik.enterprise.license import LicenseKey
from authentik.lib.config import CONFIG
from authentik.lib.utils.reflection import get_env
from authentik.outposts.apps import MANAGED_OUTPOST
@@ -32,7 +33,7 @@ class RuntimeDict(TypedDict):
platform: str
uname: str
openssl_version: str
- openssl_fips_mode: bool
+ openssl_fips_mode: bool | None
authentik_version: str
@@ -71,7 +72,9 @@ def get_runtime(self, request: Request) -> RuntimeDict:
"architecture": platform.machine(),
"authentik_version": get_full_version(),
"environment": get_env(),
- "openssl_fips_enabled": backend._fips_enabled,
+ "openssl_fips_enabled": (
+ backend._fips_enabled if LicenseKey.get_total().is_valid() else None
+ ),
"openssl_version": OPENSSL_VERSION,
"platform": platform.platform(),
"python_version": python_version,
diff --git a/authentik/enterprise/providers/google_workspace/api/groups.py b/authentik/enterprise/providers/google_workspace/api/groups.py
index db54b4820fa5..cd8799df8e95 100644
--- a/authentik/enterprise/providers/google_workspace/api/groups.py
+++ b/authentik/enterprise/providers/google_workspace/api/groups.py
@@ -7,6 +7,7 @@
from authentik.core.api.used_by import UsedByMixin
from authentik.core.api.users import UserGroupSerializer
from authentik.enterprise.providers.google_workspace.models import GoogleWorkspaceProviderGroup
+from authentik.lib.sync.outgoing.api import OutgoingSyncConnectionCreateMixin
class GoogleWorkspaceProviderGroupSerializer(ModelSerializer):
@@ -30,6 +31,7 @@ class Meta:
class GoogleWorkspaceProviderGroupViewSet(
mixins.CreateModelMixin,
+ OutgoingSyncConnectionCreateMixin,
mixins.RetrieveModelMixin,
mixins.DestroyModelMixin,
UsedByMixin,
diff --git a/authentik/enterprise/providers/google_workspace/api/users.py b/authentik/enterprise/providers/google_workspace/api/users.py
index de794e135b81..9b8926209e58 100644
--- a/authentik/enterprise/providers/google_workspace/api/users.py
+++ b/authentik/enterprise/providers/google_workspace/api/users.py
@@ -7,6 +7,7 @@
from authentik.core.api.groups import GroupMemberSerializer
from authentik.core.api.used_by import UsedByMixin
from authentik.enterprise.providers.google_workspace.models import GoogleWorkspaceProviderUser
+from authentik.lib.sync.outgoing.api import OutgoingSyncConnectionCreateMixin
class GoogleWorkspaceProviderUserSerializer(ModelSerializer):
@@ -30,6 +31,7 @@ class Meta:
class GoogleWorkspaceProviderUserViewSet(
mixins.CreateModelMixin,
+ OutgoingSyncConnectionCreateMixin,
mixins.RetrieveModelMixin,
mixins.DestroyModelMixin,
UsedByMixin,
diff --git a/authentik/enterprise/providers/google_workspace/clients/groups.py b/authentik/enterprise/providers/google_workspace/clients/groups.py
index 7cb841dcc879..de85d96c59c1 100644
--- a/authentik/enterprise/providers/google_workspace/clients/groups.py
+++ b/authentik/enterprise/providers/google_workspace/clients/groups.py
@@ -214,3 +214,7 @@ def _discover_single_group(self, group: dict):
google_id=google_id,
attributes=group,
)
+
+ def update_single_attribute(self, connection: GoogleWorkspaceProviderUser):
+ group = self.directory_service.groups().get(connection.google_id)
+ connection.attributes = group
diff --git a/authentik/enterprise/providers/google_workspace/clients/users.py b/authentik/enterprise/providers/google_workspace/clients/users.py
index b8316f476bbc..3c6206a4ec2c 100644
--- a/authentik/enterprise/providers/google_workspace/clients/users.py
+++ b/authentik/enterprise/providers/google_workspace/clients/users.py
@@ -119,3 +119,7 @@ def _discover_single_user(self, user: dict):
google_id=email,
attributes=user,
)
+
+ def update_single_attribute(self, connection: GoogleWorkspaceProviderUser):
+ user = self.directory_service.users().get(connection.google_id)
+ connection.attributes = user
diff --git a/authentik/enterprise/providers/google_workspace/models.py b/authentik/enterprise/providers/google_workspace/models.py
index 9628da2fb2b9..e3396a2e71ad 100644
--- a/authentik/enterprise/providers/google_workspace/models.py
+++ b/authentik/enterprise/providers/google_workspace/models.py
@@ -31,6 +31,58 @@ def default_scopes() -> list[str]:
]
+class GoogleWorkspaceProviderUser(SerializerModel):
+ """Mapping of a user and provider to a Google user ID"""
+
+ id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
+ google_id = models.TextField()
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
+ provider = models.ForeignKey("GoogleWorkspaceProvider", on_delete=models.CASCADE)
+ attributes = models.JSONField(default=dict)
+
+ @property
+ def serializer(self) -> type[Serializer]:
+ from authentik.enterprise.providers.google_workspace.api.users import (
+ GoogleWorkspaceProviderUserSerializer,
+ )
+
+ return GoogleWorkspaceProviderUserSerializer
+
+ class Meta:
+ verbose_name = _("Google Workspace Provider User")
+ verbose_name_plural = _("Google Workspace Provider Users")
+ unique_together = (("google_id", "user", "provider"),)
+
+ def __str__(self) -> str:
+ return f"Google Workspace Provider User {self.user_id} to {self.provider_id}"
+
+
+class GoogleWorkspaceProviderGroup(SerializerModel):
+ """Mapping of a group and provider to a Google group ID"""
+
+ id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
+ google_id = models.TextField()
+ group = models.ForeignKey(Group, on_delete=models.CASCADE)
+ provider = models.ForeignKey("GoogleWorkspaceProvider", on_delete=models.CASCADE)
+ attributes = models.JSONField(default=dict)
+
+ @property
+ def serializer(self) -> type[Serializer]:
+ from authentik.enterprise.providers.google_workspace.api.groups import (
+ GoogleWorkspaceProviderGroupSerializer,
+ )
+
+ return GoogleWorkspaceProviderGroupSerializer
+
+ class Meta:
+ verbose_name = _("Google Workspace Provider Group")
+ verbose_name_plural = _("Google Workspace Provider Groups")
+ unique_together = (("google_id", "group", "provider"),)
+
+ def __str__(self) -> str:
+ return f"Google Workspace Provider Group {self.group_id} to {self.provider_id}"
+
+
class GoogleWorkspaceProvider(OutgoingSyncProvider, BackchannelProvider):
"""Sync users from authentik into Google Workspace."""
@@ -59,15 +111,16 @@ class GoogleWorkspaceProvider(OutgoingSyncProvider, BackchannelProvider):
)
def client_for_model(
- self, model: type[User | Group]
+ self,
+ model: type[User | Group | GoogleWorkspaceProviderUser | GoogleWorkspaceProviderGroup],
) -> BaseOutgoingSyncClient[User | Group, Any, Any, Self]:
- if issubclass(model, User):
+ if issubclass(model, User | GoogleWorkspaceProviderUser):
from authentik.enterprise.providers.google_workspace.clients.users import (
GoogleWorkspaceUserClient,
)
return GoogleWorkspaceUserClient(self)
- if issubclass(model, Group):
+ if issubclass(model, Group | GoogleWorkspaceProviderGroup):
from authentik.enterprise.providers.google_workspace.clients.groups import (
GoogleWorkspaceGroupClient,
)
@@ -144,55 +197,3 @@ def __str__(self):
class Meta:
verbose_name = _("Google Workspace Provider Mapping")
verbose_name_plural = _("Google Workspace Provider Mappings")
-
-
-class GoogleWorkspaceProviderUser(SerializerModel):
- """Mapping of a user and provider to a Google user ID"""
-
- id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
- google_id = models.TextField()
- user = models.ForeignKey(User, on_delete=models.CASCADE)
- provider = models.ForeignKey(GoogleWorkspaceProvider, on_delete=models.CASCADE)
- attributes = models.JSONField(default=dict)
-
- @property
- def serializer(self) -> type[Serializer]:
- from authentik.enterprise.providers.google_workspace.api.users import (
- GoogleWorkspaceProviderUserSerializer,
- )
-
- return GoogleWorkspaceProviderUserSerializer
-
- class Meta:
- verbose_name = _("Google Workspace Provider User")
- verbose_name_plural = _("Google Workspace Provider Users")
- unique_together = (("google_id", "user", "provider"),)
-
- def __str__(self) -> str:
- return f"Google Workspace Provider User {self.user_id} to {self.provider_id}"
-
-
-class GoogleWorkspaceProviderGroup(SerializerModel):
- """Mapping of a group and provider to a Google group ID"""
-
- id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
- google_id = models.TextField()
- group = models.ForeignKey(Group, on_delete=models.CASCADE)
- provider = models.ForeignKey(GoogleWorkspaceProvider, on_delete=models.CASCADE)
- attributes = models.JSONField(default=dict)
-
- @property
- def serializer(self) -> type[Serializer]:
- from authentik.enterprise.providers.google_workspace.api.groups import (
- GoogleWorkspaceProviderGroupSerializer,
- )
-
- return GoogleWorkspaceProviderGroupSerializer
-
- class Meta:
- verbose_name = _("Google Workspace Provider Group")
- verbose_name_plural = _("Google Workspace Provider Groups")
- unique_together = (("google_id", "group", "provider"),)
-
- def __str__(self) -> str:
- return f"Google Workspace Provider Group {self.group_id} to {self.provider_id}"
diff --git a/authentik/enterprise/providers/microsoft_entra/api/groups.py b/authentik/enterprise/providers/microsoft_entra/api/groups.py
index 6be035e4c2cf..ac3876483118 100644
--- a/authentik/enterprise/providers/microsoft_entra/api/groups.py
+++ b/authentik/enterprise/providers/microsoft_entra/api/groups.py
@@ -7,6 +7,7 @@
from authentik.core.api.used_by import UsedByMixin
from authentik.core.api.users import UserGroupSerializer
from authentik.enterprise.providers.microsoft_entra.models import MicrosoftEntraProviderGroup
+from authentik.lib.sync.outgoing.api import OutgoingSyncConnectionCreateMixin
class MicrosoftEntraProviderGroupSerializer(ModelSerializer):
@@ -30,6 +31,7 @@ class Meta:
class MicrosoftEntraProviderGroupViewSet(
mixins.CreateModelMixin,
+ OutgoingSyncConnectionCreateMixin,
mixins.RetrieveModelMixin,
mixins.DestroyModelMixin,
UsedByMixin,
diff --git a/authentik/enterprise/providers/microsoft_entra/api/users.py b/authentik/enterprise/providers/microsoft_entra/api/users.py
index da0203ed94b4..c30dc647f2a8 100644
--- a/authentik/enterprise/providers/microsoft_entra/api/users.py
+++ b/authentik/enterprise/providers/microsoft_entra/api/users.py
@@ -7,6 +7,7 @@
from authentik.core.api.groups import GroupMemberSerializer
from authentik.core.api.used_by import UsedByMixin
from authentik.enterprise.providers.microsoft_entra.models import MicrosoftEntraProviderUser
+from authentik.lib.sync.outgoing.api import OutgoingSyncConnectionCreateMixin
class MicrosoftEntraProviderUserSerializer(ModelSerializer):
@@ -29,6 +30,7 @@ class Meta:
class MicrosoftEntraProviderUserViewSet(
+ OutgoingSyncConnectionCreateMixin,
mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.DestroyModelMixin,
diff --git a/authentik/enterprise/providers/microsoft_entra/clients/groups.py b/authentik/enterprise/providers/microsoft_entra/clients/groups.py
index f826ae67fd6c..2cb135822f20 100644
--- a/authentik/enterprise/providers/microsoft_entra/clients/groups.py
+++ b/authentik/enterprise/providers/microsoft_entra/clients/groups.py
@@ -226,3 +226,7 @@ def _discover_single_group(self, group: MSGroup):
microsoft_id=group.id,
attributes=self.entity_as_dict(group),
)
+
+ def update_single_attribute(self, connection: MicrosoftEntraProviderGroup):
+ data = self._request(self.client.groups.by_group_id(connection.microsoft_id).get())
+ connection.attributes = self.entity_as_dict(data)
diff --git a/authentik/enterprise/providers/microsoft_entra/clients/users.py b/authentik/enterprise/providers/microsoft_entra/clients/users.py
index 7371cb3f4db7..a650b42a5205 100644
--- a/authentik/enterprise/providers/microsoft_entra/clients/users.py
+++ b/authentik/enterprise/providers/microsoft_entra/clients/users.py
@@ -66,6 +66,26 @@ def delete(self, obj: User):
microsoft_user.delete()
return response
+ def get_select_fields(self) -> list[str]:
+ """All fields that should be selected when we fetch user data."""
+ # TODO: Make this customizable in the future
+ return [
+ # Default fields
+ "businessPhones",
+ "displayName",
+ "givenName",
+ "jobTitle",
+ "mail",
+ "mobilePhone",
+ "officeLocation",
+ "preferredLanguage",
+ "surname",
+ "userPrincipalName",
+ "id",
+ # Required for logging into M365 using authentik
+ "onPremisesImmutableId",
+ ]
+
def create(self, user: User):
"""Create user from scratch and create a connection object"""
microsoft_user = self.to_schema(user, None)
@@ -75,12 +95,12 @@ def create(self, user: User):
response = self._request(self.client.users.post(microsoft_user))
except ObjectExistsSyncException:
# user already exists in microsoft entra, so we can connect them manually
- query_params = UsersRequestBuilder.UsersRequestBuilderGetQueryParameters()(
- filter=f"mail eq '{microsoft_user.mail}'",
- )
request_configuration = (
UsersRequestBuilder.UsersRequestBuilderGetRequestConfiguration(
- query_parameters=query_params,
+ query_parameters=UsersRequestBuilder.UsersRequestBuilderGetQueryParameters(
+ filter=f"mail eq '{microsoft_user.mail}'",
+ select=self.get_select_fields(),
+ ),
)
)
user_data = self._request(self.client.users.get(request_configuration))
@@ -99,7 +119,6 @@ def create(self, user: User):
except TransientSyncException as exc:
raise exc
else:
- print(self.entity_as_dict(response))
return MicrosoftEntraProviderUser.objects.create(
provider=self.provider,
user=user,
@@ -120,7 +139,12 @@ def update(self, user: User, connection: MicrosoftEntraProviderUser):
def discover(self):
"""Iterate through all users and connect them with authentik users if possible"""
- users = self._request(self.client.users.get())
+ request_configuration = UsersRequestBuilder.UsersRequestBuilderGetRequestConfiguration(
+ query_parameters=UsersRequestBuilder.UsersRequestBuilderGetQueryParameters(
+ select=self.get_select_fields(),
+ ),
+ )
+ users = self._request(self.client.users.get(request_configuration))
next_link = True
while next_link:
for user in users.value:
@@ -141,3 +165,14 @@ def _discover_single_user(self, user: MSUser):
microsoft_id=user.id,
attributes=self.entity_as_dict(user),
)
+
+ def update_single_attribute(self, connection: MicrosoftEntraProviderUser):
+ request_configuration = UsersRequestBuilder.UsersRequestBuilderGetRequestConfiguration(
+ query_parameters=UsersRequestBuilder.UsersRequestBuilderGetQueryParameters(
+ select=self.get_select_fields(),
+ ),
+ )
+ data = self._request(
+ self.client.users.by_user_id(connection.microsoft_id).get(request_configuration)
+ )
+ connection.attributes = self.entity_as_dict(data)
diff --git a/authentik/enterprise/providers/microsoft_entra/models.py b/authentik/enterprise/providers/microsoft_entra/models.py
index 079519f615f8..a9092a76d2f9 100644
--- a/authentik/enterprise/providers/microsoft_entra/models.py
+++ b/authentik/enterprise/providers/microsoft_entra/models.py
@@ -22,6 +22,58 @@
from authentik.lib.sync.outgoing.models import OutgoingSyncDeleteAction, OutgoingSyncProvider
+class MicrosoftEntraProviderUser(SerializerModel):
+ """Mapping of a user and provider to a Microsoft user ID"""
+
+ id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
+ microsoft_id = models.TextField()
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
+ provider = models.ForeignKey("MicrosoftEntraProvider", on_delete=models.CASCADE)
+ attributes = models.JSONField(default=dict)
+
+ @property
+ def serializer(self) -> type[Serializer]:
+ from authentik.enterprise.providers.microsoft_entra.api.users import (
+ MicrosoftEntraProviderUserSerializer,
+ )
+
+ return MicrosoftEntraProviderUserSerializer
+
+ class Meta:
+ verbose_name = _("Microsoft Entra Provider User")
+ verbose_name_plural = _("Microsoft Entra Provider User")
+ unique_together = (("microsoft_id", "user", "provider"),)
+
+ def __str__(self) -> str:
+ return f"Microsoft Entra Provider User {self.user_id} to {self.provider_id}"
+
+
+class MicrosoftEntraProviderGroup(SerializerModel):
+ """Mapping of a group and provider to a Microsoft group ID"""
+
+ id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
+ microsoft_id = models.TextField()
+ group = models.ForeignKey(Group, on_delete=models.CASCADE)
+ provider = models.ForeignKey("MicrosoftEntraProvider", on_delete=models.CASCADE)
+ attributes = models.JSONField(default=dict)
+
+ @property
+ def serializer(self) -> type[Serializer]:
+ from authentik.enterprise.providers.microsoft_entra.api.groups import (
+ MicrosoftEntraProviderGroupSerializer,
+ )
+
+ return MicrosoftEntraProviderGroupSerializer
+
+ class Meta:
+ verbose_name = _("Microsoft Entra Provider Group")
+ verbose_name_plural = _("Microsoft Entra Provider Groups")
+ unique_together = (("microsoft_id", "group", "provider"),)
+
+ def __str__(self) -> str:
+ return f"Microsoft Entra Provider Group {self.group_id} to {self.provider_id}"
+
+
class MicrosoftEntraProvider(OutgoingSyncProvider, BackchannelProvider):
"""Sync users from authentik into Microsoft Entra."""
@@ -48,15 +100,16 @@ class MicrosoftEntraProvider(OutgoingSyncProvider, BackchannelProvider):
)
def client_for_model(
- self, model: type[User | Group]
+ self,
+ model: type[User | Group | MicrosoftEntraProviderUser | MicrosoftEntraProviderGroup],
) -> BaseOutgoingSyncClient[User | Group, Any, Any, Self]:
- if issubclass(model, User):
+ if issubclass(model, User | MicrosoftEntraProviderUser):
from authentik.enterprise.providers.microsoft_entra.clients.users import (
MicrosoftEntraUserClient,
)
return MicrosoftEntraUserClient(self)
- if issubclass(model, Group):
+ if issubclass(model, Group | MicrosoftEntraProviderGroup):
from authentik.enterprise.providers.microsoft_entra.clients.groups import (
MicrosoftEntraGroupClient,
)
@@ -133,55 +186,3 @@ def __str__(self):
class Meta:
verbose_name = _("Microsoft Entra Provider Mapping")
verbose_name_plural = _("Microsoft Entra Provider Mappings")
-
-
-class MicrosoftEntraProviderUser(SerializerModel):
- """Mapping of a user and provider to a Microsoft user ID"""
-
- id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
- microsoft_id = models.TextField()
- user = models.ForeignKey(User, on_delete=models.CASCADE)
- provider = models.ForeignKey(MicrosoftEntraProvider, on_delete=models.CASCADE)
- attributes = models.JSONField(default=dict)
-
- @property
- def serializer(self) -> type[Serializer]:
- from authentik.enterprise.providers.microsoft_entra.api.users import (
- MicrosoftEntraProviderUserSerializer,
- )
-
- return MicrosoftEntraProviderUserSerializer
-
- class Meta:
- verbose_name = _("Microsoft Entra Provider User")
- verbose_name_plural = _("Microsoft Entra Provider User")
- unique_together = (("microsoft_id", "user", "provider"),)
-
- def __str__(self) -> str:
- return f"Microsoft Entra Provider User {self.user_id} to {self.provider_id}"
-
-
-class MicrosoftEntraProviderGroup(SerializerModel):
- """Mapping of a group and provider to a Microsoft group ID"""
-
- id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
- microsoft_id = models.TextField()
- group = models.ForeignKey(Group, on_delete=models.CASCADE)
- provider = models.ForeignKey(MicrosoftEntraProvider, on_delete=models.CASCADE)
- attributes = models.JSONField(default=dict)
-
- @property
- def serializer(self) -> type[Serializer]:
- from authentik.enterprise.providers.microsoft_entra.api.groups import (
- MicrosoftEntraProviderGroupSerializer,
- )
-
- return MicrosoftEntraProviderGroupSerializer
-
- class Meta:
- verbose_name = _("Microsoft Entra Provider Group")
- verbose_name_plural = _("Microsoft Entra Provider Groups")
- unique_together = (("microsoft_id", "group", "provider"),)
-
- def __str__(self) -> str:
- return f"Microsoft Entra Provider Group {self.group_id} to {self.provider_id}"
diff --git a/authentik/enterprise/providers/microsoft_entra/tests/test_users.py b/authentik/enterprise/providers/microsoft_entra/tests/test_users.py
index 7a00213efc35..aa491f703c80 100644
--- a/authentik/enterprise/providers/microsoft_entra/tests/test_users.py
+++ b/authentik/enterprise/providers/microsoft_entra/tests/test_users.py
@@ -3,16 +3,18 @@
from unittest.mock import AsyncMock, MagicMock, patch
from azure.identity.aio import ClientSecretCredential
-from django.test import TestCase
+from django.urls import reverse
from msgraph.generated.models.group_collection_response import GroupCollectionResponse
from msgraph.generated.models.organization import Organization
from msgraph.generated.models.organization_collection_response import OrganizationCollectionResponse
from msgraph.generated.models.user import User as MSUser
from msgraph.generated.models.user_collection_response import UserCollectionResponse
from msgraph.generated.models.verified_domain import VerifiedDomain
+from rest_framework.test import APITestCase
from authentik.blueprints.tests import apply_blueprint
from authentik.core.models import Application, Group, User
+from authentik.core.tests.utils import create_test_admin_user
from authentik.enterprise.providers.microsoft_entra.models import (
MicrosoftEntraProvider,
MicrosoftEntraProviderMapping,
@@ -25,11 +27,12 @@
from authentik.tenants.models import Tenant
-class MicrosoftEntraUserTests(TestCase):
+class MicrosoftEntraUserTests(APITestCase):
"""Microsoft Entra User tests"""
@apply_blueprint("system/providers-microsoft-entra.yaml")
def setUp(self) -> None:
+
# Delete all users and groups as the mocked HTTP responses only return one ID
# which will cause errors with multiple users
Tenant.objects.update(avatars="none")
@@ -371,3 +374,45 @@ def test_sync_task(self):
)
self.assertFalse(Event.objects.filter(action=EventAction.SYSTEM_EXCEPTION).exists())
user_list.assert_called_once()
+
+ def test_connect_manual(self):
+ """test manual user connection"""
+ uid = generate_id()
+ self.app.backchannel_providers.remove(self.provider)
+ admin = create_test_admin_user()
+ different_user = User.objects.create(
+ username=uid,
+ email=f"{uid}@goauthentik.io",
+ )
+ self.app.backchannel_providers.add(self.provider)
+ with (
+ patch(
+ "authentik.enterprise.providers.microsoft_entra.models.MicrosoftEntraProvider.microsoft_credentials",
+ MagicMock(return_value={"credentials": self.creds}),
+ ),
+ patch(
+ "msgraph.generated.organization.organization_request_builder.OrganizationRequestBuilder.get",
+ AsyncMock(
+ return_value=OrganizationCollectionResponse(
+ value=[
+ Organization(verified_domains=[VerifiedDomain(name="goauthentik.io")])
+ ]
+ )
+ ),
+ ),
+ patch(
+ "authentik.enterprise.providers.microsoft_entra.clients.users.MicrosoftEntraUserClient.update_single_attribute",
+ MagicMock(),
+ ) as user_get,
+ ):
+ self.client.force_login(admin)
+ response = self.client.post(
+ reverse("authentik_api:microsoftentraprovideruser-list"),
+ data={
+ "microsoft_id": generate_id(),
+ "user": different_user.pk,
+ "provider": self.provider.pk,
+ },
+ )
+ self.assertEqual(response.status_code, 201)
+ user_get.assert_called_once()
diff --git a/authentik/lib/default.yml b/authentik/lib/default.yml
index 183ad8341c30..cf6ca74f2cc5 100644
--- a/authentik/lib/default.yml
+++ b/authentik/lib/default.yml
@@ -50,7 +50,6 @@ cache:
timeout: 300
timeout_flows: 300
timeout_policies: 300
- timeout_reputation: 300
# channel:
# url: ""
@@ -116,6 +115,9 @@ events:
context_processors:
geoip: "/geoip/GeoLite2-City.mmdb"
asn: "/geoip/GeoLite2-ASN.mmdb"
+compliance:
+ fips:
+ enabled: false
cert_discovery_dir: /certs
diff --git a/authentik/lib/sync/outgoing/api.py b/authentik/lib/sync/outgoing/api.py
index 03f31ecc5b3f..6b496efc612b 100644
--- a/authentik/lib/sync/outgoing/api.py
+++ b/authentik/lib/sync/outgoing/api.py
@@ -7,6 +7,7 @@
from rest_framework.fields import BooleanField
from rest_framework.request import Request
from rest_framework.response import Response
+from rest_framework.serializers import ModelSerializer
from authentik.core.api.utils import PassiveSerializer
from authentik.events.api.tasks import SystemTaskSerializer
@@ -54,3 +55,17 @@ def sync_status(self, request: Request, pk: int) -> Response:
"is_running": not lock_acquired,
}
return Response(SyncStatusSerializer(status).data)
+
+
+class OutgoingSyncConnectionCreateMixin:
+ """Mixin for connection objects that fetches remote data upon creation"""
+
+ def perform_create(self, serializer: ModelSerializer):
+ super().perform_create(serializer)
+ try:
+ instance = serializer.instance
+ client = instance.provider.client_for_model(instance.__class__)
+ client.update_single_attribute(instance)
+ instance.save()
+ except NotImplementedError:
+ pass
diff --git a/authentik/lib/sync/outgoing/base.py b/authentik/lib/sync/outgoing/base.py
index 52e7da145be3..47c2accf9fcf 100644
--- a/authentik/lib/sync/outgoing/base.py
+++ b/authentik/lib/sync/outgoing/base.py
@@ -114,3 +114,8 @@ def discover(self):
pre-link any users/groups in the remote system with the respective
object in authentik based on a common identifier"""
raise NotImplementedError()
+
+ def update_single_attribute(self, connection: TConnection):
+ """Update connection attributes on a connection object, when the connection
+ is manually created"""
+ raise NotImplementedError
diff --git a/authentik/outposts/api/outposts.py b/authentik/outposts/api/outposts.py
index f5bde93c778d..f3e697b090ef 100644
--- a/authentik/outposts/api/outposts.py
+++ b/authentik/outposts/api/outposts.py
@@ -6,7 +6,7 @@
from django_filters.filterset import FilterSet
from drf_spectacular.utils import extend_schema
from rest_framework.decorators import action
-from rest_framework.fields import BooleanField, CharField, DateTimeField
+from rest_framework.fields import BooleanField, CharField, DateTimeField, SerializerMethodField
from rest_framework.relations import PrimaryKeyRelatedField
from rest_framework.request import Request
from rest_framework.response import Response
@@ -18,6 +18,7 @@
from authentik.core.api.used_by import UsedByMixin
from authentik.core.api.utils import JSONDictField, PassiveSerializer
from authentik.core.models import Provider
+from authentik.enterprise.license import LicenseKey
from authentik.enterprise.providers.rac.models import RACProvider
from authentik.outposts.api.service_connections import ServiceConnectionSerializer
from authentik.outposts.apps import MANAGED_OUTPOST, MANAGED_OUTPOST_NAME
@@ -120,7 +121,7 @@ class OutpostHealthSerializer(PassiveSerializer):
golang_version = CharField(read_only=True)
openssl_enabled = BooleanField(read_only=True)
openssl_version = CharField(read_only=True)
- fips_enabled = BooleanField(read_only=True)
+ fips_enabled = SerializerMethodField()
version_should = CharField(read_only=True)
version_outdated = BooleanField(read_only=True)
@@ -130,6 +131,12 @@ class OutpostHealthSerializer(PassiveSerializer):
hostname = CharField(read_only=True, required=False)
+ def get_fips_enabled(self, obj: dict) -> bool | None:
+ """Get FIPS enabled"""
+ if not LicenseKey.get_total().is_valid():
+ return None
+ return obj["fips_enabled"]
+
class OutpostFilter(FilterSet):
"""Filter for Outposts"""
diff --git a/authentik/policies/reputation/apps.py b/authentik/policies/reputation/apps.py
index 60b2c77b05d6..4a1b1509fc27 100644
--- a/authentik/policies/reputation/apps.py
+++ b/authentik/policies/reputation/apps.py
@@ -2,8 +2,6 @@
from authentik.blueprints.apps import ManagedAppConfig
-CACHE_KEY_PREFIX = "goauthentik.io/policies/reputation/scores/"
-
class AuthentikPolicyReputationConfig(ManagedAppConfig):
"""Authentik reputation app config"""
diff --git a/authentik/policies/reputation/migrations/0007_reputation_authentik_p_identif_9434d7_idx_and_more.py b/authentik/policies/reputation/migrations/0007_reputation_authentik_p_identif_9434d7_idx_and_more.py
new file mode 100644
index 000000000000..5395223e2bb3
--- /dev/null
+++ b/authentik/policies/reputation/migrations/0007_reputation_authentik_p_identif_9434d7_idx_and_more.py
@@ -0,0 +1,25 @@
+# Generated by Django 5.0.6 on 2024-06-11 08:50
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ("authentik_policies_reputation", "0006_reputation_ip_asn_data"),
+ ]
+
+ operations = [
+ migrations.AddIndex(
+ model_name="reputation",
+ index=models.Index(fields=["identifier"], name="authentik_p_identif_9434d7_idx"),
+ ),
+ migrations.AddIndex(
+ model_name="reputation",
+ index=models.Index(fields=["ip"], name="authentik_p_ip_7ad0df_idx"),
+ ),
+ migrations.AddIndex(
+ model_name="reputation",
+ index=models.Index(fields=["ip", "identifier"], name="authentik_p_ip_d779aa_idx"),
+ ),
+ ]
diff --git a/authentik/policies/reputation/models.py b/authentik/policies/reputation/models.py
index abcddac2cc0c..c3c7ab1ebfdb 100644
--- a/authentik/policies/reputation/models.py
+++ b/authentik/policies/reputation/models.py
@@ -96,3 +96,8 @@ class Meta:
verbose_name = _("Reputation Score")
verbose_name_plural = _("Reputation Scores")
unique_together = ("identifier", "ip")
+ indexes = [
+ models.Index(fields=["identifier"]),
+ models.Index(fields=["ip"]),
+ models.Index(fields=["ip", "identifier"]),
+ ]
diff --git a/authentik/policies/reputation/settings.py b/authentik/policies/reputation/settings.py
deleted file mode 100644
index 72abd27cf7fd..000000000000
--- a/authentik/policies/reputation/settings.py
+++ /dev/null
@@ -1,11 +0,0 @@
-"""Reputation Settings"""
-
-from celery.schedules import crontab
-
-CELERY_BEAT_SCHEDULE = {
- "policies_reputation_save": {
- "task": "authentik.policies.reputation.tasks.save_reputation",
- "schedule": crontab(minute="1-59/5"),
- "options": {"queue": "authentik_scheduled"},
- },
-}
diff --git a/authentik/policies/reputation/signals.py b/authentik/policies/reputation/signals.py
index 583014337204..31042f8406bb 100644
--- a/authentik/policies/reputation/signals.py
+++ b/authentik/policies/reputation/signals.py
@@ -1,40 +1,35 @@
"""authentik reputation request signals"""
from django.contrib.auth.signals import user_logged_in
-from django.core.cache import cache
from django.dispatch import receiver
from django.http import HttpRequest
from structlog.stdlib import get_logger
from authentik.core.signals import login_failed
-from authentik.lib.config import CONFIG
-from authentik.policies.reputation.apps import CACHE_KEY_PREFIX
-from authentik.policies.reputation.tasks import save_reputation
+from authentik.events.context_processors.asn import ASN_CONTEXT_PROCESSOR
+from authentik.events.context_processors.geoip import GEOIP_CONTEXT_PROCESSOR
+from authentik.policies.reputation.models import Reputation, reputation_expiry
from authentik.root.middleware import ClientIPMiddleware
from authentik.stages.identification.signals import identification_failed
LOGGER = get_logger()
-CACHE_TIMEOUT = CONFIG.get_int("cache.timeout_reputation")
def update_score(request: HttpRequest, identifier: str, amount: int):
"""Update score for IP and User"""
remote_ip = ClientIPMiddleware.get_client_ip(request)
- try:
- # We only update the cache here, as its faster than writing to the DB
- score = cache.get_or_set(
- CACHE_KEY_PREFIX + remote_ip + "/" + identifier,
- {"ip": remote_ip, "identifier": identifier, "score": 0},
- CACHE_TIMEOUT,
- )
- score["score"] += amount
- cache.set(CACHE_KEY_PREFIX + remote_ip + "/" + identifier, score)
- except ValueError as exc:
- LOGGER.warning("failed to set reputation", exc=exc)
-
+ Reputation.objects.update_or_create(
+ ip=remote_ip,
+ identifier=identifier,
+ defaults={
+ "score": amount,
+ "ip_geo_data": GEOIP_CONTEXT_PROCESSOR.city_dict(remote_ip) or {},
+ "ip_asn_data": ASN_CONTEXT_PROCESSOR.asn_dict(remote_ip) or {},
+ "expires": reputation_expiry(),
+ },
+ )
LOGGER.debug("Updated score", amount=amount, for_user=identifier, for_ip=remote_ip)
- save_reputation.delay()
@receiver(login_failed)
diff --git a/authentik/policies/reputation/tasks.py b/authentik/policies/reputation/tasks.py
deleted file mode 100644
index fcdceaa7e442..000000000000
--- a/authentik/policies/reputation/tasks.py
+++ /dev/null
@@ -1,32 +0,0 @@
-"""Reputation tasks"""
-
-from django.core.cache import cache
-from structlog.stdlib import get_logger
-
-from authentik.events.context_processors.asn import ASN_CONTEXT_PROCESSOR
-from authentik.events.context_processors.geoip import GEOIP_CONTEXT_PROCESSOR
-from authentik.events.models import TaskStatus
-from authentik.events.system_tasks import SystemTask, prefill_task
-from authentik.policies.reputation.apps import CACHE_KEY_PREFIX
-from authentik.policies.reputation.models import Reputation
-from authentik.root.celery import CELERY_APP
-
-LOGGER = get_logger()
-
-
-@CELERY_APP.task(bind=True, base=SystemTask)
-@prefill_task
-def save_reputation(self: SystemTask):
- """Save currently cached reputation to database"""
- objects_to_update = []
- for _, score in cache.get_many(cache.keys(CACHE_KEY_PREFIX + "*")).items():
- rep, _ = Reputation.objects.get_or_create(
- ip=score["ip"],
- identifier=score["identifier"],
- )
- rep.ip_geo_data = GEOIP_CONTEXT_PROCESSOR.city_dict(score["ip"]) or {}
- rep.ip_asn_data = ASN_CONTEXT_PROCESSOR.asn_dict(score["ip"]) or {}
- rep.score = score["score"]
- objects_to_update.append(rep)
- Reputation.objects.bulk_update(objects_to_update, ["score", "ip_geo_data"])
- self.set_status(TaskStatus.SUCCESSFUL, "Successfully updated Reputation")
diff --git a/authentik/policies/reputation/tests.py b/authentik/policies/reputation/tests.py
index 534d808bf745..7d4e33fb7947 100644
--- a/authentik/policies/reputation/tests.py
+++ b/authentik/policies/reputation/tests.py
@@ -1,14 +1,11 @@
"""test reputation signals and policy"""
-from django.core.cache import cache
from django.test import RequestFactory, TestCase
from authentik.core.models import User
from authentik.lib.generators import generate_id
from authentik.policies.reputation.api import ReputationPolicySerializer
-from authentik.policies.reputation.apps import CACHE_KEY_PREFIX
from authentik.policies.reputation.models import Reputation, ReputationPolicy
-from authentik.policies.reputation.tasks import save_reputation
from authentik.policies.types import PolicyRequest
from authentik.stages.password import BACKEND_INBUILT
from authentik.stages.password.stage import authenticate
@@ -22,8 +19,6 @@ def setUp(self):
self.request = self.request_factory.get("/")
self.test_ip = "127.0.0.1"
self.test_username = "test"
- keys = cache.keys(CACHE_KEY_PREFIX + "*")
- cache.delete_many(keys)
# We need a user for the one-to-one in userreputation
self.user = User.objects.create(username=self.test_username)
self.backends = [BACKEND_INBUILT]
@@ -34,13 +29,6 @@ def test_ip_reputation(self):
authenticate(
self.request, self.backends, username=self.test_username, password=self.test_username
)
- # Test value in cache
- self.assertEqual(
- cache.get(CACHE_KEY_PREFIX + self.test_ip + "/" + self.test_username),
- {"ip": "127.0.0.1", "identifier": "test", "score": -1},
- )
- # Save cache and check db values
- save_reputation.delay().get()
self.assertEqual(Reputation.objects.get(ip=self.test_ip).score, -1)
def test_user_reputation(self):
@@ -49,13 +37,6 @@ def test_user_reputation(self):
authenticate(
self.request, self.backends, username=self.test_username, password=self.test_username
)
- # Test value in cache
- self.assertEqual(
- cache.get(CACHE_KEY_PREFIX + self.test_ip + "/" + self.test_username),
- {"ip": "127.0.0.1", "identifier": "test", "score": -1},
- )
- # Save cache and check db values
- save_reputation.delay().get()
self.assertEqual(Reputation.objects.get(identifier=self.test_username).score, -1)
def test_policy(self):
diff --git a/authentik/providers/scim/api/groups.py b/authentik/providers/scim/api/groups.py
index f9fd697e4732..9bb36c8337ef 100644
--- a/authentik/providers/scim/api/groups.py
+++ b/authentik/providers/scim/api/groups.py
@@ -6,6 +6,7 @@
from authentik.core.api.used_by import UsedByMixin
from authentik.core.api.users import UserGroupSerializer
+from authentik.lib.sync.outgoing.api import OutgoingSyncConnectionCreateMixin
from authentik.providers.scim.models import SCIMProviderGroup
@@ -28,6 +29,7 @@ class Meta:
class SCIMProviderGroupViewSet(
mixins.CreateModelMixin,
+ OutgoingSyncConnectionCreateMixin,
mixins.RetrieveModelMixin,
mixins.DestroyModelMixin,
UsedByMixin,
diff --git a/authentik/providers/scim/api/users.py b/authentik/providers/scim/api/users.py
index 632421f02485..5d58d3fdacbc 100644
--- a/authentik/providers/scim/api/users.py
+++ b/authentik/providers/scim/api/users.py
@@ -6,6 +6,7 @@
from authentik.core.api.groups import GroupMemberSerializer
from authentik.core.api.used_by import UsedByMixin
+from authentik.lib.sync.outgoing.api import OutgoingSyncConnectionCreateMixin
from authentik.providers.scim.models import SCIMProviderUser
@@ -28,6 +29,7 @@ class Meta:
class SCIMProviderUserViewSet(
mixins.CreateModelMixin,
+ OutgoingSyncConnectionCreateMixin,
mixins.RetrieveModelMixin,
mixins.DestroyModelMixin,
UsedByMixin,
diff --git a/authentik/providers/scim/models.py b/authentik/providers/scim/models.py
index 735d3a1ca399..e00543207b1a 100644
--- a/authentik/providers/scim/models.py
+++ b/authentik/providers/scim/models.py
@@ -15,6 +15,48 @@
from authentik.lib.sync.outgoing.models import OutgoingSyncProvider
+class SCIMProviderUser(SerializerModel):
+ """Mapping of a user and provider to a SCIM user ID"""
+
+ id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
+ scim_id = models.TextField()
+ user = models.ForeignKey(User, on_delete=models.CASCADE)
+ provider = models.ForeignKey("SCIMProvider", on_delete=models.CASCADE)
+
+ @property
+ def serializer(self) -> type[Serializer]:
+ from authentik.providers.scim.api.users import SCIMProviderUserSerializer
+
+ return SCIMProviderUserSerializer
+
+ class Meta:
+ unique_together = (("scim_id", "user", "provider"),)
+
+ def __str__(self) -> str:
+ return f"SCIM Provider User {self.user_id} to {self.provider_id}"
+
+
+class SCIMProviderGroup(SerializerModel):
+ """Mapping of a group and provider to a SCIM user ID"""
+
+ id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
+ scim_id = models.TextField()
+ group = models.ForeignKey(Group, on_delete=models.CASCADE)
+ provider = models.ForeignKey("SCIMProvider", on_delete=models.CASCADE)
+
+ @property
+ def serializer(self) -> type[Serializer]:
+ from authentik.providers.scim.api.groups import SCIMProviderGroupSerializer
+
+ return SCIMProviderGroupSerializer
+
+ class Meta:
+ unique_together = (("scim_id", "group", "provider"),)
+
+ def __str__(self) -> str:
+ return f"SCIM Provider Group {self.group_id} to {self.provider_id}"
+
+
class SCIMProvider(OutgoingSyncProvider, BackchannelProvider):
"""SCIM 2.0 provider to create users and groups in external applications"""
@@ -39,13 +81,13 @@ def icon_url(self) -> str | None:
return static("authentik/sources/scim.png")
def client_for_model(
- self, model: type[User | Group]
+ self, model: type[User | Group | SCIMProviderUser | SCIMProviderGroup]
) -> BaseOutgoingSyncClient[User | Group, Any, Any, Self]:
- if issubclass(model, User):
+ if issubclass(model, User | SCIMProviderUser):
from authentik.providers.scim.clients.users import SCIMUserClient
return SCIMUserClient(self)
- if issubclass(model, Group):
+ if issubclass(model, Group | SCIMProviderGroup):
from authentik.providers.scim.clients.groups import SCIMGroupClient
return SCIMGroupClient(self)
@@ -105,45 +147,3 @@ def __str__(self):
class Meta:
verbose_name = _("SCIM Mapping")
verbose_name_plural = _("SCIM Mappings")
-
-
-class SCIMProviderUser(SerializerModel):
- """Mapping of a user and provider to a SCIM user ID"""
-
- id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
- scim_id = models.TextField()
- user = models.ForeignKey(User, on_delete=models.CASCADE)
- provider = models.ForeignKey(SCIMProvider, on_delete=models.CASCADE)
-
- @property
- def serializer(self) -> type[Serializer]:
- from authentik.providers.scim.api.users import SCIMProviderUserSerializer
-
- return SCIMProviderUserSerializer
-
- class Meta:
- unique_together = (("scim_id", "user", "provider"),)
-
- def __str__(self) -> str:
- return f"SCIM Provider User {self.user_id} to {self.provider_id}"
-
-
-class SCIMProviderGroup(SerializerModel):
- """Mapping of a group and provider to a SCIM user ID"""
-
- id = models.UUIDField(primary_key=True, editable=False, default=uuid4)
- scim_id = models.TextField()
- group = models.ForeignKey(Group, on_delete=models.CASCADE)
- provider = models.ForeignKey(SCIMProvider, on_delete=models.CASCADE)
-
- @property
- def serializer(self) -> type[Serializer]:
- from authentik.providers.scim.api.groups import SCIMProviderGroupSerializer
-
- return SCIMProviderGroupSerializer
-
- class Meta:
- unique_together = (("scim_id", "group", "provider"),)
-
- def __str__(self) -> str:
- return f"SCIM Provider Group {self.group_id} to {self.provider_id}"
diff --git a/go.mod b/go.mod
index edc3b80a98ff..3a2864567a7d 100644
--- a/go.mod
+++ b/go.mod
@@ -5,7 +5,7 @@ go 1.22.2
require (
beryju.io/ldap v0.1.0
github.com/coreos/go-oidc v2.2.1+incompatible
- github.com/getsentry/sentry-go v0.28.0
+ github.com/getsentry/sentry-go v0.28.1
github.com/go-http-utils/etag v0.0.0-20161124023236-513ea8f21eb1
github.com/go-ldap/ldap/v3 v3.4.8
github.com/go-openapi/runtime v0.28.0
@@ -16,7 +16,7 @@ require (
github.com/gorilla/mux v1.8.1
github.com/gorilla/securecookie v1.1.2
github.com/gorilla/sessions v1.2.2
- github.com/gorilla/websocket v1.5.2
+ github.com/gorilla/websocket v1.5.3
github.com/jellydator/ttlcache/v3 v3.2.0
github.com/mitchellh/mapstructure v1.5.0
github.com/nmcclain/asn1-ber v0.0.0-20170104154839-2661553a0484
diff --git a/go.sum b/go.sum
index e70cf3c6717b..eb8647a959c2 100644
--- a/go.sum
+++ b/go.sum
@@ -69,8 +69,8 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/getsentry/sentry-go v0.28.0 h1:7Rqx9M3ythTKy2J6uZLHmc8Sz9OGgIlseuO1iBX/s0M=
-github.com/getsentry/sentry-go v0.28.0/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg=
+github.com/getsentry/sentry-go v0.28.1 h1:zzaSm/vHmGllRM6Tpx1492r0YDzauArdBfkJRtY6P5k=
+github.com/getsentry/sentry-go v0.28.1/go.mod h1:1fQZ+7l7eeJ3wYi82q5Hg8GqAPgefRq+FP/QhafYVgg=
github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA=
github.com/go-asn1-ber/asn1-ber v1.5.5/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
@@ -176,8 +176,8 @@ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/z
github.com/gorilla/sessions v1.2.2 h1:lqzMYz6bOfvn2WriPUjNByzeXIlVzURcPmgMczkmTjY=
github.com/gorilla/sessions v1.2.2/go.mod h1:ePLdVu+jbEgHH+KWw8I1z2wqd0BAdAQh/8LRvBeoNcQ=
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gorilla/websocket v1.5.2 h1:qoW6V1GT3aZxybsbC6oLnailWnB+qTMVwMreOso9XUw=
-github.com/gorilla/websocket v1.5.2/go.mod h1:0n9H61RBAcf5/38py2MCYbxzPIY9rOkpvvMT24Rqs30=
+github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
+github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
diff --git a/lifecycle/gunicorn.conf.py b/lifecycle/gunicorn.conf.py
index c1586806972b..a3ffe7489a53 100644
--- a/lifecycle/gunicorn.conf.py
+++ b/lifecycle/gunicorn.conf.py
@@ -7,7 +7,6 @@
from tempfile import gettempdir
from typing import TYPE_CHECKING
-from cryptography.exceptions import InternalError
from cryptography.hazmat.backends.openssl.backend import backend
from defusedxml import defuse_stdlib
from prometheus_client.values import MultiProcessValue
@@ -30,10 +29,8 @@
defuse_stdlib()
-try:
+if CONFIG.get_bool("compliance.fips.enabled", False):
backend._enable_fips()
-except InternalError:
- pass
wait_for_db()
diff --git a/manage.py b/manage.py
index 4c5120225a8a..09d065e91929 100755
--- a/manage.py
+++ b/manage.py
@@ -4,7 +4,7 @@
import sys
import warnings
-from cryptography.exceptions import InternalError
+from authentik.lib.config import CONFIG
from cryptography.hazmat.backends.openssl.backend import backend
from defusedxml import defuse_stdlib
from django.utils.autoreload import DJANGO_AUTORELOAD_ENV
@@ -24,10 +24,8 @@
defuse_stdlib()
-try:
+if CONFIG.get_bool("compliance.fips.enabled", False):
backend._enable_fips()
-except InternalError:
- pass
if __name__ == "__main__":
diff --git a/poetry.lock b/poetry.lock
index 6d45f04b20f3..bb02bbeb016d 100644
--- a/poetry.lock
+++ b/poetry.lock
@@ -353,13 +353,13 @@ msal-extensions = ">=0.3.0"
[[package]]
name = "bandit"
-version = "1.7.8"
+version = "1.7.9"
description = "Security oriented static analyser for python code."
optional = false
python-versions = ">=3.8"
files = [
- {file = "bandit-1.7.8-py3-none-any.whl", hash = "sha256:509f7af645bc0cd8fd4587abc1a038fc795636671ee8204d502b933aee44f381"},
- {file = "bandit-1.7.8.tar.gz", hash = "sha256:36de50f720856ab24a24dbaa5fee2c66050ed97c1477e0a1159deab1775eab6b"},
+ {file = "bandit-1.7.9-py3-none-any.whl", hash = "sha256:52077cb339000f337fb25f7e045995c4ad01511e716e5daac37014b9752de8ec"},
+ {file = "bandit-1.7.9.tar.gz", hash = "sha256:7c395a436743018f7be0a4cbb0a4ea9b902b6d87264ddecf8cfdc73b4f78ff61"},
]
[package.dependencies]
@@ -3376,13 +3376,13 @@ files = [
[[package]]
name = "pydantic"
-version = "2.7.3"
+version = "2.7.4"
description = "Data validation using Python type hints"
optional = false
python-versions = ">=3.8"
files = [
- {file = "pydantic-2.7.3-py3-none-any.whl", hash = "sha256:ea91b002777bf643bb20dd717c028ec43216b24a6001a280f83877fd2655d0b4"},
- {file = "pydantic-2.7.3.tar.gz", hash = "sha256:c46c76a40bb1296728d7a8b99aa73dd70a48c3510111ff290034f860c99c419e"},
+ {file = "pydantic-2.7.4-py3-none-any.whl", hash = "sha256:ee8538d41ccb9c0a9ad3e0e5f07bf15ed8015b481ced539a1759d8cc89ae90d0"},
+ {file = "pydantic-2.7.4.tar.gz", hash = "sha256:0c84efd9548d545f63ac0060c1e4d39bb9b14db8b3c0652338aecc07b5adec52"},
]
[package.dependencies]
diff --git a/schema.yml b/schema.yml
index 822318ad11f9..d356a2129e9a 100644
--- a/schema.yml
+++ b/schema.yml
@@ -39547,6 +39547,8 @@ components:
readOnly: true
fips_enabled:
type: boolean
+ nullable: true
+ description: Get FIPS enabled
readOnly: true
version_should:
type: string
@@ -47406,6 +47408,7 @@ components:
type: string
openssl_fips_mode:
type: boolean
+ nullable: true
authentik_version:
type: string
required:
diff --git a/web/package-lock.json b/web/package-lock.json
index 1a055b74cd39..7d2000c1afc9 100644
--- a/web/package-lock.json
+++ b/web/package-lock.json
@@ -17,7 +17,7 @@
"@codemirror/theme-one-dark": "^6.1.2",
"@formatjs/intl-listformat": "^7.5.7",
"@fortawesome/fontawesome-free": "^6.5.2",
- "@goauthentik/api": "^2024.4.2-1717645682",
+ "@goauthentik/api": "^2024.4.2-1718362364",
"@lit-labs/task": "^3.1.0",
"@lit/context": "^1.1.2",
"@lit/localize": "^0.12.1",
@@ -25,7 +25,7 @@
"@open-wc/lit-helpers": "^0.7.0",
"@patternfly/elements": "^3.0.1",
"@patternfly/patternfly": "^4.224.2",
- "@sentry/browser": "^8.9.1",
+ "@sentry/browser": "^8.9.2",
"@webcomponents/webcomponentsjs": "^2.8.0",
"base64-js": "^1.5.1",
"chart.js": "^4.4.3",
@@ -42,7 +42,7 @@
"rapidoc": "^9.3.4",
"showdown": "^2.1.0",
"style-mod": "^4.1.2",
- "ts-pattern": "^5.1.2",
+ "ts-pattern": "^5.2.0",
"webcomponent-qr-code": "^1.2.0",
"yaml": "^2.4.5"
},
@@ -59,14 +59,14 @@
"@jeysal/storybook-addon-css-user-preferences": "^0.2.0",
"@lit/localize-tools": "^0.7.2",
"@rollup/plugin-replace": "^5.0.7",
- "@spotlightjs/spotlight": "^1.2.17",
- "@storybook/addon-essentials": "^8.1.6",
- "@storybook/addon-links": "^8.1.6",
+ "@spotlightjs/spotlight": "^2.0.0",
+ "@storybook/addon-essentials": "^8.1.9",
+ "@storybook/addon-links": "^8.1.9",
"@storybook/api": "^7.6.17",
"@storybook/blocks": "^8.0.8",
- "@storybook/manager-api": "^8.1.6",
- "@storybook/web-components": "^8.1.6",
- "@storybook/web-components-vite": "^8.1.6",
+ "@storybook/manager-api": "^8.1.9",
+ "@storybook/web-components": "^8.1.9",
+ "@storybook/web-components-vite": "^8.1.9",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/chart.js": "^2.9.41",
"@types/codemirror": "5.60.15",
@@ -96,7 +96,7 @@
"react-dom": "^18.3.1",
"rollup-plugin-modify": "^3.0.0",
"rollup-plugin-postcss-lit": "^2.1.0",
- "storybook": "^8.1.6",
+ "storybook": "^8.1.9",
"storybook-addon-mock": "^5.0.0",
"ts-lit-plugin": "^2.0.2",
"tslib": "^2.6.3",
@@ -2977,9 +2977,9 @@
}
},
"node_modules/@goauthentik/api": {
- "version": "2024.4.2-1717645682",
- "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2024.4.2-1717645682.tgz",
- "integrity": "sha512-fYDZANTDDmxhhqKapNeV4+exqzorlEIEgjjp96OwRzpMOff7p5HAJ1pjwLaVbs0cxP4cM0N8w21O+s0fXCIePw=="
+ "version": "2024.4.2-1718362364",
+ "resolved": "https://registry.npmjs.org/@goauthentik/api/-/api-2024.4.2-1718362364.tgz",
+ "integrity": "sha512-Ds1Xm71/8zs1TLDPc/tmOL+xqZ0BbSAV24xMOzinSNQQB3cEqOdyJHFH27TEt86RgYM37d7xmedCZXJU6Oy/vg=="
},
"node_modules/@hcaptcha/types": {
"version": "1.0.3",
@@ -4640,102 +4640,102 @@
"peer": true
},
"node_modules/@sentry-internal/browser-utils": {
- "version": "8.9.1",
- "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.9.1.tgz",
- "integrity": "sha512-jt2AC8yMhh9E8NBMgcyqLZDCeZq5RCOpHQ8MQxUfg3wFOg8+lRC/xQqCE32eWX0RCv7lhwlM9JsCGA/4TfJ4Zw==",
+ "version": "8.9.2",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-8.9.2.tgz",
+ "integrity": "sha512-2A0A6TnfzFDvYCRWS9My3t+JKG6KlslhyaN35BTiOTlYDauEekyJP7BFFyeTJXCHm2BQgI8aRZhBKm+oR9QuYw==",
"dependencies": {
- "@sentry/core": "8.9.1",
- "@sentry/types": "8.9.1",
- "@sentry/utils": "8.9.1"
+ "@sentry/core": "8.9.2",
+ "@sentry/types": "8.9.2",
+ "@sentry/utils": "8.9.2"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry-internal/feedback": {
- "version": "8.9.1",
- "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.9.1.tgz",
- "integrity": "sha512-hJjxyeXc6y9Q6ad1WktsQ1cLRuLtROn1+hBpakrd5CyBep3MXMyYqDqe3BSZd/lxnL+uT7kE5No7NsQM0jPksQ==",
+ "version": "8.9.2",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-8.9.2.tgz",
+ "integrity": "sha512-v04Q+08ohwautwmiDfK5hI+nFW2B/IYhBz7pZM9x1srkwmNA69XOFyo5u34TeVHhYOPbMM2Ubs0uNEcSWHgbbQ==",
"dependencies": {
- "@sentry/core": "8.9.1",
- "@sentry/types": "8.9.1",
- "@sentry/utils": "8.9.1"
+ "@sentry/core": "8.9.2",
+ "@sentry/types": "8.9.2",
+ "@sentry/utils": "8.9.2"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry-internal/replay": {
- "version": "8.9.1",
- "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.9.1.tgz",
- "integrity": "sha512-JQlJz8tVmkxI4X5K+GysYmXfZ9x6tn7Wpq3z3zuWQSPRstJiWyNOanVCv92E+Z5k3wjEih9FRP5qfliLzS6VJQ==",
+ "version": "8.9.2",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-8.9.2.tgz",
+ "integrity": "sha512-YPnrnXJd6mJpJspJ8pI8hd1KTMOxw+BARP5twiDwXlij1RTotwnNoX9UGaSm+ZPTexPD++6Zyp6xQf4vKKP3yg==",
"dependencies": {
- "@sentry-internal/browser-utils": "8.9.1",
- "@sentry/core": "8.9.1",
- "@sentry/types": "8.9.1",
- "@sentry/utils": "8.9.1"
+ "@sentry-internal/browser-utils": "8.9.2",
+ "@sentry/core": "8.9.2",
+ "@sentry/types": "8.9.2",
+ "@sentry/utils": "8.9.2"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry-internal/replay-canvas": {
- "version": "8.9.1",
- "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.9.1.tgz",
- "integrity": "sha512-9j3DB+R7UuKSi0iFFL6fb91/B7+/7dTNRNoW7RGt9DRFx6X283ZaCKyTGkzYtj0tpCpcRbrE+daINsG4yf/R8g==",
+ "version": "8.9.2",
+ "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-8.9.2.tgz",
+ "integrity": "sha512-vu9TssSjO+XbZjnoyYxMrBI4KgXG+zyqw3ThfPqG6o7O0BGa54fFwtZiMdGq/BHz017FuNiEz4fgtzuDd4gZJQ==",
"dependencies": {
- "@sentry-internal/replay": "8.9.1",
- "@sentry/core": "8.9.1",
- "@sentry/types": "8.9.1",
- "@sentry/utils": "8.9.1"
+ "@sentry-internal/replay": "8.9.2",
+ "@sentry/core": "8.9.2",
+ "@sentry/types": "8.9.2",
+ "@sentry/utils": "8.9.2"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry/browser": {
- "version": "8.9.1",
- "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.9.1.tgz",
- "integrity": "sha512-UCD/cQZHCFjIMmAtG7dcIRK8VmjU93QgYeI84lAf4DnKPU+/Xp+3kVJvpD3xiilpgiBz2q1RFfbjCAypJUTCYA==",
+ "version": "8.9.2",
+ "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-8.9.2.tgz",
+ "integrity": "sha512-jI5XY4j8Sa+YteokI+4SW+A/ErZxPDnspjvV3dm5pIPWvEFhvDyXWZSepqaoqwo3L7fdkRMzXY8Bi4T7qDVMWg==",
"dependencies": {
- "@sentry-internal/browser-utils": "8.9.1",
- "@sentry-internal/feedback": "8.9.1",
- "@sentry-internal/replay": "8.9.1",
- "@sentry-internal/replay-canvas": "8.9.1",
- "@sentry/core": "8.9.1",
- "@sentry/types": "8.9.1",
- "@sentry/utils": "8.9.1"
+ "@sentry-internal/browser-utils": "8.9.2",
+ "@sentry-internal/feedback": "8.9.2",
+ "@sentry-internal/replay": "8.9.2",
+ "@sentry-internal/replay-canvas": "8.9.2",
+ "@sentry/core": "8.9.2",
+ "@sentry/types": "8.9.2",
+ "@sentry/utils": "8.9.2"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry/core": {
- "version": "8.9.1",
- "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.9.1.tgz",
- "integrity": "sha512-7Q1yB4ZMJoNT6LsBVx1EyTsVemqYuKZoyEDEzZOYZsa/W438oF7M6g0JqK6TJG8JIZN50Lj5MrJOs6FAu51CCw==",
+ "version": "8.9.2",
+ "resolved": "https://registry.npmjs.org/@sentry/core/-/core-8.9.2.tgz",
+ "integrity": "sha512-ixm8NISFlPlEo3FjSaqmq4nnd13BRHoafwJ5MG+okCz6BKGZ1SexEggP42/QpGvDprUUHnfncG6WUMgcarr1zA==",
"dependencies": {
- "@sentry/types": "8.9.1",
- "@sentry/utils": "8.9.1"
+ "@sentry/types": "8.9.2",
+ "@sentry/utils": "8.9.2"
},
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry/types": {
- "version": "8.9.1",
- "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.9.1.tgz",
- "integrity": "sha512-V+TkaDVhakH/oW6f1KQiRbvHcczQLEzdwlH2lAP5Flh+wESS5VaSPqj+esLg53GFF8q0tw7QH1tSUGXWeGoJ5g==",
+ "version": "8.9.2",
+ "resolved": "https://registry.npmjs.org/@sentry/types/-/types-8.9.2.tgz",
+ "integrity": "sha512-+LFOyQGl+zk5SZRGZD2MEURf7i5RHgP/mt3s85Rza+vz8M211WJ0YsjkIGUJFSY842nged5QLx4JysLaBlLymg==",
"engines": {
"node": ">=14.18"
}
},
"node_modules/@sentry/utils": {
- "version": "8.9.1",
- "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.9.1.tgz",
- "integrity": "sha512-9TROyW7PbyokwVO41wIhQRenhW+kPg2ws2nzz21aFbLCrwXvF2nNsZ67roeXOiu9n2Oy/O1yEksPOcT4zFcesQ==",
+ "version": "8.9.2",
+ "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-8.9.2.tgz",
+ "integrity": "sha512-A4srR9mEBFdVXwSEKjQ94msUbVkMr8JeFiEj9ouOFORw/Y/ux/WV2bWVD/ZI9wq0TcTNK8L1wBgU8UMS5lIq3A==",
"dependencies": {
- "@sentry/types": "8.9.1"
+ "@sentry/types": "8.9.2"
},
"engines": {
"node": ">=14.18"
@@ -4754,9 +4754,9 @@
}
},
"node_modules/@spotlightjs/overlay": {
- "version": "1.8.3",
- "resolved": "https://registry.npmjs.org/@spotlightjs/overlay/-/overlay-1.8.3.tgz",
- "integrity": "sha512-6b5tBspOOEd6Gj0l4xgdUwR4Ydn2dNX9lqJ/WSzIu1lqkI96w2lqf69IGzEo6jb9aPtfTtu8nx5K2SD6JXH2SA==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@spotlightjs/overlay/-/overlay-2.0.0.tgz",
+ "integrity": "sha512-6P2Kwko9NPxat+Z5/QxWHr9+PLZtbXb/Bi2bdFmKc1yWTBVTJcbvntU9Xy+Qd8L4tFFFfqSORiXg7L4Bk6z4Jw==",
"dev": true
},
"node_modules/@spotlightjs/sidecar": {
@@ -4770,12 +4770,12 @@
}
},
"node_modules/@spotlightjs/spotlight": {
- "version": "1.2.17",
- "resolved": "https://registry.npmjs.org/@spotlightjs/spotlight/-/spotlight-1.2.17.tgz",
- "integrity": "sha512-91qtnLspMl2e1olBTeWoZcupwwTzQs8clQgTF8wv2Ib18zce7YYLvWpnDhNIVNQlbKIjGhYum6UY/KCfUCXQYg==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@spotlightjs/spotlight/-/spotlight-2.0.0.tgz",
+ "integrity": "sha512-V06WN7DxaihaAXp815DGdMINZEA2+Te3eeYdXJpXfJKiv57e8rwyyD7dqtQsTiTlbcCqXwNgaZp4fwTyuOyJCA==",
"dev": true,
"dependencies": {
- "@spotlightjs/overlay": "1.8.3",
+ "@spotlightjs/overlay": "2.0.0",
"@spotlightjs/sidecar": "1.4.0"
},
"bin": {
@@ -4783,12 +4783,12 @@
}
},
"node_modules/@storybook/addon-actions": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.1.6.tgz",
- "integrity": "sha512-EbiAdbtXN/UM4by3+qisbrQmElaIfahgNqffbst6GiCTmUCVE5if6geL1mzKd/u/rZOzx5g0EG76x8N9yDjOtg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.1.9.tgz",
+ "integrity": "sha512-7ZefE9AER42htn4McqMXcL2RDnflesIf4SxY7pCHpL7rUoldxfZ1DGGRgyKen00H6vx1LGzLRBN9fhBUf9XqCA==",
"dev": true,
"dependencies": {
- "@storybook/core-events": "8.1.6",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"@types/uuid": "^9.0.1",
"dequal": "^2.0.2",
@@ -4801,9 +4801,9 @@
}
},
"node_modules/@storybook/addon-actions/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -4815,9 +4815,9 @@
}
},
"node_modules/@storybook/addon-backgrounds": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.1.6.tgz",
- "integrity": "sha512-mrBG5mkcMg6vpRUtNxyYaseD4ucrG+mZiqZnXcx8LWzwDMOd4mOODvap286z+Si0Fl1etbGDDhPU9+hV+o1arw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.1.9.tgz",
+ "integrity": "sha512-k2s7PNwy1ND7eJ7N2DnG508fztuXNH5Jq6Vbk8aoXPPRXfwybel299WRb4WJl7ZvZKcGtBoZ+mciopPkho3Lpg==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0",
@@ -4830,12 +4830,12 @@
}
},
"node_modules/@storybook/addon-controls": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.1.6.tgz",
- "integrity": "sha512-hDMsu4yRP/ySb/G7hbd7nSFhVNz+F9hnizJGJX4XGuiSx7rAEYjvfKQKkawxTP+VeAw6iZPj1fukvOrMCQ0xxQ==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.1.9.tgz",
+ "integrity": "sha512-B5+UFAnlu82QHX8bOHj022f3zi9rbqGxBqgLnx54ebl6ZgMEe9IGaOnGWyHjpFofy9yBX2Ti5+7ClvFhmyjAig==",
"dev": true,
"dependencies": {
- "@storybook/blocks": "8.1.6",
+ "@storybook/blocks": "8.1.9",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
"ts-dedent": "^2.0.0"
@@ -4846,24 +4846,24 @@
}
},
"node_modules/@storybook/addon-docs": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.1.6.tgz",
- "integrity": "sha512-ejTbjDhaHn6IeTma/pwn8OutDzIqbMJKNhZx24W4FE/qvYInZIK/9gYPU9/oLKZ7FImqP3s1e4+RxDBgsq21lA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.1.9.tgz",
+ "integrity": "sha512-dRSG54gSVn4qQc6u9ROYeDu4B0wJkr+fpS2AGwav2+KAM5kNw2ecsyhyreUhc4e/AwhAhGc49d7iQ3rjOHR//A==",
"dev": true,
"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.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/components": "8.1.9",
+ "@storybook/csf-plugin": "8.1.9",
+ "@storybook/csf-tools": "8.1.9",
"@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.9",
+ "@storybook/preview-api": "8.1.9",
+ "@storybook/react-dom-shim": "8.1.9",
+ "@storybook/theming": "8.1.9",
+ "@storybook/types": "8.1.9",
"@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",
@@ -4878,13 +4878,13 @@
}
},
"node_modules/@storybook/addon-docs/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -4895,9 +4895,9 @@
}
},
"node_modules/@storybook/addon-docs/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -4908,19 +4908,19 @@
}
},
"node_modules/@storybook/addon-docs/node_modules/@storybook/components": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.1.6.tgz",
- "integrity": "sha512-RDcSj2gBVhK/klfcXQgINtvWe5hpJ1CYUv8hrAon3fWtZmX1+IrTJTorsdISvdHQ99o0WHZ+Ouz42O0yJnHzRg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.1.9.tgz",
+ "integrity": "sha512-YGDYTJfobtNDBJrvXNgmExX3LGnb9jGPGdroS4uHewLFaqEI3Fqu3RiFLaJf40TlZ27uWLprysdLRol8j+wYEw==",
"dev": true,
"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.9",
"@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.9",
+ "@storybook/types": "8.1.9",
"memoizerific": "^1.11.3",
"util-deprecate": "^1.0.2"
},
@@ -4934,9 +4934,9 @@
}
},
"node_modules/@storybook/addon-docs/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -4948,17 +4948,17 @@
}
},
"node_modules/@storybook/addon-docs/node_modules/@storybook/preview-api": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.6.tgz",
- "integrity": "sha512-g9EvVg/DYqmjMh1uivJBJnSIvURyuK4LLabYicQNmYdQJscAeXX2bpMcA4aeci9BBm9B2RP7JbSnq7DbXZaJYA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.9.tgz",
+ "integrity": "sha512-deZoKsTHMbpzGOhboVdT/MHhafPKQyxo2tj1Zrb0GFfpabAUnJzVXRr93P5qCOKCuPQEwQyZx0ScW5qzY2JTrQ==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/channels": "8.1.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/csf": "^0.1.7",
"@storybook/global": "^5.0.0",
- "@storybook/types": "8.1.6",
+ "@storybook/types": "8.1.9",
"@types/qs": "^6.9.5",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
@@ -4974,13 +4974,13 @@
}
},
"node_modules/@storybook/addon-docs/node_modules/@storybook/theming": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.1.6.tgz",
- "integrity": "sha512-0Cl/7/0z2WSfXhZ9XSw6rgEjb0fXac7jfktieX0vYo1YckrNpWFRQP9NCpVPAcYZaFLlRSOqYark6CLoutEsIg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.1.9.tgz",
+ "integrity": "sha512-CVM3F4Fa9cIFL4u/BhbANWytShBFeFBZeCFwvcJizJUL+nSgVlxeYilxwQB/1AxyJn/+OprW3nCw5aSbui/EEA==",
"dev": true,
"dependencies": {
"@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
- "@storybook/client-logger": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
"@storybook/global": "^5.0.0",
"memoizerific": "^1.11.3"
},
@@ -5002,12 +5002,12 @@
}
},
"node_modules/@storybook/addon-docs/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -5031,24 +5031,24 @@
}
},
"node_modules/@storybook/addon-essentials": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.1.6.tgz",
- "integrity": "sha512-8ve9eM9dL6JsC5hV98unXtADvwyhIZoa3iWSeTicxWab49tvAfIM9ExwcWmUyPaB4m5q45jBSBXg66bzW2+TFw==",
- "dev": true,
- "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",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.1.9.tgz",
+ "integrity": "sha512-VpEG+qmj7vKPMUSPKsGFwZgbm4QVM2bTqZEbW9zvPOFIbTKtrGaq/n/O0LhMramPkoQZKYKs/0i7OsEoZaOybQ==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/addon-actions": "8.1.9",
+ "@storybook/addon-backgrounds": "8.1.9",
+ "@storybook/addon-controls": "8.1.9",
+ "@storybook/addon-docs": "8.1.9",
+ "@storybook/addon-highlight": "8.1.9",
+ "@storybook/addon-measure": "8.1.9",
+ "@storybook/addon-outline": "8.1.9",
+ "@storybook/addon-toolbars": "8.1.9",
+ "@storybook/addon-viewport": "8.1.9",
+ "@storybook/core-common": "8.1.9",
+ "@storybook/manager-api": "8.1.9",
+ "@storybook/node-logger": "8.1.9",
+ "@storybook/preview-api": "8.1.9",
"ts-dedent": "^2.0.0"
},
"funding": {
@@ -5057,13 +5057,13 @@
}
},
"node_modules/@storybook/addon-essentials/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -5074,9 +5074,9 @@
}
},
"node_modules/@storybook/addon-essentials/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -5087,9 +5087,9 @@
}
},
"node_modules/@storybook/addon-essentials/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -5101,17 +5101,17 @@
}
},
"node_modules/@storybook/addon-essentials/node_modules/@storybook/preview-api": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.6.tgz",
- "integrity": "sha512-g9EvVg/DYqmjMh1uivJBJnSIvURyuK4LLabYicQNmYdQJscAeXX2bpMcA4aeci9BBm9B2RP7JbSnq7DbXZaJYA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.9.tgz",
+ "integrity": "sha512-deZoKsTHMbpzGOhboVdT/MHhafPKQyxo2tj1Zrb0GFfpabAUnJzVXRr93P5qCOKCuPQEwQyZx0ScW5qzY2JTrQ==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/channels": "8.1.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/csf": "^0.1.7",
"@storybook/global": "^5.0.0",
- "@storybook/types": "8.1.6",
+ "@storybook/types": "8.1.9",
"@types/qs": "^6.9.5",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
@@ -5127,12 +5127,12 @@
}
},
"node_modules/@storybook/addon-essentials/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -5142,9 +5142,9 @@
}
},
"node_modules/@storybook/addon-highlight": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.1.6.tgz",
- "integrity": "sha512-QT95TS4OT0SJJVz/1m038COUdS2yWukQOwyq2rCgSM6nU3OHOPf/CldDK4Sdch7Z4jV9kRdRS0Pu4FB5SV+uOw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.1.9.tgz",
+ "integrity": "sha512-7jcjepeP/Z6XhKXKIfMqrM72tsTwo3wAaytuVWG9mHeNTTphepqO0YXZphaEh5EhupaT0DOYWT6jVxOkiw+xpA==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -5155,9 +5155,9 @@
}
},
"node_modules/@storybook/addon-links": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.1.6.tgz",
- "integrity": "sha512-EuSXoK+tpApjW08ZiC4yE9ePdJkIu36AFPJHA6FVierVU31klW+cbFqps88JpmALZkrlf+pzKf3uBIGLrkBSAw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.1.9.tgz",
+ "integrity": "sha512-gawakQHokGDLEDIyyJzxHB0d5AJi2sSLzoNc0cvewEE55i6T7jvpXpVqTu6/ZtVFZ+3x3gLIQ6Q3krNNIz6W2A==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -5178,9 +5178,9 @@
}
},
"node_modules/@storybook/addon-measure": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.1.6.tgz",
- "integrity": "sha512-afG6XzClrkBQ9ZUZQs0rI9z/RYB+qhebG5k1NTCGYJnj7K4c+jso9nQ9vmypOBqlYKwTT2ZG+9xSK1/IhudEvg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.1.9.tgz",
+ "integrity": "sha512-YHU4XQkpA1WxAOLeqnHdX9g0ubuHHDIqLkVjixt/BHejDwLcLzfSyKiX6o4xy+0MUilFDQD2Q/psiDHkLrvnVQ==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0",
@@ -5192,9 +5192,9 @@
}
},
"node_modules/@storybook/addon-outline": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.1.6.tgz",
- "integrity": "sha512-YjH3L4kxln0fLF77oDGJ2KF1I0RNrBQ9FRtqZkGMUbplxwYU0BBrguSgVeGxTLN1q/69LmL6wjFP4nLzqZARhA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.1.9.tgz",
+ "integrity": "sha512-Y1jgsVtW87qBQfKFMFk8vinsjQq7/yOGygtj2PHIgZO4foOaqwVDq7ioHCogmrdOycfpeByCtT3nUFAXxZxMsw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0",
@@ -5206,9 +5206,9 @@
}
},
"node_modules/@storybook/addon-toolbars": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.1.6.tgz",
- "integrity": "sha512-d1GciLzD2ZRqh7+b8+JGuCdx8x/MAobhTy+jKeK79d+QKNtPhqZ1OvyUbwObgD6XLF8B/3DvyP3r52lmYMwlnQ==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.1.9.tgz",
+ "integrity": "sha512-aW+HsuC0iWjPSbJtxdbdGdCLXzV0dxPp8e4TPugT084ImTp+i+77xXUTl+PCylld8a51ulEssOxARewGN/QMsw==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -5216,9 +5216,9 @@
}
},
"node_modules/@storybook/addon-viewport": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.1.6.tgz",
- "integrity": "sha512-4EpEkJW1fPqlHIqG7OQtnAaHh9DPj7k+guXpzWjVwHfF6AE0fXIg7Yx6iVDGPyKkRaagPw6nL8DOr2U8YwK4rQ==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.1.9.tgz",
+ "integrity": "sha512-ZCoqzNWp2w9TLJL8RC0fjv1RQcuGhwI64jjlGvszZm7TxP82C1SS71X/jbx5LWc2Dyl5xMt1/yOGFXvkAB2SUg==",
"dev": true,
"dependencies": {
"memoizerific": "^1.11.3"
@@ -5345,23 +5345,23 @@
}
},
"node_modules/@storybook/blocks": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.1.6.tgz",
- "integrity": "sha512-HBp80G9puOejqlBA0iNlV3gUxc7TkBlNIVG2rmhjcvPZUueldxTUGIGvEfTLdEM6nqzNVZT+duXwqeHHnDcynA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.1.9.tgz",
+ "integrity": "sha512-AB7icCijK2rft5kmzFF7bHuTdVIf6u5r26r4auqYxxVsHV87+k12kLvC8AyEssVIKMo+2vzImmdlhIScpCjrdQ==",
"dev": true,
"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.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/components": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/csf": "^0.1.7",
- "@storybook/docs-tools": "8.1.6",
+ "@storybook/docs-tools": "8.1.9",
"@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.9",
+ "@storybook/preview-api": "8.1.9",
+ "@storybook/theming": "8.1.9",
+ "@storybook/types": "8.1.9",
"@types/lodash": "^4.14.167",
"color-convert": "^2.0.1",
"dequal": "^2.0.2",
@@ -5393,13 +5393,13 @@
}
},
"node_modules/@storybook/blocks/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -5410,9 +5410,9 @@
}
},
"node_modules/@storybook/blocks/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -5423,19 +5423,19 @@
}
},
"node_modules/@storybook/blocks/node_modules/@storybook/components": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.1.6.tgz",
- "integrity": "sha512-RDcSj2gBVhK/klfcXQgINtvWe5hpJ1CYUv8hrAon3fWtZmX1+IrTJTorsdISvdHQ99o0WHZ+Ouz42O0yJnHzRg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.1.9.tgz",
+ "integrity": "sha512-YGDYTJfobtNDBJrvXNgmExX3LGnb9jGPGdroS4uHewLFaqEI3Fqu3RiFLaJf40TlZ27uWLprysdLRol8j+wYEw==",
"dev": true,
"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.9",
"@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.9",
+ "@storybook/types": "8.1.9",
"memoizerific": "^1.11.3",
"util-deprecate": "^1.0.2"
},
@@ -5449,9 +5449,9 @@
}
},
"node_modules/@storybook/blocks/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -5463,17 +5463,17 @@
}
},
"node_modules/@storybook/blocks/node_modules/@storybook/preview-api": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.6.tgz",
- "integrity": "sha512-g9EvVg/DYqmjMh1uivJBJnSIvURyuK4LLabYicQNmYdQJscAeXX2bpMcA4aeci9BBm9B2RP7JbSnq7DbXZaJYA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.9.tgz",
+ "integrity": "sha512-deZoKsTHMbpzGOhboVdT/MHhafPKQyxo2tj1Zrb0GFfpabAUnJzVXRr93P5qCOKCuPQEwQyZx0ScW5qzY2JTrQ==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/channels": "8.1.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/csf": "^0.1.7",
"@storybook/global": "^5.0.0",
- "@storybook/types": "8.1.6",
+ "@storybook/types": "8.1.9",
"@types/qs": "^6.9.5",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
@@ -5489,13 +5489,13 @@
}
},
"node_modules/@storybook/blocks/node_modules/@storybook/theming": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.1.6.tgz",
- "integrity": "sha512-0Cl/7/0z2WSfXhZ9XSw6rgEjb0fXac7jfktieX0vYo1YckrNpWFRQP9NCpVPAcYZaFLlRSOqYark6CLoutEsIg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.1.9.tgz",
+ "integrity": "sha512-CVM3F4Fa9cIFL4u/BhbANWytShBFeFBZeCFwvcJizJUL+nSgVlxeYilxwQB/1AxyJn/+OprW3nCw5aSbui/EEA==",
"dev": true,
"dependencies": {
"@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
- "@storybook/client-logger": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
"@storybook/global": "^5.0.0",
"memoizerific": "^1.11.3"
},
@@ -5517,12 +5517,12 @@
}
},
"node_modules/@storybook/blocks/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -5532,15 +5532,15 @@
}
},
"node_modules/@storybook/builder-manager": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-8.1.6.tgz",
- "integrity": "sha512-Y5d+dikKnUuCYyh4VLEF6A+AbWughEgtipVkDKOddSTzn04trClIOKqfhQqEUObydCpgvvfdjGXJa/zDRV/UQA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-8.1.9.tgz",
+ "integrity": "sha512-CmDXVrx3moUde6VWmdb49eCYHNu4e2wxeANKSsW1yEC0OLysQ9N6W9B5CuVWeoV3axVX/tKDqC83YY/008/4Qg==",
"dev": true,
"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.9",
+ "@storybook/manager": "8.1.9",
+ "@storybook/node-logger": "8.1.9",
"@types/ejs": "^3.1.1",
"@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10",
"browser-assert": "^1.2.1",
@@ -5978,20 +5978,20 @@
}
},
"node_modules/@storybook/builder-vite": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.1.6.tgz",
- "integrity": "sha512-xbGxI7aVMNuLcAB41Z+Vjr+M1Kznvw/jJ8HP9cfmUl1cO7ysF8R9opVG1C+kMIXUIQAVeND+DUZgmUg2zGzH6A==",
- "dev": true,
- "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/csf-plugin": "8.1.6",
- "@storybook/node-logger": "8.1.6",
- "@storybook/preview": "8.1.6",
- "@storybook/preview-api": "8.1.6",
- "@storybook/types": "8.1.6",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-8.1.9.tgz",
+ "integrity": "sha512-OqjJne7x3l8yPMB3VTc9zbKYN5+9Yw/8cW9vK3N0rMObQa6be76JfJAgTFUGujp/GdVjYEiFI1Pu3b1wf5loWQ==",
+ "dev": true,
+ "dependencies": {
+ "@storybook/channels": "8.1.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-common": "8.1.9",
+ "@storybook/core-events": "8.1.9",
+ "@storybook/csf-plugin": "8.1.9",
+ "@storybook/node-logger": "8.1.9",
+ "@storybook/preview": "8.1.9",
+ "@storybook/preview-api": "8.1.9",
+ "@storybook/types": "8.1.9",
"@types/find-cache-dir": "^3.2.1",
"browser-assert": "^1.2.1",
"es-module-lexer": "^1.5.0",
@@ -6024,13 +6024,13 @@
}
},
"node_modules/@storybook/builder-vite/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -6041,9 +6041,9 @@
}
},
"node_modules/@storybook/builder-vite/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -6054,9 +6054,9 @@
}
},
"node_modules/@storybook/builder-vite/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -6068,17 +6068,17 @@
}
},
"node_modules/@storybook/builder-vite/node_modules/@storybook/preview-api": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.6.tgz",
- "integrity": "sha512-g9EvVg/DYqmjMh1uivJBJnSIvURyuK4LLabYicQNmYdQJscAeXX2bpMcA4aeci9BBm9B2RP7JbSnq7DbXZaJYA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.9.tgz",
+ "integrity": "sha512-deZoKsTHMbpzGOhboVdT/MHhafPKQyxo2tj1Zrb0GFfpabAUnJzVXRr93P5qCOKCuPQEwQyZx0ScW5qzY2JTrQ==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/channels": "8.1.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/csf": "^0.1.7",
"@storybook/global": "^5.0.0",
- "@storybook/types": "8.1.6",
+ "@storybook/types": "8.1.9",
"@types/qs": "^6.9.5",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
@@ -6094,12 +6094,12 @@
}
},
"node_modules/@storybook/builder-vite/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -6142,22 +6142,22 @@
}
},
"node_modules/@storybook/cli": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.1.6.tgz",
- "integrity": "sha512-xsFdBoAbo+2h/UCWuVXiH4Tu49iQ6d+3R1J8F2n4N6rAKxMqAb6fzYnH1GeRYeZk0HGqb2iNc4kBkxj0jW0rKw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.1.9.tgz",
+ "integrity": "sha512-+4DQJf5yrdmKrAs8sx0WvKu/ja49oOLQU2MxRPKhXW3bxDFjkTYvWuCKwSbMwUa7Npt96CK3bwAPP53jz/+mXA==",
"dev": true,
"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.9",
+ "@storybook/core-common": "8.1.9",
+ "@storybook/core-events": "8.1.9",
+ "@storybook/core-server": "8.1.9",
+ "@storybook/csf-tools": "8.1.9",
+ "@storybook/node-logger": "8.1.9",
+ "@storybook/telemetry": "8.1.9",
+ "@storybook/types": "8.1.9",
"@types/semver": "^7.3.4",
"@yarnpkg/fslib": "2.10.3",
"@yarnpkg/libzip": "2.3.0",
@@ -6194,13 +6194,13 @@
}
},
"node_modules/@storybook/cli/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -6211,9 +6211,9 @@
}
},
"node_modules/@storybook/cli/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -6224,9 +6224,9 @@
}
},
"node_modules/@storybook/cli/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -6238,12 +6238,12 @@
}
},
"node_modules/@storybook/cli/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -6398,18 +6398,18 @@
}
},
"node_modules/@storybook/codemod": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.1.6.tgz",
- "integrity": "sha512-N5JeimfscAOcME7FIrTCmxcsXxow11vtmPTjYWoeLYokBodaH5RyWcyyQ5KS1ACtt+dHYoX8lepSZA5SBEzYog==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.1.9.tgz",
+ "integrity": "sha512-thTdwiAO/eUUyiCzgkyGjA4fE3BAdXqf3WdTRjH4Vqk4yby9EalwcBitkj/M6bCDGjdoxU2q2ByUDD9opwyMiw==",
"dev": true,
"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.9",
+ "@storybook/node-logger": "8.1.9",
+ "@storybook/types": "8.1.9",
"@types/cross-spawn": "^6.0.2",
"cross-spawn": "^7.0.3",
"globby": "^14.0.1",
@@ -6425,13 +6425,13 @@
}
},
"node_modules/@storybook/codemod/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -6442,9 +6442,9 @@
}
},
"node_modules/@storybook/codemod/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -6455,9 +6455,9 @@
}
},
"node_modules/@storybook/codemod/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -6469,12 +6469,12 @@
}
},
"node_modules/@storybook/codemod/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -6556,15 +6556,15 @@
}
},
"node_modules/@storybook/core-common": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.6.tgz",
- "integrity": "sha512-OTlfJFaTOB588ibXrrFm0TAXam6E5xV1VXSjNXL+fIifx8Kjln2HNSy1JKjvcblQneYiV4J1xPCVnAIe0EGHDg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.9.tgz",
+ "integrity": "sha512-+KReoo41FUknTxk3fbnoul995SnZdKAVSK6MuqKOQnC9PH6bh864k6i1LShVZx/wk3n25h9xorD3UgyRI6sZ0w==",
"dev": true,
"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.9",
+ "@storybook/csf-tools": "8.1.9",
+ "@storybook/node-logger": "8.1.9",
+ "@storybook/types": "8.1.9",
"@yarnpkg/fslib": "2.10.3",
"@yarnpkg/libzip": "2.3.0",
"chalk": "^4.1.0",
@@ -6973,13 +6973,13 @@
}
},
"node_modules/@storybook/core-common/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -6990,9 +6990,9 @@
}
},
"node_modules/@storybook/core-common/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -7003,9 +7003,9 @@
}
},
"node_modules/@storybook/core-common/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -7017,12 +7017,12 @@
}
},
"node_modules/@storybook/core-common/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -7162,29 +7162,29 @@
}
},
"node_modules/@storybook/core-server": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.1.6.tgz",
- "integrity": "sha512-rgkeTG8V4emzhPqjlhchsjLay0WtgK7SrXNf1X40oTJIwmbgbReLJ5EmOXBe9rhWSXJ13aKL3l6JuTLAoptSkg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.1.9.tgz",
+ "integrity": "sha512-bn3M264vr3GY9kgAdRRIUdVV4PcUqtYvttQ/h6XDVJWC1UYUQW49zQNxQLQUXSQo4KLISnvTKHmP5qgbY6BASQ==",
"dev": true,
"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.9",
+ "@storybook/channels": "8.1.9",
+ "@storybook/core-common": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/csf": "^0.1.7",
- "@storybook/csf-tools": "8.1.6",
+ "@storybook/csf-tools": "8.1.9",
"@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.9",
+ "@storybook/manager-api": "8.1.9",
+ "@storybook/node-logger": "8.1.9",
+ "@storybook/preview-api": "8.1.9",
+ "@storybook/telemetry": "8.1.9",
+ "@storybook/types": "8.1.9",
"@types/detect-port": "^1.3.0",
"@types/diff": "^5.0.9",
"@types/node": "^18.0.0",
@@ -7219,13 +7219,13 @@
}
},
"node_modules/@storybook/core-server/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -7236,9 +7236,9 @@
}
},
"node_modules/@storybook/core-server/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -7249,9 +7249,9 @@
}
},
"node_modules/@storybook/core-server/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -7263,17 +7263,17 @@
}
},
"node_modules/@storybook/core-server/node_modules/@storybook/preview-api": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.6.tgz",
- "integrity": "sha512-g9EvVg/DYqmjMh1uivJBJnSIvURyuK4LLabYicQNmYdQJscAeXX2bpMcA4aeci9BBm9B2RP7JbSnq7DbXZaJYA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.9.tgz",
+ "integrity": "sha512-deZoKsTHMbpzGOhboVdT/MHhafPKQyxo2tj1Zrb0GFfpabAUnJzVXRr93P5qCOKCuPQEwQyZx0ScW5qzY2JTrQ==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/channels": "8.1.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/csf": "^0.1.7",
"@storybook/global": "^5.0.0",
- "@storybook/types": "8.1.6",
+ "@storybook/types": "8.1.9",
"@types/qs": "^6.9.5",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
@@ -7289,12 +7289,12 @@
}
},
"node_modules/@storybook/core-server/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -7444,12 +7444,12 @@
}
},
"node_modules/@storybook/csf-plugin": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.1.6.tgz",
- "integrity": "sha512-y2OW84leoWsqfBXb7EoRy2QUmtsI3gpqYqpyD/d5K+vQ+E9CBel2WB8RPrwcYm2L88WPDaufQQDzqyB7aMx4fQ==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.1.9.tgz",
+ "integrity": "sha512-OC3Z7lx5Tt3iNqVpfAykCKhmHyWXwjPvK0C0RubmKLRWdH66aKp2SzvqJSFppRGZySWKKJqSBGtjB/AsG/Do4Q==",
"dev": true,
"dependencies": {
- "@storybook/csf-tools": "8.1.6",
+ "@storybook/csf-tools": "8.1.9",
"unplugin": "^1.3.1"
},
"funding": {
@@ -7458,9 +7458,9 @@
}
},
"node_modules/@storybook/csf-tools": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.6.tgz",
- "integrity": "sha512-jrKfHFNhiLBhWWW4/fm2wgKEVg55e6QuYUHY16KGd7PdPuzm+2Pt7jIl5V9yIj6a59YbjeMpT6jWPKbFx2TuCw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.9.tgz",
+ "integrity": "sha512-nCYGNJOoBZjAdD1blTgS8/O0HwXaZ4cwUd8G9pQbsyt/cSW65clATeEV1rTTcR+G9JHnZBQ3jLAnH2dbFY0c8w==",
"dev": true,
"dependencies": {
"@babel/generator": "^7.24.4",
@@ -7468,7 +7468,7 @@
"@babel/traverse": "^7.24.1",
"@babel/types": "^7.24.0",
"@storybook/csf": "^0.1.7",
- "@storybook/types": "8.1.6",
+ "@storybook/types": "8.1.9",
"fs-extra": "^11.1.0",
"recast": "^0.23.5",
"ts-dedent": "^2.0.0"
@@ -7479,13 +7479,13 @@
}
},
"node_modules/@storybook/csf-tools/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -7496,9 +7496,9 @@
}
},
"node_modules/@storybook/csf-tools/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -7509,9 +7509,9 @@
}
},
"node_modules/@storybook/csf-tools/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -7523,12 +7523,12 @@
}
},
"node_modules/@storybook/csf-tools/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -7558,15 +7558,15 @@
"dev": true
},
"node_modules/@storybook/docs-tools": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.1.6.tgz",
- "integrity": "sha512-IhqQHSJ5nEBEJ162P/6/6c45toLinWpAkB7pwbAoP00djZSzfHNdQ4HfpZSGfD4GUJIvzsqMzUlyqCKLAoRPPA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.1.9.tgz",
+ "integrity": "sha512-ZGtlldQARXG+v8KtNq5dxtAfPLsaLFuV4gJQ4MHXcspQSKtQ6fq5k2IkxhKhDg4EEQ/lhSl8vUxws+W79xWbbg==",
"dev": true,
"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.9",
+ "@storybook/core-events": "8.1.9",
+ "@storybook/preview-api": "8.1.9",
+ "@storybook/types": "8.1.9",
"@types/doctrine": "^0.0.3",
"assert": "^2.1.0",
"doctrine": "^3.0.0",
@@ -7578,13 +7578,13 @@
}
},
"node_modules/@storybook/docs-tools/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -7595,9 +7595,9 @@
}
},
"node_modules/@storybook/docs-tools/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -7608,9 +7608,9 @@
}
},
"node_modules/@storybook/docs-tools/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -7622,17 +7622,17 @@
}
},
"node_modules/@storybook/docs-tools/node_modules/@storybook/preview-api": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.6.tgz",
- "integrity": "sha512-g9EvVg/DYqmjMh1uivJBJnSIvURyuK4LLabYicQNmYdQJscAeXX2bpMcA4aeci9BBm9B2RP7JbSnq7DbXZaJYA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.9.tgz",
+ "integrity": "sha512-deZoKsTHMbpzGOhboVdT/MHhafPKQyxo2tj1Zrb0GFfpabAUnJzVXRr93P5qCOKCuPQEwQyZx0ScW5qzY2JTrQ==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/channels": "8.1.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/csf": "^0.1.7",
"@storybook/global": "^5.0.0",
- "@storybook/types": "8.1.6",
+ "@storybook/types": "8.1.9",
"@types/qs": "^6.9.5",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
@@ -7648,12 +7648,12 @@
}
},
"node_modules/@storybook/docs-tools/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -7683,9 +7683,9 @@
}
},
"node_modules/@storybook/manager": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-8.1.6.tgz",
- "integrity": "sha512-B7xc09FYHqC1sknJoWkGHBBCMQlfg7hF+4x42cGhAyYed4TeYAf7b1PDniq8L/PLbUgzTw+A62UC1fMurCcVDQ==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-8.1.9.tgz",
+ "integrity": "sha512-sp1N7ZgOtGK5uhCgwuPQlJ4JYKr3TyNeahotwAf2FUb5n70YyXDzqoqO8q8H0y9NarX+EcP1gJ4GmpT9+qTxsQ==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -7693,20 +7693,20 @@
}
},
"node_modules/@storybook/manager-api": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.1.6.tgz",
- "integrity": "sha512-L/s1FdFh/P+eFmQwLtFtJHwFJrGD9H7nauaQlKJOrU3GeXfjBjtlAZQF0Q6B4ZTGxwZjQrzShpt/0yKc6gymtw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.1.9.tgz",
+ "integrity": "sha512-iafn/C9Bg9UHae7FoL5rNLCeQQnzvm+kKRlQzP5iVSJurnaYnajzej4baoZmF/eZJTFLdyp8klsqcl+NLJh8iA==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/channels": "8.1.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@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.9",
+ "@storybook/theming": "8.1.9",
+ "@storybook/types": "8.1.9",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
"memoizerific": "^1.11.3",
@@ -7720,13 +7720,13 @@
}
},
"node_modules/@storybook/manager-api/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -7737,9 +7737,9 @@
}
},
"node_modules/@storybook/manager-api/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -7750,9 +7750,9 @@
}
},
"node_modules/@storybook/manager-api/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -7764,13 +7764,13 @@
}
},
"node_modules/@storybook/manager-api/node_modules/@storybook/theming": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.1.6.tgz",
- "integrity": "sha512-0Cl/7/0z2WSfXhZ9XSw6rgEjb0fXac7jfktieX0vYo1YckrNpWFRQP9NCpVPAcYZaFLlRSOqYark6CLoutEsIg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.1.9.tgz",
+ "integrity": "sha512-CVM3F4Fa9cIFL4u/BhbANWytShBFeFBZeCFwvcJizJUL+nSgVlxeYilxwQB/1AxyJn/+OprW3nCw5aSbui/EEA==",
"dev": true,
"dependencies": {
"@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
- "@storybook/client-logger": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
"@storybook/global": "^5.0.0",
"memoizerific": "^1.11.3"
},
@@ -7792,12 +7792,12 @@
}
},
"node_modules/@storybook/manager-api/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -7807,9 +7807,9 @@
}
},
"node_modules/@storybook/node-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.6.tgz",
- "integrity": "sha512-IZEiTLFHu8Oom/vdEGpisSw5CfU+cw6/fTaX1P3EVClFOWVuy8/3X5MPu4wJH3jPym6E2DBduIUFeRsiuq61gA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.9.tgz",
+ "integrity": "sha512-X5YGkJOui+m3TXqbf7HODzrf4VdzamtlUXlD08Qm36JJD/qJJZVhSivzkQR4uom/VW+ejChM2ETgw41SrK0vJA==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -7817,9 +7817,9 @@
}
},
"node_modules/@storybook/preview": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.1.6.tgz",
- "integrity": "sha512-o9OgOmO10GyX1ZC7WiapYqGdst4TOCPLqWSu3H2nL4ZT7BQLUQfCy30kyoMO7KyxCgc5K5rcqG7qZ/N0tfUgRg==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.1.9.tgz",
+ "integrity": "sha512-yLwe9RJRlF+h9D73pyo4fUXFxN/krTgLKT08IoyWwq7/onzVlujYdDl56EsM+Aw5OktBuwAvTiaw0WCdiFP4sA==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -7855,9 +7855,9 @@
}
},
"node_modules/@storybook/react-dom-shim": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.1.6.tgz",
- "integrity": "sha512-qP5nkAmpGFy/gshO+bVjRo1rgo/6UVDElgOd2dlUtYnfdPONiOfWko2XGYKKfxa6Cp7KU35JlZz/kHGqWG31zQ==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.1.9.tgz",
+ "integrity": "sha512-nRpw1SxkSCf8+MrsgL37lpihcr0fwtG0tHShW6F2+Lrx0nlzaOTH/VOvAwZJLNYpqddqln6vQ6Yk7Wxvw2IIkw==",
"dev": true,
"funding": {
"type": "opencollective",
@@ -7869,12 +7869,12 @@
}
},
"node_modules/@storybook/router": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/router/-/router-8.1.6.tgz",
- "integrity": "sha512-tvuhB2uXHEKK640Epm1SqVzPhQ9lXYfF7FX6FleJgVYEvZpJpNTD4RojedQoLI6SUUSXNy1Vs2QV26VM0XIPHQ==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/router/-/router-8.1.9.tgz",
+ "integrity": "sha512-b7e/pnqfYLD3oxdStnAZI+Gxp0Bodk3q5Jo9FUoiSNZaa3Pu8conq+jsyyXT19uDZtWwOursBKVvDM2/dtHGLg==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
"memoizerific": "^1.11.3",
"qs": "^6.10.0"
},
@@ -7884,9 +7884,9 @@
}
},
"node_modules/@storybook/router/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -7897,14 +7897,14 @@
}
},
"node_modules/@storybook/telemetry": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-8.1.6.tgz",
- "integrity": "sha512-qNWjQPF6ufRvLCAavulhNYoqldDIeBvioFuCjLlwbw3BZw3ck7pwh1vZg4AJ0SAfzbnpnXPGrHe31gnxV0D6tw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-8.1.9.tgz",
+ "integrity": "sha512-ayNt4g6MKIQCj5fPmB2WhYbEEH+AMVswUOedFp2DtPojeDnVJMp38lSFykTbjaq+/HrDpnoZn6fG4pd+05N+dg==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-common": "8.1.6",
- "@storybook/csf-tools": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-common": "8.1.9",
+ "@storybook/csf-tools": "8.1.9",
"chalk": "^4.1.0",
"detect-package-manager": "^2.0.1",
"fetch-retry": "^5.0.2",
@@ -7917,9 +7917,9 @@
}
},
"node_modules/@storybook/telemetry/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -8034,17 +8034,17 @@
}
},
"node_modules/@storybook/web-components": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-8.1.6.tgz",
- "integrity": "sha512-wpRapZVXjoKyXl66/v/dFP697ttPpmyIi+vwratYTYLEx+3K1Ovuc2BLg44GlYRLhU9NW5YuJe51bh02M/z+Rw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/web-components/-/web-components-8.1.9.tgz",
+ "integrity": "sha512-d22EWC43IcmiSlyyB8xPcYUtum2n22b4NwWWTvpMm0bPS+OuSLrWVJawR6/H2jGtv2J+vGIwbVgn2BrDSUo6OA==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/docs-tools": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/docs-tools": "8.1.9",
"@storybook/global": "^5.0.0",
- "@storybook/manager-api": "8.1.6",
- "@storybook/preview-api": "8.1.6",
- "@storybook/types": "8.1.6",
+ "@storybook/manager-api": "8.1.9",
+ "@storybook/preview-api": "8.1.9",
+ "@storybook/types": "8.1.9",
"tiny-invariant": "^1.3.1",
"ts-dedent": "^2.0.0"
},
@@ -8060,16 +8060,16 @@
}
},
"node_modules/@storybook/web-components-vite": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-8.1.6.tgz",
- "integrity": "sha512-9IwcV+QqbetJckcuhB5tRxynwlPMnlDN1fw+oOO/lLG+4tRESuJi99lpRybtB9vVvvUD1kn3FEC2Hx3FcsrCcA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/web-components-vite/-/web-components-vite-8.1.9.tgz",
+ "integrity": "sha512-NTmUg+erJg9onmRkG7WwShIsuhRh57h5DmS60yO2oLrcRHLp4UekklZ5eRuIN2d/BlXIOlz4TJG/5rEyZyDHfg==",
"dev": true,
"dependencies": {
- "@storybook/builder-vite": "8.1.6",
- "@storybook/core-server": "8.1.6",
- "@storybook/node-logger": "8.1.6",
- "@storybook/types": "8.1.6",
- "@storybook/web-components": "8.1.6",
+ "@storybook/builder-vite": "8.1.9",
+ "@storybook/core-server": "8.1.9",
+ "@storybook/node-logger": "8.1.9",
+ "@storybook/types": "8.1.9",
+ "@storybook/web-components": "8.1.9",
"magic-string": "^0.30.0"
},
"engines": {
@@ -8081,13 +8081,13 @@
}
},
"node_modules/@storybook/web-components-vite/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -8098,9 +8098,9 @@
}
},
"node_modules/@storybook/web-components-vite/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -8111,9 +8111,9 @@
}
},
"node_modules/@storybook/web-components-vite/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -8125,12 +8125,12 @@
}
},
"node_modules/@storybook/web-components-vite/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -8140,13 +8140,13 @@
}
},
"node_modules/@storybook/web-components/node_modules/@storybook/channels": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.6.tgz",
- "integrity": "sha512-CzDnP6qfI8OC8pGUk+wPUzLPYcKhX8XbriF2gBtwl6qVM8YfkHP2mLTiDYDwBIi0rLuUbSm/SpILXQ/ouOHOGw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.9.tgz",
+ "integrity": "sha512-7dvzoHBJQDvG1PMJVLnsPw3xuQ6KMZBSOgzVrkFWi4f3j6zXjs7ADVo/uqIoLq8inziupz2himWFnUtl5moIUw==",
"dev": true,
"dependencies": {
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/global": "^5.0.0",
"telejson": "^7.2.0",
"tiny-invariant": "^1.3.1"
@@ -8157,9 +8157,9 @@
}
},
"node_modules/@storybook/web-components/node_modules/@storybook/client-logger": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.6.tgz",
- "integrity": "sha512-QfSoUxS1rmrBzO7o99og9g+Gkm7sTmU5ZOpTkjszjlRqfV6/77eUnUOzUikej4LqPLmlJV5fqGuvoP0aNVksDw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.9.tgz",
+ "integrity": "sha512-sHX0UhAquhVCtbRtDNN5Ura8hUxRjZWKgQKt8NWQIt9hOSSurGJE3+93OzNAYDp54kh77QKY3qdZCgAJZuWZPw==",
"dev": true,
"dependencies": {
"@storybook/global": "^5.0.0"
@@ -8170,9 +8170,9 @@
}
},
"node_modules/@storybook/web-components/node_modules/@storybook/core-events": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.6.tgz",
- "integrity": "sha512-DaIVe4TUp/7uQdSJYGmJv9S/S364tSgZ3S3dZ1vsf1rgoUbCp5kTBtcd/fcqgukMPREgCgO9oDhmemI3SLAqzw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.9.tgz",
+ "integrity": "sha512-c8MnBqUtTvIBNoDBBQQrFEy8pNAagcDryh5FM+T1SPBsH6j3fRSZwXMc6vvW2BYkQxJ67kpd7xrH7uapqhNEcg==",
"dev": true,
"dependencies": {
"@storybook/csf": "^0.1.7",
@@ -8184,17 +8184,17 @@
}
},
"node_modules/@storybook/web-components/node_modules/@storybook/preview-api": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.6.tgz",
- "integrity": "sha512-g9EvVg/DYqmjMh1uivJBJnSIvURyuK4LLabYicQNmYdQJscAeXX2bpMcA4aeci9BBm9B2RP7JbSnq7DbXZaJYA==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.9.tgz",
+ "integrity": "sha512-deZoKsTHMbpzGOhboVdT/MHhafPKQyxo2tj1Zrb0GFfpabAUnJzVXRr93P5qCOKCuPQEwQyZx0ScW5qzY2JTrQ==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
- "@storybook/client-logger": "8.1.6",
- "@storybook/core-events": "8.1.6",
+ "@storybook/channels": "8.1.9",
+ "@storybook/client-logger": "8.1.9",
+ "@storybook/core-events": "8.1.9",
"@storybook/csf": "^0.1.7",
"@storybook/global": "^5.0.0",
- "@storybook/types": "8.1.6",
+ "@storybook/types": "8.1.9",
"@types/qs": "^6.9.5",
"dequal": "^2.0.2",
"lodash": "^4.17.21",
@@ -8210,12 +8210,12 @@
}
},
"node_modules/@storybook/web-components/node_modules/@storybook/types": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.6.tgz",
- "integrity": "sha512-cWpS9+x1pxCO39spR8QmumMK2ub2p5cvMtrRvWaIjBFPbCwm2CvjBXFWIra2veBCZTxUKJ9VWxvi7pzRHjN/nw==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.9.tgz",
+ "integrity": "sha512-temr7cNoBwu/+EF0jZ7aIfHtqwMqyevPLRfl/emkZM2t751NxbTkP1kxvfk9I0L8wF7mvVHXWn2iIM3QBqzWDw==",
"dev": true,
"dependencies": {
- "@storybook/channels": "8.1.6",
+ "@storybook/channels": "8.1.9",
"@types/express": "^4.7.0",
"file-system-cache": "2.3.0"
},
@@ -13353,9 +13353,9 @@
"license": "ISC"
},
"node_modules/flow-parser": {
- "version": "0.237.2",
- "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.237.2.tgz",
- "integrity": "sha512-mvI/kdfr3l1waaPbThPA8dJa77nHXrfZIun+SWvFwSwDjmeByU7mGJGRmv1+7guU6ccyLV8e1lqZA1lD4iMGnQ==",
+ "version": "0.238.0",
+ "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.238.0.tgz",
+ "integrity": "sha512-VE7XSv1epljsIN2YeBnxCmGJihpNIAnLLu/pPOdA+Gkso7qDltJwUi6vfHjgxdBbjSdAuPGnhuOHJUQG+yYwIg==",
"dev": true,
"engines": {
"node": ">=0.4.0"
@@ -19050,12 +19050,12 @@
"license": "MIT"
},
"node_modules/storybook": {
- "version": "8.1.6",
- "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.1.6.tgz",
- "integrity": "sha512-qouQEB+sSb9ktE6fGVoBy6CLEUq4NOqDUpt/EhnITaWqzUeAZSQXTcoHg9DXhTMiynnbfqsUcZuK9PZOjgt7/w==",
+ "version": "8.1.9",
+ "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.1.9.tgz",
+ "integrity": "sha512-Jymrfn299+MJBIZVDYPJlIGJMZM33udFCjbeRdOHIXF2BfpqOSS2FoEfmlp3zya3gwyZDq/BE7uiBc7HIVZa4g==",
"dev": true,
"dependencies": {
- "@storybook/cli": "8.1.6"
+ "@storybook/cli": "8.1.9"
},
"bin": {
"sb": "index.js",
@@ -19954,9 +19954,9 @@
"license": "MIT"
},
"node_modules/ts-pattern": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.1.2.tgz",
- "integrity": "sha512-u+ElKUIWnqisjpRBhv6Y89yNq7Pmz6xL0v7pTSckrVZ0+5Vf32oh/3jmxWl80rAOGcnbBa7fCyeqNdP4yXzWWg=="
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.2.0.tgz",
+ "integrity": "sha512-aGaSpOlDcns7ZoeG/OMftWyQG1KqPVhgplhJxNCvyIXqWrumM5uIoOSarw/hmmi/T1PnuQ/uD8NaFHvLpHicDg=="
},
"node_modules/ts-simple-type": {
"version": "2.0.0-next.0",
diff --git a/web/package.json b/web/package.json
index 12c72569f464..51716ce9d015 100644
--- a/web/package.json
+++ b/web/package.json
@@ -38,7 +38,7 @@
"@codemirror/theme-one-dark": "^6.1.2",
"@formatjs/intl-listformat": "^7.5.7",
"@fortawesome/fontawesome-free": "^6.5.2",
- "@goauthentik/api": "^2024.4.2-1717645682",
+ "@goauthentik/api": "^2024.4.2-1718362364",
"@lit-labs/task": "^3.1.0",
"@lit/context": "^1.1.2",
"@lit/localize": "^0.12.1",
@@ -46,7 +46,7 @@
"@open-wc/lit-helpers": "^0.7.0",
"@patternfly/elements": "^3.0.1",
"@patternfly/patternfly": "^4.224.2",
- "@sentry/browser": "^8.9.1",
+ "@sentry/browser": "^8.9.2",
"@webcomponents/webcomponentsjs": "^2.8.0",
"base64-js": "^1.5.1",
"chart.js": "^4.4.3",
@@ -63,7 +63,7 @@
"rapidoc": "^9.3.4",
"showdown": "^2.1.0",
"style-mod": "^4.1.2",
- "ts-pattern": "^5.1.2",
+ "ts-pattern": "^5.2.0",
"webcomponent-qr-code": "^1.2.0",
"yaml": "^2.4.5"
},
@@ -80,14 +80,14 @@
"@jeysal/storybook-addon-css-user-preferences": "^0.2.0",
"@lit/localize-tools": "^0.7.2",
"@rollup/plugin-replace": "^5.0.7",
- "@spotlightjs/spotlight": "^1.2.17",
- "@storybook/addon-essentials": "^8.1.6",
- "@storybook/addon-links": "^8.1.6",
+ "@spotlightjs/spotlight": "^2.0.0",
+ "@storybook/addon-essentials": "^8.1.9",
+ "@storybook/addon-links": "^8.1.9",
"@storybook/api": "^7.6.17",
"@storybook/blocks": "^8.0.8",
- "@storybook/manager-api": "^8.1.6",
- "@storybook/web-components": "^8.1.6",
- "@storybook/web-components-vite": "^8.1.6",
+ "@storybook/manager-api": "^8.1.9",
+ "@storybook/web-components": "^8.1.9",
+ "@storybook/web-components-vite": "^8.1.9",
"@trivago/prettier-plugin-sort-imports": "^4.3.0",
"@types/chart.js": "^2.9.41",
"@types/codemirror": "5.60.15",
@@ -117,7 +117,7 @@
"react-dom": "^18.3.1",
"rollup-plugin-modify": "^3.0.0",
"rollup-plugin-postcss-lit": "^2.1.0",
- "storybook": "^8.1.6",
+ "storybook": "^8.1.9",
"storybook-addon-mock": "^5.0.0",
"ts-lit-plugin": "^2.0.2",
"tslib": "^2.6.3",
diff --git a/web/src/admin/admin-overview/AdminOverviewPage.ts b/web/src/admin/admin-overview/AdminOverviewPage.ts
index d24d17814dbb..f361d11ac10b 100644
--- a/web/src/admin/admin-overview/AdminOverviewPage.ts
+++ b/web/src/admin/admin-overview/AdminOverviewPage.ts
@@ -1,5 +1,6 @@
import "@goauthentik/admin/admin-overview/TopApplicationsTable";
import "@goauthentik/admin/admin-overview/cards/AdminStatusCard";
+import "@goauthentik/admin/admin-overview/cards/FipsStatusCard";
import "@goauthentik/admin/admin-overview/cards/RecentEventsCard";
import "@goauthentik/admin/admin-overview/cards/SystemStatusCard";
import "@goauthentik/admin/admin-overview/cards/VersionStatusCard";
@@ -10,13 +11,17 @@ import "@goauthentik/admin/admin-overview/charts/SyncStatusChart";
import { VERSION } from "@goauthentik/common/constants";
import { me } from "@goauthentik/common/users";
import { AKElement } from "@goauthentik/elements/Base";
+import { WithLicenseSummary } from "@goauthentik/elements/Interface/licenseSummaryProvider.js";
import "@goauthentik/elements/PageHeader";
import "@goauthentik/elements/cards/AggregatePromiseCard";
import { paramURL } from "@goauthentik/elements/router/RouterOutlet";
import { msg, str } from "@lit/localize";
-import { CSSResult, TemplateResult, css, html } from "lit";
+import { CSSResult, TemplateResult, css, html, nothing } from "lit";
import { customElement, state } from "lit/decorators.js";
+import { classMap } from "lit/directives/class-map.js";
+import { map } from "lit/directives/map.js";
+import { when } from "lit/directives/when.js";
import PFContent from "@patternfly/patternfly/components/Content/content.css";
import PFDivider from "@patternfly/patternfly/components/Divider/divider.css";
@@ -33,8 +38,12 @@ export function versionFamily(): string {
return parts.join(".");
}
+const AdminOverviewBase = WithLicenseSummary(AKElement);
+
+type Renderer = () => TemplateResult | typeof nothing;
+
@customElement("ak-admin-overview")
-export class AdminOverviewPage extends AKElement {
+export class AdminOverviewPage extends AdminOverviewBase {
static get styles(): CSSResult[] {
return [
PFBase,
@@ -73,6 +82,7 @@ export class AdminOverviewPage extends AKElement {
render(): TemplateResult {
const name = this.user?.user.name ?? this.user?.user.username;
+
return html`