diff --git a/backend/account/migrations/0002_userblock.py b/backend/account/migrations/0002_userblock.py new file mode 100644 index 0000000..eead792 --- /dev/null +++ b/backend/account/migrations/0002_userblock.py @@ -0,0 +1,27 @@ +# Generated by Django 5.2.7 on 2026-04-19 21:51 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='UserBlock', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('blocked_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='blocked_by', to=settings.AUTH_USER_MODEL)), + ('blocker', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='blocking', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'unique_together': {('blocker', 'blocked_user')}, + }, + ), + ] diff --git a/backend/commerce/migrations/0001_initial.py b/backend/commerce/migrations/0001_initial.py index e9bceff..2e13281 100644 --- a/backend/commerce/migrations/0001_initial.py +++ b/backend/commerce/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 5.2.7 on 2026-01-24 22:44 +# Generated by Django 5.2.7 on 2026-04-19 21:51 import django.core.validators import django.db.models.deletion diff --git a/backend/requirements.txt b/backend/requirements.txt index 01d83c8..0e53980 100644 --- a/backend/requirements.txt +++ b/backend/requirements.txt @@ -1,5 +1,6 @@ # -- BASE -- requests +cryptography #field-level encryption (EncryptedCharField) pip python-dotenv # .env support diff --git a/backend/social/chat/chat app diagram.md b/backend/social/chat/chat app diagram.md new file mode 100644 index 0000000..2dc7be6 --- /dev/null +++ b/backend/social/chat/chat app diagram.md @@ -0,0 +1,68 @@ +chat app diagram +┌─────────────────────────────────────────────────────────────────┐ +│ CLIENT (browser) │ +└────────────┬────────────────────────────┬───────────────────────┘ + │ WebSocket │ HTTP REST + │ ws/chat// │ /api/social/ + ▼ ▼ +┌────────────────────────┐ ┌────────────────────────────────────┐ +│ ChatConsumer │ │ REST Views │ +│ (consumers.py) │ │ (views.py) │ +│ │ │ │ +│ connect() │ │ ChatViewSet │ +│ ├─ auth check │ │ ├─ list / retrieve (GET) │ +│ └─ membership check ──┼───┼──► IsChatMember │ +│ │ │ ├─ create (POST) │ +│ receive() │ │ ├─ update/partial (PATCH/PUT) │ +│ ├─ new_chat_message │ │ │ └─ CanManageChat │ +│ │ (text only) │ │ ├─ destroy (DELETE) │ +│ │ └─► _create_message │ │ └─ CanManageChat │ +│ │ (DB INSERT) │ │ └─ add/remove member & moderator │ +│ │ │ │ │ +│ ├─ new_reply_message │ │ MessageViewSet │ +│ │ (text only) │ │ ├─ list / retrieve (GET) │ +│ │ └─► _create_message │ │ └─ IsAuthenticated │ +│ │ (DB INSERT) │ │ ├─ send (POST) │ +│ │ │ │ │ ├─ IsAuthenticated │ +│ └─ reaction │ │ │ ├─ DB INSERT Message │ +│ └─► _toggle_reaction │ │ ├─ DB INSERT MessageFile(s) │ +│ (DB UPDATE/ │ │ │ └─► group_send(chat.msg) ─────┼──► WebSocket push +│ DELETE) │ │ ├─ update/partial (PATCH/PUT) │ +│ │ │ │ ├─ IsMessageSenderOnly │ +│ typing / stop_typing │ │ │ ├─ message.edit_content() │ +│ └─► group_send only │ │ │ └─► group_send(edit.msg) ─────┼──► WebSocket push +│ (no DB write) │ │ └─ destroy (DELETE) │ +│ │ │ ├─ CanDeleteMessage │ +│ │ │ └─► group_send(delete.msg) ───┼──► WebSocket push +└────────────┬───────────┘ └──────────────┬─────────────────────┘ + │ │ + │ both use channel_layer │ + ▼ ▼ +┌─────────────────────────────────────────────────────────────────┐ +│ Channel Layer (Redis) │ +│ group: "chat_{id}" │ +└─────────────────────────────────────────────────────────────────┘ + │ + ▼ group_send dispatches to all connected consumers +┌─────────────────────────────────────────────────────────────────┐ +│ ChatConsumer event handlers (push to each connected client) │ +│ chat_message · reply_chat_message · edit_message │ +│ delete_message · message_reaction · typing_status · stop_typing│ +└─────────────────────────────────────────────────────────────────┘ + +┌──────────────────────────────────┐ ┌──────────────────────────┐ +│ Database writes summary │ │ When to use which path │ +│ │ │ │ +│ CREATE Message ← consumer │ │ WS ← text-only msg │ +│ (text only) │ │ HTTP← msg with files │ +│ CREATE Message ← view /send │ │ HTTP← edit message │ +│ (any) │ │ HTTP← delete message │ +│ CREATE MessageFile ← view/send │ │ WS ← reaction │ +│ UPDATE Message ← view │ │ WS ← typing indicator │ +│ DELETE Message ← view (soft) │ └──────────────────────────┘ +│ CREATE MessageReaction ← cons │ +│ UPDATE MessageReaction ← cons │ +│ DELETE MessageReaction ← cons │ +│ CREATE MessageHistory ← model │ +│ (auto on edit_content) │ +└──────────────────────────────────┘ diff --git a/backend/social/chat/consumers.py b/backend/social/chat/consumers.py index 39b5f0d..62a7ee1 100644 --- a/backend/social/chat/consumers.py +++ b/backend/social/chat/consumers.py @@ -1,11 +1,185 @@ # chat/consumers.py import json -from account.models import UserProfile - from channels.db import database_sync_to_async from channels.generic.websocket import AsyncWebsocketConsumer -from asgiref.sync import sync_to_async, async_to_sync + +from .models import Chat, Message + + +class ChatConsumer(AsyncWebsocketConsumer): + + # -- CONNECT -- + + async def connect(self): + self.chat_id = self.scope["url_route"]["kwargs"]["chat_id"] + self.chat_name = f"chat_{self.chat_id}" + user = self.scope["user"] + + if not user.is_authenticated: + await self.close(code=4401) + return + + is_member = await _is_chat_member(self.chat_id, user) + if not is_member: + await self.close(code=4403) + return + + await self.channel_layer.group_add(self.chat_name, self.channel_name) + await self.accept() + + # -- DISCONNECT -- + + async def disconnect(self, close_code): + await self.channel_layer.group_discard(self.chat_name, self.channel_name) + + # -- RECEIVE -- + + async def receive(self, text_data): + data = json.loads(text_data) + user = self.scope["user"] + msg_type = data.get("type") + + if msg_type == "new_chat_message": + message = await _create_message( + chat_id=self.chat_id, + sender=user, + content=data["message"], + ) + await self.channel_layer.group_send(self.chat_name, { + "type": "chat.message", + "message_id": message.id, + "message": message.content, + "sender": user.username, + }) + + elif msg_type == "new_reply_chat_message": + message = await _create_message( + chat_id=self.chat_id, + sender=user, + content=data["message"], + reply_to_id=data.get("reply_to_id"), + ) + await self.channel_layer.group_send(self.chat_name, { + "type": "reply.chat.message", + "message_id": message.id, + "message": message.content, + "reply_to_id": data.get("reply_to_id"), + "sender": user.username, + }) + + elif msg_type == "reaction": + action, reaction = await _toggle_reaction( + message_id=data["message_id"], + user=user, + emoji=data["emoji"], + ) + await self.channel_layer.group_send(self.chat_name, { + "type": "message.reaction", + "message_id": data["message_id"], + "emoji": data["emoji"], + "user": user.username, + "action": action, # 'added' | 'removed' | 'switched' + }) + + elif msg_type == "typing": + await self.channel_layer.group_send(self.chat_name, { + "type": "typing.status", + "user": user.username, + "is_typing": data.get("is_typing", True), + }) + + elif msg_type == "stop_typing": + await self.channel_layer.group_send(self.chat_name, { + "type": "stop.typing", + "user": user.username, + }) + + else: + await self.send(text_data=json.dumps({"error": "Unsupported message type."})) + + # -- GROUP EVENT HANDLERS -- + # These are called by the channel layer when another part of the system + # (consumer or view) calls group_send. + + async def chat_message(self, event): + await self.send(text_data=json.dumps({ + "type": "new_chat_message", + "message_id": event["message_id"], + "message": event["message"], + "sender": event["sender"], + })) + + async def reply_chat_message(self, event): + await self.send(text_data=json.dumps({ + "type": "new_reply_chat_message", + "message_id": event["message_id"], + "message": event["message"], + "reply_to_id": event["reply_to_id"], + "sender": event["sender"], + })) + + async def edit_message(self, event): + await self.send(text_data=json.dumps({ + "type": "edit_chat_message", + "message_id": event["message_id"], + "content": event["content"], + "is_edited": event.get("is_edited", True), + })) + + async def delete_message(self, event): + await self.send(text_data=json.dumps({ + "type": "delete_chat_message", + "message_id": event["message_id"], + })) + + async def message_reaction(self, event): + await self.send(text_data=json.dumps({ + "type": "reaction", + "message_id": event["message_id"], + "emoji": event["emoji"], + "user": event["user"], + "action": event["action"], + })) + + async def typing_status(self, event): + await self.send(text_data=json.dumps({ + "type": "typing", + "user": event["user"], + "is_typing": event["is_typing"], + })) + + async def stop_typing(self, event): + await self.send(text_data=json.dumps({ + "type": "stop_typing", + "user": event["user"], + })) + + +# --------------------------------------------------------------------------- +# DB helpers (run in thread pool via database_sync_to_async) +# --------------------------------------------------------------------------- + +@database_sync_to_async +def _is_chat_member(chat_id, user): + return Chat.objects.filter(pk=chat_id, members=user).exists() + + +@database_sync_to_async +def _create_message(chat_id, sender, content, reply_to_id=None): + return Message.objects.create( + chat_id=chat_id, + sender=sender, + content=content, + reply_to_id=reply_to_id, + ) + + +@database_sync_to_async +def _toggle_reaction(message_id, user, emoji): + message = Message.objects.get(pk=message_id) + return message.toggle_reaction(user, emoji) + class ChatConsumer(AsyncWebsocketConsumer): diff --git a/backend/social/chat/migrations/0002_chat_banner_chat_chat_type_chat_deleted_at_chat_hub_and_more.py b/backend/social/chat/migrations/0002_chat_banner_chat_chat_type_chat_deleted_at_chat_hub_and_more.py new file mode 100644 index 0000000..330032f --- /dev/null +++ b/backend/social/chat/migrations/0002_chat_banner_chat_chat_type_chat_deleted_at_chat_hub_and_more.py @@ -0,0 +1,98 @@ +# Generated by Django 5.2.7 on 2026-04-19 21:51 + +import django.db.models.deletion +import vontor_cz.custom_fields +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('chat', '0001_initial'), + ('hubs', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AddField( + model_name='chat', + name='banner', + field=vontor_cz.custom_fields.WebPImageField(blank=True, null=True, upload_to='chat_banners/'), + ), + migrations.AddField( + model_name='chat', + name='chat_type', + field=models.CharField(choices=[('DM', 'Direct Message'), ('GROUP', 'Group')], default='GROUP', max_length=10), + ), + migrations.AddField( + model_name='chat', + name='deleted_at', + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AddField( + model_name='chat', + name='hub', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='hubs.hub'), + ), + migrations.AddField( + model_name='chat', + name='icon', + field=vontor_cz.custom_fields.WebPImageField(blank=True, null=True, upload_to='chat_icons/'), + ), + migrations.AddField( + model_name='chat', + name='is_deleted', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='chat', + name='name', + field=models.CharField(blank=True, max_length=255), + ), + migrations.AddField( + model_name='message', + name='deleted_at', + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AddField( + model_name='message', + name='is_deleted', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='messagefile', + name='deleted_at', + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AddField( + model_name='messagefile', + name='is_deleted', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='messagehistory', + name='deleted_at', + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AddField( + model_name='messagehistory', + name='is_deleted', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='messagereaction', + name='deleted_at', + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AddField( + model_name='messagereaction', + name='is_deleted', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='message', + name='sender', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='sent_messages', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/backend/social/chat/models.py b/backend/social/chat/models.py index 6b80e6f..8f6ec20 100644 --- a/backend/social/chat/models.py +++ b/backend/social/chat/models.py @@ -43,7 +43,7 @@ class Chat(SoftDeleteModel): ) hub = models.ForeignKey( - 'pages.Hub', + 'hubs.Hub', on_delete=models.CASCADE, null=True, blank=True diff --git a/backend/social/chat/permissions.py b/backend/social/chat/permissions.py new file mode 100644 index 0000000..a449178 --- /dev/null +++ b/backend/social/chat/permissions.py @@ -0,0 +1,65 @@ +from rest_framework.permissions import IsAuthenticated, SAFE_METHODS + + +class IsChatMember(IsAuthenticated): + """ + View-level: must be authenticated (inherited). + Object-level: safe methods require chat membership; unsafe require membership too. + Used for reading messages and listing chat details. + """ + + def has_object_permission(self, request, view, obj): + return request.user.is_superuser or obj.members.filter(pk=request.user.pk).exists() + + +class CanManageChat(IsAuthenticated): + """ + View-level: must be authenticated (inherited). + Object-level unsafe: chat owner, moderator, or superuser. + Used for editing/deleting the chat itself and managing members. + """ + + def has_object_permission(self, request, view, obj): + if request.method in SAFE_METHODS: + return True + user = request.user + return ( + user.is_superuser + or obj.owner == user + or obj.moderators.filter(pk=user.pk).exists() + ) + + +class IsMessageSenderOnly(IsAuthenticated): + """ + View-level: must be authenticated (inherited). + Object-level unsafe: message sender only. + Used for editing messages. + """ + + def has_object_permission(self, request, view, obj): + if request.method in SAFE_METHODS: + return True + return obj.sender == request.user + + +class CanDeleteMessage(IsAuthenticated): + """ + View-level: must be authenticated (inherited). + Object-level DELETE: + - Message sender + - Superuser + - Chat owner + - Chat moderator + """ + + def has_object_permission(self, request, view, obj): + if request.method in SAFE_METHODS: + return True + user = request.user + if obj.sender == user or user.is_superuser: + return True + return ( + obj.chat.owner == user + or obj.chat.moderators.filter(pk=user.pk).exists() + ) diff --git a/backend/social/chat/serializers.py b/backend/social/chat/serializers.py index e69de29..d703b3e 100644 --- a/backend/social/chat/serializers.py +++ b/backend/social/chat/serializers.py @@ -0,0 +1,74 @@ +from rest_framework import serializers +from .models import Chat, Message, MessageFile, MessageHistory, MessageReaction + + +class MessageFileSerializer(serializers.ModelSerializer): + class Meta: + model = MessageFile + fields = ['id', 'file', 'media_type', 'uploaded_at'] + read_only_fields = ['uploaded_at'] + + +class MessageReactionSerializer(serializers.ModelSerializer): + class Meta: + model = MessageReaction + fields = ['id', 'user', 'emoji', 'created_at'] + read_only_fields = ['user', 'created_at'] + + +class MessageHistorySerializer(serializers.ModelSerializer): + class Meta: + model = MessageHistory + fields = ['id', 'old_content', 'archived_at'] + read_only_fields = ['archived_at'] + + +class MessageSerializer(serializers.ModelSerializer): + media_files = MessageFileSerializer(many=True, read_only=True) + reactions = MessageReactionSerializer(many=True, read_only=True) + + class Meta: + model = Message + fields = [ + 'id', 'chat', 'sender', 'reply_to', + 'content', 'is_edited', 'edited_at', + 'created_at', 'updated_at', + 'media_files', 'reactions', + ] + read_only_fields = ['sender', 'chat', 'reply_to', 'is_edited', 'edited_at', 'created_at', 'updated_at'] + + +class MessageSendSerializer(serializers.Serializer): + """Used for the HTTP send endpoint (text + optional files).""" + chat = serializers.PrimaryKeyRelatedField(queryset=Chat.objects.all()) + content = serializers.CharField(required=False, allow_blank=True, default='') + reply_to = serializers.PrimaryKeyRelatedField( + queryset=Message.objects.all(), required=False, allow_null=True + ) + # files come via request.FILES - declared here for schema documentation only + files = serializers.ListField( + child=serializers.FileField(allow_empty_file=False, use_url=False), + required=False, + default=list, + write_only=True, + ) + + def validate(self, attrs): + if not attrs.get('content') and not attrs.get('files'): + raise serializers.ValidationError('A message must have content or at least one file.') + return attrs + + +class ChatSerializer(serializers.ModelSerializer): + class Meta: + model = Chat + fields = [ + 'id', 'chat_type', 'owner', 'name', + 'icon', 'banner', 'members', 'moderators', + 'hub', 'created_at', 'updated_at', + ] + read_only_fields = ['owner', 'created_at', 'updated_at'] + + +class ChatMemberSerializer(serializers.Serializer): + user_id = serializers.IntegerField(help_text='PK of the user to add or remove.') diff --git a/backend/social/chat/urls.py b/backend/social/chat/urls.py new file mode 100644 index 0000000..03f400c --- /dev/null +++ b/backend/social/chat/urls.py @@ -0,0 +1,8 @@ +from rest_framework.routers import DefaultRouter +from .views import ChatViewSet, MessageViewSet + +router = DefaultRouter() +router.register('chats', ChatViewSet, basename='chat') +router.register('messages', MessageViewSet, basename='message') + +urlpatterns = router.urls diff --git a/backend/social/chat/views.py b/backend/social/chat/views.py index e653958..69dfcd4 100644 --- a/backend/social/chat/views.py +++ b/backend/social/chat/views.py @@ -1,25 +1,252 @@ -from django.shortcuts import render +from asgiref.sync import async_to_sync +from channels.layers import get_channel_layer +from django.contrib.auth import get_user_model +from rest_framework import status, viewsets +from rest_framework.decorators import action +from rest_framework.exceptions import PermissionDenied, ValidationError +from rest_framework.permissions import IsAuthenticated +from rest_framework.response import Response +from drf_spectacular.utils import extend_schema, extend_schema_view -# Create your views here. +from .models import Chat, Message, MessageFile +from .permissions import CanDeleteMessage, CanManageChat, IsChatMember, IsMessageSenderOnly +from .serializers import ChatMemberSerializer, ChatSerializer, MessageSendSerializer, MessageSerializer -def get_users_chats(request): - return None +def _broadcast(chat_id, payload): + """Push a payload to the channel group for a chat from sync code.""" + channel_layer = get_channel_layer() + async_to_sync(channel_layer.group_send)(f"chat_{chat_id}", payload) -def create_chat(request): - return None -def invite_user_to_chat(request, chat_id: int, user_ids: list): - return None +# --------------------------------------------------------------------------- +# Chat ViewSet +# --------------------------------------------------------------------------- -def delete_chat(request, chat_id: int): - return None +@extend_schema_view( + list=extend_schema(tags=["chat"], summary="List chats", description="Returns all chats the user is a member of. Superusers see all."), + retrieve=extend_schema(tags=["chat"], summary="Retrieve a chat"), + create=extend_schema(tags=["chat"], summary="Create a chat", description="Owner is set to the requesting user automatically."), + update=extend_schema(tags=["chat"], summary="Replace a chat", description="Owner, moderator, or superuser only."), + partial_update=extend_schema(tags=["chat"], summary="Update a chat", description="Owner, moderator, or superuser only."), + destroy=extend_schema(tags=["chat"], summary="Delete a chat", description="Soft-deletes. Owner or superuser only."), +) +class ChatViewSet(viewsets.ModelViewSet): + serializer_class = ChatSerializer + filterset_fields = ['chat_type', 'hub'] + search_fields = ['name'] + ordering_fields = ['created_at', 'name'] + ordering = ['-created_at'] -def leave_chat(request, chat_id: int): - return None + def get_permissions(self): + if self.action in ('update', 'partial_update', 'destroy', + 'add_member', 'remove_member', 'add_moderator', 'remove_moderator'): + return [CanManageChat()] + return [IsChatMember()] -def edit_chat(request, chat_object): - return None + def get_queryset(self): + user = self.request.user + if user.is_superuser: + return Chat.objects.all() + return Chat.objects.filter(members=user) -def get_chat_messages(request, chat_id: int, limit: int = 50, offset: int = 0): - return None \ No newline at end of file + def perform_create(self, serializer): + serializer.save(owner=self.request.user) + + # ------------------------------------------------------------------ + # Member management + # ------------------------------------------------------------------ + + @extend_schema( + tags=["chat"], + summary="Add a member", + description="Owner, moderator, or superuser only.", + request=ChatMemberSerializer, + responses={200: ChatSerializer}, + ) + @action(detail=True, methods=['post'], url_path='members/add') + def add_member(self, request, pk=None): + chat = self.get_object() + ser = ChatMemberSerializer(data=request.data) + ser.is_valid(raise_exception=True) + User = get_user_model() + try: + user = User.objects.get(pk=ser.validated_data['user_id']) + except User.DoesNotExist: + return Response({'detail': 'User not found.'}, status=status.HTTP_404_NOT_FOUND) + chat.members.add(user) + return Response(ChatSerializer(chat, context={'request': request}).data) + + @extend_schema( + tags=["chat"], + summary="Remove a member", + description="Owner, moderator, or superuser only.", + request=ChatMemberSerializer, + responses={204: None}, + ) + @action(detail=True, methods=['post'], url_path='members/remove') + def remove_member(self, request, pk=None): + chat = self.get_object() + ser = ChatMemberSerializer(data=request.data) + ser.is_valid(raise_exception=True) + User = get_user_model() + try: + user = User.objects.get(pk=ser.validated_data['user_id']) + except User.DoesNotExist: + return Response({'detail': 'User not found.'}, status=status.HTTP_404_NOT_FOUND) + chat.members.remove(user) + return Response(status=status.HTTP_204_NO_CONTENT) + + @extend_schema( + tags=["chat"], + summary="Add a moderator", + description="Owner or superuser only.", + request=ChatMemberSerializer, + responses={200: ChatSerializer}, + ) + @action(detail=True, methods=['post'], url_path='moderators/add') + def add_moderator(self, request, pk=None): + chat = self.get_object() + if not (chat.owner == request.user or request.user.is_superuser): + raise PermissionDenied('Only the chat owner or superuser can add moderators.') + ser = ChatMemberSerializer(data=request.data) + ser.is_valid(raise_exception=True) + User = get_user_model() + try: + user = User.objects.get(pk=ser.validated_data['user_id']) + except User.DoesNotExist: + return Response({'detail': 'User not found.'}, status=status.HTTP_404_NOT_FOUND) + chat.moderators.add(user) + return Response(ChatSerializer(chat, context={'request': request}).data) + + @extend_schema( + tags=["chat"], + summary="Remove a moderator", + description="Owner or superuser only.", + request=ChatMemberSerializer, + responses={204: None}, + ) + @action(detail=True, methods=['post'], url_path='moderators/remove') + def remove_moderator(self, request, pk=None): + chat = self.get_object() + if not (chat.owner == request.user or request.user.is_superuser): + raise PermissionDenied('Only the chat owner or superuser can remove moderators.') + ser = ChatMemberSerializer(data=request.data) + ser.is_valid(raise_exception=True) + User = get_user_model() + try: + user = User.objects.get(pk=ser.validated_data['user_id']) + except User.DoesNotExist: + return Response({'detail': 'User not found.'}, status=status.HTTP_404_NOT_FOUND) + chat.moderators.remove(user) + return Response(status=status.HTTP_204_NO_CONTENT) + + +# --------------------------------------------------------------------------- +# Message ViewSet (read + edit + delete only — creation is via WebSocket) +# --------------------------------------------------------------------------- + +@extend_schema_view( + list=extend_schema(tags=["chat"], summary="List messages", description="Filter by `?chat=`. Chat members only."), + retrieve=extend_schema(tags=["chat"], summary="Retrieve a message"), + partial_update=extend_schema(tags=["chat"], summary="Edit a message", description="Sender only. Broadcasts `edit.message` to the chat channel group in real time."), + update=extend_schema(tags=["chat"], summary="Replace a message", description="Sender only."), + destroy=extend_schema(tags=["chat"], summary="Delete a message", description="Sender, chat owner, moderator, or superuser. Broadcasts `delete.message` to the chat channel group in real time."), +) +class MessageViewSet(viewsets.ModelViewSet): + serializer_class = MessageSerializer + filterset_fields = ['chat', 'sender', 'reply_to'] + search_fields = ['content'] + ordering_fields = ['created_at'] + ordering = ['created_at'] + # Standard create is disabled — use POST /messages/send which handles files + WS broadcast + http_method_names = ['get', 'patch', 'put', 'delete', 'post', 'head', 'options'] + + def get_permissions(self): + if self.action == 'destroy': + return [CanDeleteMessage()] + if self.action in ('update', 'partial_update'): + return [IsMessageSenderOnly()] + if self.action == 'send': + return [IsAuthenticated()] + # list, retrieve — any authenticated user (membership enforced by get_queryset) + return [IsAuthenticated()] + + def get_queryset(self): + user = self.request.user + qs = Message.objects.select_related('sender', 'chat').prefetch_related('media_files', 'reactions') + if user.is_superuser: + return qs + # Only messages from chats the user is a member of + return qs.filter(chat__members=user) + + def perform_update(self, serializer): + message = serializer.instance + new_content = serializer.validated_data.get('content', message.content) + changed = message.edit_content(new_content) + if changed: + _broadcast(message.chat_id, { + 'type': 'edit.message', + 'message_id': message.id, + 'content': message.content, + 'is_edited': True, + }) + + def perform_destroy(self, instance): + chat_id = instance.chat_id + message_id = instance.id + instance.delete() + _broadcast(chat_id, { + 'type': 'delete.message', + 'message_id': message_id, + }) + + @extend_schema( + tags=["chat"], + summary="Send a message", + description=( + "Creates a message with optional file attachments and broadcasts it to all " + "connected WebSocket clients in the chat. Use this for all messages that include " + "files, and optionally for text-only messages too. Chat members only." + ), + request=MessageSendSerializer, + responses={201: MessageSerializer}, + ) + @action(detail=False, methods=['post'], url_path='send') + def send(self, request): + ser = MessageSendSerializer(data=request.data) + ser.is_valid(raise_exception=True) + + chat = ser.validated_data['chat'] + if not request.user.is_superuser and not chat.members.filter(pk=request.user.pk).exists(): + raise PermissionDenied('You are not a member of this chat.') + + message = Message.objects.create( + chat=chat, + sender=request.user, + content=ser.validated_data.get('content', ''), + reply_to=ser.validated_data.get('reply_to'), + ) + + for f in request.FILES.getlist('files'): + ct = getattr(f, 'content_type', '') + if ct.startswith('image/'): + mt = 'IMAGE' + elif ct.startswith('video/'): + mt = 'VIDEO' + else: + mt = 'FILE' + MessageFile.objects.create(message=message, file=f, media_type=mt) + + _broadcast(chat.id, { + 'type': 'chat.message', + 'message_id': message.id, + 'message': message.content, + 'sender': request.user.username, + 'has_files': message.media_files.exists(), + }) + + return Response( + MessageSerializer(message, context={'request': request}).data, + status=status.HTTP_201_CREATED, + ) diff --git a/backend/social/pages/__init__.py b/backend/social/hubs/__init__.py similarity index 100% rename from backend/social/pages/__init__.py rename to backend/social/hubs/__init__.py diff --git a/backend/social/pages/admin.py b/backend/social/hubs/admin.py similarity index 100% rename from backend/social/pages/admin.py rename to backend/social/hubs/admin.py diff --git a/backend/social/pages/apps.py b/backend/social/hubs/apps.py similarity index 56% rename from backend/social/pages/apps.py rename to backend/social/hubs/apps.py index cdd024b..775ea58 100644 --- a/backend/social/pages/apps.py +++ b/backend/social/hubs/apps.py @@ -1,6 +1,8 @@ from django.apps import AppConfig -class PagesConfig(AppConfig): +class HubsConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' - name = 'pages' + name = 'social.hubs' + + label = "hubs" \ No newline at end of file diff --git a/backend/social/pages/migrations/__init__.py b/backend/social/hubs/filters.py similarity index 100% rename from backend/social/pages/migrations/__init__.py rename to backend/social/hubs/filters.py diff --git a/backend/social/hubs/migrations/0001_initial.py b/backend/social/hubs/migrations/0001_initial.py new file mode 100644 index 0000000..44ac303 --- /dev/null +++ b/backend/social/hubs/migrations/0001_initial.py @@ -0,0 +1,73 @@ +# Generated by Django 5.2.7 on 2026-04-19 21:51 + +import django.db.models.deletion +import vontor_cz.custom_fields +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Hub', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('is_deleted', models.BooleanField(default=False)), + ('deleted_at', models.DateTimeField(blank=True, null=True)), + ('name', models.CharField(max_length=255, unique=True)), + ('description', models.TextField(blank=True, null=True)), + ('icon', vontor_cz.custom_fields.WebPImageField(blank=True, null=True, upload_to='hub_icons/')), + ('banner', vontor_cz.custom_fields.WebPImageField(blank=True, null=True, upload_to='hub_banners/')), + ('is_public', models.BooleanField(default=True)), + ('transfer_token', models.UUIDField(blank=True, null=True, unique=True)), + ('members', models.ManyToManyField(blank=True, related_name='hubs', to=settings.AUTH_USER_MODEL)), + ('owner', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='owned_hubs', to=settings.AUTH_USER_MODEL)), + ('transfer_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='pending_hub_transfers', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='Tags', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('is_deleted', models.BooleanField(default=False)), + ('deleted_at', models.DateTimeField(blank=True, null=True)), + ('name', models.CharField(max_length=50)), + ('description', models.TextField(blank=True, null=True)), + ('color', models.CharField(default='#000000', max_length=7)), + ('hub', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tags', to='hubs.hub')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='HubPermission', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('is_deleted', models.BooleanField(default=False)), + ('deleted_at', models.DateTimeField(blank=True, null=True)), + ('changing_name', models.BooleanField(default=False)), + ('changing_description', models.BooleanField(default=False)), + ('changing_icon', models.BooleanField(default=False)), + ('changing_banner', models.BooleanField(default=False)), + ('managing_members', models.BooleanField(default=False)), + ('managing_posts', models.BooleanField(default=False)), + ('managing_chats', models.BooleanField(default=False)), + ('hub', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='moderators', to='hubs.hub')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'unique_together': {('hub', 'user')}, + }, + ), + ] diff --git a/frontend/src/components/auth/LogOut.tsx b/backend/social/hubs/migrations/__init__.py similarity index 100% rename from frontend/src/components/auth/LogOut.tsx rename to backend/social/hubs/migrations/__init__.py diff --git a/backend/social/pages/models.py b/backend/social/hubs/models.py similarity index 81% rename from backend/social/pages/models.py rename to backend/social/hubs/models.py index b6f8e1c..d43c924 100644 --- a/backend/social/pages/models.py +++ b/backend/social/hubs/models.py @@ -1,9 +1,12 @@ +from turtle import color import uuid from django.db import models from django.conf import settings from vontor_cz.custom_fields import WebPImageField from vontor_cz.models import SoftDeleteModel +from django.core.exceptions import ValidationError + # Create your models here. @@ -57,13 +60,16 @@ class Hub(SoftDeleteModel): self.save(update_fields=['owner', 'transfer_to', 'transfer_token']) return True - return raiseExceptions("Invalid transfer token or user does not match transfer_to field") + raise ValidationError("Invalid transfer token or user does not match transfer_to field") def cancel_transfer(self): self.transfer_to = None self.transfer_token = None self.save(update_fields=['transfer_to', 'transfer_token']) + def get_all_tags(self): + return Tags.objects.filter(hub_id=self.id) + def __str__(self): return self.name @@ -84,4 +90,13 @@ class HubPermission(SoftDeleteModel): unique_together = ('hub', 'user') def __str__(self): - return f"{self.user} moderates {self.hub}" \ No newline at end of file + return f"{self.user} moderates {self.hub}" + + +class Tags(SoftDeleteModel): + hub = models.ForeignKey(Hub, on_delete=models.CASCADE, related_name='tags') + name = models.CharField(max_length=50) + + description = models.TextField(blank=True, null=True) + + color = models.CharField(max_length=7, default='#000000') # Hex color code \ No newline at end of file diff --git a/backend/social/hubs/permissions.py b/backend/social/hubs/permissions.py new file mode 100644 index 0000000..7b8d3dc --- /dev/null +++ b/backend/social/hubs/permissions.py @@ -0,0 +1,53 @@ +from rest_framework.permissions import IsAuthenticated, SAFE_METHODS + + +class CanEditHub(IsAuthenticated): + """ + Hub object-level permission. + - View-level: must be authenticated (inherited). + - Object-level unsafe: hub owner, superuser, or any moderator + (field-level restrictions enforced in HubSerializer). + """ + + def has_object_permission(self, request, view, obj): + if request.method in SAFE_METHODS: + return True + + user = request.user + if obj.owner == user or user.is_superuser: + return True + + return obj.moderators.filter(user=user).exists() + + +class IsHubOwnerOrSuperuser(IsAuthenticated): + """ + For objects with a .hub FK (e.g. HubPermission). + - View-level: must be authenticated (inherited). + - Object-level unsafe: hub owner or superuser only. + """ + + def has_object_permission(self, request, view, obj): + if request.method in SAFE_METHODS: + return True + + return request.user.is_superuser or obj.hub.owner == request.user + + +class CanManageHubTags(IsAuthenticated): + """ + For Tags (navigates via obj.hub). + - View-level: must be authenticated (inherited). + - Object-level unsafe: hub owner, superuser, or moderator with managing_posts=True. + """ + + def has_object_permission(self, request, view, obj): + if request.method in SAFE_METHODS: + return True + + user = request.user + hub = obj.hub + if user.is_superuser or hub.owner == user: + return True + + return hub.moderators.filter(user=user, managing_posts=True).exists() diff --git a/backend/social/hubs/serializers.py b/backend/social/hubs/serializers.py new file mode 100644 index 0000000..c5dd3f6 --- /dev/null +++ b/backend/social/hubs/serializers.py @@ -0,0 +1,81 @@ +from rest_framework import serializers +from .models import Hub, HubPermission, Tags + + +# Maps Hub fields -> the HubPermission flag that allows changing them +FIELD_PERMISSION_MAP = { + 'name': 'changing_name', + 'description': 'changing_description', + 'icon': 'changing_icon', + 'banner': 'changing_banner', + 'members': 'managing_members', +} + + +class TransferInitSerializer(serializers.Serializer): + user_id = serializers.IntegerField(help_text="PK of the user to transfer ownership to.") + + +class TransferVerifySerializer(serializers.Serializer): + token = serializers.UUIDField(help_text="Transfer token sent to the new owner.") + + +class TagsSerializer(serializers.ModelSerializer): + class Meta: + model = Tags + fields = ['id', 'name', 'description', 'color'] + + +class HubPermissionSerializer(serializers.ModelSerializer): + class Meta: + model = HubPermission + fields = [ + 'id', 'user', + 'changing_name', 'changing_description', 'changing_icon', 'changing_banner', + 'managing_members', 'managing_posts', 'managing_chats', + ] + + +class HubSerializer(serializers.ModelSerializer): + tags = TagsSerializer(many=True, read_only=True) + moderators = HubPermissionSerializer(many=True, read_only=True) + + class Meta: + model = Hub + fields = [ + 'id', 'name', 'description', 'owner', + 'icon', 'banner', 'members', 'is_public', + 'tags', 'moderators', + ] + read_only_fields = ['owner'] + + def validate(self, attrs): + hub = self.instance # None on create — no restrictions needed + if hub is None: + return attrs + + request = self.context.get('request') + if request is None: + return attrs + + user = request.user + + # Owner and superuser bypass field-level checks + if hub.owner == user or user.is_superuser: + return attrs + + # Moderator: enforce per-field permission flags + try: + perm = hub.moderators.get(user=user) + + except HubPermission.DoesNotExist: + raise serializers.ValidationError('You do not have permission to edit this hub.') + + for field in attrs: + flag = FIELD_PERMISSION_MAP.get(field) + if flag and not getattr(perm, flag, False): + raise serializers.ValidationError( + {field: 'You do not have permission to change this field.'} + ) + + return attrs diff --git a/backend/social/pages/tests.py b/backend/social/hubs/tests.py similarity index 100% rename from backend/social/pages/tests.py rename to backend/social/hubs/tests.py diff --git a/backend/social/hubs/urls.py b/backend/social/hubs/urls.py new file mode 100644 index 0000000..b86e968 --- /dev/null +++ b/backend/social/hubs/urls.py @@ -0,0 +1,9 @@ +from rest_framework.routers import DefaultRouter +from .views import HubViewSet, HubPermissionViewSet, TagsViewSet + +router = DefaultRouter() +router.register('', HubViewSet, basename='hub') +router.register('moderators', HubPermissionViewSet, basename='hub-moderator') +router.register('tags', TagsViewSet, basename='hub-tag') + +urlpatterns = router.urls diff --git a/backend/social/hubs/views.py b/backend/social/hubs/views.py new file mode 100644 index 0000000..dc8cfbf --- /dev/null +++ b/backend/social/hubs/views.py @@ -0,0 +1,294 @@ +from django.conf import settings +from django.contrib.auth import get_user_model +from rest_framework import status, viewsets +from rest_framework.decorators import action +from rest_framework.exceptions import PermissionDenied +from rest_framework.response import Response +from drf_spectacular.utils import extend_schema, extend_schema_view + +from .models import Hub, HubPermission, Tags +from .permissions import CanEditHub, CanManageHubTags, IsHubOwnerOrSuperuser +from .serializers import HubPermissionSerializer, HubSerializer, TagsSerializer, TransferInitSerializer, TransferVerifySerializer + + +# --------------------------------------------------------------------------- +# Hub ViewSet +# --------------------------------------------------------------------------- + +@extend_schema_view( + list=extend_schema( + tags=["hubs"], + summary="List hubs", + description=( + "Returns all public hubs. Authenticated users also see hubs they are members of. " + "Admins see all hubs regardless of visibility." + ), + ), + retrieve=extend_schema( + tags=["hubs"], + summary="Retrieve a hub", + ), + create=extend_schema( + tags=["hubs"], + summary="Create a hub", + description="Creates a new hub. The requesting user is automatically set as the owner.", + ), + update=extend_schema( + tags=["hubs"], + summary="Replace a hub", + description=( + "Full update. Restricted to the owner, site admin, or moderators " + "(per-field permission flags are enforced)." + ), + ), + partial_update=extend_schema( + tags=["hubs"], + summary="Update a hub", + description=( + "Partial update. Restricted to the owner, site admin, or moderators " + "(per-field permission flags are enforced)." + ), + ), + destroy=extend_schema( + tags=["hubs"], + summary="Delete a hub", + description="Soft-deletes the hub. Owner or admin only.", + ), +) +class HubViewSet(viewsets.ModelViewSet): + serializer_class = HubSerializer + permission_classes = [CanEditHub] + filterset_fields = ['is_public', 'owner'] + search_fields = ['name', 'description'] + ordering_fields = ['name'] + ordering = ['name'] + + def get_queryset(self): + user = self.request.user + if user.is_superuser: + return Hub.objects.all() + return ( + Hub.objects.filter(is_public=True) | Hub.objects.filter(members=user) + ).distinct() + + def perform_create(self, serializer): + serializer.save(owner=self.request.user) + + # ------------------------------------------------------------------ + # Membership actions + # ------------------------------------------------------------------ + + @extend_schema( + tags=["hubs"], + summary="Join a hub", + description="Adds the authenticated user as a member. Private hubs reject this request.", + request=None, + responses={200: HubSerializer}, + ) + @action(detail=True, methods=['post']) + def join(self, request, pk=None): + hub = self.get_object() + if not hub.is_public and not (hub.owner == request.user or request.user.is_superuser): + return Response( + {'detail': 'This hub is private.'}, + status=status.HTTP_403_FORBIDDEN, + ) + hub.members.add(request.user) + return Response(HubSerializer(hub, context={'request': request}).data) + + @extend_schema( + tags=["hubs"], + summary="Leave a hub", + description="Removes the authenticated user from the hub's members.", + request=None, + responses={204: None}, + ) + @action(detail=True, methods=['post']) + def leave(self, request, pk=None): + hub = self.get_object() + hub.members.remove(request.user) + return Response(status=status.HTTP_204_NO_CONTENT) + + # ------------------------------------------------------------------ + # Ownership transfer actions + # ------------------------------------------------------------------ + + @extend_schema( + tags=["hubs"], + summary="Initiate ownership transfer", + description=( + "Generates a transfer token and records the intended new owner. " + "Only the current hub owner can initiate. The recipient must call " + "`transfer/verify` with the token to complete the transfer." + ), + request=TransferInitSerializer, + responses={200: TransferInitSerializer}, + ) + @action(detail=True, methods=['post'], url_path='transfer/initiate') + def initiate_transfer(self, request, pk=None): + hub = self.get_object() + if hub.owner != request.user: + return Response( + {'detail': 'Only the hub owner can initiate a transfer.'}, + status=status.HTTP_403_FORBIDDEN, + ) + ser = TransferInitSerializer(data=request.data) + ser.is_valid(raise_exception=True) + + User = get_user_model() + try: + new_owner = User.objects.get(pk=ser.validated_data['user_id']) + except User.DoesNotExist: + return Response({'detail': 'User not found.'}, status=status.HTTP_404_NOT_FOUND) + + hub.create_transfer(new_owner) + transfer_url = f"{settings.FRONTEND_URL}/hubs/{hub.pk}/transfer/verify?token={hub.transfer_token}" + return Response({'detail': f'Transfer initiated to {new_owner}.', 'transfer_url': transfer_url}) + + @extend_schema( + tags=["hubs"], + summary="Verify ownership transfer", + description=( + "Completes the transfer when the intended new owner supplies the correct token. " + "Must be called by the transfer recipient." + ), + request=TransferVerifySerializer, + responses={200: HubSerializer}, + ) + @action(detail=True, methods=['post'], url_path='transfer/verify') + def verify_transfer(self, request, pk=None): + hub = self.get_object() + ser = TransferVerifySerializer(data=request.data) + ser.is_valid(raise_exception=True) + try: + hub.verify_transfer(ser.validated_data['token'], request.user) + except Exception as exc: + return Response({'detail': str(exc)}, status=status.HTTP_400_BAD_REQUEST) + return Response(HubSerializer(hub, context={'request': request}).data) + + @extend_schema( + tags=["hubs"], + summary="Cancel ownership transfer", + description="Cancels a pending transfer, clearing the token and recipient. Owner or admin only.", + request=None, + responses={200: None}, + ) + @action(detail=True, methods=['post'], url_path='transfer/cancel') + def cancel_transfer(self, request, pk=None): + hub = self.get_object() + if not (hub.owner == request.user or request.user.is_superuser): + raise PermissionDenied('Only the hub owner or superuser can cancel a transfer.') + hub.cancel_transfer() + return Response({'detail': 'Transfer cancelled.'}) + + +# --------------------------------------------------------------------------- +# Hub Moderator (HubPermission) ViewSet +# --------------------------------------------------------------------------- + +@extend_schema_view( + list=extend_schema( + tags=["hubs"], + summary="List hub moderators", + description="Returns all moderators and their permission flags for a given hub. Pass `hub` as a query param.", + ), + retrieve=extend_schema( + tags=["hubs"], + summary="Retrieve a hub moderator", + ), + create=extend_schema( + tags=["hubs"], + summary="Add a hub moderator", + description="Grants a user moderator permissions on the hub. Owner or admin only.", + ), + partial_update=extend_schema( + tags=["hubs"], + summary="Update moderator permissions", + description="Updates one or more permission flags for a moderator. Owner or admin only.", + ), + update=extend_schema( + tags=["hubs"], + summary="Replace moderator permissions", + description="Replaces all permission flags for a moderator. Owner or admin only.", + ), + destroy=extend_schema( + tags=["hubs"], + summary="Remove a hub moderator", + description="Revokes all moderator permissions from a user. Owner or admin only.", + ), +) +class HubPermissionViewSet(viewsets.ModelViewSet): + serializer_class = HubPermissionSerializer + permission_classes = [IsHubOwnerOrSuperuser] + filterset_fields = ['user', 'changing_name', 'changing_description', 'changing_icon', 'changing_banner', 'managing_members', 'managing_posts', 'managing_chats'] + + def _get_hub(self): + hub_id = self.kwargs.get('hub_pk') or self.request.query_params.get('hub') + return Hub.objects.get(pk=hub_id) + + def get_queryset(self): + return HubPermission.objects.filter(hub=self._get_hub()) + + def perform_create(self, serializer): + hub = self._get_hub() + if not (hub.owner == self.request.user or self.request.user.is_superuser): + raise PermissionDenied('Only the hub owner or superuser can add moderators.') + serializer.save(hub=hub) + + +# --------------------------------------------------------------------------- +# Tags ViewSet +# --------------------------------------------------------------------------- + +@extend_schema_view( + list=extend_schema( + tags=["hubs"], + summary="List hub tags", + description="Returns all tags for a given hub. Pass `hub` as a query param.", + ), + retrieve=extend_schema( + tags=["hubs"], + summary="Retrieve a hub tag", + ), + create=extend_schema( + tags=["hubs"], + summary="Create a hub tag", + description="Adds a tag to the hub. Owner, site admin, or moderator with `managing_posts`.", + ), + partial_update=extend_schema( + tags=["hubs"], + summary="Update a hub tag", + description="Updates a tag on the hub. Owner, site admin, or moderator with `managing_posts`.", + ), + update=extend_schema( + tags=["hubs"], + summary="Replace a hub tag", + description="Replaces a tag on the hub. Owner, site admin, or moderator with `managing_posts`.", + ), + destroy=extend_schema( + tags=["hubs"], + summary="Delete a hub tag", + description="Removes a tag from the hub. Owner, site admin, or moderator with `managing_posts`.", + ), +) +class TagsViewSet(viewsets.ModelViewSet): + serializer_class = TagsSerializer + permission_classes = [CanManageHubTags] + search_fields = ['name', 'description'] + ordering_fields = ['name'] + ordering = ['name'] + + def _get_hub(self): + hub_id = self.kwargs.get('hub_pk') or self.request.query_params.get('hub') + return Hub.objects.get(pk=hub_id) + + def get_queryset(self): + return Tags.objects.filter(hub=self._get_hub()) + + def perform_create(self, serializer): + hub = self._get_hub() + user = self.request.user + if not (user.is_superuser or hub.owner == user or hub.moderators.filter(user=user, managing_posts=True).exists()): + raise PermissionDenied('Only the hub owner, superuser, or moderator with managing_posts can create tags.') + serializer.save(hub=hub) + diff --git a/backend/social/nápady_nebo_chybějicí.md b/backend/social/nápady_nebo_chybějicí.md deleted file mode 100644 index 68b4bf7..0000000 --- a/backend/social/nápady_nebo_chybějicí.md +++ /dev/null @@ -1,6 +0,0 @@ -# Social Feature Ideas - -## Posts - -## Users -- ~~User blocking — affects message/post visibility across all social features~~ ✓ done (`UserBlock` in account, `has_blocked`/`is_blocked_by` helpers on CustomUser) diff --git a/backend/social/pages/views.py b/backend/social/pages/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/backend/social/pages/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/backend/social/posts/apps.py b/backend/social/posts/apps.py index b18ed0d..db38eb8 100644 --- a/backend/social/posts/apps.py +++ b/backend/social/posts/apps.py @@ -3,4 +3,6 @@ from django.apps import AppConfig class PostsConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' - name = 'posts' + name = 'social.posts' + + label = "posts" diff --git a/backend/social/posts/migrations/0001_initial.py b/backend/social/posts/migrations/0001_initial.py new file mode 100644 index 0000000..1530b76 --- /dev/null +++ b/backend/social/posts/migrations/0001_initial.py @@ -0,0 +1,66 @@ +# Generated by Django 5.2.7 on 2026-04-19 21:51 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('hubs', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Post', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('is_deleted', models.BooleanField(default=False)), + ('deleted_at', models.DateTimeField(blank=True, null=True)), + ('content', models.TextField(blank=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('updated_at', models.DateTimeField(auto_now=True)), + ('author', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='posts', to=settings.AUTH_USER_MODEL)), + ('hub', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='hubs.hub')), + ('reply_to', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='replies', to='posts.post')), + ('tags', models.ManyToManyField(blank=True, related_name='posts', to='hubs.tags')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='PostContent', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('is_deleted', models.BooleanField(default=False)), + ('deleted_at', models.DateTimeField(blank=True, null=True)), + ('mime_type', models.CharField(max_length=100)), + ('file', models.FileField(blank=True, null=True, upload_to='post_contents/')), + ('alt_text', models.TextField(blank=True, null=True)), + ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='contents', to='posts.post')), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='PostVote', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('is_deleted', models.BooleanField(default=False)), + ('deleted_at', models.DateTimeField(blank=True, null=True)), + ('vote', models.SmallIntegerField(choices=[(1, 'Upvote'), (-1, 'Downvote')])), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('post', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='votes', to='posts.post')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'unique_together': {('post', 'user')}, + }, + ), + ] diff --git a/backend/social/posts/models.py b/backend/social/posts/models.py index da1c759..a340b5e 100644 --- a/backend/social/posts/models.py +++ b/backend/social/posts/models.py @@ -1,9 +1,22 @@ +from venv import logger + from django.db import models from django.conf import settings from vontor_cz.models import SoftDeleteModel -import magic +from logging import Logger + +logger = Logger(__name__) + +try: + import magic + mime = magic.Magic(mime=True) + +except ImportError: + logger.warning("python-magic library not found. PostContent MIME type detection will not work.") + magic = None + mime = None + -mime = magic.Magic(mime=True) class Post(SoftDeleteModel): @@ -20,12 +33,18 @@ class Post(SoftDeleteModel): ) hub = models.ForeignKey( - 'pages.Hub', + 'hubs.Hub', on_delete=models.CASCADE, null=True, blank=True ) + tags = models.ManyToManyField( + 'hubs.Tags', + related_name='posts', + blank=True, + ) + reply_to = models.ForeignKey( 'self', null=True, diff --git a/backend/social/posts/permissions.py b/backend/social/posts/permissions.py new file mode 100644 index 0000000..f36a211 --- /dev/null +++ b/backend/social/posts/permissions.py @@ -0,0 +1,41 @@ +from rest_framework.permissions import IsAuthenticated, SAFE_METHODS + + +class IsPostAuthorOnly(IsAuthenticated): + """ + View-level: must be authenticated (inherited). + Object-level unsafe: post author only. + Used for update / partial_update. + """ + + def has_object_permission(self, request, view, obj): + if request.method in SAFE_METHODS: + return True + + return obj.author == request.user + + +class CanDeletePost(IsAuthenticated): + """ + View-level: must be authenticated (inherited). + Object-level DELETE: + - Post author + - Superuser (anywhere) + - Hub owner (if post belongs to a hub) + - Hub moderator with managing_posts=True (if post belongs to a hub) + """ + + def has_object_permission(self, request, view, obj): + if request.method in SAFE_METHODS: + return True + user = request.user + if obj.author == user or user.is_superuser: + return True + + hub = obj.hub + if hub: + if hub.owner == user: + return True + + return hub.moderators.filter(user=user, managing_posts=True).exists() + return False diff --git a/backend/social/posts/serializers.py b/backend/social/posts/serializers.py new file mode 100644 index 0000000..ba1dc36 --- /dev/null +++ b/backend/social/posts/serializers.py @@ -0,0 +1,31 @@ +from rest_framework import serializers +from .models import Post, PostContent, PostVote +from social.hubs.serializers import TagsSerializer + + +class PostContentSerializer(serializers.ModelSerializer): + class Meta: + model = PostContent + fields = ['id', 'mime_type', 'file', 'alt_text'] + read_only_fields = ['mime_type'] + + +class PostSerializer(serializers.ModelSerializer): + contents = PostContentSerializer(many=True, read_only=True) + tags = TagsSerializer(many=True, read_only=True) + + class Meta: + model = Post + fields = ['id', 'content', 'created_at', 'updated_at', 'author', 'hub', 'reply_to', 'tags', 'contents'] + read_only_fields = ['author', 'created_at', 'updated_at'] + + +class PostVoteSerializer(serializers.ModelSerializer): + class Meta: + model = PostVote + fields = ['id', 'post', 'user', 'vote', 'created_at'] + read_only_fields = ['user', 'created_at'] + + +class TagAttachSerializer(serializers.Serializer): + tag_id = serializers.IntegerField(help_text="PK of the hub tag to attach or detach.") diff --git a/backend/social/posts/urls.py b/backend/social/posts/urls.py new file mode 100644 index 0000000..f14f18b --- /dev/null +++ b/backend/social/posts/urls.py @@ -0,0 +1,7 @@ +from rest_framework.routers import DefaultRouter +from .views import PostViewSet + +router = DefaultRouter() +router.register('', PostViewSet, basename='post') + +urlpatterns = router.urls diff --git a/backend/social/posts/views.py b/backend/social/posts/views.py index 91ea44a..5167f5b 100644 --- a/backend/social/posts/views.py +++ b/backend/social/posts/views.py @@ -1,3 +1,157 @@ -from django.shortcuts import render +from rest_framework import status, viewsets +from rest_framework.decorators import action +from rest_framework.exceptions import PermissionDenied, ValidationError +from rest_framework.response import Response +from drf_spectacular.utils import extend_schema, extend_schema_view + +from rest_framework.permissions import IsAuthenticated +from social.hubs.models import Tags +from .models import Post, PostVote +from .permissions import CanDeletePost, IsPostAuthorOnly +from .serializers import PostSerializer, PostVoteSerializer, TagAttachSerializer + + +# --------------------------------------------------------------------------- +# Post ViewSet +# --------------------------------------------------------------------------- + +@extend_schema_view( + list=extend_schema( + tags=["posts"], + summary="List posts", + description="Returns posts. Filter by `hub` query param to scope to a hub.", + ), + retrieve=extend_schema( + tags=["posts"], + summary="Retrieve a post", + ), + create=extend_schema( + tags=["posts"], + summary="Create a post", + description="Creates a post. The requesting user is set as the author automatically.", + ), + update=extend_schema( + tags=["posts"], + summary="Replace a post", + description="Full update. Author only.", + ), + partial_update=extend_schema( + tags=["posts"], + summary="Update a post", + description="Partial update. Author only.", + ), + destroy=extend_schema( + tags=["posts"], + summary="Delete a post", + description="Soft-deletes the post. Author, superuser, hub owner, or hub moderator with `managing_posts`.", + ), +) +class PostViewSet(viewsets.ModelViewSet): + serializer_class = PostSerializer + filterset_fields = ['hub', 'author', 'reply_to'] + search_fields = ['content'] + ordering_fields = ['created_at'] + ordering = ['-created_at'] + + def get_permissions(self): + if self.action == 'destroy': + return [CanDeletePost()] + if self.action in ('update', 'partial_update'): + return [IsPostAuthorOnly()] + return [IsAuthenticated()] + + def get_queryset(self): + qs = Post.objects.select_related('author', 'hub').prefetch_related('tags', 'contents') + hub_id = self.request.query_params.get('hub') + if hub_id: + qs = qs.filter(hub_id=hub_id) + return qs + + def perform_create(self, serializer): + serializer.save(author=self.request.user) + + # ------------------------------------------------------------------ + # Tag attachment actions + # ------------------------------------------------------------------ + + @extend_schema( + tags=["posts"], + summary="Attach a tag to a post", + description=( + "Attaches an existing hub tag to the post. " + "The tag must belong to the same hub as the post. " + "Any authenticated hub member can attach tags." + ), + request=TagAttachSerializer, + responses={200: PostSerializer}, + ) + @action(detail=True, methods=['post'], url_path='tags/attach') + def attach_tag(self, request, pk=None): + post = self.get_object() + ser = TagAttachSerializer(data=request.data) + ser.is_valid(raise_exception=True) + + try: + tag = Tags.objects.get(pk=ser.validated_data['tag_id'], hub=post.hub) + except Tags.DoesNotExist: + raise ValidationError({'tag_id': 'Tag not found or does not belong to this post\'s hub.'}) + + post.tags.add(tag) + return Response(PostSerializer(post, context={'request': request}).data) + + @extend_schema( + tags=["posts"], + summary="Detach a tag from a post", + description=( + "Removes a tag from the post. " + "Post author, hub owner, site admin, or moderator with `managing_posts` can detach." + ), + request=TagAttachSerializer, + responses={200: PostSerializer}, + ) + @action(detail=True, methods=['post'], url_path='tags/detach') + def detach_tag(self, request, pk=None): + post = self.get_object() + ser = TagAttachSerializer(data=request.data) + ser.is_valid(raise_exception=True) + + user = request.user + hub = post.hub + is_author = post.author == user + is_hub_owner = hub and hub.owner == user + is_moderator = hub and hub.moderators.filter(user=user, managing_posts=True).exists() + + if not (is_author or user.is_superuser or is_hub_owner or is_moderator): + raise PermissionDenied('Only the post author, hub owner, admin, or moderator with managing_posts can detach tags.') + + try: + tag = Tags.objects.get(pk=ser.validated_data['tag_id'], hub=post.hub) + except Tags.DoesNotExist: + raise ValidationError({'tag_id': 'Tag not found or does not belong to this post\'s hub.'}) + + post.tags.remove(tag) + return Response(PostSerializer(post, context={'request': request}).data) + + # ------------------------------------------------------------------ + # Vote action + # ------------------------------------------------------------------ + + @extend_schema( + tags=["posts"], + summary="Vote on a post", + description="Cast or update a vote (`1` = upvote, `-1` = downvote) on a post.", + request=PostVoteSerializer, + responses={200: PostVoteSerializer}, + ) + @action(detail=True, methods=['post']) + def vote(self, request, pk=None): + post = self.get_object() + ser = PostVoteSerializer(data={**request.data, 'post': post.pk, 'user': request.user.pk}) + ser.is_valid(raise_exception=True) + vote_obj, _ = PostVote.objects.update_or_create( + post=post, + user=request.user, + defaults={'vote': ser.validated_data['vote']}, + ) + return Response(PostVoteSerializer(vote_obj).data) -# Create your views here. diff --git a/backend/thirdparty/downloader/migrations/0002_alter_downloaderrecord_options_and_more.py b/backend/thirdparty/downloader/migrations/0002_alter_downloaderrecord_options_and_more.py new file mode 100644 index 0000000..c5d0971 --- /dev/null +++ b/backend/thirdparty/downloader/migrations/0002_alter_downloaderrecord_options_and_more.py @@ -0,0 +1,70 @@ +# Generated by Django 5.2.7 on 2026-04-19 21:51 + +import django.db.models.deletion +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('downloader', '0001_initial'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.AlterModelOptions( + name='downloaderrecord', + options={'ordering': ['-download_time']}, + ), + migrations.AddField( + model_name='downloaderrecord', + name='error_message', + field=models.TextField(blank=True, default=''), + ), + migrations.AddField( + model_name='downloaderrecord', + name='is_audio_only', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='downloaderrecord', + name='platform', + field=models.CharField(blank=True, default='', help_text='e.g. youtube, tiktok, vimeo', max_length=100), + ), + migrations.AddField( + model_name='downloaderrecord', + name='processing_time', + field=models.FloatField(blank=True, help_text='Server-side processing time in seconds', null=True), + ), + migrations.AddField( + model_name='downloaderrecord', + name='success', + field=models.BooleanField(default=True), + ), + migrations.AddField( + model_name='downloaderrecord', + name='title', + field=models.CharField(blank=True, default='', max_length=500), + ), + migrations.AddField( + model_name='downloaderrecord', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='downloads', to=settings.AUTH_USER_MODEL), + ), + migrations.AddField( + model_name='downloaderrecord', + name='video_quality', + field=models.IntegerField(blank=True, help_text='Video height in pixels (e.g. 1080). Null for audio-only.', null=True), + ), + migrations.AlterField( + model_name='downloaderrecord', + name='file_size', + field=models.BigIntegerField(blank=True, help_text='File size in bytes', null=True), + ), + migrations.AlterField( + model_name='downloaderrecord', + name='length_of_media', + field=models.IntegerField(blank=True, help_text='Length of media in seconds', null=True), + ), + ] diff --git a/backend/thirdparty/downloader/models.py b/backend/thirdparty/downloader/models.py index bbedec4..4b68990 100644 --- a/backend/thirdparty/downloader/models.py +++ b/backend/thirdparty/downloader/models.py @@ -2,14 +2,43 @@ from django.db import models from django.conf import settings from vontor_cz.models import SoftDeleteModel -# 7áznamy pro donwloader, co lidé nejvíc stahujou a v jakém formátu + class DownloaderRecord(SoftDeleteModel): + # --- Source --- url = models.URLField() - download_time = models.DateTimeField(auto_now_add=True) - + title = models.CharField(max_length=500, blank=True, default='') + platform = models.CharField(max_length=100, blank=True, default='', help_text="e.g. youtube, tiktok, vimeo") + + # --- User (optional — anonymous downloads allowed) --- + user = models.ForeignKey( + settings.AUTH_USER_MODEL, + on_delete=models.SET_NULL, + null=True, + blank=True, + related_name='downloads', + ) + + # --- Media info --- format = models.CharField(max_length=50) + video_quality = models.IntegerField(null=True, blank=True, help_text="Video height in pixels (e.g. 1080). Null for audio-only.") + is_audio_only = models.BooleanField(default=False) + length_of_media = models.IntegerField(null=True, blank=True, help_text="Length of media in seconds") + file_size = models.BigIntegerField(null=True, blank=True, help_text="File size in bytes") - length_of_media = models.IntegerField(help_text="Length of media in seconds") - file_size = models.BigIntegerField(help_text="File size in bytes") + # --- Performance --- + processing_time = models.FloatField(null=True, blank=True, help_text="Server-side processing time in seconds") + + # --- Status --- + success = models.BooleanField(default=True) + error_message = models.TextField(blank=True, default='') + + # --- Timing --- + download_time = models.DateTimeField(auto_now_add=True) + + class Meta: + ordering = ['-download_time'] + + def __str__(self): + return f"{self.platform or 'unknown'} | {self.title or self.url} | {self.download_time:%Y-%m-%d}" diff --git a/backend/thirdparty/downloader/serializers.py b/backend/thirdparty/downloader/serializers.py index 7af652a..1a91a9d 100644 --- a/backend/thirdparty/downloader/serializers.py +++ b/backend/thirdparty/downloader/serializers.py @@ -1,9 +1,110 @@ from rest_framework import serializers +from django.db.models import Count, Avg, Sum, Q +from django.db.models.functions import TruncDay, TruncHour + + +class DownloaderRecordSerializer(serializers.Serializer): + """Single download history entry.""" + id = serializers.IntegerField() + url = serializers.URLField() + title = serializers.CharField() + platform = serializers.CharField() + format = serializers.CharField() + video_quality = serializers.IntegerField(allow_null=True) + is_audio_only = serializers.BooleanField() + length_of_media = serializers.IntegerField(allow_null=True) + file_size = serializers.IntegerField(allow_null=True) + processing_time = serializers.FloatField(allow_null=True) + success = serializers.BooleanField() + error_message = serializers.CharField() + download_time = serializers.DateTimeField() + + +class PlatformCountSerializer(serializers.Serializer): + platform = serializers.CharField() + count = serializers.IntegerField() + + +class QualityCountSerializer(serializers.Serializer): + video_quality = serializers.IntegerField(allow_null=True) + count = serializers.IntegerField() + + +class TimeseriesPointSerializer(serializers.Serializer): + period = serializers.DateTimeField() + count = serializers.IntegerField() + + +class TopUrlSerializer(serializers.Serializer): + url = serializers.URLField() + title = serializers.CharField() + count = serializers.IntegerField() + class DownloaderStatsSerializer(serializers.Serializer): + # Totals total_downloads = serializers.IntegerField() + successful_downloads = serializers.IntegerField() + failed_downloads = serializers.IntegerField() + success_rate = serializers.FloatField(help_text="Percentage 0-100") + + # Media metrics avg_length_of_media = serializers.FloatField(allow_null=True) - avg_file_size = serializers.FloatField(allow_null=True) total_length_of_media = serializers.IntegerField(allow_null=True) + avg_file_size = serializers.FloatField(allow_null=True) total_file_size = serializers.IntegerField(allow_null=True) - most_common_format = serializers.CharField(allow_null=True) \ No newline at end of file + avg_processing_time = serializers.FloatField(allow_null=True) + + # Format / quality breakdown + most_common_format = serializers.CharField(allow_null=True) + audio_only_count = serializers.IntegerField() + video_count = serializers.IntegerField() + downloads_by_platform = PlatformCountSerializer(many=True) + downloads_by_quality = QualityCountSerializer(many=True) + + # Top content + most_downloaded_urls = TopUrlSerializer(many=True) + + # Timeseries + downloads_per_day = TimeseriesPointSerializer(many=True) + downloads_per_hour = TimeseriesPointSerializer(many=True) + + def to_representation(self, qs): + agg = qs.aggregate( + total_downloads=Count('id'), + successful_downloads=Count('id', filter=Q(success=True)), + failed_downloads=Count('id', filter=Q(success=False)), + avg_length_of_media=Avg('length_of_media'), + total_length_of_media=Sum('length_of_media'), + avg_file_size=Avg('file_size'), + total_file_size=Sum('file_size'), + avg_processing_time=Avg('processing_time'), + audio_only_count=Count('id', filter=Q(is_audio_only=True)), + video_count=Count('id', filter=Q(is_audio_only=False)), + ) + + total = agg['total_downloads'] or 0 + agg['success_rate'] = round(agg['successful_downloads'] / total * 100, 2) if total else 0.0 + + most_common = qs.values('format').annotate(count=Count('id')).order_by('-count').first() + agg['most_common_format'] = most_common['format'] if most_common else None + + agg['downloads_by_platform'] = list( + qs.values('platform').annotate(count=Count('id')).order_by('-count') + ) + agg['downloads_by_quality'] = list( + qs.values('video_quality').annotate(count=Count('id')).order_by('-count') + ) + agg['most_downloaded_urls'] = list( + qs.values('url', 'title').annotate(count=Count('id')).order_by('-count')[:10] + ) + agg['downloads_per_day'] = list( + qs.annotate(period=TruncDay('download_time')) + .values('period').annotate(count=Count('id')).order_by('period') + ) + agg['downloads_per_hour'] = list( + qs.annotate(period=TruncHour('download_time')) + .values('period').annotate(count=Count('id')).order_by('period') + ) + + return super().to_representation(agg) diff --git a/backend/thirdparty/downloader/views.py b/backend/thirdparty/downloader/views.py index aa0ec28..0eca42b 100644 --- a/backend/thirdparty/downloader/views.py +++ b/backend/thirdparty/downloader/views.py @@ -9,6 +9,7 @@ import mimetypes import base64 import urllib.request import zipfile +import time import requests from urllib.parse import urlparse @@ -450,6 +451,11 @@ class Downloader(APIView): {"key": "FFmpegVideoRemuxer", "preferedformat": ext} ) + _platform = (info.get('extractor') or urlparse(url).netloc).lower().replace('www.', '').split(':')[0] + _user = request.user if request.user.is_authenticated else None + _title = info.get('title', '') + start_time = time.time() + try: if is_playlist: # Handle playlist - create ZIP file @@ -490,9 +496,16 @@ class Downloader(APIView): DownloaderRecord.objects.create( url=url, - format="zip", - length_of_media=total_duration, - file_size=total_size, + title=_title, + platform=_platform, + user=_user, + format='zip', + is_audio_only=bool(extract_audio), + video_quality=video_quality, + length_of_media=total_duration or None, + file_size=total_size or None, + processing_time=round(time.time() - start_time, 3), + success=True, ) # Streaming response for ZIP @@ -535,9 +548,16 @@ class Downloader(APIView): DownloaderRecord.objects.create( url=url, + title=_title, + platform=_platform, + user=_user, format=ext, - length_of_media=duration, - file_size=size, + is_audio_only=bool(extract_audio), + video_quality=video_quality, + length_of_media=duration or None, + file_size=size or None, + processing_time=round(time.time() - start_time, 3), + success=True, ) # Streaming generator that deletes file & temp dir after send @@ -572,6 +592,18 @@ class Downloader(APIView): except Exception as e: shutil.rmtree(tmpdir, ignore_errors=True) + DownloaderRecord.objects.create( + url=url, + title=_title, + platform=_platform, + user=_user, + format=ext if not is_playlist else 'zip', + is_audio_only=bool(extract_audio), + video_quality=video_quality, + processing_time=round(time.time() - start_time, 3), + success=False, + error_message=str(e), + ) return Response({"error": str(e)}, status=400) @@ -581,7 +613,6 @@ class Downloader(APIView): # ---------------- STATS FOR GRAPHS ---------------- from .serializers import DownloaderStatsSerializer -from django.db.models import Count, Avg, Sum class DownloaderStats(APIView): """ @@ -589,30 +620,11 @@ class DownloaderStats(APIView): """ authentication_classes = [] permission_classes = [AllowAny] + @extend_schema( tags=["downloader", "public"], summary="Get aggregated downloader statistics", responses={200: DownloaderStatsSerializer}, ) def get(self, request): - # agregace číselných polí - agg = DownloaderRecord.objects.aggregate( - total_downloads=Count("id"), - avg_length_of_media=Avg("length_of_media"), - avg_file_size=Avg("file_size"), - total_length_of_media=Sum("length_of_media"), - total_file_size=Sum("file_size"), - ) - - # zjištění nejčastějšího formátu - most_common = ( - DownloaderRecord.objects.values("format") - .annotate(count=Count("id")) - .order_by("-count") - .first() - ) - - agg["most_common_format"] = most_common["format"] if most_common else None - - serializer = DownloaderStatsSerializer(agg) - return Response(serializer.data) \ No newline at end of file + return Response(DownloaderStatsSerializer(DownloaderRecord.objects.all()).data) \ No newline at end of file diff --git a/backend/thirdparty/zasilkovna/views.py b/backend/thirdparty/zasilkovna/views.py index 63c5837..1bca8b1 100644 --- a/backend/thirdparty/zasilkovna/views.py +++ b/backend/thirdparty/zasilkovna/views.py @@ -58,7 +58,7 @@ class ZasilkovnaPacketViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet description="Returns the public Zásilkovna tracking URL derived from the packet's barcode.", responses=OpenApiResponse(response=TrackingURLSerializer), parameters=[ - OpenApiParameter(name="pk", location=OpenApiParameter.PATH, description="Packet ID", required=True, type=int), + OpenApiParameter(name="id", location=OpenApiParameter.PATH, description="Packet ID", required=True, type=int), ], request=None, ) @@ -83,7 +83,7 @@ class ZasilkovnaPacketViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet request=None, responses=OpenApiResponse(response=ZasilkovnaPacketSerializer), parameters=[ - OpenApiParameter(name="pk", location=OpenApiParameter.PATH, description="Packet ID", required=True, type=int), + OpenApiParameter(name="id", location=OpenApiParameter.PATH, description="Packet ID", required=True, type=int), ], ) @action(detail=True, methods=["patch"], url_path="order-shipping") @@ -105,7 +105,7 @@ class ZasilkovnaPacketViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet request=None, responses=OpenApiResponse(response=ZasilkovnaPacketSerializer), parameters=[ - OpenApiParameter(name="pk", location=OpenApiParameter.PATH, description="Packet ID", required=True, type=int), + OpenApiParameter(name="id", location=OpenApiParameter.PATH, description="Packet ID", required=True, type=int), ], ) @action(detail=True, methods=["patch"], url_path="cancel") diff --git a/backend/vontor_cz/asgi.py b/backend/vontor_cz/asgi.py index 96c15cb..cb64122 100644 --- a/backend/vontor_cz/asgi.py +++ b/backend/vontor_cz/asgi.py @@ -11,15 +11,15 @@ import os from django.core.asgi import get_asgi_application from channels.routing import ProtocolTypeRouter, URLRouter from channels.auth import AuthMiddlewareStack -#import myapp.routing # your app's routing +import social.chat.routing os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'vontor_cz.settings') application = ProtocolTypeRouter({ "http": get_asgi_application(), - # "websocket": AuthMiddlewareStack( - # URLRouter( - # #myapp.routing.websocket_urlpatterns - # ) - # ), + "websocket": AuthMiddlewareStack( + URLRouter( + social.chat.routing.websocket_urlpatterns + ) + ), }) diff --git a/backend/vontor_cz/custom_fields.py b/backend/vontor_cz/custom_fields.py index 77a4071..5a5f9a5 100644 --- a/backend/vontor_cz/custom_fields.py +++ b/backend/vontor_cz/custom_fields.py @@ -1,4 +1,7 @@ import os +import math +import hashlib +import base64 from io import BytesIO from PIL import Image from django.db import models @@ -8,44 +11,112 @@ import logging logger = logging.getLogger(__name__) -class WebPImageField(models.ImageField): +def _get_fernet(): """ - A custom ImageField that converts uploaded images to WebP automatically. + Returns a Fernet (or MultiFernet) instance for encryption/decryption. - Inherits from models.ImageField (description: "Image"). - Accepts the same arguments: - verbose_name, name, upload_to, storage, - width_field, height_field, **kwargs + Settings: + FIELD_ENCRYPTION_KEY — single key (str or bytes), or a list of keys for rotation. + First key in a list is used for new encrypts; all are tried + for decrypts, so old values remain readable after a key change. + Falls back to a SECRET_KEY-derived key when not set (development only). + + Key rotation workflow: + 1. Add new key as the FIRST item in FIELD_ENCRYPTION_KEY list. + 2. Keep old key(s) as remaining items — old values still decrypt fine. + 3. Optionally run a migration command to re-encrypt all rows with the new key, + then remove old keys from the list. """ + from cryptography.fernet import Fernet, MultiFernet + from django.conf import settings + + raw_setting = getattr(settings, 'FIELD_ENCRYPTION_KEY', None) + + if isinstance(raw_setting, (str, bytes)): + # Single key + key = raw_setting.encode() if isinstance(raw_setting, str) else raw_setting + return Fernet(key) + + # List of keys — first is active, rest are for decrypting old values + fernet_keys = [ + Fernet(k.encode() if isinstance(k, str) else k) + for k in raw_setting + ] + return MultiFernet(fernet_keys) + + +class WebPImageField(models.ImageField): + """Converts uploaded images to WebP on save. Drop-in replacement for ImageField.""" def pre_save(self, model_instance, add): - file_obj = getattr(model_instance, self.attname) + uploaded_file = getattr(model_instance, self.attname) - if file_obj and not file_obj._committed: - self._convert_to_webp(file_obj) + if uploaded_file and not uploaded_file._committed: + self._convert_to_webp(uploaded_file) return super().pre_save(model_instance, add) - def _convert_to_webp(self, file_obj): + def _convert_to_webp(self, uploaded_file): try: - file_obj.open() - image = Image.open(file_obj) + uploaded_file.open() + image = Image.open(uploaded_file) if image.format == 'WEBP': image.close() return + # Preserve transparency for palette/alpha modes if image.mode == 'P': image = image.convert('RGBA') + elif image.mode not in ('RGBA', 'LA'): image = image.convert('RGB') - image_io = BytesIO() - image.save(image_io, format='WEBP', quality=85, optimize=True) + webp_buffer = BytesIO() + + image.save(webp_buffer, format='WEBP', quality=100, optimize=True) image.close() - new_filename = os.path.splitext(file_obj.name)[0] + '.webp' - file_obj.save(new_filename, ContentFile(image_io.getvalue()), save=False) + webp_filename = os.path.splitext(uploaded_file.name)[0] + '.webp' + uploaded_file.save(webp_filename, ContentFile(webp_buffer.getvalue()), save=False) - except Exception as e: - logger.error(f"WebP conversion failed: {e}") + except Exception as error: + logger.error(f"WebP conversion failed: {error}") + + +class EncryptedCharField(models.CharField): + """ + Transparently encrypts values at rest using Fernet (AES-128-CBC + HMAC-SHA256). + Drop-in replacement for CharField — max_length is the plaintext limit. + Set FIELD_ENCRYPTION_KEY in settings to a URL-safe base64 32-byte key + (generate: from cryptography.fernet import Fernet; Fernet.generate_key()). + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + # DB column must fit the Fernet token: plaintext + 73 bytes overhead, base64-encoded + plaintext_max_length = self.max_length or 200 + self._db_column_max_length = math.ceil((plaintext_max_length + 73) / 3) * 4 + + def db_type(self, connection): + # Silently use the larger column size; migrations still show plaintext max_length + return connection.data_types['CharField'] % {'max_length': self._db_column_max_length} + + def from_db_value(self, value, expression, connection): + if not value: + return value + try: + return _get_fernet().decrypt(value.encode()).decode() + except Exception: + logger.warning("EncryptedCharField: decryption failed, returning raw value.") + return value + + def get_prep_value(self, value): + if value is None or value == '': + return super().get_prep_value(value) + return _get_fernet().encrypt(value.encode()).decode() + + def to_python(self, value): + if value is None: + return value + return str(value) diff --git a/backend/vontor_cz/settings.py b/backend/vontor_cz/settings.py index e94481d..45cd825 100644 --- a/backend/vontor_cz/settings.py +++ b/backend/vontor_cz/settings.py @@ -348,6 +348,8 @@ MY_CREATED_APPS = [ 'configuration', 'social.chat', + 'social.hubs', + 'social.posts', 'advertisement', diff --git a/backend/vontor_cz/urls.py b/backend/vontor_cz/urls.py index 3a054de..bb01ba1 100644 --- a/backend/vontor_cz/urls.py +++ b/backend/vontor_cz/urls.py @@ -19,7 +19,7 @@ from django.urls import path, include from django.conf.urls.static import static from django.conf import settings -from django import settings +from django.conf import settings from .views import choices from drf_spectacular.views import ( @@ -43,6 +43,10 @@ urlpatterns = [ path('api/configuration/', include('configuration.urls')), path('api/advertisement/', include('advertisement.urls')), + path('api/social/hubs/', include('social.hubs.urls')), + path('api/social/posts/', include('social.posts.urls')), + path('api/social/', include('social.chat.urls')), + path('api/stripe/', include('thirdparty.stripe.urls')), path('api/trading212/', include('thirdparty.trading212.urls')), path('api/downloader/', include('thirdparty.downloader.urls')), diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 3bc7aaf..5aebee3 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,30 +8,45 @@ "name": "frontend", "version": "0.0.0", "dependencies": { + "@fortawesome/free-solid-svg-icons": "^7.1.0", + "@fortawesome/react-fontawesome": "^3.1.1", + "@headlessui/react": "^2.2.9", + "@heroicons/react": "^2.2.0", + "@mantine/core": "^8.3.11", + "@mantine/dates": "^8.3.11", + "@mantine/hooks": "^8.3.11", + "@radix-ui/react-switch": "^1.2.6", + "@tabler/icons-react": "^3.36.1", "@tailwindcss/vite": "^4.1.16", "@tanstack/react-query": "^5.90.12", + "@tanstack/react-table": "^8.21.3", "@types/react-router": "^5.1.20", "axios": "^1.13.0", - "dotenv": "^17.2.3", + "dayjs": "^1.11.19", + "framer-motion": "^12.25.0", "react": "^19.1.1", "react-dom": "^19.1.1", + "react-hook-form": "^7.70.0", "react-icons": "^5.5.0", "react-router-dom": "^7.8.1", + "react-toastify": "^11.0.5", "tailwindcss": "^4.1.16" }, "devDependencies": { "@eslint/js": "^9.33.0", "@tailwindcss/postcss": "^4.1.17", "@types/node": "^24.10.4", - "@types/react": "^19.1.10", + "@types/react": "^19.2.7", "@types/react-dom": "^19.1.7", "@vitejs/plugin-react": "^5.0.0", "autoprefixer": "^10.4.21", + "babel-plugin-react-compiler": "^1.0.0", + "dotenv": "^17.2.3", "eslint": "^9.33.0", "eslint-plugin-react-hooks": "^5.2.0", "eslint-plugin-react-refresh": "^0.4.20", "globals": "^16.3.0", - "orval": "^7.13.2", + "orval": "^8.0.2", "prettier": "^3.7.4", "typescript": "~5.8.3", "typescript-eslint": "^8.39.1", @@ -65,107 +80,6 @@ "node": ">=6.0.0" } }, - "node_modules/@apidevtools/json-schema-ref-parser": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-14.0.1.tgz", - "integrity": "sha512-Oc96zvmxx1fqoSEdUmfmvvb59/KDOnUoJ7s2t7bISyAn0XEz57LCCw8k2Y4Pf3mwKaZLMciESALORLgfe2frCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.15", - "js-yaml": "^4.1.0" - }, - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://github.com/sponsors/philsturgeon" - } - }, - "node_modules/@apidevtools/openapi-schemas": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/openapi-schemas/-/openapi-schemas-2.1.0.tgz", - "integrity": "sha512-Zc1AlqrJlX3SlpupFGpiLi2EbteyP7fXmUOGup6/DnkRgjP9bgMM/ag+n91rsv0U1Gpz0H3VILA/o3bW7Ua6BQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@apidevtools/swagger-methods": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-methods/-/swagger-methods-3.0.2.tgz", - "integrity": "sha512-QAkD5kK2b1WfjDS/UQn/qQkbwF31uqRjPTrsCs5ZG9BQGAkjwvqGFjjPqAuzac/IYzpPtRzjCP1WrTuAIjMrXg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@apidevtools/swagger-parser": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@apidevtools/swagger-parser/-/swagger-parser-12.1.0.tgz", - "integrity": "sha512-e5mJoswsnAX0jG+J09xHFYQXb/bUc5S3pLpMxUuRUA2H8T2kni3yEoyz2R3Dltw5f4A6j6rPNMpWTK+iVDFlng==", - "dev": true, - "license": "MIT", - "dependencies": { - "@apidevtools/json-schema-ref-parser": "14.0.1", - "@apidevtools/openapi-schemas": "^2.1.0", - "@apidevtools/swagger-methods": "^3.0.2", - "ajv": "^8.17.1", - "ajv-draft-04": "^1.0.0", - "call-me-maybe": "^1.0.2" - }, - "peerDependencies": { - "openapi-types": ">=7" - } - }, - "node_modules/@apidevtools/swagger-parser/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@apidevtools/swagger-parser/node_modules/ajv-draft-04": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", - "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.5.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@apidevtools/swagger-parser/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@asyncapi/specs": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/@asyncapi/specs/-/specs-6.10.0.tgz", - "integrity": "sha512-vB5oKLsdrLUORIZ5BXortZTlVyGWWMC1Nud/0LtgxQ3Yn2738HigAD6EVqScvpPsDUI/bcLVsYEXN4dtXQHVng==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.11" - } - }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -400,6 +314,15 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.27.2", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", @@ -459,9 +382,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.12.tgz", - "integrity": "sha512-Hhmwd6CInZ3dwpuGTF8fJG6yoWmsToE+vYgD4nytZVxcu1ulHpUQRAB1UJ8+N1Am3Mz4+xOByoQoSZf4D+CpkA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", + "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", "cpu": [ "ppc64" ], @@ -475,9 +398,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.12.tgz", - "integrity": "sha512-VJ+sKvNA/GE7Ccacc9Cha7bpS8nyzVv0jdVgwNDaR4gDMC/2TTRc33Ip8qrNYUcpkOHUT5OZ0bUcNNVZQ9RLlg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", + "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", "cpu": [ "arm" ], @@ -491,9 +414,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.12.tgz", - "integrity": "sha512-6AAmLG7zwD1Z159jCKPvAxZd4y/VTO0VkprYy+3N2FtJ8+BQWFXU+OxARIwA46c5tdD9SsKGZ/1ocqBS/gAKHg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", + "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", "cpu": [ "arm64" ], @@ -507,9 +430,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.12.tgz", - "integrity": "sha512-5jbb+2hhDHx5phYR2By8GTWEzn6I9UqR11Kwf22iKbNpYrsmRB18aX/9ivc5cabcUiAT/wM+YIZ6SG9QO6a8kg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", + "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", "cpu": [ "x64" ], @@ -523,9 +446,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.12.tgz", - "integrity": "sha512-N3zl+lxHCifgIlcMUP5016ESkeQjLj/959RxxNYIthIg+CQHInujFuXeWbWMgnTo4cp5XVHqFPmpyu9J65C1Yg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", + "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", "cpu": [ "arm64" ], @@ -539,9 +462,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.12.tgz", - "integrity": "sha512-HQ9ka4Kx21qHXwtlTUVbKJOAnmG1ipXhdWTmNXiPzPfWKpXqASVcWdnf2bnL73wgjNrFXAa3yYvBSd9pzfEIpA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", + "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", "cpu": [ "x64" ], @@ -555,9 +478,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.12.tgz", - "integrity": "sha512-gA0Bx759+7Jve03K1S0vkOu5Lg/85dou3EseOGUes8flVOGxbhDDh/iZaoek11Y8mtyKPGF3vP8XhnkDEAmzeg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", + "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", "cpu": [ "arm64" ], @@ -571,9 +494,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.12.tgz", - "integrity": "sha512-TGbO26Yw2xsHzxtbVFGEXBFH0FRAP7gtcPE7P5yP7wGy7cXK2oO7RyOhL5NLiqTlBh47XhmIUXuGciXEqYFfBQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", + "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", "cpu": [ "x64" ], @@ -587,9 +510,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.12.tgz", - "integrity": "sha512-lPDGyC1JPDou8kGcywY0YILzWlhhnRjdof3UlcoqYmS9El818LLfJJc3PXXgZHrHCAKs/Z2SeZtDJr5MrkxtOw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", + "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", "cpu": [ "arm" ], @@ -603,9 +526,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.12.tgz", - "integrity": "sha512-8bwX7a8FghIgrupcxb4aUmYDLp8pX06rGh5HqDT7bB+8Rdells6mHvrFHHW2JAOPZUbnjUpKTLg6ECyzvas2AQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", + "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", "cpu": [ "arm64" ], @@ -619,9 +542,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.12.tgz", - "integrity": "sha512-0y9KrdVnbMM2/vG8KfU0byhUN+EFCny9+8g202gYqSSVMonbsCfLjUO+rCci7pM0WBEtz+oK/PIwHkzxkyharA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", + "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", "cpu": [ "ia32" ], @@ -635,9 +558,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.12.tgz", - "integrity": "sha512-h///Lr5a9rib/v1GGqXVGzjL4TMvVTv+s1DPoxQdz7l/AYv6LDSxdIwzxkrPW438oUXiDtwM10o9PmwS/6Z0Ng==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", + "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", "cpu": [ "loong64" ], @@ -651,9 +574,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.12.tgz", - "integrity": "sha512-iyRrM1Pzy9GFMDLsXn1iHUm18nhKnNMWscjmp4+hpafcZjrr2WbT//d20xaGljXDBYHqRcl8HnxbX6uaA/eGVw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", + "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", "cpu": [ "mips64el" ], @@ -667,9 +590,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.12.tgz", - "integrity": "sha512-9meM/lRXxMi5PSUqEXRCtVjEZBGwB7P/D4yT8UG/mwIdze2aV4Vo6U5gD3+RsoHXKkHCfSxZKzmDssVlRj1QQA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", + "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", "cpu": [ "ppc64" ], @@ -683,9 +606,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.12.tgz", - "integrity": "sha512-Zr7KR4hgKUpWAwb1f3o5ygT04MzqVrGEGXGLnj15YQDJErYu/BGg+wmFlIDOdJp0PmB0lLvxFIOXZgFRrdjR0w==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", + "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", "cpu": [ "riscv64" ], @@ -699,9 +622,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.12.tgz", - "integrity": "sha512-MsKncOcgTNvdtiISc/jZs/Zf8d0cl/t3gYWX8J9ubBnVOwlk65UIEEvgBORTiljloIWnBzLs4qhzPkJcitIzIg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", + "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", "cpu": [ "s390x" ], @@ -715,9 +638,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.12.tgz", - "integrity": "sha512-uqZMTLr/zR/ed4jIGnwSLkaHmPjOjJvnm6TVVitAa08SLS9Z0VM8wIRx7gWbJB5/J54YuIMInDquWyYvQLZkgw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", + "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", "cpu": [ "x64" ], @@ -731,9 +654,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.12.tgz", - "integrity": "sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", + "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", "cpu": [ "arm64" ], @@ -747,9 +670,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.12.tgz", - "integrity": "sha512-Ld5pTlzPy3YwGec4OuHh1aCVCRvOXdH8DgRjfDy/oumVovmuSzWfnSJg+VtakB9Cm0gxNO9BzWkj6mtO1FMXkQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", + "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", "cpu": [ "x64" ], @@ -763,9 +686,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.12.tgz", - "integrity": "sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", + "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", "cpu": [ "arm64" ], @@ -779,9 +702,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.12.tgz", - "integrity": "sha512-MZyXUkZHjQxUvzK7rN8DJ3SRmrVrke8ZyRusHlP+kuwqTcfWLyqMOE3sScPPyeIXN/mDJIfGXvcMqCgYKekoQw==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", + "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", "cpu": [ "x64" ], @@ -795,9 +718,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.12.tgz", - "integrity": "sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", + "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", "cpu": [ "arm64" ], @@ -811,9 +734,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.12.tgz", - "integrity": "sha512-3wGSCDyuTHQUzt0nV7bocDy72r2lI33QL3gkDNGkod22EsYl04sMf0qLb8luNKTOmgF/eDEDP5BFNwoBKH441w==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", + "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", "cpu": [ "x64" ], @@ -827,9 +750,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.12.tgz", - "integrity": "sha512-rMmLrur64A7+DKlnSuwqUdRKyd3UE7oPJZmnljqEptesKM8wx9J8gx5u0+9Pq0fQQW8vqeKebwNXdfOyP+8Bsg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", + "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", "cpu": [ "arm64" ], @@ -843,9 +766,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.12.tgz", - "integrity": "sha512-HkqnmmBoCbCwxUKKNPBixiWDGCpQGVsrQfJoVGYLPT41XWF8lHuE5N6WhVia2n4o5QK5M4tYr21827fNhi4byQ==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", + "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", "cpu": [ "ia32" ], @@ -859,9 +782,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.12.tgz", - "integrity": "sha512-alJC0uCZpTFrSL0CCDjcgleBXPnCrEAhTBILpeAp7M/OFgoqtAetfBzX0xM00MUsVVPpVjlPuMbREqnZCXaTnA==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", + "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", "cpu": [ "x64" ], @@ -1028,27 +951,149 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@exodus/schemasafe": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@exodus/schemasafe/-/schemasafe-1.3.0.tgz", - "integrity": "sha512-5Aap/GaRupgNx/feGBwLLTVv8OQFfv3pq2lPRzPg9R+IOBnDgghTGW7l7EuVXOvg5cc/xSAlRW8rBrjIC3Nvqw==", - "dev": true, + "node_modules/@floating-ui/core": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", + "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", + "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.5", + "@floating-ui/utils": "^0.2.11" + } + }, + "node_modules/@floating-ui/react": { + "version": "0.26.28", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", + "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.1.2", + "@floating-ui/utils": "^0.2.8", + "tabbable": "^6.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.8.tgz", + "integrity": "sha512-cC52bHwM/n/CxS87FH0yWdngEZrjdtLW/qVruo68qg+prK7ZQ4YGdut2GyDVpoGeAYe/h899rVeOVm6Oi40k2A==", + "license": "MIT", + "dependencies": { + "@floating-ui/dom": "^1.7.6" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", + "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", "license": "MIT" }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-7.2.0.tgz", + "integrity": "sha512-IpR0bER9FY25p+e7BmFH25MZKEwFHTfRAfhOyJubgiDnoJNsSvJ7nigLraHtp4VOG/cy8D7uiV0dLkHOne5Fhw==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-7.2.0.tgz", + "integrity": "sha512-6639htZMjEkwskf3J+e6/iar+4cTNM9qhoWuRfj9F3eJD6r7iCzV1SWnQr2Mdv0QT0suuqU8BoJCZUyCtP9R4Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-7.2.0.tgz", + "integrity": "sha512-YTVITFGN0/24PxzXrwqCgnyd7njDuzp5ZvaCx5nq/jg55kUYd94Nj8UTchBdBofi/L0nwRfjGOg0E41d2u9T1w==", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "7.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-3.3.0.tgz", + "integrity": "sha512-EHmHeTf8WgO29sdY3iX/7ekE3gNUdlc2RW6mm/FzELlHFKfTrA9S4MlyquRR+RRCRCn8+jXfLFpLGB2l7wCWyw==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~6 || ~7", + "react": "^18.0.0 || ^19.0.0" + } + }, "node_modules/@gerrit0/mini-shiki": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.19.0.tgz", - "integrity": "sha512-ZSlWfLvr8Nl0T4iA3FF/8VH8HivYF82xQts2DY0tJxZd4wtXJ8AA0nmdW9lmO4hlrh3f9xNwEPtOgqETPqKwDA==", + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@gerrit0/mini-shiki/-/mini-shiki-3.23.0.tgz", + "integrity": "sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/engine-oniguruma": "^3.19.0", - "@shikijs/langs": "^3.19.0", - "@shikijs/themes": "^3.19.0", - "@shikijs/types": "^3.19.0", + "@shikijs/engine-oniguruma": "^3.23.0", + "@shikijs/langs": "^3.23.0", + "@shikijs/themes": "^3.23.0", + "@shikijs/types": "^3.23.0", "@shikijs/vscode-textmate": "^10.0.2" } }, + "node_modules/@headlessui/react": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.10.tgz", + "integrity": "sha512-5pVLNK9wlpxTUTy9GpgbX/SdcRh+HBnPktjM2wbiLTH4p+2EPHBO1aoSryUCuKUIItdDWO9ITlhUL8UnUN/oIA==", + "license": "MIT", + "dependencies": { + "@floating-ui/react": "^0.26.16", + "@react-aria/focus": "^3.20.2", + "@react-aria/interactions": "^3.25.0", + "@tanstack/react-virtual": "^3.13.9", + "use-sync-external-store": "^1.5.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/@heroicons/react": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.2.0.tgz", + "integrity": "sha512-LMcepvRaS9LYHJGsF0zzmgKCUim/X3N/DQKc4jepAXJ7l8QxJ1PmxJzqplF2Z3FE4PqBAIGyJAQ/w4B5dsqbtQ==", + "license": "MIT", + "peerDependencies": { + "react": ">= 16 || ^19.0.0-rc" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -1115,64 +1160,31 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@ibm-cloud/openapi-ruleset": { - "version": "1.33.5", - "resolved": "https://registry.npmjs.org/@ibm-cloud/openapi-ruleset/-/openapi-ruleset-1.33.5.tgz", - "integrity": "sha512-oT8USsTulFAA8FiBN0lA2rJqQI2lIt+HP2pdakGQXo3EviL2vqJTgpSCRwjl6mLJL158f1BVcdQUOEFGxomK3w==", - "dev": true, + "node_modules/@internationalized/date": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.12.1.tgz", + "integrity": "sha512-6IedsVWXyq4P9Tj+TxuU8WGWM70hYLl12nbYU8jkikVpa6WXapFazPUcHUMDMoWftIDE2ILDkFFte6W2nFCkRQ==", "license": "Apache-2.0", "dependencies": { - "@ibm-cloud/openapi-ruleset-utilities": "1.9.0", - "@stoplight/spectral-formats": "^1.8.2", - "@stoplight/spectral-functions": "^1.9.3", - "@stoplight/spectral-rulesets": "^1.21.3", - "chalk": "^4.1.2", - "inflected": "^2.1.0", - "jsonschema": "^1.5.0", - "lodash": "^4.17.21", - "loglevel": "^1.9.2", - "loglevel-plugin-prefix": "0.8.4", - "minimatch": "^6.2.0", - "validator": "^13.15.23" - }, - "engines": { - "node": ">=16.0.0" + "@swc/helpers": "^0.5.0" } }, - "node_modules/@ibm-cloud/openapi-ruleset-utilities": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@ibm-cloud/openapi-ruleset-utilities/-/openapi-ruleset-utilities-1.9.0.tgz", - "integrity": "sha512-AoFbSarOqFBYH+1TZ9Ahkm2IWYSi5v0pBk88fpV+5b3qGJukypX8PwvCWADjuyIccKg48/F73a6hTTkBzDQ2UA==", - "dev": true, + "node_modules/@internationalized/number": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.6.6.tgz", + "integrity": "sha512-iFgmQaXHE0vytNfpLZWOC2mEJCBRzcUxt53Xf/yCXG93lRvqas237i3r7X4RKMwO3txiyZD4mQjKAByFv6UGSQ==", "license": "Apache-2.0", - "engines": { - "node": ">=16.0.0" + "dependencies": { + "@swc/helpers": "^0.5.0" } }, - "node_modules/@ibm-cloud/openapi-ruleset/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", + "node_modules/@internationalized/string": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.8.tgz", + "integrity": "sha512-NdbMQUSfXLYIQol5VyMtinm9pZDciiMfN7RtmSuSB78io1hqwJ0naYfxyW6vgxWBkzWymQa/3uLDlbfmshtCaA==", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@ibm-cloud/openapi-ruleset/node_modules/minimatch": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-6.2.0.tgz", - "integrity": "sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@swc/helpers": "^0.5.0" } }, "node_modules/@jridgewell/gen-mapping": { @@ -1220,43 +1232,63 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jsep-plugin/assignment": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", - "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", - "dev": true, + "node_modules/@mantine/core": { + "version": "8.3.18", + "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.3.18.tgz", + "integrity": "sha512-9tph1lTVogKPjTx02eUxDUOdXacPzK62UuSqb4TdGliI54/Xgxftq0Dfqu6XuhCxn9J5MDJaNiLDvL/1KRkYqA==", "license": "MIT", - "engines": { - "node": ">= 10.16.0" + "dependencies": { + "@floating-ui/react": "^0.27.16", + "clsx": "^2.1.1", + "react-number-format": "^5.4.4", + "react-remove-scroll": "^2.7.1", + "react-textarea-autosize": "8.5.9", + "type-fest": "^4.41.0" }, "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" + "@mantine/hooks": "8.3.18", + "react": "^18.x || ^19.x", + "react-dom": "^18.x || ^19.x" } }, - "node_modules/@jsep-plugin/regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", - "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", - "dev": true, + "node_modules/@mantine/core/node_modules/@floating-ui/react": { + "version": "0.27.19", + "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.27.19.tgz", + "integrity": "sha512-31B8h5mm8YxotlE7/AU/PhNAl8eWxAmjL/v2QOxroDNkTFLk3Uu82u63N3b6TXa4EGJeeZLVcd/9AlNlVqzeog==", "license": "MIT", - "engines": { - "node": ">= 10.16.0" + "dependencies": { + "@floating-ui/react-dom": "^2.1.8", + "@floating-ui/utils": "^0.2.11", + "tabbable": "^6.0.0" }, "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" + "react": ">=17.0.0", + "react-dom": ">=17.0.0" } }, - "node_modules/@jsep-plugin/ternary": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@jsep-plugin/ternary/-/ternary-1.1.4.tgz", - "integrity": "sha512-ck5wiqIbqdMX6WRQztBL7ASDty9YLgJ3sSAK5ZpBzXeySvFGCzIvM6UiAI4hTZ22fEcYQVV/zhUbNscggW+Ukg==", - "dev": true, + "node_modules/@mantine/dates": { + "version": "8.3.18", + "resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-8.3.18.tgz", + "integrity": "sha512-FHx5teJOhupI0gO2o5evtVYQEdqOjayOkLRhEQfB5Nc5DvcysfPfmNILGkc1Nrp9ZQeQWKLT9qr+CkcCXwHOaw==", "license": "MIT", - "engines": { - "node": ">= 10.16.0" + "dependencies": { + "clsx": "^2.1.1" }, "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" + "@mantine/core": "8.3.18", + "@mantine/hooks": "8.3.18", + "dayjs": ">=1.0.0", + "react": "^18.x || ^19.x", + "react-dom": "^18.x || ^19.x" + } + }, + "node_modules/@mantine/hooks": { + "version": "8.3.18", + "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.3.18.tgz", + "integrity": "sha512-QoWr9+S8gg5050TQ06aTSxtlpGjYOpIllRbjYYXlRvZeTsUqiTbVfvQROLexu4rEaK+yy9Wwriwl9PMRgbLqPw==", + "license": "MIT", + "peerDependencies": { + "react": "^18.x || ^19.x" } }, "node_modules/@nodelib/fs.scandir": { @@ -1298,136 +1330,372 @@ } }, "node_modules/@orval/angular": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/angular/-/angular-7.17.0.tgz", - "integrity": "sha512-3DnUU/2vUhKC33bmM2xMGRbbJRs8Qvubvjg+0QGh3AxedOYWRcLTxsuZNyr6n4y2TomrsbB1rFMTveTotE2VuA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/angular/-/angular-8.8.0.tgz", + "integrity": "sha512-/In87dL59GkP5GTq+rPK8g68MqsTKxbQy0CgEiyw+edzihWmrAOnni72OXAVIt/gK0cCuh75IPu6dlqwAnXuKg==", "dev": true, "license": "MIT", "dependencies": { - "@orval/core": "7.17.0" + "@orval/core": "8.8.0" } }, "node_modules/@orval/axios": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/axios/-/axios-7.17.0.tgz", - "integrity": "sha512-qbTOOOGjtfFDgpY1pHJNEO71CybSQiPJxuspVJDnWeoR7cwxOuZuWLWX3QE0bZ/2NHUg11rcuHwzzvPHGYmb0w==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/axios/-/axios-8.8.0.tgz", + "integrity": "sha512-kFb8kVr8GyiMj+FF2MpNsPPkDQy/2b5Fj+3s+pARwFjfG4VEJUUUZu6YYMgKLIdUhNA5sGB5tm+Hlv28kmmszw==", "dev": true, "license": "MIT", "dependencies": { - "@orval/core": "7.17.0" + "@orval/core": "8.8.0" } }, "node_modules/@orval/core": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/core/-/core-7.17.0.tgz", - "integrity": "sha512-oLHJitYNUbPYCijKt77az9Q7PnQE8ga79hVUt46c5cL4dXjjbRMLXSCIxB4M5lbu4D9q4G6ZgjCAxv+Fr7wGRA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/core/-/core-8.8.0.tgz", + "integrity": "sha512-0HTUy212vjewYikEBur+nfhjBl+QTtVw8IbenDr2t9ufPIsvQ4ftt8kKsfeIp62nrb5c+tY1ynTCnqf6zKXvNw==", "dev": true, "license": "MIT", "dependencies": { - "@apidevtools/swagger-parser": "^12.1.0", - "@ibm-cloud/openapi-ruleset": "^1.33.1", - "@stoplight/spectral-core": "^1.20.0", + "@scalar/openapi-types": "0.6.1", "acorn": "^8.15.0", - "chalk": "^4.1.2", "compare-versions": "^6.1.1", "debug": "^4.4.3", - "esbuild": "^0.25.11", + "esbuild": "^0.27.4", "esutils": "2.0.3", - "fs-extra": "^11.3.1", - "globby": "11.1.0", - "lodash.isempty": "^4.4.0", - "lodash.uniq": "^4.5.0", - "lodash.uniqby": "^4.7.0", - "lodash.uniqwith": "^4.5.0", - "micromatch": "^4.0.8", - "openapi3-ts": "4.5.0", - "swagger2openapi": "^7.0.8", - "typedoc": "^0.28.14" + "fs-extra": "^11.3.2", + "globby": "16.1.0", + "jiti": "^2.6.1", + "remeda": "^2.33.6", + "typedoc": "^0.28.17" + }, + "peerDependencies": { + "@faker-js/faker": ">=10" + }, + "peerDependenciesMeta": { + "@faker-js/faker": { + "optional": true + } } }, "node_modules/@orval/fetch": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/fetch/-/fetch-7.17.0.tgz", - "integrity": "sha512-VZuSKa2tMhHyL4BKiPyXmNj0Z5jF92lisTgWdm24WdmFfrzeGCHDyBbim6ivOMnrcvf0v7o16EeaTdMeNiaGdQ==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/fetch/-/fetch-8.8.0.tgz", + "integrity": "sha512-wFNSn1DzMDdo2DpL26Rb7m+FtUlIZ4CE3EuYNmGKUZogfIdlQBR6NUjOgh82j3mJPcWUSn/DJagMnF/MUSh37Q==", "dev": true, "license": "MIT", "dependencies": { - "@orval/core": "7.17.0", - "openapi3-ts": "4.5.0" + "@orval/core": "8.8.0", + "@scalar/openapi-types": "0.6.1" } }, "node_modules/@orval/hono": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/hono/-/hono-7.17.0.tgz", - "integrity": "sha512-/78Gb346+I0jPLML/s/QK7O8sJoiCIQxKT0sJ3YVXPLSKQ4aBEYGcXthAW/LwJTZWz8Rm0vGGnz4svra3gafwg==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/hono/-/hono-8.8.0.tgz", + "integrity": "sha512-UYDN8kbrjIHPpEpV8hfzirfSrl4ziaIDj+tM92IrgoM5KeOJqYNiBaW+KuxDn1aR9z79zKzjX3lGoAKo42Diiw==", "dev": true, "license": "MIT", "dependencies": { - "@orval/core": "7.17.0", - "@orval/zod": "7.17.0", + "@orval/core": "8.8.0", + "@orval/zod": "8.8.0", "fs-extra": "^11.3.2", - "lodash.uniq": "^4.5.0", - "openapi3-ts": "4.5.0" + "remeda": "^2.33.6" } }, "node_modules/@orval/mcp": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/mcp/-/mcp-7.17.0.tgz", - "integrity": "sha512-izVIA3XgBpdQ6u2VLD7lxXbksq2K0wf8ypmQAufd5SewSoyEPcu8jIlLovGLTI5WiBr0pJnHLoltJ4Pl/zkZ0A==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/mcp/-/mcp-8.8.0.tgz", + "integrity": "sha512-OIoRBO++fLFYnQDVT/M/Z7fFOo5pvcVTcUx8uoOBIrGWUw5eeivdOZ8qE2i2Er+cHOh+3pc/tsY/E6GgSpfviw==", "dev": true, "license": "MIT", "dependencies": { - "@orval/core": "7.17.0", - "@orval/fetch": "7.17.0", - "@orval/zod": "7.17.0", - "openapi3-ts": "4.5.0" + "@orval/core": "8.8.0", + "@orval/fetch": "8.8.0", + "@orval/zod": "8.8.0" } }, "node_modules/@orval/mock": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/mock/-/mock-7.17.0.tgz", - "integrity": "sha512-A/A/50XXBgidhTlQDyPQp6nIUfrP27GagyEQ70ztXS5Z9y1WJe7K5ZjjCnISOc7cFTZJmsYKvuCUo4ptfTm1bA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/mock/-/mock-8.8.0.tgz", + "integrity": "sha512-KMPaEYtGXsYy1ZFDko6UaibOY8KHuanfC3x+5haOtkOYMVgk7D8iUSIwk7RGvPwjNJJ7fPmG/G3d+y14U16fYw==", "dev": true, "license": "MIT", "dependencies": { - "@orval/core": "7.17.0", - "openapi3-ts": "4.5.0" + "@orval/core": "8.8.0", + "remeda": "^2.33.6" } }, "node_modules/@orval/query": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/query/-/query-7.17.0.tgz", - "integrity": "sha512-h/XZRpOLOewIPa/3uSk68M6CSgylrGSUxHux9uEH3P2nYWjwYV+GxuOUptzuONA37LGd76mgytW6tK27VmYeCA==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/query/-/query-8.8.0.tgz", + "integrity": "sha512-mp6ZqVK/8jQTJ09pwvRtKsBhdvIGqIVnF43s9d9GM1SNHqvZXYNtbgMKKuccssPSl3tV5s3K6a6fLFof//iPEA==", "dev": true, "license": "MIT", "dependencies": { - "@orval/core": "7.17.0", - "@orval/fetch": "7.17.0", - "chalk": "^4.1.2", - "lodash.omitby": "^4.6.0" + "@orval/core": "8.8.0", + "@orval/fetch": "8.8.0", + "remeda": "^2.33.6" + } + }, + "node_modules/@orval/solid-start": { + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/solid-start/-/solid-start-8.8.0.tgz", + "integrity": "sha512-PCQFpmkQIztFmjkzdkbrpxUmK4tQN0p/9RJd2QRwunYHjVOxXgLDSw8oa0eoQWDtXr7fqZXrXCp7RKaS2mgclQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@orval/core": "8.8.0", + "@scalar/openapi-types": "0.6.1" } }, "node_modules/@orval/swr": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/swr/-/swr-7.17.0.tgz", - "integrity": "sha512-ZC5ZjzILWt8WE3V4gWRIg9XWHjQBubUJzin67aKERlybPN+sqMdgMEl9/XL+emUItkAIdex9cCaDHZwqjrmbKg==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/swr/-/swr-8.8.0.tgz", + "integrity": "sha512-5GRzlPCDUlQk16LxHsRorFoeFyirRWcUfABK1zbEWXXbbTUoUaRk4Ox0v9ImQ9jzs+K8ihaVuTZYbkn6WqWraQ==", "dev": true, "license": "MIT", "dependencies": { - "@orval/core": "7.17.0", - "@orval/fetch": "7.17.0" + "@orval/core": "8.8.0", + "@orval/fetch": "8.8.0" } }, "node_modules/@orval/zod": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/@orval/zod/-/zod-7.17.0.tgz", - "integrity": "sha512-ldwGUR4K0YIay+4UGR7ykTYD99Cs+CHIAOAVVny8/h9dU0CD/6sxomHuCzrC0Z2QxVZ4rL7k8g10Kffmp+dHBw==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/@orval/zod/-/zod-8.8.0.tgz", + "integrity": "sha512-ouKzo7srJXuwsZmNzp8nXkM6lwiYCZoSRYFH1JFAYF77SK7AEoFul8AYObzebqmHIXC4GLUNOsxHT9N0NE8zmQ==", "dev": true, "license": "MIT", "dependencies": { - "@orval/core": "7.17.0", - "lodash.uniq": "^4.5.0", - "openapi3-ts": "4.5.0" + "@orval/core": "8.8.0", + "remeda": "^2.33.6" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-slot": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-aria/focus": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.22.0.tgz", + "integrity": "sha512-ZfDOVuVhqDsM9mkNji3QUZ/d40JhlVgXrDkrfXylM1035QCrcTHN7m2DpbE95sU2A8EQb4wikvt5jM6K/73BPg==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.0", + "react-aria": "3.48.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.28.0", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.28.0.tgz", + "integrity": "sha512-OXwdU1EWFdMxmr/K1CXNGJzmNlCClByb+PuCaqUyzBymHPCGVhawirLIon/CrIN5psh3AiWpHSh4H0WeJdVpng==", + "license": "Apache-2.0", + "dependencies": { + "@react-types/shared": "^3.34.0", + "@swc/helpers": "^0.5.0", + "react-aria": "3.48.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/@react-types/shared": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.34.0.tgz", + "integrity": "sha512-gp6xo/s2lX54AlTjOiqwDnxA7UW79BNvI9dB9pr3LZTzRKCd1ZA+ZbgKw/ReIiWuvvVw/8QFJpnqeeFyLocMcQ==", + "license": "Apache-2.0", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" } }, "node_modules/@rolldown/pluginutils": { @@ -1438,9 +1706,9 @@ "license": "MIT" }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.2.tgz", - "integrity": "sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.2.tgz", + "integrity": "sha512-dnlp69efPPg6Uaw2dVqzWRfAWRnYVb1XJ8CyyhIbZeaq4CA5/mLeZ1IEt9QqQxmbdvagjLIm2ZL8BxXv5lH4Yw==", "cpu": [ "arm" ], @@ -1451,9 +1719,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.2.tgz", - "integrity": "sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.2.tgz", + "integrity": "sha512-OqZTwDRDchGRHHm/hwLOL7uVPB9aUvI0am/eQuWMNyFHf5PSEQmyEeYYheA0EPPKUO/l0uigCp+iaTjoLjVoHg==", "cpu": [ "arm64" ], @@ -1464,9 +1732,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.2.tgz", - "integrity": "sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.2.tgz", + "integrity": "sha512-UwRE7CGpvSVEQS8gUMBe1uADWjNnVgP3Iusyda1nSRwNDCsRjnGc7w6El6WLQsXmZTbLZx9cecegumcitNfpmA==", "cpu": [ "arm64" ], @@ -1477,9 +1745,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.2.tgz", - "integrity": "sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.2.tgz", + "integrity": "sha512-gjEtURKLCC5VXm1I+2i1u9OhxFsKAQJKTVB8WvDAHF+oZlq0GTVFOlTlO1q3AlCTE/DF32c16ESvfgqR7343/g==", "cpu": [ "x64" ], @@ -1490,9 +1758,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.2.tgz", - "integrity": "sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.2.tgz", + "integrity": "sha512-Bcl6CYDeAgE70cqZaMojOi/eK63h5Me97ZqAQoh77VPjMysA/4ORQBRGo3rRy45x4MzVlU9uZxs8Uwy7ZaKnBw==", "cpu": [ "arm64" ], @@ -1503,9 +1771,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.2.tgz", - "integrity": "sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.2.tgz", + "integrity": "sha512-LU+TPda3mAE2QB0/Hp5VyeKJivpC6+tlOXd1VMoXV/YFMvk/MNk5iXeBfB4MQGRWyOYVJ01625vjkr0Az98OJQ==", "cpu": [ "x64" ], @@ -1516,9 +1784,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.2.tgz", - "integrity": "sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.2.tgz", + "integrity": "sha512-2QxQrM+KQ7DAW4o22j+XZ6RKdxjLD7BOWTP0Bv0tmjdyhXSsr2Ul1oJDQqh9Zf5qOwTuTc7Ek83mOFaKnodPjg==", "cpu": [ "arm" ], @@ -1529,9 +1797,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.2.tgz", - "integrity": "sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.2.tgz", + "integrity": "sha512-TbziEu2DVsTEOPif2mKWkMeDMLoYjx95oESa9fkQQK7r/Orta0gnkcDpzwufEcAO2BLBsD7mZkXGFqEdMRRwfw==", "cpu": [ "arm" ], @@ -1542,9 +1810,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.2.tgz", - "integrity": "sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.2.tgz", + "integrity": "sha512-bO/rVDiDUuM2YfuCUwZ1t1cP+/yqjqz+Xf2VtkdppefuOFS2OSeAfgafaHNkFn0t02hEyXngZkxtGqXcXwO8Rg==", "cpu": [ "arm64" ], @@ -1555,9 +1823,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.2.tgz", - "integrity": "sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.2.tgz", + "integrity": "sha512-hr26p7e93Rl0Za+JwW7EAnwAvKkehh12BU1Llm9Ykiibg4uIr2rbpxG9WCf56GuvidlTG9KiiQT/TXT1yAWxTA==", "cpu": [ "arm64" ], @@ -1567,10 +1835,23 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.2.tgz", - "integrity": "sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.2.tgz", + "integrity": "sha512-pOjB/uSIyDt+ow3k/RcLvUAOGpysT2phDn7TTUB3n75SlIgZzM6NKAqlErPhoFU+npgY3/n+2HYIQVbF70P9/A==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.2.tgz", + "integrity": "sha512-2/w+q8jszv9Ww1c+6uJT3OwqhdmGP2/4T17cu8WuwyUuuaCDDJ2ojdyYwZzCxx0GcsZBhzi3HmH+J5pZNXnd+Q==", "cpu": [ "loong64" ], @@ -1581,9 +1862,22 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.2.tgz", - "integrity": "sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.2.tgz", + "integrity": "sha512-11+aL5vKheYgczxtPVVRhdptAM2H7fcDR5Gw4/bTcteuZBlH4oP9f5s9zYO9aGZvoGeBpqXI/9TZZihZ609wKw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.2.tgz", + "integrity": "sha512-i16fokAGK46IVZuV8LIIwMdtqhin9hfYkCh8pf8iC3QU3LpwL+1FSFGej+O7l3E/AoknL6Dclh2oTdnRMpTzFQ==", "cpu": [ "ppc64" ], @@ -1594,9 +1888,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.2.tgz", - "integrity": "sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.2.tgz", + "integrity": "sha512-49FkKS6RGQoriDSK/6E2GkAsAuU5kETFCh7pG4yD/ylj9rKhTmO3elsnmBvRD4PgJPds5W2PkhC82aVwmUcJ7A==", "cpu": [ "riscv64" ], @@ -1607,9 +1901,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.2.tgz", - "integrity": "sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.2.tgz", + "integrity": "sha512-mjYNkHPfGpUR00DuM1ZZIgs64Hpf4bWcz9Z41+4Q+pgDx73UwWdAYyf6EG/lRFldmdHHzgrYyge5akFUW0D3mQ==", "cpu": [ "riscv64" ], @@ -1620,9 +1914,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.2.tgz", - "integrity": "sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.2.tgz", + "integrity": "sha512-ALyvJz965BQk8E9Al/JDKKDLH2kfKFLTGMlgkAbbYtZuJt9LU8DW3ZoDMCtQpXAltZxwBHevXz5u+gf0yA0YoA==", "cpu": [ "s390x" ], @@ -1633,9 +1927,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.2.tgz", - "integrity": "sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.2.tgz", + "integrity": "sha512-UQjrkIdWrKI626Du8lCQ6MJp/6V1LAo2bOK9OTu4mSn8GGXIkPXk/Vsp4bLHCd9Z9Iz2OTEaokUE90VweJgIYQ==", "cpu": [ "x64" ], @@ -1646,9 +1940,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.2.tgz", - "integrity": "sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.2.tgz", + "integrity": "sha512-bTsRGj6VlSdn/XD4CGyzMnzaBs9bsRxy79eTqTCBsA8TMIEky7qg48aPkvJvFe1HyzQ5oMZdg7AnVlWQSKLTnw==", "cpu": [ "x64" ], @@ -1658,10 +1952,36 @@ "linux" ] }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.2.tgz", + "integrity": "sha512-6d4Z3534xitaA1FcMWP7mQPq5zGwBmGbhphh2DwaA1aNIXUu3KTOfwrWpbwI4/Gr0uANo7NTtaykFyO2hPuFLg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.2.tgz", + "integrity": "sha512-NetAg5iO2uN7eB8zE5qrZ3CSil+7IJt4WDFLcC75Ymywq1VZVD6qJ6EvNLjZ3rEm6gB7XW5JdT60c6MN35Z85Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.2.tgz", - "integrity": "sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.2.tgz", + "integrity": "sha512-NCYhOotpgWZ5kdxCZsv6Iudx0wX8980Q/oW4pNFNihpBKsDbEA1zpkfxJGC0yugsUuyDZ7gL37dbzwhR0VI7pQ==", "cpu": [ "arm64" ], @@ -1672,9 +1992,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.2.tgz", - "integrity": "sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.2.tgz", + "integrity": "sha512-RXsaOqXxfoUBQoOgvmmijVxJnW2IGB0eoMO7F8FAjaj0UTywUO/luSqimWBJn04WNgUkeNhh7fs7pESXajWmkg==", "cpu": [ "ia32" ], @@ -1684,10 +2004,10 @@ "win32" ] }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.2.tgz", - "integrity": "sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==", + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.2.tgz", + "integrity": "sha512-qdAzEULD+/hzObedtmV6iBpdL5TIbKVztGiK7O3/KYSf+HIzU257+MX1EXJcyIiDbMAqmbwaufcYPvyRryeZtA==", "cpu": [ "x64" ], @@ -1697,190 +2017,80 @@ "win32" ] }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.19.0.tgz", - "integrity": "sha512-1hRxtYIJfJSZeM5ivbUXv9hcJP3PWRo5prG/V2sWwiubUKTa+7P62d2qxCW8jiVFX4pgRHhnHNp+qeR7Xl+6kg==", + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.2.tgz", + "integrity": "sha512-Nd/SgG27WoA9e+/TdK74KnHz852TLa94ovOYySo/yMPuTmpckK/jIF2jSwS3g7ELSKXK13/cVdmg1Z/DaCWKxA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@scalar/helpers": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@scalar/helpers/-/helpers-0.5.1.tgz", + "integrity": "sha512-9VvPfv8b+YZVIFwR3SWeq4Y8ij/kU3/kf2M6NKcbf2iVyh63d8s0ssap5m/nOhiz/Puidv/29MAJlJCA0LRssA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22" + } + }, + "node_modules/@scalar/json-magic": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/@scalar/json-magic/-/json-magic-0.12.7.tgz", + "integrity": "sha512-GD7BdZzlkCjNwRxGjsg5TmsFqNKWVuUjIfEUeTux2BqCarToqsU29HzwdA1Z9RZSeG3e4G46ogMVHRID9cmAnQ==", "dev": true, "license": "MIT", "dependencies": { - "@shikijs/types": "3.19.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/@shikijs/langs": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.19.0.tgz", - "integrity": "sha512-dBMFzzg1QiXqCVQ5ONc0z2ebyoi5BKz+MtfByLm0o5/nbUu3Iz8uaTCa5uzGiscQKm7lVShfZHU1+OG3t5hgwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.19.0" - } - }, - "node_modules/@shikijs/themes": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.19.0.tgz", - "integrity": "sha512-H36qw+oh91Y0s6OlFfdSuQ0Ld+5CgB/VE6gNPK+Hk4VRbVG/XQgkjnt4KzfnnoO6tZPtKJKHPjwebOCfjd6F8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/types": "3.19.0" - } - }, - "node_modules/@shikijs/types": { - "version": "3.19.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.19.0.tgz", - "integrity": "sha512-Z2hdeEQlzuntf/BZpFG8a+Fsw9UVXdML7w0o3TgSXV3yNESGon+bs9ITkQb3Ki7zxoXOOu5oJWqZ2uto06V9iQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@stoplight/json": { - "version": "3.21.7", - "resolved": "https://registry.npmjs.org/@stoplight/json/-/json-3.21.7.tgz", - "integrity": "sha512-xcJXgKFqv/uCEgtGlPxy3tPA+4I+ZI4vAuMJ885+ThkTHFVkC+0Fm58lA9NlsyjnkpxFh4YiQWpH+KefHdbA0A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/ordered-object-literal": "^1.0.3", - "@stoplight/path": "^1.3.2", - "@stoplight/types": "^13.6.0", - "jsonc-parser": "~2.2.1", - "lodash": "^4.17.21", - "safe-stable-stringify": "^1.1" + "@scalar/helpers": "0.5.1", + "pathe": "^2.0.3", + "yaml": "^2.8.0" }, "engines": { - "node": ">=8.3.0" + "node": ">=22" } }, - "node_modules/@stoplight/json-ref-readers": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@stoplight/json-ref-readers/-/json-ref-readers-1.2.2.tgz", - "integrity": "sha512-nty0tHUq2f1IKuFYsLM4CXLZGHdMn+X/IwEUIpeSOXt0QjMUbL0Em57iJUDzz+2MkWG83smIigNZ3fauGjqgdQ==", + "node_modules/@scalar/openapi-parser": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@scalar/openapi-parser/-/openapi-parser-0.25.10.tgz", + "integrity": "sha512-4gkNMIpPA+mtgXzWPgMItgCwnH/SgmKj66zSYFdiWTTaBsgQZWSbUnzaHpe+rLwq7/U6uRb1DSU+KgS1ZcrN4w==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "node-fetch": "^2.6.0", - "tslib": "^1.14.1" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/@stoplight/json-ref-readers/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true, - "license": "0BSD" - }, - "node_modules/@stoplight/json-ref-resolver": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@stoplight/json-ref-resolver/-/json-ref-resolver-3.1.6.tgz", - "integrity": "sha512-YNcWv3R3n3U6iQYBsFOiWSuRGE5su1tJSiX6pAPRVk7dP0L7lqCteXGzuVRQ0gMZqUl8v1P0+fAKxF6PLo9B5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json": "^3.21.0", - "@stoplight/path": "^1.3.2", - "@stoplight/types": "^12.3.0 || ^13.0.0", - "@types/urijs": "^1.19.19", - "dependency-graph": "~0.11.0", - "fast-memoize": "^2.5.2", - "immer": "^9.0.6", - "lodash": "^4.17.21", - "tslib": "^2.6.0", - "urijs": "^1.19.11" - }, - "engines": { - "node": ">=8.3.0" - } - }, - "node_modules/@stoplight/ordered-object-literal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@stoplight/ordered-object-literal/-/ordered-object-literal-1.0.5.tgz", - "integrity": "sha512-COTiuCU5bgMUtbIFBuyyh2/yVVzlr5Om0v5utQDgBCuQUOPgU1DwoffkTfg4UBQOvByi5foF4w4T+H9CoRe5wg==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/@stoplight/path": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@stoplight/path/-/path-1.3.2.tgz", - "integrity": "sha512-lyIc6JUlUA8Ve5ELywPC8I2Sdnh1zc1zmbYgVarhXIp9YeAB0ReeqmGEOWNtlHkbP2DAA1AL65Wfn2ncjK/jtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/@stoplight/spectral-core": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-core/-/spectral-core-1.20.0.tgz", - "integrity": "sha512-5hBP81nCC1zn1hJXL/uxPNRKNcB+/pEIHgCjPRpl/w/qy9yC9ver04tw1W0l/PMiv0UeB5dYgozXVQ4j5a6QQQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/better-ajv-errors": "1.0.3", - "@stoplight/json": "~3.21.0", - "@stoplight/path": "1.3.2", - "@stoplight/spectral-parsers": "^1.0.0", - "@stoplight/spectral-ref-resolver": "^1.0.4", - "@stoplight/spectral-runtime": "^1.1.2", - "@stoplight/types": "~13.6.0", - "@types/es-aggregate-error": "^1.0.2", - "@types/json-schema": "^7.0.11", + "@scalar/helpers": "0.5.1", + "@scalar/json-magic": "0.12.7", + "@scalar/openapi-types": "0.7.0", + "@scalar/openapi-upgrader": "0.2.5", "ajv": "^8.17.1", - "ajv-errors": "~3.0.0", - "ajv-formats": "~2.1.1", - "es-aggregate-error": "^1.0.7", - "jsonpath-plus": "^10.3.0", - "lodash": "~4.17.21", - "lodash.topath": "^4.5.2", - "minimatch": "3.1.2", - "nimma": "0.2.3", - "pony-cause": "^1.1.1", - "simple-eval": "1.0.1", - "tslib": "^2.8.1" + "ajv-draft-04": "^1.0.0", + "ajv-formats": "^3.0.1", + "jsonpointer": "^5.0.1", + "leven": "^4.0.0", + "yaml": "^2.8.0" }, "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" + "node": ">=22" } }, - "node_modules/@stoplight/spectral-core/node_modules/@stoplight/better-ajv-errors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz", - "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==", + "node_modules/@scalar/openapi-parser/node_modules/@scalar/openapi-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@scalar/openapi-types/-/openapi-types-0.7.0.tgz", + "integrity": "sha512-kN0PwlJW0de4bwQ4ib+mBHzKJUvBCyR/gwU4zLEq6SCbj+GfgYUh+2a0/yl1WYVUiSkkwFsHjfmQ8KjhR3HK0Q==", "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, + "license": "MIT", "engines": { - "node": "^12.20 || >= 14.13" - }, - "peerDependencies": { - "ajv": ">=8" + "node": ">=22" } }, - "node_modules/@stoplight/spectral-core/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/@scalar/openapi-parser/node_modules/ajv": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { @@ -1894,97 +2104,7 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@stoplight/spectral-core/node_modules/ajv-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", - "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.0.1" - } - }, - "node_modules/@stoplight/spectral-core/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@stoplight/spectral-formats": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-formats/-/spectral-formats-1.8.2.tgz", - "integrity": "sha512-c06HB+rOKfe7tuxg0IdKDEA5XnjL2vrn/m/OVIIxtINtBzphZrOgtRn7epQ5bQF5SWp84Ue7UJWaGgDwVngMFw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json": "^3.17.0", - "@stoplight/spectral-core": "^1.19.2", - "@types/json-schema": "^7.0.7", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-functions": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-functions/-/spectral-functions-1.10.1.tgz", - "integrity": "sha512-obu8ZfoHxELOapfGsCJixKZXZcffjg+lSoNuttpmUFuDzVLT3VmH8QkPXfOGOL5Pz80BR35ClNAToDkdnYIURg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/better-ajv-errors": "1.0.3", - "@stoplight/json": "^3.17.1", - "@stoplight/spectral-core": "^1.19.4", - "@stoplight/spectral-formats": "^1.8.1", - "@stoplight/spectral-runtime": "^1.1.2", - "ajv": "^8.17.1", - "ajv-draft-04": "~1.0.0", - "ajv-errors": "~3.0.0", - "ajv-formats": "~2.1.1", - "lodash": "~4.17.21", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/@stoplight/better-ajv-errors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz", - "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": "^12.20 || >= 14.13" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/ajv-draft-04": { + "node_modules/@scalar/openapi-parser/node_modules/ajv-draft-04": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/ajv-draft-04/-/ajv-draft-04-1.0.0.tgz", "integrity": "sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==", @@ -1999,206 +2119,151 @@ } } }, - "node_modules/@stoplight/spectral-functions/node_modules/ajv-errors": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-3.0.0.tgz", - "integrity": "sha512-V3wD15YHfHz6y0KdhYFjyy9vWtEVALT9UrxfN3zqlI6dMioHnJrqOYfyPKol3oqrnCM9uwkcdCwkJ0WUcbLMTQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "ajv": "^8.0.1" - } - }, - "node_modules/@stoplight/spectral-functions/node_modules/json-schema-traverse": { + "node_modules/@scalar/openapi-parser/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, "license": "MIT" }, - "node_modules/@stoplight/spectral-parsers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-parsers/-/spectral-parsers-1.0.5.tgz", - "integrity": "sha512-ANDTp2IHWGvsQDAY85/jQi9ZrF4mRrA5bciNHX+PUxPr4DwS6iv4h+FVWJMVwcEYdpyoIdyL+SRmHdJfQEPmwQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json": "~3.21.0", - "@stoplight/types": "^14.1.1", - "@stoplight/yaml": "~4.3.0", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-parsers/node_modules/@stoplight/types": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz", - "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.4", - "utility-types": "^3.10.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - } - }, - "node_modules/@stoplight/spectral-ref-resolver": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-ref-resolver/-/spectral-ref-resolver-1.0.5.tgz", - "integrity": "sha512-gj3TieX5a9zMW29z3mBlAtDOCgN3GEc1VgZnCVlr5irmR4Qi5LuECuFItAq4pTn5Zu+sW5bqutsCH7D4PkpyAA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json-ref-readers": "1.2.2", - "@stoplight/json-ref-resolver": "~3.1.6", - "@stoplight/spectral-runtime": "^1.1.2", - "dependency-graph": "0.11.0", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-rulesets": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-rulesets/-/spectral-rulesets-1.22.0.tgz", - "integrity": "sha512-l2EY2jiKKLsvnPfGy+pXC0LeGsbJzcQP5G/AojHgf+cwN//VYxW1Wvv4WKFx/CLmLxc42mJYF2juwWofjWYNIQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@asyncapi/specs": "^6.8.0", - "@stoplight/better-ajv-errors": "1.0.3", - "@stoplight/json": "^3.17.0", - "@stoplight/spectral-core": "^1.19.4", - "@stoplight/spectral-formats": "^1.8.1", - "@stoplight/spectral-functions": "^1.9.1", - "@stoplight/spectral-runtime": "^1.1.2", - "@stoplight/types": "^13.6.0", - "@types/json-schema": "^7.0.7", - "ajv": "^8.17.1", - "ajv-formats": "~2.1.1", - "json-schema-traverse": "^1.0.0", - "leven": "3.1.0", - "lodash": "~4.17.21", - "tslib": "^2.8.1" - }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/spectral-rulesets/node_modules/@stoplight/better-ajv-errors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@stoplight/better-ajv-errors/-/better-ajv-errors-1.0.3.tgz", - "integrity": "sha512-0p9uXkuB22qGdNfy3VeEhxkU5uwvp/KrBTAbrLBURv6ilxIVwanKwjMc41lQfIVgPGcOkmLbTolfFrSsueu7zA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "jsonpointer": "^5.0.0", - "leven": "^3.1.0" - }, - "engines": { - "node": "^12.20 || >= 14.13" - }, - "peerDependencies": { - "ajv": ">=8" - } - }, - "node_modules/@stoplight/spectral-rulesets/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "node_modules/@scalar/openapi-types": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@scalar/openapi-types/-/openapi-types-0.6.1.tgz", + "integrity": "sha512-P1RvyTFN0vRSL136OqWjlZfSFjY9JoJfuD6LM1mIjoocfwmqX3WuzsFEFX6hAeeDlTh6gjbiy+OdhSee8GFfSA==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "zod": "^4.3.5" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@scalar/openapi-upgrader": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@scalar/openapi-upgrader/-/openapi-upgrader-0.2.5.tgz", + "integrity": "sha512-Nmfwx9JpH4hPnbWV2NOzQ+bz1VTHEPlnIvkBF8Q8coW+TCBHmQzuM8hHzJp5NicX0UAZCT62X7+QzBUsVUlX0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@scalar/openapi-types": "0.7.0" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@scalar/openapi-upgrader/node_modules/@scalar/openapi-types": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@scalar/openapi-types/-/openapi-types-0.7.0.tgz", + "integrity": "sha512-kN0PwlJW0de4bwQ4ib+mBHzKJUvBCyR/gwU4zLEq6SCbj+GfgYUh+2a0/yl1WYVUiSkkwFsHjfmQ8KjhR3HK0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22" + } + }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.23.0.tgz", + "integrity": "sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.23.0.tgz", + "integrity": "sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.23.0.tgz", + "integrity": "sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/types": "3.23.0" + } + }, + "node_modules/@shikijs/types": { + "version": "3.23.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.23.0.tgz", + "integrity": "sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@swc/helpers": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz", + "integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tabler/icons": { + "version": "3.41.1", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.41.1.tgz", + "integrity": "sha512-OaRnVbRmH2nHtFeg+RmMJ/7m2oBIF9XCJAUD5gQnMrpK9f05ydj8MZrAf3NZQqOXyxGN1UBL0D5IKLLEUfr74Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/codecalm" + } + }, + "node_modules/@tabler/icons-react": { + "version": "3.41.1", + "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-3.41.1.tgz", + "integrity": "sha512-kUgweE+DJtAlMZVIns1FTDdcbpRVnkK7ZpUOXmoxy3JAF0rSHj0TcP4VHF14+gMJGnF+psH2Zt26BLT6owetBA==", + "license": "MIT", + "dependencies": { + "@tabler/icons": "3.41.1" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@stoplight/spectral-rulesets/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "license": "MIT" - }, - "node_modules/@stoplight/spectral-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@stoplight/spectral-runtime/-/spectral-runtime-1.1.4.tgz", - "integrity": "sha512-YHbhX3dqW0do6DhiPSgSGQzr6yQLlWybhKwWx0cqxjMwxej3TqLv3BXMfIUYFKKUqIwH4Q2mV8rrMM8qD2N0rQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/json": "^3.20.1", - "@stoplight/path": "^1.3.2", - "@stoplight/types": "^13.6.0", - "abort-controller": "^3.0.0", - "lodash": "^4.17.21", - "node-fetch": "^2.7.0", - "tslib": "^2.8.1" + "url": "https://github.com/sponsors/codecalm" }, - "engines": { - "node": "^16.20 || ^18.18 || >= 20.17" - } - }, - "node_modules/@stoplight/types": { - "version": "13.6.0", - "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-13.6.0.tgz", - "integrity": "sha512-dzyuzvUjv3m1wmhPfq82lCVYGcXG0xUYgqnWfCq3PCVR4BKFhjdkHrnJ+jIDoMKvXb05AZP/ObQF6+NpDo29IQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.4", - "utility-types": "^3.10.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - } - }, - "node_modules/@stoplight/yaml": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@stoplight/yaml/-/yaml-4.3.0.tgz", - "integrity": "sha512-JZlVFE6/dYpP9tQmV0/ADfn32L9uFarHWxfcRhReKUnljz1ZiUM5zpX+PH8h5CJs6lao3TuFqnPm9IJJCEkE2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@stoplight/ordered-object-literal": "^1.0.5", - "@stoplight/types": "^14.1.1", - "@stoplight/yaml-ast-parser": "0.0.50", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=10.8" - } - }, - "node_modules/@stoplight/yaml-ast-parser": { - "version": "0.0.50", - "resolved": "https://registry.npmjs.org/@stoplight/yaml-ast-parser/-/yaml-ast-parser-0.0.50.tgz", - "integrity": "sha512-Pb6M8TDO9DtSVla9yXSTAxmo9GVEouq5P40DWXdOie69bXogZTkgvopCq+yEvTMA0F6PEvdJmbtTV3ccIp11VQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@stoplight/yaml/node_modules/@stoplight/types": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/@stoplight/types/-/types-14.1.1.tgz", - "integrity": "sha512-/kjtr+0t0tjKr+heVfviO9FrU/uGLc+QNX3fHJc19xsCNYqU7lVhaXxDmEID9BZTjG+/r9pK9xP/xU02XGg65g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.4", - "utility-types": "^3.10.0" - }, - "engines": { - "node": "^12.20 || >=14.13" + "peerDependencies": { + "react": ">= 16" } }, "node_modules/@tailwindcss/node": { @@ -2762,6 +2827,66 @@ "react": "^18 || ^19" } }, + "node_modules/@tanstack/react-table": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.21.3.tgz", + "integrity": "sha512-5nNMTSETP4ykGegmVkhjcS8tTLW6Vl4axfEGQN3v0zdHYbK4UfoqfPChclTrJ4EoK9QynqAu9oUf8VEmrpZ5Ww==", + "license": "MIT", + "dependencies": { + "@tanstack/table-core": "8.21.3" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, + "node_modules/@tanstack/react-virtual": { + "version": "3.13.24", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.24.tgz", + "integrity": "sha512-aIJvz5OSkhNIhZIpYivrxrPTKYsjW9Uzy+sP/mx0S3sev2HyvPb7xmjbYvokzEpfgYHy/HjzJ2zFAETuUfgCpg==", + "license": "MIT", + "dependencies": { + "@tanstack/virtual-core": "3.14.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@tanstack/table-core": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.21.3.tgz", + "integrity": "sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, + "node_modules/@tanstack/virtual-core": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.14.0.tgz", + "integrity": "sha512-JLANqGy/D6k4Ujmh8Tr25lGimuOXNiaVyXaCAZS0W+1390sADdGnyUdSWNIfd49gebtIxGMij4IktRVzrdr12Q==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, "node_modules/@types/babel__core": { "version": "7.20.5", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", @@ -2807,16 +2932,6 @@ "@babel/types": "^7.28.2" } }, - "node_modules/@types/es-aggregate-error": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/es-aggregate-error/-/es-aggregate-error-1.0.6.tgz", - "integrity": "sha512-qJ7LIFp06h1QE1aVxbVd+zJP2wdaugYXYfd6JxsyRMrYHaxb6itXPogW2tz+ylUJ1n1b+JF1PHyYCfYHm0dvUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/estree": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", @@ -2857,19 +2972,19 @@ } }, "node_modules/@types/react": { - "version": "19.1.10", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.1.10.tgz", - "integrity": "sha512-EhBeSYX0Y6ye8pNebpKrwFJq7BoQ8J5SO6NlvNwwHjSj6adXJViPQrKlsyPw7hLBLvckEMO1yxeGdR82YBBlDg==", + "version": "19.2.14", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.14.tgz", + "integrity": "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==", "license": "MIT", "dependencies": { - "csstype": "^3.0.2" + "csstype": "^3.2.2" } }, "node_modules/@types/react-dom": { "version": "19.1.7", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.7.tgz", "integrity": "sha512-i5ZzwYpqjmrKenzkoLM2Ibzt6mAsM7pxB6BCIouEVVmgiqaMj1TjaK7hnA36hbW5aZv20kx7Lw6hWzPWg0Rurw==", - "dev": true, + "devOptional": true, "license": "MIT", "peerDependencies": { "@types/react": "^19.0.0" @@ -2892,13 +3007,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/urijs": { - "version": "1.19.26", - "resolved": "https://registry.npmjs.org/@types/urijs/-/urijs-1.19.26.tgz", - "integrity": "sha512-wkXrVzX5yoqLnndOwFsieJA7oKM8cNkOKJtf/3vVGSUFkWDKZvFHpIl9Pvqb/T9UsawBBFMTTD8xu7sK5MWuvg==", - "dev": true, - "license": "MIT" - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.39.1", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.39.1.tgz", @@ -3090,9 +3198,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", + "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", "dev": true, "license": "MIT", "dependencies": { @@ -3100,13 +3208,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^2.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -3191,19 +3299,6 @@ "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" } }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "dev": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/acorn": { "version": "8.15.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", @@ -3228,9 +3323,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -3245,9 +3340,9 @@ } }, "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3263,9 +3358,9 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", + "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", "dev": true, "license": "MIT", "dependencies": { @@ -3329,73 +3424,16 @@ "dev": true, "license": "Python-2.0" }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, + "node_modules/aria-hidden": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" + "tslib": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/astring": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", - "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "dev": true, - "license": "MIT", - "bin": { - "astring": "bin/astring" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "node": ">=10" } }, "node_modules/asynckit": { @@ -3442,31 +3480,25 @@ "postcss": "^8.1.0" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/axios": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.15.1.tgz", + "integrity": "sha512-WOG+Jj8ZOvR0a3rAn+Tuf1UQJRxw5venr6DgdbJzngJE3qG7X0kL83CZGpdHMxEm+ZK3seAbvFsw4FfOfP9vxg==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", + "proxy-from-env": "^2.1.0" + } + }, + "node_modules/babel-plugin-react-compiler": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-plugin-react-compiler/-/babel-plugin-react-compiler-1.0.0.tgz", + "integrity": "sha512-Ixm8tFfoKKIPYdCCKYTsqv+Fd4IJ0DQqMyEimo+pxUOMUR9cVPlwTrFt9Avu+3cb6Zp3mAzl+t1MrG2fxxKsxw==", "dev": true, "license": "MIT", "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axios": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.0.tgz", - "integrity": "sha512-zt40Pz4zcRXra9CVV31KeyofwiNvAbJ5B6YPz9pMJ+yOSLikvPT4Yi5LjfgjRa9CawVYBaD1JQzIVcIvBejKeA==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" + "@babel/types": "^7.26.0" } }, "node_modules/balanced-match": { @@ -3477,9 +3509,9 @@ "license": "MIT" }, "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", + "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", "dev": true, "license": "MIT", "dependencies": { @@ -3533,25 +3565,6 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -3565,30 +3578,6 @@ "node": ">= 0.4" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-me-maybe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", - "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==", - "dev": true, - "license": "MIT" - }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", @@ -3638,34 +3627,28 @@ } }, "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-5.0.0.tgz", + "integrity": "sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==", "dev": true, "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "readdirp": "^5.0.0" }, "engines": { - "node": ">= 14.16.0" + "node": ">= 20.19.0" }, "funding": { "url": "https://paulmillr.com/funding/" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=6" } }, "node_modules/color-convert": { @@ -3732,12 +3715,16 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", - "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", "license": "MIT", "engines": { "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/cross-spawn": { @@ -3756,64 +3743,16 @@ } }, "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", "license": "MIT" }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/dayjs": { + "version": "1.11.20", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.20.tgz", + "integrity": "sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==", + "license": "MIT" }, "node_modules/debug": { "version": "4.4.3", @@ -3840,42 +3779,6 @@ "dev": true, "license": "MIT" }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -3885,16 +3788,6 @@ "node": ">=0.4.0" } }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/detect-libc": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", @@ -3904,23 +3797,17 @@ "node": ">=8" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "license": "MIT" }, "node_modules/dotenv": { "version": "17.2.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=12" @@ -3950,13 +3837,6 @@ "dev": true, "license": "ISC" }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, "node_modules/enhanced-resolve": { "version": "5.18.3", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz", @@ -3997,98 +3877,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/es-abstract": { - "version": "1.24.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", - "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-aggregate-error": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.14.tgz", - "integrity": "sha512-3YxX6rVb07B5TV11AV5wsL7nQCHXNwoHPsQC8S4AmBiqYhyNCJ5BRKXkXyDJvs8QzXN20NgRtxe3dEEQD9NLHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "globalthis": "^1.0.4", - "has-property-descriptors": "^1.0.2", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -4134,35 +3922,10 @@ "node": ">= 0.4" } }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-promise": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", - "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==", - "dev": true, - "license": "MIT" - }, "node_modules/esbuild": { - "version": "0.25.12", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.12.tgz", - "integrity": "sha512-bbPBYYrtZbkt6Os6FiTLCTFxvq4tt3JKall1vRwshA3fdVztsLAatFaZobhkBC8/BrPetoa0oksYoKXoG4ryJg==", + "version": "0.27.7", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", + "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -4172,32 +3935,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.12", - "@esbuild/android-arm": "0.25.12", - "@esbuild/android-arm64": "0.25.12", - "@esbuild/android-x64": "0.25.12", - "@esbuild/darwin-arm64": "0.25.12", - "@esbuild/darwin-x64": "0.25.12", - "@esbuild/freebsd-arm64": "0.25.12", - "@esbuild/freebsd-x64": "0.25.12", - "@esbuild/linux-arm": "0.25.12", - "@esbuild/linux-arm64": "0.25.12", - "@esbuild/linux-ia32": "0.25.12", - "@esbuild/linux-loong64": "0.25.12", - "@esbuild/linux-mips64el": "0.25.12", - "@esbuild/linux-ppc64": "0.25.12", - "@esbuild/linux-riscv64": "0.25.12", - "@esbuild/linux-s390x": "0.25.12", - "@esbuild/linux-x64": "0.25.12", - "@esbuild/netbsd-arm64": "0.25.12", - "@esbuild/netbsd-x64": "0.25.12", - "@esbuild/openbsd-arm64": "0.25.12", - "@esbuild/openbsd-x64": "0.25.12", - "@esbuild/openharmony-arm64": "0.25.12", - "@esbuild/sunos-x64": "0.25.12", - "@esbuild/win32-arm64": "0.25.12", - "@esbuild/win32-ia32": "0.25.12", - "@esbuild/win32-x64": "0.25.12" + "@esbuild/aix-ppc64": "0.27.7", + "@esbuild/android-arm": "0.27.7", + "@esbuild/android-arm64": "0.27.7", + "@esbuild/android-x64": "0.27.7", + "@esbuild/darwin-arm64": "0.27.7", + "@esbuild/darwin-x64": "0.27.7", + "@esbuild/freebsd-arm64": "0.27.7", + "@esbuild/freebsd-x64": "0.27.7", + "@esbuild/linux-arm": "0.27.7", + "@esbuild/linux-arm64": "0.27.7", + "@esbuild/linux-ia32": "0.27.7", + "@esbuild/linux-loong64": "0.27.7", + "@esbuild/linux-mips64el": "0.27.7", + "@esbuild/linux-ppc64": "0.27.7", + "@esbuild/linux-riscv64": "0.27.7", + "@esbuild/linux-s390x": "0.27.7", + "@esbuild/linux-x64": "0.27.7", + "@esbuild/netbsd-arm64": "0.27.7", + "@esbuild/netbsd-x64": "0.27.7", + "@esbuild/openbsd-arm64": "0.27.7", + "@esbuild/openbsd-x64": "0.27.7", + "@esbuild/openharmony-arm64": "0.27.7", + "@esbuild/sunos-x64": "0.27.7", + "@esbuild/win32-arm64": "0.27.7", + "@esbuild/win32-ia32": "0.27.7", + "@esbuild/win32-x64": "0.27.7" } }, "node_modules/escalade": { @@ -4401,35 +4164,28 @@ "node": ">=0.10.0" } }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", + "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "@sindresorhus/merge-streams": "^4.0.0", + "cross-spawn": "^7.0.6", + "figures": "^6.1.0", + "get-stream": "^9.0.0", + "human-signals": "^8.0.1", + "is-plain-obj": "^4.1.0", + "is-stream": "^4.0.1", + "npm-run-path": "^6.0.0", + "pretty-ms": "^9.2.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^4.0.0", + "yoctocolors": "^2.1.1" }, "engines": { - "node": ">=10" + "node": "^18.19.0 || >=20.5.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -4486,20 +4242,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-memoize": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", - "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-safe-stringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", - "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==", - "dev": true, - "license": "MIT" - }, "node_modules/fast-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", @@ -4527,6 +4269,22 @@ "reusify": "^1.0.4" } }, + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -4585,16 +4343,16 @@ } }, "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", + "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", "funding": [ { "type": "individual", @@ -4611,26 +4369,10 @@ } } }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "license": "MIT", "dependencies": { "asynckit": "^0.4.0", @@ -4657,10 +4399,37 @@ "url": "https://github.com/sponsors/rawify" } }, + "node_modules/framer-motion": { + "version": "12.38.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.38.0.tgz", + "integrity": "sha512-rFYkY/pigbcswl1XQSb7q424kSTQ8q6eAC+YUsSKooHQYuLdzdHjrt6uxUC+PRAO++q5IS7+TamgIw1AphxR+g==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.38.0", + "motion-utils": "^12.36.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", + "version": "11.3.4", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.4.tgz", + "integrity": "sha512-CTXd6rk/M3/ULNQj8FBqBWHYBVYybQ3VPBw0xGKFe3tuH7ytT6ACnvzpIQ3UZtB8yvUKC2cXn1a+x+5EVQLovA==", "dev": true, "license": "MIT", "dependencies": { @@ -4695,47 +4464,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/generator-function": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", - "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -4746,16 +4474,6 @@ "node": ">=6.9.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -4780,6 +4498,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -4794,34 +4521,20 @@ } }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/glob-parent": { @@ -4850,44 +4563,37 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.1.0.tgz", + "integrity": "sha512-+A4Hq7m7Ze592k9gZRy4gJ27DrXRNnC1vPjxTt1qQxEY8RxagBkBxivkCwg7FxSTG0iLLEMaUx13oOr0R2/qcQ==", "dev": true, "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "@sindresorhus/merge-streams": "^4.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.5", + "is-path-inside": "^4.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.4.0" }, "engines": { - "node": ">=10" + "node": ">=20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -4913,19 +4619,6 @@ "dev": true, "license": "MIT" }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -4936,35 +4629,6 @@ "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -4993,9 +4657,9 @@ } }, "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -5004,21 +4668,14 @@ "node": ">= 0.4" } }, - "node_modules/http2-client": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/http2-client/-/http2-client-1.3.5.tgz", - "integrity": "sha512-EC2utToWl4RKfs5zd36Mxq7nzHHBuomZboI0yYL6Y0RmBgT7Sgkq4rQ0ezFTYoIsSs7Tm9SJe+o2FcAg6GBhGA==", - "dev": true, - "license": "MIT" - }, "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": ">=10.17.0" + "node": ">=18.18.0" } }, "node_modules/ignore": { @@ -5031,17 +4688,6 @@ "node": ">= 4" } }, - "node_modules/immer": { - "version": "9.0.21", - "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", - "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" - } - }, "node_modules/import-fresh": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", @@ -5069,147 +4715,6 @@ "node": ">=0.8.19" } }, - "node_modules/inflected": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/inflected/-/inflected-2.1.0.tgz", - "integrity": "sha512-hAEKNxvHf2Iq3H60oMBHkB4wl5jn3TPF3+fXek/sRwAB5gP9xWs4r7aweSF95f99HFoz69pnZTcu8f0SIHV18w==", - "dev": true, - "license": "MIT" - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -5220,52 +4725,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", - "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -5279,32 +4738,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -5315,188 +4748,58 @@ "node": ">=0.12.0" } }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", @@ -5533,16 +4836,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsep": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", - "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.16.0" - } - }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", @@ -5590,13 +4883,6 @@ "node": ">=6" } }, - "node_modules/jsonc-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.2.1.tgz", - "integrity": "sha512-o6/yDBYccGvTz1+QFevz6l6OBZ2+fMVu2JZ9CIhzsYRX4mjaK5IyX9eldUdCmga16zlgQxyrj5pt9kzuj2C02w==", - "dev": true, - "license": "MIT" - }, "node_modules/jsonfile": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", @@ -5610,25 +4896,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/jsonpath-plus": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.3.0.tgz", - "integrity": "sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jsep-plugin/assignment": "^1.3.0", - "@jsep-plugin/regex": "^1.0.4", - "jsep": "^1.4.0" - }, - "bin": { - "jsonpath": "bin/jsonpath-cli.js", - "jsonpath-plus": "bin/jsonpath-cli.js" - }, - "engines": { - "node": ">=18.0.0" - } - }, "node_modules/jsonpointer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz", @@ -5639,16 +4906,6 @@ "node": ">=0.10.0" } }, - "node_modules/jsonschema": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.5.0.tgz", - "integrity": "sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -5660,13 +4917,16 @@ } }, "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-4.1.0.tgz", + "integrity": "sha512-KZ9W9nWDT7rF7Dazg8xyLHGLrmpgq2nVNFUckhqdW3szVP6YhCpp/RAnpmVExA9JvrMynjwSLVrEj3AepHR6ew==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/levn": { @@ -5958,20 +5218,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isempty": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.isempty/-/lodash.isempty-4.4.0.tgz", - "integrity": "sha512-oKMuF3xEeqDltrGMfDxAPGIVMSSRv8tbRSODbrs4KGsRRLEhrW8N8Rd4DRgB2+621hY8A8XwwrTVhXWpxFvMzg==", - "dev": true, - "license": "MIT" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -5979,62 +5225,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.omitby": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.omitby/-/lodash.omitby-4.6.0.tgz", - "integrity": "sha512-5OrRcIVR75M288p4nbI2WLAf3ndw2GD9fyNv3Bc15+WCxJDdZ4lYndSxGd7hnG6PVjiJTeJE2dHEGhIuKGicIQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.topath": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.topath/-/lodash.topath-4.5.2.tgz", - "integrity": "sha512-1/W4dM+35DwvE/iEd1M9ekewOSTlpFekhw9mhAtrwjVqUr83/ilQiyAvmg4tVX7Unkcfl1KC+i9WdaT4B6aQcg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.uniqwith": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniqwith/-/lodash.uniqwith-4.5.0.tgz", - "integrity": "sha512-7lYL8bLopMoy4CTICbxygAUq6CdRJ36vFc80DucPueUee+d5NBRxz3FdT9Pes/HEx5mPoT9jwnsEJWz1N7uq7Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/loglevel": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.9.2.tgz", - "integrity": "sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "node_modules/loglevel-plugin-prefix": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/loglevel-plugin-prefix/-/loglevel-plugin-prefix-0.8.4.tgz", - "integrity": "sha512-WpG9CcFAOjz/FtNht+QJeGpvVl/cdR6P0z6OcXSkr8wFJOsV2GRj2j10JLfjuA4aYkcKCNIEqRGCyTife9R8/g==", - "dev": true, - "license": "MIT" - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", @@ -6062,9 +5252,9 @@ } }, "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", "dev": true, "license": "MIT", "dependencies": { @@ -6095,13 +5285,6 @@ "dev": true, "license": "MIT" }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true, - "license": "MIT" - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -6147,20 +5330,10 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -6170,6 +5343,21 @@ "node": "*" } }, + "node_modules/motion-dom": { + "version": "12.38.0", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.38.0.tgz", + "integrity": "sha512-pdkHLD8QYRp8VfiNLb8xIBJis1byQ9gPT3Jnh2jqfFtAsWUA3dEepDlsWe/xMpO8McV+VdpKVcp+E+TGJEtOoA==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.36.0" + } + }, + "node_modules/motion-utils": { + "version": "12.36.0", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.36.0.tgz", + "integrity": "sha512-eHWisygbiwVvf6PZ1vhaHCLamvkSbPIeAYxWUuL3a2PD/TROgE7FvfHWTIH4vMl798QLfMw15nRqIaRDXTlYRg==", + "license": "MIT" + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -6202,70 +5390,6 @@ "dev": true, "license": "MIT" }, - "node_modules/nimma": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/nimma/-/nimma-0.2.3.tgz", - "integrity": "sha512-1ZOI8J+1PKKGceo/5CT5GfQOG6H8I2BencSK06YarZ2wXwH37BSSUWldqJmMJYA5JfqDqffxDXynt6f11AyKcA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jsep-plugin/regex": "^1.0.1", - "@jsep-plugin/ternary": "^1.0.2", - "astring": "^1.8.1", - "jsep": "^1.2.0" - }, - "engines": { - "node": "^12.20 || >=14.13" - }, - "optionalDependencies": { - "jsonpath-plus": "^6.0.1 || ^10.1.0", - "lodash.topath": "^4.5.2" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch-h2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/node-fetch-h2/-/node-fetch-h2-2.3.0.tgz", - "integrity": "sha512-ofRW94Ab0T4AOh5Fk8t0h8OBWrmjb0SSB20xh1H8YnPV9EJ+f5AMoYSUQ2zgJ4Iq2HAK0I2l5/Nequ8YzFS3Hg==", - "dev": true, - "license": "MIT", - "dependencies": { - "http2-client": "^1.2.5" - }, - "engines": { - "node": "4.x || >=6.0.0" - } - }, - "node_modules/node-readfiles": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/node-readfiles/-/node-readfiles-0.2.0.tgz", - "integrity": "sha512-SU00ZarexNlE4Rjdm83vglt5Y9yiQ+XI1XpflWlb7q7UTN1JUItm69xMeiQCTxtTfnzt+83T8Cx+vI2ED++VDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es6-promise": "^3.2.1" - } - }, "node_modules/node-releases": { "version": "2.0.19", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", @@ -6284,199 +5408,46 @@ } }, "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", + "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "path-key": "^4.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/oas-kit-common": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/oas-kit-common/-/oas-kit-common-1.0.8.tgz", - "integrity": "sha512-pJTS2+T0oGIwgjGpw7sIRU8RQMcUoKCDWFLdBqKB2BNmGpbBMH2sdqAaOXUg8OzonZHU0L7vfJu1mJFEiYDWOQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "fast-safe-stringify": "^2.0.7" - } - }, - "node_modules/oas-linter": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/oas-linter/-/oas-linter-3.2.2.tgz", - "integrity": "sha512-KEGjPDVoU5K6swgo9hJVA/qYGlwfbFx+Kg2QB/kd7rzV5N8N5Mg6PlsoCMohVnQmo+pzJap/F610qTodKzecGQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@exodus/schemasafe": "^1.0.0-rc.2", - "should": "^13.2.1", - "yaml": "^1.10.0" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/oas-linter/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/oas-resolver": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/oas-resolver/-/oas-resolver-2.5.6.tgz", - "integrity": "sha512-Yx5PWQNZomfEhPPOphFbZKi9W93CocQj18NlD2Pa4GWZzdZpSJvYwoiuurRI7m3SpcChrnO08hkuQDL3FGsVFQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "node-fetch-h2": "^2.3.0", - "oas-kit-common": "^1.0.8", - "reftools": "^1.1.9", - "yaml": "^1.10.0", - "yargs": "^17.0.1" - }, - "bin": { - "resolve": "resolve.js" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/oas-resolver/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/oas-schema-walker": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/oas-schema-walker/-/oas-schema-walker-1.1.5.tgz", - "integrity": "sha512-2yucenq1a9YPmeNExoUa9Qwrt9RFkjqaMAA1X+U7sbb0AqBeTIdMHky9SQQ6iN94bO5NW0W4TRYXerG+BdAvAQ==", - "dev": true, - "license": "BSD-3-Clause", - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/oas-validator": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/oas-validator/-/oas-validator-5.0.8.tgz", - "integrity": "sha512-cu20/HE5N5HKqVygs3dt94eYJfBi0TsZvPVXDhbXQHiEityDN+RROTleefoKRKKJ9dFAF2JBkDHgvWj0sjKGmw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "call-me-maybe": "^1.0.1", - "oas-kit-common": "^1.0.8", - "oas-linter": "^3.2.2", - "oas-resolver": "^2.5.6", - "oas-schema-walker": "^1.1.5", - "reftools": "^1.1.9", - "should": "^13.2.1", - "yaml": "^1.10.0" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/oas-validator/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/openapi-types": { - "version": "12.1.3", - "resolved": "https://registry.npmjs.org/openapi-types/-/openapi-types-12.1.3.tgz", - "integrity": "sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "license": "MIT", - "peer": true + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/openapi3-ts": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/openapi3-ts/-/openapi3-ts-4.5.0.tgz", - "integrity": "sha512-jaL+HgTq2Gj5jRcfdutgRGLosCy/hT8sQf6VOy+P+g36cZOjI1iukdPnijC+4CmeRzg/jEllJUboEic2FhxhtQ==", + "node_modules/npm-run-path/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", "dev": true, "license": "MIT", - "dependencies": { - "yaml": "^2.8.0" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/optionator": { @@ -6498,64 +5469,146 @@ } }, "node_modules/orval": { - "version": "7.17.0", - "resolved": "https://registry.npmjs.org/orval/-/orval-7.17.0.tgz", - "integrity": "sha512-iBqZC7HpSSL1CJ9jRCD+5vCYpedd03Udh+izcyFnWyVUN0ywuzGonizJgl5iGTgoe+VXsMM7ndV5h+DkghreMg==", + "version": "8.8.0", + "resolved": "https://registry.npmjs.org/orval/-/orval-8.8.0.tgz", + "integrity": "sha512-jcHcAmXCvC0g+1acsUOv722ICuXCJ0tmRl3+e0kj1lgFVsuGYame+jRZUrNtpkEZgF1RlDtmL91yFsVHv3X1eA==", "dev": true, "license": "MIT", "dependencies": { - "@apidevtools/swagger-parser": "^12.1.0", "@commander-js/extra-typings": "^14.0.0", - "@orval/angular": "7.17.0", - "@orval/axios": "7.17.0", - "@orval/core": "7.17.0", - "@orval/fetch": "7.17.0", - "@orval/hono": "7.17.0", - "@orval/mcp": "7.17.0", - "@orval/mock": "7.17.0", - "@orval/query": "7.17.0", - "@orval/swr": "7.17.0", - "@orval/zod": "7.17.0", - "chalk": "^4.1.2", - "chokidar": "^4.0.3", - "commander": "^14.0.1", + "@orval/angular": "8.8.0", + "@orval/axios": "8.8.0", + "@orval/core": "8.8.0", + "@orval/fetch": "8.8.0", + "@orval/hono": "8.8.0", + "@orval/mcp": "8.8.0", + "@orval/mock": "8.8.0", + "@orval/query": "8.8.0", + "@orval/solid-start": "8.8.0", + "@orval/swr": "8.8.0", + "@orval/zod": "8.8.0", + "@scalar/json-magic": "^0.12.4", + "@scalar/openapi-parser": "^0.25.6", + "@scalar/openapi-types": "0.6.1", + "chokidar": "^5.0.0", + "commander": "^14.0.2", "enquirer": "^2.4.1", - "execa": "^5.1.1", - "find-up": "5.0.0", + "execa": "^9.6.1", + "find-up": "8.0.0", "fs-extra": "^11.3.2", "jiti": "^2.6.1", "js-yaml": "4.1.1", - "lodash.uniq": "^4.5.0", - "openapi3-ts": "4.5.0", + "remeda": "^2.33.6", "string-argv": "^0.3.2", - "tsconfck": "^2.1.2", - "typedoc": "^0.28.14", + "tsconfck": "^3.1.6", + "typedoc": "^0.28.17", "typedoc-plugin-coverage": "^4.0.2", - "typedoc-plugin-markdown": "^4.9.0" + "typedoc-plugin-markdown": "^4.10.0" }, "bin": { - "orval": "dist/bin/orval.js" + "orval": "dist/bin/orval.mjs" }, "engines": { "node": ">=22.18.0" + }, + "peerDependencies": { + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "prettier": { + "optional": true + } } }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "node_modules/orval/node_modules/find-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-8.0.0.tgz", + "integrity": "sha512-JGG8pvDi2C+JxidYdIwQDyS/CgcrIdh18cvgxcBge3wSHRQOrooMD3GlFBcmMJAN9M42SAZjDp5zv1dglJjwww==", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" + "locate-path": "^8.0.0", + "unicorn-magic": "^0.3.0" }, "engines": { - "node": ">= 0.4" + "node": ">=20" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/orval/node_modules/locate-path": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-8.0.0.tgz", + "integrity": "sha512-XT9ewWAC43tiAV7xDAPflMkG0qOPn2QjHqlgX8FOqmWa/rxnyYDulF9T0F7tRy1u+TVTmK/M//6VIOye+2zDXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/orval/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/orval/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/orval/node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/orval/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-limit": { @@ -6603,6 +5656,19 @@ "node": ">=6" } }, + "node_modules/parse-ms": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", + "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -6623,15 +5689,12 @@ "node": ">=8" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/picocolors": { "version": "1.1.1", @@ -6640,9 +5703,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, "license": "MIT", "engines": { @@ -6652,26 +5715,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pony-cause": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-1.1.1.tgz", - "integrity": "sha512-PxkIc/2ZpLiEzQXu5YRDOUgBlfGYBY8156HY5ZcRAwwonMk5W/MrJP2LLkG/hF7GEQzaHo2aS7ho6ZLCOvf+6g==", - "dev": true, - "license": "0BSD", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/postcss": { "version": "8.5.6", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", @@ -6733,11 +5776,30 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, + "node_modules/pretty-ms": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", + "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-ms": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", + "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", + "license": "MIT", + "engines": { + "node": ">=10" + } }, "node_modules/punycode": { "version": "2.3.1", @@ -6789,6 +5851,27 @@ "node": ">=0.10.0" } }, + "node_modules/react-aria": { + "version": "3.48.0", + "resolved": "https://registry.npmjs.org/react-aria/-/react-aria-3.48.0.tgz", + "integrity": "sha512-jQjd4rBEIMqecBaAKYJbVGK6EqIHLa5znVQ7jwFyK5vCyljoj6KhgtiahmcIPsG5vG5vEDLw+ba+bEWn6A2P4w==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.1", + "@internationalized/number": "^3.6.6", + "@internationalized/string": "^3.2.8", + "@react-types/shared": "^3.34.0", + "@swc/helpers": "^0.5.0", + "aria-hidden": "^1.2.3", + "clsx": "^2.0.0", + "react-stately": "3.46.0", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", + "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, "node_modules/react-dom": { "version": "19.1.1", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", @@ -6801,6 +5884,22 @@ "react": "^19.1.1" } }, + "node_modules/react-hook-form": { + "version": "7.72.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.72.1.tgz", + "integrity": "sha512-RhwBoy2ygeVZje+C+bwJ8g0NjTdBmDlJvAUHTxRjTmSUKPYsKfMphkS2sgEMotsY03bP358yEYlnUeZy//D9Ig==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-hook-form" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17 || ^18 || ^19" + } + }, "node_modules/react-icons": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz", @@ -6810,6 +5909,16 @@ "react": "*" } }, + "node_modules/react-number-format": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/react-number-format/-/react-number-format-5.4.5.tgz", + "integrity": "sha512-y8O2yHHj3w0aE9XO8d2BCcUOOdQTRSVq+WIuMlLVucAm5XNjJAy+BoOJiuQMldVYVOKTMyvVNfnbl2Oqp+YxGw==", + "license": "MIT", + "peerDependencies": { + "react": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, "node_modules/react-refresh": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", @@ -6820,10 +5929,57 @@ "node": ">=0.10.0" } }, + "node_modules/react-remove-scroll": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.2.tgz", + "integrity": "sha512-Iqb9NjCCTt6Hf+vOdNIZGdTiH1QSqr27H/Ek9sv/a97gfueI/5h1s3yRi1nngzMUaOOToin5dI1dXKdXiF+u0Q==", + "license": "MIT", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "license": "MIT", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-router": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.8.1.tgz", - "integrity": "sha512-5cy/M8DHcG51/KUIka1nfZ2QeylS4PJRs6TT8I4PF5axVsI5JUxp0hC0NZ/AEEj8Vw7xsEoD7L/6FY+zoYaOGA==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.14.1.tgz", + "integrity": "sha512-5BCvFskyAAVumqhEKh/iPhLOIkfxcEUz8WqFIARCkMg8hZZzDYX9CtwxXA0e+qT8zAxmMC0x3Ckb9iMONwc5jg==", "license": "MIT", "dependencies": { "cookie": "^1.0.1", @@ -6843,12 +5999,12 @@ } }, "node_modules/react-router-dom": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.8.1.tgz", - "integrity": "sha512-NkgBCF3sVgCiAWIlSt89GR2PLaksMpoo3HDCorpRfnCEfdtRPLiuTf+CNXvqZMI5SJLZCLpVCvcZrTdtGW64xQ==", + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.14.1.tgz", + "integrity": "sha512-ZkrQuwwhGibjQLqH1eCdyiZyLWglPxzxdl5tgwgKEyCSGC76vmAjleGocRe3J/MLfzMUIKwaFJWpFVJhK3d2xA==", "license": "MIT", "dependencies": { - "react-router": "7.8.1" + "react-router": "7.14.1" }, "engines": { "node": ">=20.0.0" @@ -6858,82 +6014,97 @@ "react-dom": ">=18" } }, + "node_modules/react-stately": { + "version": "3.46.0", + "resolved": "https://registry.npmjs.org/react-stately/-/react-stately-3.46.0.tgz", + "integrity": "sha512-OdxhWvHgs2L4OJGIs7hnuTr5WjjMM6enhNEAMRqiekhF8+ITvA2LRwNftOZwcogaoCslGYq5S2VQTQwnm0GbCA==", + "license": "Apache-2.0", + "dependencies": { + "@internationalized/date": "^3.12.1", + "@internationalized/number": "^3.6.6", + "@internationalized/string": "^3.2.8", + "@react-types/shared": "^3.34.0", + "@swc/helpers": "^0.5.0", + "use-sync-external-store": "^1.6.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "license": "MIT", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-textarea-autosize": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.9.tgz", + "integrity": "sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-toastify": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-11.0.5.tgz", + "integrity": "sha512-EpqHBGvnSTtHYhCPLxML05NLY2ZX0JURbAdNYa6BUkk+amz4wbKBQvoKQAB0ardvSarUBuY4Q4s1sluAzZwkmA==", + "license": "MIT", + "dependencies": { + "clsx": "^2.1.1" + }, + "peerDependencies": { + "react": "^18 || ^19", + "react-dom": "^18 || ^19" + } + }, "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", + "integrity": "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==", "dev": true, "license": "MIT", "engines": { - "node": ">= 14.18.0" + "node": ">= 20.19.0" }, "funding": { "type": "individual", "url": "https://paulmillr.com/funding/" } }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "node_modules/remeda": { + "version": "2.33.7", + "resolved": "https://registry.npmjs.org/remeda/-/remeda-2.33.7.tgz", + "integrity": "sha512-cXlyjevWx5AcslOUEETG4o8XYi9UkoCXcJmj7XhPFVbla+ITuOBxv6ijBrmbeg+ZhzmDThkNdO+iXKUfrJep1w==", "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/reftools": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/reftools/-/reftools-1.1.9.tgz", - "integrity": "sha512-OVede/NQE13xBQ+ob5CKd5KyeJYU2YInb1bmV4nRoOfquZPkAkxuOXicSe1PvqIuZZ4kD13sPKBbR7UFDmli6w==", - "dev": true, - "license": "BSD-3-Clause", - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/remeda" } }, "node_modules/require-from-string": { @@ -6968,9 +6139,9 @@ } }, "node_modules/rollup": { - "version": "4.46.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.2.tgz", - "integrity": "sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==", + "version": "4.60.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.2.tgz", + "integrity": "sha512-J9qZyW++QK/09NyN/zeO0dG/1GdGfyp9lV8ajHnRVLfo/uFsbji5mHnDgn/qYdUHyCkM2N+8VyspgZclfAh0eQ==", "license": "MIT", "dependencies": { "@types/estree": "1.0.8" @@ -6983,26 +6154,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.46.2", - "@rollup/rollup-android-arm64": "4.46.2", - "@rollup/rollup-darwin-arm64": "4.46.2", - "@rollup/rollup-darwin-x64": "4.46.2", - "@rollup/rollup-freebsd-arm64": "4.46.2", - "@rollup/rollup-freebsd-x64": "4.46.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.46.2", - "@rollup/rollup-linux-arm-musleabihf": "4.46.2", - "@rollup/rollup-linux-arm64-gnu": "4.46.2", - "@rollup/rollup-linux-arm64-musl": "4.46.2", - "@rollup/rollup-linux-loongarch64-gnu": "4.46.2", - "@rollup/rollup-linux-ppc64-gnu": "4.46.2", - "@rollup/rollup-linux-riscv64-gnu": "4.46.2", - "@rollup/rollup-linux-riscv64-musl": "4.46.2", - "@rollup/rollup-linux-s390x-gnu": "4.46.2", - "@rollup/rollup-linux-x64-gnu": "4.46.2", - "@rollup/rollup-linux-x64-musl": "4.46.2", - "@rollup/rollup-win32-arm64-msvc": "4.46.2", - "@rollup/rollup-win32-ia32-msvc": "4.46.2", - "@rollup/rollup-win32-x64-msvc": "4.46.2", + "@rollup/rollup-android-arm-eabi": "4.60.2", + "@rollup/rollup-android-arm64": "4.60.2", + "@rollup/rollup-darwin-arm64": "4.60.2", + "@rollup/rollup-darwin-x64": "4.60.2", + "@rollup/rollup-freebsd-arm64": "4.60.2", + "@rollup/rollup-freebsd-x64": "4.60.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.60.2", + "@rollup/rollup-linux-arm-musleabihf": "4.60.2", + "@rollup/rollup-linux-arm64-gnu": "4.60.2", + "@rollup/rollup-linux-arm64-musl": "4.60.2", + "@rollup/rollup-linux-loong64-gnu": "4.60.2", + "@rollup/rollup-linux-loong64-musl": "4.60.2", + "@rollup/rollup-linux-ppc64-gnu": "4.60.2", + "@rollup/rollup-linux-ppc64-musl": "4.60.2", + "@rollup/rollup-linux-riscv64-gnu": "4.60.2", + "@rollup/rollup-linux-riscv64-musl": "4.60.2", + "@rollup/rollup-linux-s390x-gnu": "4.60.2", + "@rollup/rollup-linux-x64-gnu": "4.60.2", + "@rollup/rollup-linux-x64-musl": "4.60.2", + "@rollup/rollup-openbsd-x64": "4.60.2", + "@rollup/rollup-openharmony-arm64": "4.60.2", + "@rollup/rollup-win32-arm64-msvc": "4.60.2", + "@rollup/rollup-win32-ia32-msvc": "4.60.2", + "@rollup/rollup-win32-x64-gnu": "4.60.2", + "@rollup/rollup-win32-x64-msvc": "4.60.2", "fsevents": "~2.3.2" } }, @@ -7030,68 +6206,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-stable-stringify": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-1.1.1.tgz", - "integrity": "sha512-ERq4hUjKDbJfE4+XtZLFPCDi8Vb1JqaxAPTxWFLBx8XcAlf9Bda/ZJdVezs/NAfsMQScyIlUMx+Yeu7P7rx5jw==", - "dev": true, - "license": "MIT" - }, "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", @@ -7109,60 +6223,11 @@ } }, "node_modules/set-cookie-parser": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", - "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", "license": "MIT" }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -7186,170 +6251,30 @@ "node": ">=8" } }, - "node_modules/should": { - "version": "13.2.3", - "resolved": "https://registry.npmjs.org/should/-/should-13.2.3.tgz", - "integrity": "sha512-ggLesLtu2xp+ZxI+ysJTmNjh2U0TsC+rQ/pfED9bUZZ4DKefP27D+7YJVVTvKsmjLpIi9jAa7itwDGkDDmt1GQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "should-equal": "^2.0.0", - "should-format": "^3.0.3", - "should-type": "^1.4.0", - "should-type-adaptors": "^1.0.1", - "should-util": "^1.0.0" - } - }, - "node_modules/should-equal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/should-equal/-/should-equal-2.0.0.tgz", - "integrity": "sha512-ZP36TMrK9euEuWQYBig9W55WPC7uo37qzAEmbjHz4gfyuXrEUgF8cUvQVO+w+d3OMfPvSRQJ22lSm8MQJ43LTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "should-type": "^1.4.0" - } - }, - "node_modules/should-format": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/should-format/-/should-format-3.0.3.tgz", - "integrity": "sha512-hZ58adtulAk0gKtua7QxevgUaXTTXxIi8t41L3zo9AHvjXO1/7sdLECuHeIN2SRtYXpNkmhoUP2pdeWgricQ+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "should-type": "^1.3.0", - "should-type-adaptors": "^1.0.1" - } - }, - "node_modules/should-type": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/should-type/-/should-type-1.4.0.tgz", - "integrity": "sha512-MdAsTu3n25yDbIe1NeN69G4n6mUnJGtSJHygX3+oN0ZbO3DTiATnf7XnYJdGT42JCXurTb1JI0qOBR65shvhPQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/should-type-adaptors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/should-type-adaptors/-/should-type-adaptors-1.1.0.tgz", - "integrity": "sha512-JA4hdoLnN+kebEp2Vs8eBe9g7uy0zbRo+RMcU0EsNy+R+k049Ki+N5tT5Jagst2g7EAja+euFuoXFCa8vIklfA==", - "dev": true, - "license": "MIT", - "dependencies": { - "should-type": "^1.3.0", - "should-util": "^1.0.0" - } - }, - "node_modules/should-util": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/should-util/-/should-util-1.0.1.tgz", - "integrity": "sha512-oXF8tfxx5cDk8r2kYqlkUJzZpDBqVY/II2WhvU0n9Y3XYvAYRmeaf1PvvIvTgPnv4KJ+ES5M0PyDq5Jp+Ygy2g==", - "dev": true, - "license": "MIT" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC" - }, - "node_modules/simple-eval": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-eval/-/simple-eval-1.0.1.tgz", - "integrity": "sha512-LH7FpTAkeD+y5xQC4fzS+tFtaNlvt3Ib1zKzvhjv/Y+cioV4zIuw4IZr2yhRLu67CWL7FR9/6KXKnjRoZTvGGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "jsep": "^1.3.6" - }, + "license": "ISC", "engines": { - "node": ">=12" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/source-map-js": { @@ -7361,20 +6286,6 @@ "node": ">=0.10.0" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -7385,80 +6296,6 @@ "node": ">=0.6.19" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -7473,13 +6310,16 @@ } }, "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", + "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/strip-json-comments": { @@ -7508,43 +6348,11 @@ "node": ">=8" } }, - "node_modules/swagger2openapi": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/swagger2openapi/-/swagger2openapi-7.0.8.tgz", - "integrity": "sha512-upi/0ZGkYgEcLeGieoz8gT74oWHA0E7JivX7aN9mAf+Tc7BQoRBvnIGHoPDw+f9TXTW4s6kGYCZJtauP6OYp7g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "call-me-maybe": "^1.0.1", - "node-fetch": "^2.6.1", - "node-fetch-h2": "^2.3.0", - "node-readfiles": "^0.2.0", - "oas-kit-common": "^1.0.8", - "oas-resolver": "^2.5.6", - "oas-schema-walker": "^1.1.5", - "oas-validator": "^5.0.8", - "reftools": "^1.1.9", - "yaml": "^1.10.0", - "yargs": "^17.0.1" - }, - "bin": { - "boast": "boast.js", - "oas-validate": "oas-validate.js", - "swagger2openapi": "swagger2openapi.js" - }, - "funding": { - "url": "https://github.com/Mermade/oas-kit?sponsor=1" - } - }, - "node_modules/swagger2openapi/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 6" - } + "node_modules/tabbable": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", + "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", + "license": "MIT" }, "node_modules/tailwindcss": { "version": "4.1.16", @@ -7599,9 +6407,9 @@ } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -7623,13 +6431,6 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true, - "license": "MIT" - }, "node_modules/ts-api-utils": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", @@ -7644,19 +6445,19 @@ } }, "node_modules/tsconfck": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-2.1.2.tgz", - "integrity": "sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz", + "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==", "dev": true, "license": "MIT", "bin": { "tsconfck": "bin/tsconfck.js" }, "engines": { - "node": "^14.13.1 || ^16 || >=18" + "node": "^18 || >=20" }, "peerDependencies": { - "typescript": "^4.3.5 || ^5.0.0" + "typescript": "^5.0.0" }, "peerDependenciesMeta": { "typescript": { @@ -7668,7 +6469,6 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "devOptional": true, "license": "0BSD" }, "node_modules/type-check": { @@ -7684,96 +6484,30 @@ "node": ">= 0.8.0" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, + "node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" + "node": ">=16" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/typedoc": { - "version": "0.28.15", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.15.tgz", - "integrity": "sha512-mw2/2vTL7MlT+BVo43lOsufkkd2CJO4zeOSuWQQsiXoV2VuEn7f6IZp2jsUDPmBMABpgR0R5jlcJ2OGEFYmkyg==", + "version": "0.28.19", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.28.19.tgz", + "integrity": "sha512-wKh+lhdmMFivMlc6vRRcMGXeGEHGU2g8a2CkPTJjJlwRf1iXbimWIPcFolCqe4E0d/FRtGszpIrsp3WLpDB8Pw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@gerrit0/mini-shiki": "^3.17.0", + "@gerrit0/mini-shiki": "^3.23.0", "lunr": "^2.3.9", - "markdown-it": "^14.1.0", - "minimatch": "^9.0.5", - "yaml": "^2.8.1" + "markdown-it": "^14.1.1", + "minimatch": "^10.2.5", + "yaml": "^2.8.3" }, "bin": { "typedoc": "bin/typedoc" @@ -7783,7 +6517,7 @@ "pnpm": ">= 10" }, "peerDependencies": { - "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x" + "typescript": "5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x || 5.5.x || 5.6.x || 5.7.x || 5.8.x || 5.9.x || 6.0.x" } }, "node_modules/typedoc-plugin-coverage": { @@ -7800,9 +6534,9 @@ } }, "node_modules/typedoc-plugin-markdown": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.9.0.tgz", - "integrity": "sha512-9Uu4WR9L7ZBgAl60N/h+jqmPxxvnC9nQAlnnO/OujtG2ubjnKTVUFY1XDhcMY+pCqlX3N2HsQM2QTYZIU9tJuw==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/typedoc-plugin-markdown/-/typedoc-plugin-markdown-4.11.0.tgz", + "integrity": "sha512-2iunh2ALyfyh204OF7h2u0kuQ84xB3jFZtFyUr01nThJkLvR8oGGSSDlyt2gyO4kXhvUxDcVbO0y43+qX+wFbw==", "dev": true, "license": "MIT", "engines": { @@ -7812,27 +6546,40 @@ "typedoc": "0.28.x" } }, + "node_modules/typedoc/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/typedoc/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.5" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7883,25 +6630,6 @@ "dev": true, "license": "MIT" }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/undici-types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", @@ -7909,6 +6637,19 @@ "devOptional": true, "license": "MIT" }, + "node_modules/unicorn-magic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -7960,40 +6701,110 @@ "punycode": "^2.1.0" } }, - "node_modules/urijs": { - "version": "1.19.11", - "resolved": "https://registry.npmjs.org/urijs/-/urijs-1.19.11.tgz", - "integrity": "sha512-HXgFDgDommxn5/bIv0cnQZsPhHDA90NPHD6+c/v21U5+Sx5hoP8+dP9IZXBU1gIfvdRfhG8cel9QNPeionfcCQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/utility-types": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", - "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", - "dev": true, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", "license": "MIT", + "dependencies": { + "tslib": "^2.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/validator": { - "version": "13.15.26", - "resolved": "https://registry.npmjs.org/validator/-/validator-13.15.26.tgz", - "integrity": "sha512-spH26xU080ydGggxRyR1Yhcbgx+j3y5jbNXk/8L+iRvdIEQ4uTRH2Sgf2dokud6Q4oAtsbNvJ1Ft+9xmm6IZcA==", - "dev": true, + "node_modules/use-composed-ref": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.4.0.tgz", + "integrity": "sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==", "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.2.1.tgz", + "integrity": "sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.3.0.tgz", + "integrity": "sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==", + "license": "MIT", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, "engines": { - "node": ">= 0.10" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/vite": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", - "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz", + "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==", "license": "MIT", "dependencies": { - "esbuild": "^0.25.0", + "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", @@ -8079,9 +6890,9 @@ } }, "node_modules/vite/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", "engines": { "node": ">=12" @@ -8090,24 +6901,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -8124,95 +6917,6 @@ "node": ">= 8" } }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -8223,34 +6927,6 @@ "node": ">=0.10.0" } }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -8259,9 +6935,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "devOptional": true, "license": "ISC", "bin": { @@ -8274,35 +6950,6 @@ "url": "https://github.com/sponsors/eemeli" } }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -8315,6 +6962,29 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.3.6.tgz", + "integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } } } } diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 3688a93..223c49d 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -16,9 +16,9 @@ import ScrollToTop from "./components/common/ScrollToTop"; import AuthLayout from "./layouts/AuthLayout"; -import LogoutPage from "./pages/account/Logout"; -import LoginPage from "./pages/account/Login"; -import RegisterPage from "./pages/account/Register"; +import LogoutPage from "./pages/social/account/Logout"; +import LoginPage from "./pages/social/account/Login"; +import RegisterPage from "./pages/social/account/Register"; import { RetroSoundTest } from "./pages/test/sounds"; diff --git a/frontend/src/api/generated/private/account/account.ts b/frontend/src/api/generated/private/account/account.ts index fa40e37..a12a5c9 100644 --- a/frontend/src/api/generated/private/account/account.ts +++ b/frontend/src/api/generated/private/account/account.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -24,7 +24,7 @@ import type { CustomUser, PaginatedCustomUserList, PatchedCustomUser, -} from ".././models"; +} from "../models"; import { privateMutator } from "../../../privateClient"; @@ -200,9 +200,7 @@ export function useApiAccountUserMeRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -362,9 +360,7 @@ export function useApiAccountUsersList< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -446,9 +442,10 @@ export const useApiAccountUsersCreate = ( { data: NonReadonly }, TContext > => { - const mutationOptions = getApiAccountUsersCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountUsersCreateMutationOptions(options), + queryClient, + ); }; /** * Displays all users with filtering and ordering options. Requires authentication and appropriate role. @@ -462,7 +459,7 @@ export const apiAccountUsersRetrieve = (id: number, signal?: AbortSignal) => { }); }; -export const getApiAccountUsersRetrieveQueryKey = (id?: number) => { +export const getApiAccountUsersRetrieveQueryKey = (id: number) => { return [`/api/account/users/${id}/`] as const; }; @@ -606,9 +603,7 @@ export function useApiAccountUsersRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -618,12 +613,14 @@ export function useApiAccountUsersRetrieve< export const apiAccountUsersUpdate = ( id: number, customUser: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/account/users/${id}/`, method: "PUT", headers: { "Content-Type": "application/json" }, data: customUser, + signal, }); }; @@ -689,9 +686,10 @@ export const useApiAccountUsersUpdate = ( { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = getApiAccountUsersUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountUsersUpdateMutationOptions(options), + queryClient, + ); }; /** * Displays all users with filtering and ordering options. Requires authentication and appropriate role. @@ -700,12 +698,14 @@ export const useApiAccountUsersUpdate = ( export const apiAccountUsersPartialUpdate = ( id: number, patchedCustomUser: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/account/users/${id}/`, method: "PATCH", headers: { "Content-Type": "application/json" }, data: patchedCustomUser, + signal, }); }; @@ -775,19 +775,20 @@ export const useApiAccountUsersPartialUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiAccountUsersPartialUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountUsersPartialUpdateMutationOptions(options), + queryClient, + ); }; /** * Displays all users with filtering and ordering options. Requires authentication and appropriate role. * @summary List, retrieve, update, and delete users. */ -export const apiAccountUsersDestroy = (id: number) => { +export const apiAccountUsersDestroy = (id: number, signal?: AbortSignal) => { return privateMutator({ url: `/api/account/users/${id}/`, method: "DELETE", + signal, }); }; @@ -853,7 +854,8 @@ export const useApiAccountUsersDestroy = ( { id: number }, TContext > => { - const mutationOptions = getApiAccountUsersDestroyMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountUsersDestroyMutationOptions(options), + queryClient, + ); }; diff --git a/frontend/src/api/generated/private/advertisement/advertisement.ts b/frontend/src/api/generated/private/advertisement/advertisement.ts index 93f5e98..d9d8856 100644 --- a/frontend/src/api/generated/private/advertisement/advertisement.ts +++ b/frontend/src/api/generated/private/advertisement/advertisement.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -24,7 +24,7 @@ import type { ContactMe, PaginatedContactMeList, PatchedContactMe, -} from ".././models"; +} from "../models"; import { privateMutator } from "../../../privateClient"; @@ -219,9 +219,7 @@ export function useApiAdvertisementContactMessagesList< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -306,10 +304,10 @@ export const useApiAdvertisementContactMessagesCreate = < { data: NonReadonly }, TContext > => { - const mutationOptions = - getApiAdvertisementContactMessagesCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAdvertisementContactMessagesCreateMutationOptions(options), + queryClient, + ); }; /** * @summary Retrieve contact message (admin) @@ -326,7 +324,7 @@ export const apiAdvertisementContactMessagesRetrieve = ( }; export const getApiAdvertisementContactMessagesRetrieveQueryKey = ( - id?: number, + id: number, ) => { return [`/api/advertisement/contact-messages/${id}/`] as const; }; @@ -475,9 +473,7 @@ export function useApiAdvertisementContactMessagesRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -486,12 +482,14 @@ export function useApiAdvertisementContactMessagesRetrieve< export const apiAdvertisementContactMessagesUpdate = ( id: number, contactMe: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/advertisement/contact-messages/${id}/`, method: "PUT", headers: { "Content-Type": "application/json" }, data: contactMe, + signal, }); }; @@ -561,10 +559,10 @@ export const useApiAdvertisementContactMessagesUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiAdvertisementContactMessagesUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAdvertisementContactMessagesUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Update contact message (admin) @@ -572,12 +570,14 @@ export const useApiAdvertisementContactMessagesUpdate = < export const apiAdvertisementContactMessagesPartialUpdate = ( id: number, patchedContactMe: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/advertisement/contact-messages/${id}/`, method: "PATCH", headers: { "Content-Type": "application/json" }, data: patchedContactMe, + signal, }); }; @@ -648,18 +648,22 @@ export const useApiAdvertisementContactMessagesPartialUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiAdvertisementContactMessagesPartialUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAdvertisementContactMessagesPartialUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Delete contact message (admin) */ -export const apiAdvertisementContactMessagesDestroy = (id: number) => { +export const apiAdvertisementContactMessagesDestroy = ( + id: number, + signal?: AbortSignal, +) => { return privateMutator({ url: `/api/advertisement/contact-messages/${id}/`, method: "DELETE", + signal, }); }; @@ -728,8 +732,91 @@ export const useApiAdvertisementContactMessagesDestroy = < { id: number }, TContext > => { - const mutationOptions = - getApiAdvertisementContactMessagesDestroyMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAdvertisementContactMessagesDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * Triggers the weekly email task that sends a summary of newly added products from the last week. Only accessible by admin users. + * @summary Manually trigger weekly new items email + */ +export const apiAdvertisementTriggerWeeklyEmailCreate = ( + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/advertisement/trigger-weekly-email/`, + method: "POST", + signal, + }); +}; + +export const getApiAdvertisementTriggerWeeklyEmailCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + void, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + void, + TContext +> => { + const mutationKey = ["apiAdvertisementTriggerWeeklyEmailCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + void + > = () => { + return apiAdvertisementTriggerWeeklyEmailCreate(); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiAdvertisementTriggerWeeklyEmailCreateMutationResult = + NonNullable< + Awaited> + >; + +export type ApiAdvertisementTriggerWeeklyEmailCreateMutationError = unknown; + +/** + * @summary Manually trigger weekly new items email + */ +export const useApiAdvertisementTriggerWeeklyEmailCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + void, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + void, + TContext +> => { + return useMutation( + getApiAdvertisementTriggerWeeklyEmailCreateMutationOptions(options), + queryClient, + ); }; diff --git a/frontend/src/api/generated/private/api/api.ts b/frontend/src/api/generated/private/api/api.ts index 56eb77e..c067d7a 100644 --- a/frontend/src/api/generated/private/api/api.ts +++ b/frontend/src/api/generated/private/api/api.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -20,15 +20,24 @@ import type { } from "@tanstack/react-query"; import type { + ApiCommerceReviewsListParams, ApiSchemaRetrieve200Four, ApiSchemaRetrieve200One, ApiSchemaRetrieve200Three, ApiSchemaRetrieve200Two, ApiSchemaRetrieveParams, + Cart, + Message, OrderMini, OrderRead, + PaginatedReviewSerializerPublicList, + PatchedCart, PatchedOrderRead, -} from ".././models"; + PatchedReviewSerializerPublic, + Product, + ReviewSerializerPublic, + Wishlist, +} from "../models"; import { privateMutator } from "../../../privateClient"; @@ -60,6 +69,645 @@ type NonReadonly = [T] extends [UnionToIntersection] } : DistributeReadOnlyOverUnions; +/** + * Admin-only wishlist management - can view and modify any user's wishlist + */ +export const apiCommerceAdminWishlistsCreate = ( + wishlist: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/admin/wishlists/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: wishlist, + signal, + }); +}; + +export const getApiCommerceAdminWishlistsCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceAdminWishlistsCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiCommerceAdminWishlistsCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceAdminWishlistsCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceAdminWishlistsCreateMutationBody = NonReadonly; +export type ApiCommerceAdminWishlistsCreateMutationError = unknown; + +export const useApiCommerceAdminWishlistsCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceAdminWishlistsCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Add a product to the cart or update quantity if already exists + */ +export const apiCommerceCartAddCreate = ( + cart: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/cart/add/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: cart, + signal, + }); +}; + +export const getApiCommerceCartAddCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceCartAddCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiCommerceCartAddCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceCartAddCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceCartAddCreateMutationBody = NonReadonly; +export type ApiCommerceCartAddCreateMutationError = unknown; + +export const useApiCommerceCartAddCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceCartAddCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Remove all items from the cart + */ +export const apiCommerceCartClearCreate = ( + cart: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/cart/clear/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: cart, + signal, + }); +}; + +export const getApiCommerceCartClearCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceCartClearCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiCommerceCartClearCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceCartClearCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceCartClearCreateMutationBody = NonReadonly; +export type ApiCommerceCartClearCreateMutationError = unknown; + +export const useApiCommerceCartClearCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceCartClearCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Get the current user's cart + */ +export const apiCommerceCartCurrentRetrieve = (signal?: AbortSignal) => { + return privateMutator({ + url: `/api/commerce/cart/current/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceCartCurrentRetrieveQueryKey = () => { + return [`/api/commerce/cart/current/`] as const; +}; + +export const getApiCommerceCartCurrentRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>(options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; +}) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiCommerceCartCurrentRetrieveQueryKey(); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceCartCurrentRetrieve(signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceCartCurrentRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceCartCurrentRetrieveQueryError = unknown; + +export function useApiCommerceCartCurrentRetrieve< + TData = Awaited>, + TError = unknown, +>( + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceCartCurrentRetrieve< + TData = Awaited>, + TError = unknown, +>( + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceCartCurrentRetrieve< + TData = Awaited>, + TError = unknown, +>( + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useApiCommerceCartCurrentRetrieve< + TData = Awaited>, + TError = unknown, +>( + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceCartCurrentRetrieveQueryOptions(options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Update quantity of a cart item + */ +export const apiCommerceCartItemsPartialUpdate = ( + itemId: string, + patchedCart: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/cart/items/${itemId}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedCart, + signal, + }); +}; + +export const getApiCommerceCartItemsPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { itemId: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { itemId: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceCartItemsPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { itemId: string; data: NonReadonly } + > = (props) => { + const { itemId, data } = props ?? {}; + + return apiCommerceCartItemsPartialUpdate(itemId, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceCartItemsPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceCartItemsPartialUpdateMutationBody = + NonReadonly; +export type ApiCommerceCartItemsPartialUpdateMutationError = unknown; + +export const useApiCommerceCartItemsPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { itemId: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { itemId: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceCartItemsPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Remove an item from the cart + */ +export const apiCommerceCartItemsDestroy = ( + itemId: string, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/cart/items/${itemId}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiCommerceCartItemsDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { itemId: string }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { itemId: string }, + TContext +> => { + const mutationKey = ["apiCommerceCartItemsDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { itemId: string } + > = (props) => { + const { itemId } = props ?? {}; + + return apiCommerceCartItemsDestroy(itemId); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceCartItemsDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiCommerceCartItemsDestroyMutationError = unknown; + +export const useApiCommerceCartItemsDestroy = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { itemId: string }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { itemId: string }, + TContext +> => { + return useMutation( + getApiCommerceCartItemsDestroyMutationOptions(options), + queryClient, + ); +}; +export const apiCommerceOrdersCancelCreate = ( + id: number, + orderRead: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/orders/${id}/cancel/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: orderRead, + signal, + }); +}; + +export const getApiCommerceOrdersCancelCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceOrdersCancelCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiCommerceOrdersCancelCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceOrdersCancelCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceOrdersCancelCreateMutationBody = NonReadonly; +export type ApiCommerceOrdersCancelCreateMutationError = unknown; + +export const useApiCommerceOrdersCancelCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceOrdersCancelCreateMutationOptions(options), + queryClient, + ); +}; export const apiCommerceOrdersCarrierRetrieve = ( id: number, signal?: AbortSignal, @@ -71,7 +719,7 @@ export const apiCommerceOrdersCarrierRetrieve = ( }); }; -export const getApiCommerceOrdersCarrierRetrieveQueryKey = (id?: number) => { +export const getApiCommerceOrdersCarrierRetrieveQueryKey = (id: number) => { return [`/api/commerce/orders/${id}/carrier/`] as const; }; @@ -215,20 +863,20 @@ export function useApiCommerceOrdersCarrierRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } export const apiCommerceOrdersCarrierReadyToPickupPartialUpdate = ( id: number, patchedOrderRead: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/orders/${id}/carrier/ready-to-pickup/`, method: "PATCH", headers: { "Content-Type": "application/json" }, data: patchedOrderRead, + signal, }); }; @@ -307,22 +955,24 @@ export const useApiCommerceOrdersCarrierReadyToPickupPartialUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = + return useMutation( getApiCommerceOrdersCarrierReadyToPickupPartialUpdateMutationOptions( options, - ); - - return useMutation(mutationOptions, queryClient); + ), + queryClient, + ); }; export const apiCommerceOrdersCarrierStartOrderingShippingPartialUpdate = ( id: number, patchedOrderRead: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/orders/${id}/carrier/start-ordering-shipping/`, method: "PATCH", headers: { "Content-Type": "application/json" }, data: patchedOrderRead, + signal, }); }; @@ -418,13 +1068,171 @@ export const useApiCommerceOrdersCarrierStartOrderingShippingPartialUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = + return useMutation( getApiCommerceOrdersCarrierStartOrderingShippingPartialUpdateMutationOptions( options, - ); - - return useMutation(mutationOptions, queryClient); + ), + queryClient, + ); }; +export const apiCommerceOrdersInvoiceRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/orders/${id}/invoice/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceOrdersInvoiceRetrieveQueryKey = (id: number) => { + return [`/api/commerce/orders/${id}/invoice/`] as const; +}; + +export const getApiCommerceOrdersInvoiceRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiCommerceOrdersInvoiceRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceOrdersInvoiceRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceOrdersInvoiceRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceOrdersInvoiceRetrieveQueryError = unknown; + +export function useApiCommerceOrdersInvoiceRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceOrdersInvoiceRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceOrdersInvoiceRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useApiCommerceOrdersInvoiceRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceOrdersInvoiceRetrieveQueryOptions( + id, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + export const apiCommerceOrdersItemsRetrieve = ( id: number, signal?: AbortSignal, @@ -436,7 +1244,7 @@ export const apiCommerceOrdersItemsRetrieve = ( }); }; -export const getApiCommerceOrdersItemsRetrieveQueryKey = (id?: number) => { +export const getApiCommerceOrdersItemsRetrieveQueryKey = (id: number) => { return [`/api/commerce/orders/${id}/items/`] as const; }; @@ -580,9 +1388,7 @@ export function useApiCommerceOrdersItemsRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } export const apiCommerceOrdersPaymentRetrieve = ( @@ -596,7 +1402,7 @@ export const apiCommerceOrdersPaymentRetrieve = ( }); }; -export const getApiCommerceOrdersPaymentRetrieveQueryKey = (id?: number) => { +export const getApiCommerceOrdersPaymentRetrieveQueryKey = (id: number) => { return [`/api/commerce/orders/${id}/payment/`] as const; }; @@ -740,11 +1546,91 @@ export function useApiCommerceOrdersPaymentRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } +export const apiCommerceOrdersPaymentVerifyCreate = ( + id: number, + orderRead: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/orders/${id}/payment/verify/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: orderRead, + signal, + }); +}; + +export const getApiCommerceOrdersPaymentVerifyCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceOrdersPaymentVerifyCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiCommerceOrdersPaymentVerifyCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceOrdersPaymentVerifyCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceOrdersPaymentVerifyCreateMutationBody = + NonReadonly; +export type ApiCommerceOrdersPaymentVerifyCreateMutationError = unknown; + +export const useApiCommerceOrdersPaymentVerifyCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceOrdersPaymentVerifyCreateMutationOptions(options), + queryClient, + ); +}; export const apiCommerceOrdersDetailRetrieve = (signal?: AbortSignal) => { return privateMutator({ url: `/api/commerce/orders/detail/`, @@ -882,9 +1768,326 @@ export function useApiCommerceOrdersDetailRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; + return { ...query, queryKey: queryOptions.queryKey }; +} - return query; +export const apiCommerceProductsAvailabilityRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/products/${id}/availability/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceProductsAvailabilityRetrieveQueryKey = ( + id: number, +) => { + return [`/api/commerce/products/${id}/availability/`] as const; +}; + +export const getApiCommerceProductsAvailabilityRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getApiCommerceProductsAvailabilityRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceProductsAvailabilityRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceProductsAvailabilityRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceProductsAvailabilityRetrieveQueryError = unknown; + +export function useApiCommerceProductsAvailabilityRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceProductsAvailabilityRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceProductsAvailabilityRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useApiCommerceProductsAvailabilityRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceProductsAvailabilityRetrieveQueryOptions( + id, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +export const apiCommerceProductsRatingRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/products/${id}/rating/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceProductsRatingRetrieveQueryKey = (id: number) => { + return [`/api/commerce/products/${id}/rating/`] as const; +}; + +export const getApiCommerceProductsRatingRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiCommerceProductsRatingRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceProductsRatingRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceProductsRatingRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceProductsRatingRetrieveQueryError = unknown; + +export function useApiCommerceProductsRatingRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceProductsRatingRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceProductsRatingRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useApiCommerceProductsRatingRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceProductsRatingRetrieveQueryOptions( + id, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -1031,9 +2234,7 @@ export function useApiCommerceRefundsPublicRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -1111,10 +2312,1356 @@ export const useApiCommerceRefundsPublicCreate = < void, TContext > => { - const mutationOptions = - getApiCommerceRefundsPublicCreateMutationOptions(options); + return useMutation( + getApiCommerceRefundsPublicCreateMutationOptions(options), + queryClient, + ); +}; +export const apiCommerceReviewsList = ( + params?: ApiCommerceReviewsListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/reviews/`, + method: "GET", + params, + signal, + }); +}; - return useMutation(mutationOptions, queryClient); +export const getApiCommerceReviewsListQueryKey = ( + params?: ApiCommerceReviewsListParams, +) => { + return [`/api/commerce/reviews/`, ...(params ? [params] : [])] as const; +}; + +export const getApiCommerceReviewsListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiCommerceReviewsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiCommerceReviewsListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceReviewsList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceReviewsListQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceReviewsListQueryError = unknown; + +export function useApiCommerceReviewsList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiCommerceReviewsListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceReviewsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiCommerceReviewsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceReviewsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiCommerceReviewsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useApiCommerceReviewsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiCommerceReviewsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceReviewsListQueryOptions(params, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +export const apiCommerceReviewsCreate = ( + reviewSerializerPublic: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/reviews/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: reviewSerializerPublic, + signal, + }); +}; + +export const getApiCommerceReviewsCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceReviewsCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiCommerceReviewsCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceReviewsCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceReviewsCreateMutationBody = + NonReadonly; +export type ApiCommerceReviewsCreateMutationError = unknown; + +export const useApiCommerceReviewsCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceReviewsCreateMutationOptions(options), + queryClient, + ); +}; +export const apiCommerceReviewsRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/reviews/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceReviewsRetrieveQueryKey = (id: number) => { + return [`/api/commerce/reviews/${id}/`] as const; +}; + +export const getApiCommerceReviewsRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiCommerceReviewsRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceReviewsRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceReviewsRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceReviewsRetrieveQueryError = unknown; + +export function useApiCommerceReviewsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceReviewsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceReviewsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useApiCommerceReviewsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceReviewsRetrieveQueryOptions(id, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +export const apiCommerceReviewsUpdate = ( + id: number, + reviewSerializerPublic: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/reviews/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: reviewSerializerPublic, + signal, + }); +}; + +export const getApiCommerceReviewsUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceReviewsUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiCommerceReviewsUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceReviewsUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceReviewsUpdateMutationBody = + NonReadonly; +export type ApiCommerceReviewsUpdateMutationError = unknown; + +export const useApiCommerceReviewsUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceReviewsUpdateMutationOptions(options), + queryClient, + ); +}; +export const apiCommerceReviewsPartialUpdate = ( + id: number, + patchedReviewSerializerPublic: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/reviews/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedReviewSerializerPublic, + signal, + }); +}; + +export const getApiCommerceReviewsPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceReviewsPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiCommerceReviewsPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceReviewsPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceReviewsPartialUpdateMutationBody = + NonReadonly; +export type ApiCommerceReviewsPartialUpdateMutationError = unknown; + +export const useApiCommerceReviewsPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceReviewsPartialUpdateMutationOptions(options), + queryClient, + ); +}; +export const apiCommerceReviewsDestroy = (id: number, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/commerce/reviews/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiCommerceReviewsDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiCommerceReviewsDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiCommerceReviewsDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceReviewsDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiCommerceReviewsDestroyMutationError = unknown; + +export const useApiCommerceReviewsDestroy = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiCommerceReviewsDestroyMutationOptions(options), + queryClient, + ); +}; +export const apiCommerceReviewsProductRetrieve = ( + productId: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/reviews/product/${productId}/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceReviewsProductRetrieveQueryKey = ( + productId: number, +) => { + return [`/api/commerce/reviews/product/${productId}/`] as const; +}; + +export const getApiCommerceReviewsProductRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + productId: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getApiCommerceReviewsProductRetrieveQueryKey(productId); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceReviewsProductRetrieve(productId, signal); + + return { + queryKey, + queryFn, + enabled: !!productId, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceReviewsProductRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceReviewsProductRetrieveQueryError = unknown; + +export function useApiCommerceReviewsProductRetrieve< + TData = Awaited>, + TError = unknown, +>( + productId: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceReviewsProductRetrieve< + TData = Awaited>, + TError = unknown, +>( + productId: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceReviewsProductRetrieve< + TData = Awaited>, + TError = unknown, +>( + productId: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useApiCommerceReviewsProductRetrieve< + TData = Awaited>, + TError = unknown, +>( + productId: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceReviewsProductRetrieveQueryOptions( + productId, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Add a product to the user's wishlist + */ +export const apiCommerceWishlistAddCreate = ( + wishlist: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/wishlist/add/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: wishlist, + signal, + }); +}; + +export const getApiCommerceWishlistAddCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceWishlistAddCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiCommerceWishlistAddCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceWishlistAddCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceWishlistAddCreateMutationBody = NonReadonly; +export type ApiCommerceWishlistAddCreateMutationError = unknown; + +export const useApiCommerceWishlistAddCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceWishlistAddCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Check if a product is in user's wishlist + */ +export const apiCommerceWishlistCheckRetrieve = ( + productId: string, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/wishlist/check/${productId}/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceWishlistCheckRetrieveQueryKey = ( + productId: string, +) => { + return [`/api/commerce/wishlist/check/${productId}/`] as const; +}; + +export const getApiCommerceWishlistCheckRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + productId: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getApiCommerceWishlistCheckRetrieveQueryKey(productId); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceWishlistCheckRetrieve(productId, signal); + + return { + queryKey, + queryFn, + enabled: !!productId, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceWishlistCheckRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceWishlistCheckRetrieveQueryError = unknown; + +export function useApiCommerceWishlistCheckRetrieve< + TData = Awaited>, + TError = unknown, +>( + productId: string, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceWishlistCheckRetrieve< + TData = Awaited>, + TError = unknown, +>( + productId: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceWishlistCheckRetrieve< + TData = Awaited>, + TError = unknown, +>( + productId: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useApiCommerceWishlistCheckRetrieve< + TData = Awaited>, + TError = unknown, +>( + productId: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceWishlistCheckRetrieveQueryOptions( + productId, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Remove all products from the user's wishlist + */ +export const apiCommerceWishlistClearCreate = ( + wishlist: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/wishlist/clear/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: wishlist, + signal, + }); +}; + +export const getApiCommerceWishlistClearCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceWishlistClearCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiCommerceWishlistClearCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceWishlistClearCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceWishlistClearCreateMutationBody = NonReadonly; +export type ApiCommerceWishlistClearCreateMutationError = unknown; + +export const useApiCommerceWishlistClearCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceWishlistClearCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Get the current user's wishlist + */ +export const apiCommerceWishlistCurrentRetrieve = (signal?: AbortSignal) => { + return privateMutator({ + url: `/api/commerce/wishlist/current/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceWishlistCurrentRetrieveQueryKey = () => { + return [`/api/commerce/wishlist/current/`] as const; +}; + +export const getApiCommerceWishlistCurrentRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>(options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; +}) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiCommerceWishlistCurrentRetrieveQueryKey(); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceWishlistCurrentRetrieve(signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceWishlistCurrentRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceWishlistCurrentRetrieveQueryError = unknown; + +export function useApiCommerceWishlistCurrentRetrieve< + TData = Awaited>, + TError = unknown, +>( + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceWishlistCurrentRetrieve< + TData = Awaited>, + TError = unknown, +>( + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceWishlistCurrentRetrieve< + TData = Awaited>, + TError = unknown, +>( + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; + +export function useApiCommerceWishlistCurrentRetrieve< + TData = Awaited>, + TError = unknown, +>( + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = + getApiCommerceWishlistCurrentRetrieveQueryOptions(options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Remove a product from the user's wishlist + */ +export const apiCommerceWishlistRemoveCreate = ( + wishlist: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/wishlist/remove/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: wishlist, + signal, + }); +}; + +export const getApiCommerceWishlistRemoveCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceWishlistRemoveCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiCommerceWishlistRemoveCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceWishlistRemoveCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceWishlistRemoveCreateMutationBody = NonReadonly; +export type ApiCommerceWishlistRemoveCreateMutationError = unknown; + +export const useApiCommerceWishlistRemoveCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceWishlistRemoveCreateMutationOptions(options), + queryClient, + ); }; /** * OpenApi3 schema for this API. Format can be selected via content negotiation. @@ -1272,7 +3819,86 @@ export function useApiSchemaRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } + +export const apiSocialMessagesCreate = ( + message: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/messages/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: message, + signal, + }); +}; + +export const getApiSocialMessagesCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialMessagesCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiSocialMessagesCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialMessagesCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialMessagesCreateMutationBody = NonReadonly; +export type ApiSocialMessagesCreateMutationError = unknown; + +export const useApiSocialMessagesCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialMessagesCreateMutationOptions(options), + queryClient, + ); +}; diff --git a/frontend/src/api/generated/private/chat/chat.ts b/frontend/src/api/generated/private/chat/chat.ts new file mode 100644 index 0000000..bf428ba --- /dev/null +++ b/frontend/src/api/generated/private/chat/chat.ts @@ -0,0 +1,1734 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import { useMutation, useQuery } from "@tanstack/react-query"; +import type { + DataTag, + DefinedInitialDataOptions, + DefinedUseQueryResult, + MutationFunction, + QueryClient, + QueryFunction, + QueryKey, + UndefinedInitialDataOptions, + UseMutationOptions, + UseMutationResult, + UseQueryOptions, + UseQueryResult, +} from "@tanstack/react-query"; + +import type { + ApiSocialChatsListParams, + ApiSocialMessagesListParams, + Chat, + ChatMember, + Message, + MessageSend, + PaginatedChatList, + PaginatedMessageList, + PatchedChat, + PatchedMessage, +} from "../models"; + +import { privateMutator } from "../../../privateClient"; + +// https://stackoverflow.com/questions/49579094/typescript-conditional-types-filter-out-readonly-properties-pick-only-requir/49579497#49579497 +type IfEquals = + (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? A : B; + +type WritableKeys = { + [P in keyof T]-?: IfEquals< + { [Q in P]: T[P] }, + { -readonly [Q in P]: T[P] }, + P + >; +}[keyof T]; + +type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ( + k: infer I, +) => void + ? I + : never; +type DistributeReadOnlyOverUnions = T extends any ? NonReadonly : never; + +type Writable = Pick>; +type NonReadonly = [T] extends [UnionToIntersection] + ? { + [P in keyof Writable]: T[P] extends object + ? NonReadonly> + : T[P]; + } + : DistributeReadOnlyOverUnions; + +/** + * Returns all chats the user is a member of. Superusers see all. + * @summary List chats + */ +export const apiSocialChatsList = ( + params?: ApiSocialChatsListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/chats/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiSocialChatsListQueryKey = ( + params?: ApiSocialChatsListParams, +) => { + return [`/api/social/chats/`, ...(params ? [params] : [])] as const; +}; + +export const getApiSocialChatsListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialChatsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialChatsListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialChatsList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialChatsListQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialChatsListQueryError = unknown; + +export function useApiSocialChatsList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiSocialChatsListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialChatsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialChatsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialChatsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialChatsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List chats + */ + +export function useApiSocialChatsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialChatsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialChatsListQueryOptions(params, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Owner is set to the requesting user automatically. + * @summary Create a chat + */ +export const apiSocialChatsCreate = ( + chat: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/chats/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: chat, + signal, + }); +}; + +export const getApiSocialChatsCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialChatsCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiSocialChatsCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialChatsCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialChatsCreateMutationBody = NonReadonly; +export type ApiSocialChatsCreateMutationError = unknown; + +/** + * @summary Create a chat + */ +export const useApiSocialChatsCreate = ( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialChatsCreateMutationOptions(options), + queryClient, + ); +}; +/** + * @summary Retrieve a chat + */ +export const apiSocialChatsRetrieve = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/chats/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiSocialChatsRetrieveQueryKey = (id: string) => { + return [`/api/social/chats/${id}/`] as const; +}; + +export const getApiSocialChatsRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialChatsRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialChatsRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialChatsRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialChatsRetrieveQueryError = unknown; + +export function useApiSocialChatsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialChatsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialChatsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Retrieve a chat + */ + +export function useApiSocialChatsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialChatsRetrieveQueryOptions(id, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Owner, moderator, or superuser only. + * @summary Replace a chat + */ +export const apiSocialChatsUpdate = ( + id: string, + chat: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/chats/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: chat, + signal, + }); +}; + +export const getApiSocialChatsUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialChatsUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialChatsUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialChatsUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialChatsUpdateMutationBody = NonReadonly; +export type ApiSocialChatsUpdateMutationError = unknown; + +/** + * @summary Replace a chat + */ +export const useApiSocialChatsUpdate = ( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialChatsUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Owner, moderator, or superuser only. + * @summary Update a chat + */ +export const apiSocialChatsPartialUpdate = ( + id: string, + patchedChat: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/chats/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedChat, + signal, + }); +}; + +export const getApiSocialChatsPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialChatsPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialChatsPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialChatsPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialChatsPartialUpdateMutationBody = NonReadonly; +export type ApiSocialChatsPartialUpdateMutationError = unknown; + +/** + * @summary Update a chat + */ +export const useApiSocialChatsPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialChatsPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Soft-deletes. Owner or superuser only. + * @summary Delete a chat + */ +export const apiSocialChatsDestroy = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/chats/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiSocialChatsDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext +> => { + const mutationKey = ["apiSocialChatsDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string } + > = (props) => { + const { id } = props ?? {}; + + return apiSocialChatsDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialChatsDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiSocialChatsDestroyMutationError = unknown; + +/** + * @summary Delete a chat + */ +export const useApiSocialChatsDestroy = ( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string }, + TContext +> => { + return useMutation( + getApiSocialChatsDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * Owner, moderator, or superuser only. + * @summary Add a member + */ +export const apiSocialChatsMembersAddCreate = ( + id: string, + chatMember: ChatMember, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/chats/${id}/members/add/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: chatMember, + signal, + }); +}; + +export const getApiSocialChatsMembersAddCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext +> => { + const mutationKey = ["apiSocialChatsMembersAddCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: ChatMember } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialChatsMembersAddCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialChatsMembersAddCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialChatsMembersAddCreateMutationBody = ChatMember; +export type ApiSocialChatsMembersAddCreateMutationError = unknown; + +/** + * @summary Add a member + */ +export const useApiSocialChatsMembersAddCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext +> => { + return useMutation( + getApiSocialChatsMembersAddCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Owner, moderator, or superuser only. + * @summary Remove a member + */ +export const apiSocialChatsMembersRemoveCreate = ( + id: string, + chatMember: ChatMember, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/chats/${id}/members/remove/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: chatMember, + signal, + }); +}; + +export const getApiSocialChatsMembersRemoveCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext +> => { + const mutationKey = ["apiSocialChatsMembersRemoveCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: ChatMember } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialChatsMembersRemoveCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialChatsMembersRemoveCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialChatsMembersRemoveCreateMutationBody = ChatMember; +export type ApiSocialChatsMembersRemoveCreateMutationError = unknown; + +/** + * @summary Remove a member + */ +export const useApiSocialChatsMembersRemoveCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext +> => { + return useMutation( + getApiSocialChatsMembersRemoveCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Owner or superuser only. + * @summary Add a moderator + */ +export const apiSocialChatsModeratorsAddCreate = ( + id: string, + chatMember: ChatMember, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/chats/${id}/moderators/add/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: chatMember, + signal, + }); +}; + +export const getApiSocialChatsModeratorsAddCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext +> => { + const mutationKey = ["apiSocialChatsModeratorsAddCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: ChatMember } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialChatsModeratorsAddCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialChatsModeratorsAddCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialChatsModeratorsAddCreateMutationBody = ChatMember; +export type ApiSocialChatsModeratorsAddCreateMutationError = unknown; + +/** + * @summary Add a moderator + */ +export const useApiSocialChatsModeratorsAddCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext +> => { + return useMutation( + getApiSocialChatsModeratorsAddCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Owner or superuser only. + * @summary Remove a moderator + */ +export const apiSocialChatsModeratorsRemoveCreate = ( + id: string, + chatMember: ChatMember, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/chats/${id}/moderators/remove/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: chatMember, + signal, + }); +}; + +export const getApiSocialChatsModeratorsRemoveCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext +> => { + const mutationKey = ["apiSocialChatsModeratorsRemoveCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: ChatMember } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialChatsModeratorsRemoveCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialChatsModeratorsRemoveCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialChatsModeratorsRemoveCreateMutationBody = ChatMember; +export type ApiSocialChatsModeratorsRemoveCreateMutationError = unknown; + +/** + * @summary Remove a moderator + */ +export const useApiSocialChatsModeratorsRemoveCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: ChatMember }, + TContext +> => { + return useMutation( + getApiSocialChatsModeratorsRemoveCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Filter by `?chat=`. Chat members only. + * @summary List messages + */ +export const apiSocialMessagesList = ( + params?: ApiSocialMessagesListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/messages/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiSocialMessagesListQueryKey = ( + params?: ApiSocialMessagesListParams, +) => { + return [`/api/social/messages/`, ...(params ? [params] : [])] as const; +}; + +export const getApiSocialMessagesListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialMessagesListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialMessagesListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialMessagesList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialMessagesListQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialMessagesListQueryError = unknown; + +export function useApiSocialMessagesList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiSocialMessagesListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialMessagesList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialMessagesListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialMessagesList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialMessagesListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List messages + */ + +export function useApiSocialMessagesList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialMessagesListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialMessagesListQueryOptions(params, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * @summary Retrieve a message + */ +export const apiSocialMessagesRetrieve = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/messages/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiSocialMessagesRetrieveQueryKey = (id: string) => { + return [`/api/social/messages/${id}/`] as const; +}; + +export const getApiSocialMessagesRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialMessagesRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialMessagesRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialMessagesRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialMessagesRetrieveQueryError = unknown; + +export function useApiSocialMessagesRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialMessagesRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialMessagesRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Retrieve a message + */ + +export function useApiSocialMessagesRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialMessagesRetrieveQueryOptions(id, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Sender only. + * @summary Replace a message + */ +export const apiSocialMessagesUpdate = ( + id: string, + message: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/messages/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: message, + signal, + }); +}; + +export const getApiSocialMessagesUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialMessagesUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialMessagesUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialMessagesUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialMessagesUpdateMutationBody = NonReadonly; +export type ApiSocialMessagesUpdateMutationError = unknown; + +/** + * @summary Replace a message + */ +export const useApiSocialMessagesUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialMessagesUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Sender only. Broadcasts `edit.message` to the chat channel group in real time. + * @summary Edit a message + */ +export const apiSocialMessagesPartialUpdate = ( + id: string, + patchedMessage: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/messages/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedMessage, + signal, + }); +}; + +export const getApiSocialMessagesPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialMessagesPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialMessagesPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialMessagesPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialMessagesPartialUpdateMutationBody = + NonReadonly; +export type ApiSocialMessagesPartialUpdateMutationError = unknown; + +/** + * @summary Edit a message + */ +export const useApiSocialMessagesPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialMessagesPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Sender, chat owner, moderator, or superuser. Broadcasts `delete.message` to the chat channel group in real time. + * @summary Delete a message + */ +export const apiSocialMessagesDestroy = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/messages/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiSocialMessagesDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext +> => { + const mutationKey = ["apiSocialMessagesDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string } + > = (props) => { + const { id } = props ?? {}; + + return apiSocialMessagesDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialMessagesDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiSocialMessagesDestroyMutationError = unknown; + +/** + * @summary Delete a message + */ +export const useApiSocialMessagesDestroy = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string }, + TContext +> => { + return useMutation( + getApiSocialMessagesDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * Creates a message with optional file attachments and broadcasts it to all connected WebSocket clients in the chat. Use this for all messages that include files, and optionally for text-only messages too. Chat members only. + * @summary Send a message + */ +export const apiSocialMessagesSendCreate = ( + messageSend: MessageSend, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/messages/send/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: messageSend, + signal, + }); +}; + +export const getApiSocialMessagesSendCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: MessageSend }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: MessageSend }, + TContext +> => { + const mutationKey = ["apiSocialMessagesSendCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: MessageSend } + > = (props) => { + const { data } = props ?? {}; + + return apiSocialMessagesSendCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialMessagesSendCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialMessagesSendCreateMutationBody = MessageSend; +export type ApiSocialMessagesSendCreateMutationError = unknown; + +/** + * @summary Send a message + */ +export const useApiSocialMessagesSendCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: MessageSend }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: MessageSend }, + TContext +> => { + return useMutation( + getApiSocialMessagesSendCreateMutationOptions(options), + queryClient, + ); +}; diff --git a/frontend/src/api/generated/private/commerce/commerce.ts b/frontend/src/api/generated/private/commerce/commerce.ts index 6155972..ccf16dc 100644 --- a/frontend/src/api/generated/private/commerce/commerce.ts +++ b/frontend/src/api/generated/private/commerce/commerce.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -20,19 +20,23 @@ import type { } from "@tanstack/react-query"; import type { + ApiCommerceAdminWishlistsListParams, ApiCommerceRefundsListParams, Category, DiscountCode, PaginatedRefundList, + PaginatedWishlistList, PatchedCategory, PatchedDiscountCode, PatchedProduct, PatchedProductImage, PatchedRefund, + PatchedWishlist, Product, ProductImage, Refund, -} from ".././models"; + Wishlist, +} from "../models"; import { privateMutator } from "../../../privateClient"; @@ -64,6 +68,826 @@ type NonReadonly = [T] extends [UnionToIntersection] } : DistributeReadOnlyOverUnions; +/** + * Admin-only wishlist management - can view and modify any user's wishlist + * @summary List all wishlists (admin) + */ +export const apiCommerceAdminWishlistsList = ( + params?: ApiCommerceAdminWishlistsListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/admin/wishlists/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiCommerceAdminWishlistsListQueryKey = ( + params?: ApiCommerceAdminWishlistsListParams, +) => { + return [ + `/api/commerce/admin/wishlists/`, + ...(params ? [params] : []), + ] as const; +}; + +export const getApiCommerceAdminWishlistsListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiCommerceAdminWishlistsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiCommerceAdminWishlistsListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceAdminWishlistsList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceAdminWishlistsListQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceAdminWishlistsListQueryError = unknown; + +export function useApiCommerceAdminWishlistsList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiCommerceAdminWishlistsListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceAdminWishlistsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiCommerceAdminWishlistsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceAdminWishlistsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiCommerceAdminWishlistsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List all wishlists (admin) + */ + +export function useApiCommerceAdminWishlistsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiCommerceAdminWishlistsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceAdminWishlistsListQueryOptions( + params, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Admin-only wishlist management - can view and modify any user's wishlist + * @summary Get wishlist by ID (admin) + */ +export const apiCommerceAdminWishlistsRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/admin/wishlists/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceAdminWishlistsRetrieveQueryKey = (id: number) => { + return [`/api/commerce/admin/wishlists/${id}/`] as const; +}; + +export const getApiCommerceAdminWishlistsRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiCommerceAdminWishlistsRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceAdminWishlistsRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceAdminWishlistsRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceAdminWishlistsRetrieveQueryError = unknown; + +export function useApiCommerceAdminWishlistsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceAdminWishlistsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceAdminWishlistsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Get wishlist by ID (admin) + */ + +export function useApiCommerceAdminWishlistsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceAdminWishlistsRetrieveQueryOptions( + id, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Admin-only wishlist management - can view and modify any user's wishlist + * @summary Update wishlist (admin) + */ +export const apiCommerceAdminWishlistsUpdate = ( + id: number, + wishlist: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/admin/wishlists/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: wishlist, + signal, + }); +}; + +export const getApiCommerceAdminWishlistsUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceAdminWishlistsUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiCommerceAdminWishlistsUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceAdminWishlistsUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceAdminWishlistsUpdateMutationBody = NonReadonly; +export type ApiCommerceAdminWishlistsUpdateMutationError = unknown; + +/** + * @summary Update wishlist (admin) + */ +export const useApiCommerceAdminWishlistsUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceAdminWishlistsUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Admin-only wishlist management - can view and modify any user's wishlist + * @summary Partially update wishlist (admin) + */ +export const apiCommerceAdminWishlistsPartialUpdate = ( + id: number, + patchedWishlist: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/admin/wishlists/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedWishlist, + signal, + }); +}; + +export const getApiCommerceAdminWishlistsPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceAdminWishlistsPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiCommerceAdminWishlistsPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceAdminWishlistsPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceAdminWishlistsPartialUpdateMutationBody = + NonReadonly; +export type ApiCommerceAdminWishlistsPartialUpdateMutationError = unknown; + +/** + * @summary Partially update wishlist (admin) + */ +export const useApiCommerceAdminWishlistsPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceAdminWishlistsPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Admin-only wishlist management - can view and modify any user's wishlist + * @summary Delete wishlist (admin) + */ +export const apiCommerceAdminWishlistsDestroy = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/commerce/admin/wishlists/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiCommerceAdminWishlistsDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiCommerceAdminWishlistsDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiCommerceAdminWishlistsDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceAdminWishlistsDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiCommerceAdminWishlistsDestroyMutationError = unknown; + +/** + * @summary Delete wishlist (admin) + */ +export const useApiCommerceAdminWishlistsDestroy = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiCommerceAdminWishlistsDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * Get various analytics based on type parameter + * @summary Get analytics data + */ +export const apiCommerceAnalyticsRetrieve = (signal?: AbortSignal) => { + return privateMutator({ + url: `/api/commerce/analytics/`, + method: "GET", + signal, + }); +}; + +export const getApiCommerceAnalyticsRetrieveQueryKey = () => { + return [`/api/commerce/analytics/`] as const; +}; + +export const getApiCommerceAnalyticsRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>(options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; +}) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiCommerceAnalyticsRetrieveQueryKey(); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiCommerceAnalyticsRetrieve(signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiCommerceAnalyticsRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiCommerceAnalyticsRetrieveQueryError = unknown; + +export function useApiCommerceAnalyticsRetrieve< + TData = Awaited>, + TError = unknown, +>( + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceAnalyticsRetrieve< + TData = Awaited>, + TError = unknown, +>( + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiCommerceAnalyticsRetrieve< + TData = Awaited>, + TError = unknown, +>( + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Get analytics data + */ + +export function useApiCommerceAnalyticsRetrieve< + TData = Awaited>, + TError = unknown, +>( + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiCommerceAnalyticsRetrieveQueryOptions(options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Generate custom analytics based on specified modules and parameters + * @summary Generate custom analytics report + */ +export const apiCommerceAnalyticsCreate = (signal?: AbortSignal) => { + return privateMutator({ + url: `/api/commerce/analytics/`, + method: "POST", + signal, + }); +}; + +export const getApiCommerceAnalyticsCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + void, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + void, + TContext +> => { + const mutationKey = ["apiCommerceAnalyticsCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + void + > = () => { + return apiCommerceAnalyticsCreate(); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceAnalyticsCreateMutationResult = NonNullable< + Awaited> +>; + +export type ApiCommerceAnalyticsCreateMutationError = unknown; + +/** + * @summary Generate custom analytics report + */ +export const useApiCommerceAnalyticsCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + void, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + void, + TContext +> => { + return useMutation( + getApiCommerceAnalyticsCreateMutationOptions(options), + queryClient, + ); +}; /** * @summary Create category (auth required) */ @@ -145,10 +969,10 @@ export const useApiCommerceCategoriesCreate = < { data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceCategoriesCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceCategoriesCreateMutationOptions(options), + queryClient, + ); }; /** * @summary Replace category (auth required) @@ -156,12 +980,14 @@ export const useApiCommerceCategoriesCreate = < export const apiCommerceCategoriesUpdate = ( id: number, category: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/categories/${id}/`, method: "PUT", headers: { "Content-Type": "application/json" }, data: category, + signal, }); }; @@ -230,10 +1056,10 @@ export const useApiCommerceCategoriesUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceCategoriesUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceCategoriesUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Update category (auth required) @@ -241,12 +1067,14 @@ export const useApiCommerceCategoriesUpdate = < export const apiCommerceCategoriesPartialUpdate = ( id: number, patchedCategory: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/categories/${id}/`, method: "PATCH", headers: { "Content-Type": "application/json" }, data: patchedCategory, + signal, }); }; @@ -316,18 +1144,22 @@ export const useApiCommerceCategoriesPartialUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceCategoriesPartialUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceCategoriesPartialUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Delete category (auth required) */ -export const apiCommerceCategoriesDestroy = (id: number) => { +export const apiCommerceCategoriesDestroy = ( + id: number, + signal?: AbortSignal, +) => { return privateMutator({ url: `/api/commerce/categories/${id}/`, method: "DELETE", + signal, }); }; @@ -396,10 +1228,10 @@ export const useApiCommerceCategoriesDestroy = < { id: number }, TContext > => { - const mutationOptions = - getApiCommerceCategoriesDestroyMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceCategoriesDestroyMutationOptions(options), + queryClient, + ); }; /** * @summary Create discount code (auth required) @@ -483,10 +1315,10 @@ export const useApiCommerceDiscountCodesCreate = < { data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceDiscountCodesCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceDiscountCodesCreateMutationOptions(options), + queryClient, + ); }; /** * @summary Replace discount code (auth required) @@ -494,12 +1326,14 @@ export const useApiCommerceDiscountCodesCreate = < export const apiCommerceDiscountCodesUpdate = ( id: number, discountCode: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/discount-codes/${id}/`, method: "PUT", headers: { "Content-Type": "application/json" }, data: discountCode, + signal, }); }; @@ -569,10 +1403,10 @@ export const useApiCommerceDiscountCodesUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceDiscountCodesUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceDiscountCodesUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Update discount code (auth required) @@ -580,12 +1414,14 @@ export const useApiCommerceDiscountCodesUpdate = < export const apiCommerceDiscountCodesPartialUpdate = ( id: number, patchedDiscountCode: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/discount-codes/${id}/`, method: "PATCH", headers: { "Content-Type": "application/json" }, data: patchedDiscountCode, + signal, }); }; @@ -655,18 +1491,22 @@ export const useApiCommerceDiscountCodesPartialUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceDiscountCodesPartialUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceDiscountCodesPartialUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Delete discount code (auth required) */ -export const apiCommerceDiscountCodesDestroy = (id: number) => { +export const apiCommerceDiscountCodesDestroy = ( + id: number, + signal?: AbortSignal, +) => { return privateMutator({ url: `/api/commerce/discount-codes/${id}/`, method: "DELETE", + signal, }); }; @@ -735,10 +1575,10 @@ export const useApiCommerceDiscountCodesDestroy = < { id: number }, TContext > => { - const mutationOptions = - getApiCommerceDiscountCodesDestroyMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceDiscountCodesDestroyMutationOptions(options), + queryClient, + ); }; /** * @summary Create product image (auth required) @@ -822,10 +1662,10 @@ export const useApiCommerceProductImagesCreate = < { data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceProductImagesCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceProductImagesCreateMutationOptions(options), + queryClient, + ); }; /** * @summary Replace product image (auth required) @@ -833,12 +1673,14 @@ export const useApiCommerceProductImagesCreate = < export const apiCommerceProductImagesUpdate = ( id: number, productImage: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/product-images/${id}/`, method: "PUT", headers: { "Content-Type": "application/json" }, data: productImage, + signal, }); }; @@ -908,10 +1750,10 @@ export const useApiCommerceProductImagesUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceProductImagesUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceProductImagesUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Update product image (auth required) @@ -919,12 +1761,14 @@ export const useApiCommerceProductImagesUpdate = < export const apiCommerceProductImagesPartialUpdate = ( id: number, patchedProductImage: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/product-images/${id}/`, method: "PATCH", headers: { "Content-Type": "application/json" }, data: patchedProductImage, + signal, }); }; @@ -994,18 +1838,22 @@ export const useApiCommerceProductImagesPartialUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceProductImagesPartialUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceProductImagesPartialUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Delete product image (auth required) */ -export const apiCommerceProductImagesDestroy = (id: number) => { +export const apiCommerceProductImagesDestroy = ( + id: number, + signal?: AbortSignal, +) => { return privateMutator({ url: `/api/commerce/product-images/${id}/`, method: "DELETE", + signal, }); }; @@ -1074,10 +1922,10 @@ export const useApiCommerceProductImagesDestroy = < { id: number }, TContext > => { - const mutationOptions = - getApiCommerceProductImagesDestroyMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceProductImagesDestroyMutationOptions(options), + queryClient, + ); }; /** * @summary Create product (auth required) @@ -1160,9 +2008,10 @@ export const useApiCommerceProductsCreate = < { data: NonReadonly }, TContext > => { - const mutationOptions = getApiCommerceProductsCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceProductsCreateMutationOptions(options), + queryClient, + ); }; /** * @summary Replace product (auth required) @@ -1170,12 +2019,14 @@ export const useApiCommerceProductsCreate = < export const apiCommerceProductsUpdate = ( id: number, product: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/products/${id}/`, method: "PUT", headers: { "Content-Type": "application/json" }, data: product, + signal, }); }; @@ -1244,9 +2095,10 @@ export const useApiCommerceProductsUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = getApiCommerceProductsUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceProductsUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Update product (auth required) @@ -1254,12 +2106,14 @@ export const useApiCommerceProductsUpdate = < export const apiCommerceProductsPartialUpdate = ( id: number, patchedProduct: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/products/${id}/`, method: "PATCH", headers: { "Content-Type": "application/json" }, data: patchedProduct, + signal, }); }; @@ -1329,18 +2183,22 @@ export const useApiCommerceProductsPartialUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceProductsPartialUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceProductsPartialUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Delete product (auth required) */ -export const apiCommerceProductsDestroy = (id: number) => { +export const apiCommerceProductsDestroy = ( + id: number, + signal?: AbortSignal, +) => { return privateMutator({ url: `/api/commerce/products/${id}/`, method: "DELETE", + signal, }); }; @@ -1409,9 +2267,10 @@ export const useApiCommerceProductsDestroy = < { id: number }, TContext > => { - const mutationOptions = getApiCommerceProductsDestroyMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceProductsDestroyMutationOptions(options), + queryClient, + ); }; /** * @summary List refunds (admin) @@ -1569,9 +2428,7 @@ export function useApiCommerceRefundsList< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -1655,9 +2512,10 @@ export const useApiCommerceRefundsCreate = < { data: NonReadonly }, TContext > => { - const mutationOptions = getApiCommerceRefundsCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceRefundsCreateMutationOptions(options), + queryClient, + ); }; /** * @summary Retrieve refund (admin) @@ -1673,7 +2531,7 @@ export const apiCommerceRefundsRetrieve = ( }); }; -export const getApiCommerceRefundsRetrieveQueryKey = (id?: number) => { +export const getApiCommerceRefundsRetrieveQueryKey = (id: number) => { return [`/api/commerce/refunds/${id}/`] as const; }; @@ -1817,9 +2675,7 @@ export function useApiCommerceRefundsRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -1828,12 +2684,14 @@ export function useApiCommerceRefundsRetrieve< export const apiCommerceRefundsUpdate = ( id: number, refund: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/refunds/${id}/`, method: "PUT", headers: { "Content-Type": "application/json" }, data: refund, + signal, }); }; @@ -1902,9 +2760,10 @@ export const useApiCommerceRefundsUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = getApiCommerceRefundsUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceRefundsUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Update refund (admin) @@ -1912,12 +2771,14 @@ export const useApiCommerceRefundsUpdate = < export const apiCommerceRefundsPartialUpdate = ( id: number, patchedRefund: NonReadonly, + signal?: AbortSignal, ) => { return privateMutator({ url: `/api/commerce/refunds/${id}/`, method: "PATCH", headers: { "Content-Type": "application/json" }, data: patchedRefund, + signal, }); }; @@ -1987,18 +2848,19 @@ export const useApiCommerceRefundsPartialUpdate = < { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiCommerceRefundsPartialUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceRefundsPartialUpdateMutationOptions(options), + queryClient, + ); }; /** * @summary Delete refund (admin) */ -export const apiCommerceRefundsDestroy = (id: number) => { +export const apiCommerceRefundsDestroy = (id: number, signal?: AbortSignal) => { return privateMutator({ url: `/api/commerce/refunds/${id}/`, method: "DELETE", + signal, }); }; @@ -2067,7 +2929,8 @@ export const useApiCommerceRefundsDestroy = < { id: number }, TContext > => { - const mutationOptions = getApiCommerceRefundsDestroyMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceRefundsDestroyMutationOptions(options), + queryClient, + ); }; diff --git a/frontend/src/api/generated/private/configuration/configuration.ts b/frontend/src/api/generated/private/configuration/configuration.ts index daf30de..1511dfc 100644 --- a/frontend/src/api/generated/private/configuration/configuration.ts +++ b/frontend/src/api/generated/private/configuration/configuration.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -20,11 +20,15 @@ import type { } from "@tanstack/react-query"; import type { - ApiConfigurationAdminShopConfigurationListParams, - PaginatedSiteConfigurationAdminList, - PatchedSiteConfigurationAdmin, - SiteConfigurationAdmin, -} from ".././models"; + ApiConfigurationShopConfigurationListParams, + ApiConfigurationVatRatesListParams, + PaginatedSiteConfigurationList, + PaginatedVATRateList, + PatchedSiteConfiguration, + PatchedVATRate, + SiteConfiguration, + VATRate, +} from "../models"; import { privateMutator } from "../../../privateClient"; @@ -57,91 +61,71 @@ type NonReadonly = [T] extends [UnionToIntersection] : DistributeReadOnlyOverUnions; /** - * @summary List site configuration (admin) + * Returns the current site currency and available options + * @summary Get site currency information */ -export const apiConfigurationAdminShopConfigurationList = ( - params?: ApiConfigurationAdminShopConfigurationListParams, - signal?: AbortSignal, -) => { - return privateMutator({ - url: `/api/configuration/admin/shop-configuration/`, +export const apiCommerceCurrencyInfoRetrieve = (signal?: AbortSignal) => { + return privateMutator({ + url: `/api/commerce/currency/info/`, method: "GET", - params, signal, }); }; -export const getApiConfigurationAdminShopConfigurationListQueryKey = ( - params?: ApiConfigurationAdminShopConfigurationListParams, -) => { - return [ - `/api/configuration/admin/shop-configuration/`, - ...(params ? [params] : []), - ] as const; +export const getApiCommerceCurrencyInfoRetrieveQueryKey = () => { + return [`/api/commerce/currency/info/`] as const; }; -export const getApiConfigurationAdminShopConfigurationListQueryOptions = < - TData = Awaited< - ReturnType - >, +export const getApiCommerceCurrencyInfoRetrieveQueryOptions = < + TData = Awaited>, TError = unknown, ->( - params?: ApiConfigurationAdminShopConfigurationListParams, - options?: { - query?: Partial< - UseQueryOptions< - Awaited>, - TError, - TData - > - >; - }, -) => { +>(options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; +}) => { const { query: queryOptions } = options ?? {}; const queryKey = - queryOptions?.queryKey ?? - getApiConfigurationAdminShopConfigurationListQueryKey(params); + queryOptions?.queryKey ?? getApiCommerceCurrencyInfoRetrieveQueryKey(); const queryFn: QueryFunction< - Awaited> - > = ({ signal }) => - apiConfigurationAdminShopConfigurationList(params, signal); + Awaited> + > = ({ signal }) => apiCommerceCurrencyInfoRetrieve(signal); return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< - Awaited>, + Awaited>, TError, TData > & { queryKey: DataTag }; }; -export type ApiConfigurationAdminShopConfigurationListQueryResult = NonNullable< - Awaited> +export type ApiCommerceCurrencyInfoRetrieveQueryResult = NonNullable< + Awaited> >; -export type ApiConfigurationAdminShopConfigurationListQueryError = unknown; +export type ApiCommerceCurrencyInfoRetrieveQueryError = unknown; -export function useApiConfigurationAdminShopConfigurationList< - TData = Awaited< - ReturnType - >, +export function useApiCommerceCurrencyInfoRetrieve< + TData = Awaited>, TError = unknown, >( - params: undefined | ApiConfigurationAdminShopConfigurationListParams, options: { query: Partial< UseQueryOptions< - Awaited>, + Awaited>, TError, TData > > & Pick< DefinedInitialDataOptions< - Awaited< - ReturnType - >, + Awaited>, TError, - Awaited> + Awaited> >, "initialData" >; @@ -150,28 +134,23 @@ export function useApiConfigurationAdminShopConfigurationList< ): DefinedUseQueryResult & { queryKey: DataTag; }; -export function useApiConfigurationAdminShopConfigurationList< - TData = Awaited< - ReturnType - >, +export function useApiCommerceCurrencyInfoRetrieve< + TData = Awaited>, TError = unknown, >( - params?: ApiConfigurationAdminShopConfigurationListParams, options?: { query?: Partial< UseQueryOptions< - Awaited>, + Awaited>, TError, TData > > & Pick< UndefinedInitialDataOptions< - Awaited< - ReturnType - >, + Awaited>, TError, - Awaited> + Awaited> >, "initialData" >; @@ -180,17 +159,14 @@ export function useApiConfigurationAdminShopConfigurationList< ): UseQueryResult & { queryKey: DataTag; }; -export function useApiConfigurationAdminShopConfigurationList< - TData = Awaited< - ReturnType - >, +export function useApiCommerceCurrencyInfoRetrieve< + TData = Awaited>, TError = unknown, >( - params?: ApiConfigurationAdminShopConfigurationListParams, options?: { query?: Partial< UseQueryOptions< - Awaited>, + Awaited>, TError, TData > @@ -201,20 +177,17 @@ export function useApiConfigurationAdminShopConfigurationList< queryKey: DataTag; }; /** - * @summary List site configuration (admin) + * @summary Get site currency information */ -export function useApiConfigurationAdminShopConfigurationList< - TData = Awaited< - ReturnType - >, +export function useApiCommerceCurrencyInfoRetrieve< + TData = Awaited>, TError = unknown, >( - params?: ApiConfigurationAdminShopConfigurationListParams, options?: { query?: Partial< UseQueryOptions< - Awaited>, + Awaited>, TError, TData > @@ -224,140 +197,49 @@ export function useApiConfigurationAdminShopConfigurationList< ): UseQueryResult & { queryKey: DataTag; } { - const queryOptions = - getApiConfigurationAdminShopConfigurationListQueryOptions(params, options); + const queryOptions = getApiCommerceCurrencyInfoRetrieveQueryOptions(options); const query = useQuery(queryOptions, queryClient) as UseQueryResult< TData, TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** - * @summary Create site configuration (admin) + * @summary List site configuration */ -export const apiConfigurationAdminShopConfigurationCreate = ( - siteConfigurationAdmin: NonReadonly, +export const apiConfigurationShopConfigurationList = ( + params?: ApiConfigurationShopConfigurationListParams, signal?: AbortSignal, ) => { - return privateMutator({ - url: `/api/configuration/admin/shop-configuration/`, - method: "POST", - headers: { "Content-Type": "application/json" }, - data: siteConfigurationAdmin, - signal, - }); -}; - -export const getApiConfigurationAdminShopConfigurationCreateMutationOptions = < - TError = unknown, - TContext = unknown, ->(options?: { - mutation?: UseMutationOptions< - Awaited>, - TError, - { data: NonReadonly }, - TContext - >; -}): UseMutationOptions< - Awaited>, - TError, - { data: NonReadonly }, - TContext -> => { - const mutationKey = ["apiConfigurationAdminShopConfigurationCreate"]; - const { mutation: mutationOptions } = options - ? options.mutation && - "mutationKey" in options.mutation && - options.mutation.mutationKey - ? options - : { ...options, mutation: { ...options.mutation, mutationKey } } - : { mutation: { mutationKey } }; - - const mutationFn: MutationFunction< - Awaited>, - { data: NonReadonly } - > = (props) => { - const { data } = props ?? {}; - - return apiConfigurationAdminShopConfigurationCreate(data); - }; - - return { mutationFn, ...mutationOptions }; -}; - -export type ApiConfigurationAdminShopConfigurationCreateMutationResult = - NonNullable< - Awaited> - >; -export type ApiConfigurationAdminShopConfigurationCreateMutationBody = - NonReadonly; -export type ApiConfigurationAdminShopConfigurationCreateMutationError = unknown; - -/** - * @summary Create site configuration (admin) - */ -export const useApiConfigurationAdminShopConfigurationCreate = < - TError = unknown, - TContext = unknown, ->( - options?: { - mutation?: UseMutationOptions< - Awaited>, - TError, - { data: NonReadonly }, - TContext - >; - }, - queryClient?: QueryClient, -): UseMutationResult< - Awaited>, - TError, - { data: NonReadonly }, - TContext -> => { - const mutationOptions = - getApiConfigurationAdminShopConfigurationCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); -}; -/** - * @summary Retrieve site configuration (admin) - */ -export const apiConfigurationAdminShopConfigurationRetrieve = ( - id: number, - signal?: AbortSignal, -) => { - return privateMutator({ - url: `/api/configuration/admin/shop-configuration/${id}/`, + return privateMutator({ + url: `/api/configuration/shop-configuration/`, method: "GET", + params, signal, }); }; -export const getApiConfigurationAdminShopConfigurationRetrieveQueryKey = ( - id?: number, +export const getApiConfigurationShopConfigurationListQueryKey = ( + params?: ApiConfigurationShopConfigurationListParams, ) => { - return [`/api/configuration/admin/shop-configuration/${id}/`] as const; + return [ + `/api/configuration/shop-configuration/`, + ...(params ? [params] : []), + ] as const; }; -export const getApiConfigurationAdminShopConfigurationRetrieveQueryOptions = < - TData = Awaited< - ReturnType - >, +export const getApiConfigurationShopConfigurationListQueryOptions = < + TData = Awaited>, TError = unknown, >( - id: number, + params?: ApiConfigurationShopConfigurationListParams, options?: { query?: Partial< UseQueryOptions< - Awaited< - ReturnType - >, + Awaited>, TError, TData > @@ -368,12 +250,260 @@ export const getApiConfigurationAdminShopConfigurationRetrieveQueryOptions = < const queryKey = queryOptions?.queryKey ?? - getApiConfigurationAdminShopConfigurationRetrieveQueryKey(id); + getApiConfigurationShopConfigurationListQueryKey(params); const queryFn: QueryFunction< - Awaited> - > = ({ signal }) => - apiConfigurationAdminShopConfigurationRetrieve(id, signal); + Awaited> + > = ({ signal }) => apiConfigurationShopConfigurationList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiConfigurationShopConfigurationListQueryResult = NonNullable< + Awaited> +>; +export type ApiConfigurationShopConfigurationListQueryError = unknown; + +export function useApiConfigurationShopConfigurationList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiConfigurationShopConfigurationListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiConfigurationShopConfigurationList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiConfigurationShopConfigurationListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiConfigurationShopConfigurationList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiConfigurationShopConfigurationListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List site configuration + */ + +export function useApiConfigurationShopConfigurationList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiConfigurationShopConfigurationListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiConfigurationShopConfigurationListQueryOptions( + params, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * @summary Create site configuration (admin only) + */ +export const apiConfigurationShopConfigurationCreate = ( + siteConfiguration: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/configuration/shop-configuration/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: siteConfiguration, + signal, + }); +}; + +export const getApiConfigurationShopConfigurationCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiConfigurationShopConfigurationCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiConfigurationShopConfigurationCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiConfigurationShopConfigurationCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiConfigurationShopConfigurationCreateMutationBody = + NonReadonly; +export type ApiConfigurationShopConfigurationCreateMutationError = unknown; + +/** + * @summary Create site configuration (admin only) + */ +export const useApiConfigurationShopConfigurationCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiConfigurationShopConfigurationCreateMutationOptions(options), + queryClient, + ); +}; +/** + * @summary Retrieve site configuration + */ +export const apiConfigurationShopConfigurationRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/configuration/shop-configuration/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiConfigurationShopConfigurationRetrieveQueryKey = ( + id: number, +) => { + return [`/api/configuration/shop-configuration/${id}/`] as const; +}; + +export const getApiConfigurationShopConfigurationRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getApiConfigurationShopConfigurationRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiConfigurationShopConfigurationRetrieve(id, signal); return { queryKey, @@ -381,44 +511,35 @@ export const getApiConfigurationAdminShopConfigurationRetrieveQueryOptions = < enabled: !!id, ...queryOptions, } as UseQueryOptions< - Awaited>, + Awaited>, TError, TData > & { queryKey: DataTag }; }; -export type ApiConfigurationAdminShopConfigurationRetrieveQueryResult = - NonNullable< - Awaited> - >; -export type ApiConfigurationAdminShopConfigurationRetrieveQueryError = unknown; +export type ApiConfigurationShopConfigurationRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiConfigurationShopConfigurationRetrieveQueryError = unknown; -export function useApiConfigurationAdminShopConfigurationRetrieve< - TData = Awaited< - ReturnType - >, +export function useApiConfigurationShopConfigurationRetrieve< + TData = Awaited>, TError = unknown, >( id: number, options: { query: Partial< UseQueryOptions< - Awaited< - ReturnType - >, + Awaited>, TError, TData > > & Pick< DefinedInitialDataOptions< - Awaited< - ReturnType - >, + Awaited>, TError, - Awaited< - ReturnType - > + Awaited> >, "initialData" >; @@ -427,32 +548,24 @@ export function useApiConfigurationAdminShopConfigurationRetrieve< ): DefinedUseQueryResult & { queryKey: DataTag; }; -export function useApiConfigurationAdminShopConfigurationRetrieve< - TData = Awaited< - ReturnType - >, +export function useApiConfigurationShopConfigurationRetrieve< + TData = Awaited>, TError = unknown, >( id: number, options?: { query?: Partial< UseQueryOptions< - Awaited< - ReturnType - >, + Awaited>, TError, TData > > & Pick< UndefinedInitialDataOptions< - Awaited< - ReturnType - >, + Awaited>, TError, - Awaited< - ReturnType - > + Awaited> >, "initialData" >; @@ -461,19 +574,15 @@ export function useApiConfigurationAdminShopConfigurationRetrieve< ): UseQueryResult & { queryKey: DataTag; }; -export function useApiConfigurationAdminShopConfigurationRetrieve< - TData = Awaited< - ReturnType - >, +export function useApiConfigurationShopConfigurationRetrieve< + TData = Awaited>, TError = unknown, >( id: number, options?: { query?: Partial< UseQueryOptions< - Awaited< - ReturnType - >, + Awaited>, TError, TData > @@ -484,22 +593,18 @@ export function useApiConfigurationAdminShopConfigurationRetrieve< queryKey: DataTag; }; /** - * @summary Retrieve site configuration (admin) + * @summary Retrieve site configuration */ -export function useApiConfigurationAdminShopConfigurationRetrieve< - TData = Awaited< - ReturnType - >, +export function useApiConfigurationShopConfigurationRetrieve< + TData = Awaited>, TError = unknown, >( id: number, options?: { query?: Partial< UseQueryOptions< - Awaited< - ReturnType - >, + Awaited>, TError, TData > @@ -509,51 +614,53 @@ export function useApiConfigurationAdminShopConfigurationRetrieve< ): UseQueryResult & { queryKey: DataTag; } { - const queryOptions = - getApiConfigurationAdminShopConfigurationRetrieveQueryOptions(id, options); + const queryOptions = getApiConfigurationShopConfigurationRetrieveQueryOptions( + id, + options, + ); const query = useQuery(queryOptions, queryClient) as UseQueryResult< TData, TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** - * @summary Replace site configuration (admin) + * @summary Replace site configuration (admin only) */ -export const apiConfigurationAdminShopConfigurationUpdate = ( +export const apiConfigurationShopConfigurationUpdate = ( id: number, - siteConfigurationAdmin: NonReadonly, + siteConfiguration: NonReadonly, + signal?: AbortSignal, ) => { - return privateMutator({ - url: `/api/configuration/admin/shop-configuration/${id}/`, + return privateMutator({ + url: `/api/configuration/shop-configuration/${id}/`, method: "PUT", headers: { "Content-Type": "application/json" }, - data: siteConfigurationAdmin, + data: siteConfiguration, + signal, }); }; -export const getApiConfigurationAdminShopConfigurationUpdateMutationOptions = < +export const getApiConfigurationShopConfigurationUpdateMutationOptions = < TError = unknown, TContext = unknown, >(options?: { mutation?: UseMutationOptions< - Awaited>, + Awaited>, TError, - { id: number; data: NonReadonly }, + { id: number; data: NonReadonly }, TContext >; }): UseMutationOptions< - Awaited>, + Awaited>, TError, - { id: number; data: NonReadonly }, + { id: number; data: NonReadonly }, TContext > => { - const mutationKey = ["apiConfigurationAdminShopConfigurationUpdate"]; + const mutationKey = ["apiConfigurationShopConfigurationUpdate"]; const { mutation: mutationOptions } = options ? options.mutation && "mutationKey" in options.mutation && @@ -563,86 +670,85 @@ export const getApiConfigurationAdminShopConfigurationUpdateMutationOptions = < : { mutation: { mutationKey } }; const mutationFn: MutationFunction< - Awaited>, - { id: number; data: NonReadonly } + Awaited>, + { id: number; data: NonReadonly } > = (props) => { const { id, data } = props ?? {}; - return apiConfigurationAdminShopConfigurationUpdate(id, data); + return apiConfigurationShopConfigurationUpdate(id, data); }; return { mutationFn, ...mutationOptions }; }; -export type ApiConfigurationAdminShopConfigurationUpdateMutationResult = - NonNullable< - Awaited> - >; -export type ApiConfigurationAdminShopConfigurationUpdateMutationBody = - NonReadonly; -export type ApiConfigurationAdminShopConfigurationUpdateMutationError = unknown; +export type ApiConfigurationShopConfigurationUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiConfigurationShopConfigurationUpdateMutationBody = + NonReadonly; +export type ApiConfigurationShopConfigurationUpdateMutationError = unknown; /** - * @summary Replace site configuration (admin) + * @summary Replace site configuration (admin only) */ -export const useApiConfigurationAdminShopConfigurationUpdate = < +export const useApiConfigurationShopConfigurationUpdate = < TError = unknown, TContext = unknown, >( options?: { mutation?: UseMutationOptions< - Awaited>, + Awaited>, TError, - { id: number; data: NonReadonly }, + { id: number; data: NonReadonly }, TContext >; }, queryClient?: QueryClient, ): UseMutationResult< - Awaited>, + Awaited>, TError, - { id: number; data: NonReadonly }, + { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiConfigurationAdminShopConfigurationUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiConfigurationShopConfigurationUpdateMutationOptions(options), + queryClient, + ); }; /** - * @summary Update site configuration (admin) + * @summary Update site configuration (admin only) */ -export const apiConfigurationAdminShopConfigurationPartialUpdate = ( +export const apiConfigurationShopConfigurationPartialUpdate = ( id: number, - patchedSiteConfigurationAdmin: NonReadonly, + patchedSiteConfiguration: NonReadonly, + signal?: AbortSignal, ) => { - return privateMutator({ - url: `/api/configuration/admin/shop-configuration/${id}/`, + return privateMutator({ + url: `/api/configuration/shop-configuration/${id}/`, method: "PATCH", headers: { "Content-Type": "application/json" }, - data: patchedSiteConfigurationAdmin, + data: patchedSiteConfiguration, + signal, }); }; -export const getApiConfigurationAdminShopConfigurationPartialUpdateMutationOptions = +export const getApiConfigurationShopConfigurationPartialUpdateMutationOptions = (options?: { mutation?: UseMutationOptions< Awaited< - ReturnType + ReturnType >, TError, - { id: number; data: NonReadonly }, + { id: number; data: NonReadonly }, TContext >; }): UseMutationOptions< - Awaited< - ReturnType - >, + Awaited>, TError, - { id: number; data: NonReadonly }, + { id: number; data: NonReadonly }, TContext > => { - const mutationKey = ["apiConfigurationAdminShopConfigurationPartialUpdate"]; + const mutationKey = ["apiConfigurationShopConfigurationPartialUpdate"]; const { mutation: mutationOptions } = options ? options.mutation && "mutationKey" in options.mutation && @@ -653,89 +759,87 @@ export const getApiConfigurationAdminShopConfigurationPartialUpdateMutationOptio const mutationFn: MutationFunction< Awaited< - ReturnType + ReturnType >, - { id: number; data: NonReadonly } + { id: number; data: NonReadonly } > = (props) => { const { id, data } = props ?? {}; - return apiConfigurationAdminShopConfigurationPartialUpdate(id, data); + return apiConfigurationShopConfigurationPartialUpdate(id, data); }; return { mutationFn, ...mutationOptions }; }; -export type ApiConfigurationAdminShopConfigurationPartialUpdateMutationResult = +export type ApiConfigurationShopConfigurationPartialUpdateMutationResult = NonNullable< - Awaited< - ReturnType - > + Awaited> >; -export type ApiConfigurationAdminShopConfigurationPartialUpdateMutationBody = - NonReadonly; -export type ApiConfigurationAdminShopConfigurationPartialUpdateMutationError = +export type ApiConfigurationShopConfigurationPartialUpdateMutationBody = + NonReadonly; +export type ApiConfigurationShopConfigurationPartialUpdateMutationError = unknown; /** - * @summary Update site configuration (admin) + * @summary Update site configuration (admin only) */ -export const useApiConfigurationAdminShopConfigurationPartialUpdate = < +export const useApiConfigurationShopConfigurationPartialUpdate = < TError = unknown, TContext = unknown, >( options?: { mutation?: UseMutationOptions< Awaited< - ReturnType + ReturnType >, TError, - { id: number; data: NonReadonly }, + { id: number; data: NonReadonly }, TContext >; }, queryClient?: QueryClient, ): UseMutationResult< - Awaited< - ReturnType - >, + Awaited>, TError, - { id: number; data: NonReadonly }, + { id: number; data: NonReadonly }, TContext > => { - const mutationOptions = - getApiConfigurationAdminShopConfigurationPartialUpdateMutationOptions( - options, - ); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiConfigurationShopConfigurationPartialUpdateMutationOptions(options), + queryClient, + ); }; /** - * @summary Delete site configuration (admin) + * @summary Delete site configuration (admin only) */ -export const apiConfigurationAdminShopConfigurationDestroy = (id: number) => { +export const apiConfigurationShopConfigurationDestroy = ( + id: number, + signal?: AbortSignal, +) => { return privateMutator({ - url: `/api/configuration/admin/shop-configuration/${id}/`, + url: `/api/configuration/shop-configuration/${id}/`, method: "DELETE", + signal, }); }; -export const getApiConfigurationAdminShopConfigurationDestroyMutationOptions = < +export const getApiConfigurationShopConfigurationDestroyMutationOptions = < TError = unknown, TContext = unknown, >(options?: { mutation?: UseMutationOptions< - Awaited>, + Awaited>, TError, { id: number }, TContext >; }): UseMutationOptions< - Awaited>, + Awaited>, TError, { id: number }, TContext > => { - const mutationKey = ["apiConfigurationAdminShopConfigurationDestroy"]; + const mutationKey = ["apiConfigurationShopConfigurationDestroy"]; const { mutation: mutationOptions } = options ? options.mutation && "mutationKey" in options.mutation && @@ -745,35 +849,34 @@ export const getApiConfigurationAdminShopConfigurationDestroyMutationOptions = < : { mutation: { mutationKey } }; const mutationFn: MutationFunction< - Awaited>, + Awaited>, { id: number } > = (props) => { const { id } = props ?? {}; - return apiConfigurationAdminShopConfigurationDestroy(id); + return apiConfigurationShopConfigurationDestroy(id); }; return { mutationFn, ...mutationOptions }; }; -export type ApiConfigurationAdminShopConfigurationDestroyMutationResult = +export type ApiConfigurationShopConfigurationDestroyMutationResult = NonNullable< - Awaited> + Awaited> >; -export type ApiConfigurationAdminShopConfigurationDestroyMutationError = - unknown; +export type ApiConfigurationShopConfigurationDestroyMutationError = unknown; /** - * @summary Delete site configuration (admin) + * @summary Delete site configuration (admin only) */ -export const useApiConfigurationAdminShopConfigurationDestroy = < +export const useApiConfigurationShopConfigurationDestroy = < TError = unknown, TContext = unknown, >( options?: { mutation?: UseMutationOptions< - Awaited>, + Awaited>, TError, { id: number }, TContext @@ -781,13 +884,783 @@ export const useApiConfigurationAdminShopConfigurationDestroy = < }, queryClient?: QueryClient, ): UseMutationResult< - Awaited>, + Awaited>, TError, { id: number }, TContext > => { - const mutationOptions = - getApiConfigurationAdminShopConfigurationDestroyMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiConfigurationShopConfigurationDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * VAT rate management - read for all, write for admins only + * @summary List VAT rates + */ +export const apiConfigurationVatRatesList = ( + params?: ApiConfigurationVatRatesListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/configuration/vat-rates/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiConfigurationVatRatesListQueryKey = ( + params?: ApiConfigurationVatRatesListParams, +) => { + return [ + `/api/configuration/vat-rates/`, + ...(params ? [params] : []), + ] as const; +}; + +export const getApiConfigurationVatRatesListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiConfigurationVatRatesListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiConfigurationVatRatesListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiConfigurationVatRatesList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiConfigurationVatRatesListQueryResult = NonNullable< + Awaited> +>; +export type ApiConfigurationVatRatesListQueryError = unknown; + +export function useApiConfigurationVatRatesList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiConfigurationVatRatesListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiConfigurationVatRatesList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiConfigurationVatRatesListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiConfigurationVatRatesList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiConfigurationVatRatesListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List VAT rates + */ + +export function useApiConfigurationVatRatesList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiConfigurationVatRatesListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiConfigurationVatRatesListQueryOptions( + params, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * VAT rate management - read for all, write for admins only + * @summary Create VAT rate (admin only) + */ +export const apiConfigurationVatRatesCreate = ( + vATRate: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/configuration/vat-rates/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: vATRate, + signal, + }); +}; + +export const getApiConfigurationVatRatesCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiConfigurationVatRatesCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiConfigurationVatRatesCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiConfigurationVatRatesCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiConfigurationVatRatesCreateMutationBody = NonReadonly; +export type ApiConfigurationVatRatesCreateMutationError = unknown; + +/** + * @summary Create VAT rate (admin only) + */ +export const useApiConfigurationVatRatesCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiConfigurationVatRatesCreateMutationOptions(options), + queryClient, + ); +}; +/** + * VAT rate management - read for all, write for admins only + * @summary Retrieve VAT rate + */ +export const apiConfigurationVatRatesRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/configuration/vat-rates/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiConfigurationVatRatesRetrieveQueryKey = (id: number) => { + return [`/api/configuration/vat-rates/${id}/`] as const; +}; + +export const getApiConfigurationVatRatesRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiConfigurationVatRatesRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiConfigurationVatRatesRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiConfigurationVatRatesRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiConfigurationVatRatesRetrieveQueryError = unknown; + +export function useApiConfigurationVatRatesRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiConfigurationVatRatesRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiConfigurationVatRatesRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Retrieve VAT rate + */ + +export function useApiConfigurationVatRatesRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiConfigurationVatRatesRetrieveQueryOptions( + id, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * VAT rate management - read for all, write for admins only + * @summary Replace VAT rate (admin only) + */ +export const apiConfigurationVatRatesUpdate = ( + id: number, + vATRate: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/configuration/vat-rates/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: vATRate, + signal, + }); +}; + +export const getApiConfigurationVatRatesUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiConfigurationVatRatesUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiConfigurationVatRatesUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiConfigurationVatRatesUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiConfigurationVatRatesUpdateMutationBody = NonReadonly; +export type ApiConfigurationVatRatesUpdateMutationError = unknown; + +/** + * @summary Replace VAT rate (admin only) + */ +export const useApiConfigurationVatRatesUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiConfigurationVatRatesUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * VAT rate management - read for all, write for admins only + * @summary Update VAT rate (admin only) + */ +export const apiConfigurationVatRatesPartialUpdate = ( + id: number, + patchedVATRate: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/configuration/vat-rates/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedVATRate, + signal, + }); +}; + +export const getApiConfigurationVatRatesPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiConfigurationVatRatesPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiConfigurationVatRatesPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiConfigurationVatRatesPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiConfigurationVatRatesPartialUpdateMutationBody = + NonReadonly; +export type ApiConfigurationVatRatesPartialUpdateMutationError = unknown; + +/** + * @summary Update VAT rate (admin only) + */ +export const useApiConfigurationVatRatesPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiConfigurationVatRatesPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * VAT rate management - read for all, write for admins only + * @summary Delete VAT rate (admin only) + */ +export const apiConfigurationVatRatesDestroy = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/configuration/vat-rates/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiConfigurationVatRatesDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiConfigurationVatRatesDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiConfigurationVatRatesDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiConfigurationVatRatesDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiConfigurationVatRatesDestroyMutationError = unknown; + +/** + * @summary Delete VAT rate (admin only) + */ +export const useApiConfigurationVatRatesDestroy = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiConfigurationVatRatesDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * Set this VAT rate as the default for new products + * @summary Make VAT rate the default (admin only) + */ +export const apiConfigurationVatRatesMakeDefaultCreate = ( + id: number, + vATRate: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/configuration/vat-rates/${id}/make_default/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: vATRate, + signal, + }); +}; + +export const getApiConfigurationVatRatesMakeDefaultCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiConfigurationVatRatesMakeDefaultCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiConfigurationVatRatesMakeDefaultCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiConfigurationVatRatesMakeDefaultCreateMutationResult = + NonNullable< + Awaited> + >; +export type ApiConfigurationVatRatesMakeDefaultCreateMutationBody = + NonReadonly; +export type ApiConfigurationVatRatesMakeDefaultCreateMutationError = unknown; + +/** + * @summary Make VAT rate the default (admin only) + */ +export const useApiConfigurationVatRatesMakeDefaultCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiConfigurationVatRatesMakeDefaultCreateMutationOptions(options), + queryClient, + ); }; diff --git a/frontend/src/api/generated/private/deutschepost/deutschepost.ts b/frontend/src/api/generated/private/deutschepost/deutschepost.ts new file mode 100644 index 0000000..7803f18 --- /dev/null +++ b/frontend/src/api/generated/private/deutschepost/deutschepost.ts @@ -0,0 +1,2274 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import { useMutation, useQuery } from "@tanstack/react-query"; +import type { + DataTag, + DefinedInitialDataOptions, + DefinedUseQueryResult, + MutationFunction, + QueryClient, + QueryFunction, + QueryKey, + UndefinedInitialDataOptions, + UseMutationOptions, + UseMutationResult, + UseQueryOptions, + UseQueryResult, +} from "@tanstack/react-query"; + +import type { + ApiDeutschepostBulkOrdersListParams, + ApiDeutschepostOrdersListParams, + DeutschePostBulkOrder, + DeutschePostOrder, + DeutschePostTracking, + PaginatedDeutschePostBulkOrderList, + PaginatedDeutschePostOrderList, + PatchedDeutschePostOrder, +} from "../models"; + +import { privateMutator } from "../../../privateClient"; + +// https://stackoverflow.com/questions/49579094/typescript-conditional-types-filter-out-readonly-properties-pick-only-requir/49579497#49579497 +type IfEquals = + (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? A : B; + +type WritableKeys = { + [P in keyof T]-?: IfEquals< + { [Q in P]: T[P] }, + { -readonly [Q in P]: T[P] }, + P + >; +}[keyof T]; + +type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ( + k: infer I, +) => void + ? I + : never; +type DistributeReadOnlyOverUnions = T extends any ? NonReadonly : never; + +type Writable = Pick>; +type NonReadonly = [T] extends [UnionToIntersection] + ? { + [P in keyof Writable]: T[P] extends object + ? NonReadonly> + : T[P]; + } + : DistributeReadOnlyOverUnions; + +/** + * Returns a paginated list of Deutsche Post bulk shipping orders. Admin only access. + * @summary List Deutsche Post Bulk Orders + */ +export const apiDeutschepostBulkOrdersList = ( + params?: ApiDeutschepostBulkOrdersListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/bulk-orders/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiDeutschepostBulkOrdersListQueryKey = ( + params?: ApiDeutschepostBulkOrdersListParams, +) => { + return [ + `/api/deutschepost/bulk-orders/`, + ...(params ? [params] : []), + ] as const; +}; + +export const getApiDeutschepostBulkOrdersListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiDeutschepostBulkOrdersListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiDeutschepostBulkOrdersListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiDeutschepostBulkOrdersList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiDeutschepostBulkOrdersListQueryResult = NonNullable< + Awaited> +>; +export type ApiDeutschepostBulkOrdersListQueryError = unknown; + +export function useApiDeutschepostBulkOrdersList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiDeutschepostBulkOrdersListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostBulkOrdersList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiDeutschepostBulkOrdersListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostBulkOrdersList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiDeutschepostBulkOrdersListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List Deutsche Post Bulk Orders + */ + +export function useApiDeutschepostBulkOrdersList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiDeutschepostBulkOrdersListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiDeutschepostBulkOrdersListQueryOptions( + params, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * + Create a new Deutsche Post bulk order from multiple individual orders. + + Requirements: + - All orders must be created remotely (have order_id) + - All linked commerce orders must use Deutsche Post delivery + - All linked commerce orders must be completed + - Orders cannot already be part of another bulk order + + * @summary Create Deutsche Post Bulk Order + */ +export const apiDeutschepostBulkOrdersCreate = ( + deutschePostBulkOrder: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/bulk-orders/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: deutschePostBulkOrder, + signal, + }); +}; + +export const getApiDeutschepostBulkOrdersCreateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiDeutschepostBulkOrdersCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiDeutschepostBulkOrdersCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostBulkOrdersCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiDeutschepostBulkOrdersCreateMutationBody = + NonReadonly; +export type ApiDeutschepostBulkOrdersCreateMutationError = void; + +/** + * @summary Create Deutsche Post Bulk Order + */ +export const useApiDeutschepostBulkOrdersCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiDeutschepostBulkOrdersCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Returns detailed information for a single Deutsche Post bulk order including all constituent orders. + * @summary Get Deutsche Post Bulk Order Detail + */ +export const apiDeutschepostBulkOrdersRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/bulk-orders/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiDeutschepostBulkOrdersRetrieveQueryKey = (id: number) => { + return [`/api/deutschepost/bulk-orders/${id}/`] as const; +}; + +export const getApiDeutschepostBulkOrdersRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiDeutschepostBulkOrdersRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiDeutschepostBulkOrdersRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiDeutschepostBulkOrdersRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiDeutschepostBulkOrdersRetrieveQueryError = unknown; + +export function useApiDeutschepostBulkOrdersRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostBulkOrdersRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostBulkOrdersRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Get Deutsche Post Bulk Order Detail + */ + +export function useApiDeutschepostBulkOrdersRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiDeutschepostBulkOrdersRetrieveQueryOptions( + id, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * + Cancel the bulk order in Deutsche Post API system. This will: + - Call Deutsche Post API to cancel the bulk order + - Update the bulk order status to ERROR (cancelled state) + - Cannot be undone once cancelled + - Only works for bulk orders that are not yet completed + + * @summary Cancel Remote Bulk Order + */ +export const apiDeutschepostBulkOrdersCancelBulkOrderCreate = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/bulk-orders/${id}/cancel_bulk_order/`, + method: "POST", + signal, + }); +}; + +export const getApiDeutschepostBulkOrdersCancelBulkOrderCreateMutationOptions = + (options?: { + mutation?: UseMutationOptions< + Awaited< + ReturnType + >, + TError, + { id: number }, + TContext + >; + }): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + > => { + const mutationKey = ["apiDeutschepostBulkOrdersCancelBulkOrderCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited< + ReturnType + >, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiDeutschepostBulkOrdersCancelBulkOrderCreate(id); + }; + + return { mutationFn, ...mutationOptions }; + }; + +export type ApiDeutschepostBulkOrdersCancelBulkOrderCreateMutationResult = + NonNullable< + Awaited> + >; + +export type ApiDeutschepostBulkOrdersCancelBulkOrderCreateMutationError = void; + +/** + * @summary Cancel Remote Bulk Order + */ +export const useApiDeutschepostBulkOrdersCancelBulkOrderCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited< + ReturnType + >, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiDeutschepostBulkOrdersCancelBulkOrderCreateMutationOptions(options), + queryClient, + ); +}; +/** + * + Create the bulk order in Deutsche Post API system. This will: + - Validate all constituent orders are eligible + - Call Deutsche Post API to create the bulk order + - Store the returned bulk_order_id + - Update the bulk order status to PROCESSING + - Handle API errors and validation + + * @summary Create Remote Bulk Order + */ +export const apiDeutschepostBulkOrdersCreateRemoteCreate = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/bulk-orders/${id}/create_remote/`, + method: "POST", + signal, + }); +}; + +export const getApiDeutschepostBulkOrdersCreateRemoteCreateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiDeutschepostBulkOrdersCreateRemoteCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiDeutschepostBulkOrdersCreateRemoteCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostBulkOrdersCreateRemoteCreateMutationResult = + NonNullable< + Awaited> + >; + +export type ApiDeutschepostBulkOrdersCreateRemoteCreateMutationError = void; + +/** + * @summary Create Remote Bulk Order + */ +export const useApiDeutschepostBulkOrdersCreateRemoteCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiDeutschepostBulkOrdersCreateRemoteCreateMutationOptions(options), + queryClient, + ); +}; +/** + * + Generate combined PDF with all order labels for bulk shipment. This will: + - Create multi-page PDF with all order details + - Include recipient addresses and tracking information + - Format for warehouse processing + - Save PDF to bulk_order.bulk_label_pdf field + + * @summary Generate Bulk Labels + */ +export const apiDeutschepostBulkOrdersGenerateLabelsCreate = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/bulk-orders/${id}/generate_labels/`, + method: "POST", + signal, + }); +}; + +export const getApiDeutschepostBulkOrdersGenerateLabelsCreateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiDeutschepostBulkOrdersGenerateLabelsCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiDeutschepostBulkOrdersGenerateLabelsCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostBulkOrdersGenerateLabelsCreateMutationResult = + NonNullable< + Awaited> + >; + +export type ApiDeutschepostBulkOrdersGenerateLabelsCreateMutationError = void; + +/** + * @summary Generate Bulk Labels + */ +export const useApiDeutschepostBulkOrdersGenerateLabelsCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiDeutschepostBulkOrdersGenerateLabelsCreateMutationOptions(options), + queryClient, + ); +}; +/** + * + Get tracking and status URLs for the bulk order. Returns: + - tracking_url: Public URL for tracking bulk shipment progress + - status_url: URL for monitoring bulk order processing status + + * @summary Get Bulk Order URLs + */ +export const apiDeutschepostBulkOrdersGetUrlsRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/bulk-orders/${id}/get_urls/`, + method: "GET", + signal, + }); +}; + +export const getApiDeutschepostBulkOrdersGetUrlsRetrieveQueryKey = ( + id: number, +) => { + return [`/api/deutschepost/bulk-orders/${id}/get_urls/`] as const; +}; + +export const getApiDeutschepostBulkOrdersGetUrlsRetrieveQueryOptions = < + TData = Awaited>, + TError = void, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getApiDeutschepostBulkOrdersGetUrlsRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiDeutschepostBulkOrdersGetUrlsRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiDeutschepostBulkOrdersGetUrlsRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiDeutschepostBulkOrdersGetUrlsRetrieveQueryError = void; + +export function useApiDeutschepostBulkOrdersGetUrlsRetrieve< + TData = Awaited>, + TError = void, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostBulkOrdersGetUrlsRetrieve< + TData = Awaited>, + TError = void, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostBulkOrdersGetUrlsRetrieve< + TData = Awaited>, + TError = void, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Get Bulk Order URLs + */ + +export function useApiDeutschepostBulkOrdersGetUrlsRetrieve< + TData = Awaited>, + TError = void, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiDeutschepostBulkOrdersGetUrlsRetrieveQueryOptions( + id, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * + Refresh bulk order status from Deutsche Post API. This will: + - Fetch latest bulk order status from Deutsche Post + - Update bulk order status (PROCESSING, COMPLETED, etc.) + - Store raw API response data in metadata + - Update individual order statuses if needed + + * @summary Refresh Bulk Order Status + */ +export const apiDeutschepostBulkOrdersRefreshStatusCreate = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/bulk-orders/${id}/refresh_status/`, + method: "POST", + signal, + }); +}; + +export const getApiDeutschepostBulkOrdersRefreshStatusCreateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiDeutschepostBulkOrdersRefreshStatusCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiDeutschepostBulkOrdersRefreshStatusCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostBulkOrdersRefreshStatusCreateMutationResult = + NonNullable< + Awaited> + >; + +export type ApiDeutschepostBulkOrdersRefreshStatusCreateMutationError = void; + +/** + * @summary Refresh Bulk Order Status + */ +export const useApiDeutschepostBulkOrdersRefreshStatusCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiDeutschepostBulkOrdersRefreshStatusCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Returns a paginated list of Deutsche Post shipping orders. Orders are created internally through Carrier model. Admin only access. + * @summary List Deutsche Post Orders + */ +export const apiDeutschepostOrdersList = ( + params?: ApiDeutschepostOrdersListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiDeutschepostOrdersListQueryKey = ( + params?: ApiDeutschepostOrdersListParams, +) => { + return [`/api/deutschepost/orders/`, ...(params ? [params] : [])] as const; +}; + +export const getApiDeutschepostOrdersListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiDeutschepostOrdersListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiDeutschepostOrdersListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiDeutschepostOrdersList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiDeutschepostOrdersListQueryResult = NonNullable< + Awaited> +>; +export type ApiDeutschepostOrdersListQueryError = unknown; + +export function useApiDeutschepostOrdersList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiDeutschepostOrdersListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostOrdersList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiDeutschepostOrdersListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostOrdersList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiDeutschepostOrdersListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List Deutsche Post Orders + */ + +export function useApiDeutschepostOrdersList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiDeutschepostOrdersListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiDeutschepostOrdersListQueryOptions( + params, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Create a new Deutsche Post order with recipient and shipment details. Order will automatically be created remotely if validation passes. + * @summary Create Deutsche Post Order + */ +export const apiDeutschepostOrdersCreate = ( + deutschePostOrder: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: deutschePostOrder, + signal, + }); +}; + +export const getApiDeutschepostOrdersCreateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiDeutschepostOrdersCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiDeutschepostOrdersCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostOrdersCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiDeutschepostOrdersCreateMutationBody = + NonReadonly; +export type ApiDeutschepostOrdersCreateMutationError = void; + +/** + * @summary Create Deutsche Post Order + */ +export const useApiDeutschepostOrdersCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiDeutschepostOrdersCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Returns detailed information for a single Deutsche Post order including tracking data. Orders are managed through Carrier model. + * @summary Get Deutsche Post Order Detail + */ +export const apiDeutschepostOrdersRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiDeutschepostOrdersRetrieveQueryKey = (id: number) => { + return [`/api/deutschepost/orders/${id}/`] as const; +}; + +export const getApiDeutschepostOrdersRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiDeutschepostOrdersRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiDeutschepostOrdersRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiDeutschepostOrdersRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiDeutschepostOrdersRetrieveQueryError = unknown; + +export function useApiDeutschepostOrdersRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostOrdersRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostOrdersRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Get Deutsche Post Order Detail + */ + +export function useApiDeutschepostOrdersRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiDeutschepostOrdersRetrieveQueryOptions( + id, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Update Deutsche Post order details. Cannot update orders that are already created remotely. + * @summary Update Deutsche Post Order + */ +export const apiDeutschepostOrdersUpdate = ( + id: number, + deutschePostOrder: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: deutschePostOrder, + signal, + }); +}; + +export const getApiDeutschepostOrdersUpdateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiDeutschepostOrdersUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiDeutschepostOrdersUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostOrdersUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiDeutschepostOrdersUpdateMutationBody = + NonReadonly; +export type ApiDeutschepostOrdersUpdateMutationError = void; + +/** + * @summary Update Deutsche Post Order + */ +export const useApiDeutschepostOrdersUpdate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiDeutschepostOrdersUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Partially update Deutsche Post order details. Cannot update orders that are already created remotely. + * @summary Partially Update Deutsche Post Order + */ +export const apiDeutschepostOrdersPartialUpdate = ( + id: number, + patchedDeutschePostOrder: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedDeutschePostOrder, + signal, + }); +}; + +export const getApiDeutschepostOrdersPartialUpdateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiDeutschepostOrdersPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiDeutschepostOrdersPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostOrdersPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiDeutschepostOrdersPartialUpdateMutationBody = + NonReadonly; +export type ApiDeutschepostOrdersPartialUpdateMutationError = void; + +/** + * @summary Partially Update Deutsche Post Order + */ +export const useApiDeutschepostOrdersPartialUpdate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiDeutschepostOrdersPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Delete Deutsche Post order. If order is created remotely, it will attempt to cancel it first. + * @summary Delete Deutsche Post Order + */ +export const apiDeutschepostOrdersDestroy = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiDeutschepostOrdersDestroyMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiDeutschepostOrdersDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiDeutschepostOrdersDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostOrdersDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiDeutschepostOrdersDestroyMutationError = void; + +/** + * @summary Delete Deutsche Post Order + */ +export const useApiDeutschepostOrdersDestroy = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiDeutschepostOrdersDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * + Cancel the order in Deutsche Post API system. This will: + - Call Deutsche Post API to cancel the order + - Update the order state to CANCELLED + - Cannot be undone once cancelled + - Only works for orders that are not yet shipped or delivered + + Note: Orders are created and managed through the Carrier model in commerce app. + + * @summary Cancel Deutsche Post Order + */ +export const apiDeutschepostOrdersCancelOrderCreate = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/${id}/cancel_order/`, + method: "POST", + signal, + }); +}; + +export const getApiDeutschepostOrdersCancelOrderCreateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiDeutschepostOrdersCancelOrderCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiDeutschepostOrdersCancelOrderCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostOrdersCancelOrderCreateMutationResult = NonNullable< + Awaited> +>; + +export type ApiDeutschepostOrdersCancelOrderCreateMutationError = void; + +/** + * @summary Cancel Deutsche Post Order + */ +export const useApiDeutschepostOrdersCancelOrderCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiDeutschepostOrdersCancelOrderCreateMutationOptions(options), + queryClient, + ); +}; +/** + * + Finalize the order in Deutsche Post API system. This will: + - Call Deutsche Post API to finalize the order + - Update the order state to FINALIZED + - Retrieve AWB number and barcode for tracking + - Enable label generation + - Required before the order can be shipped + + * @summary Finalize Deutsche Post Order + */ +export const apiDeutschepostOrdersFinalizeOrderCreate = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/${id}/finalize_order/`, + method: "POST", + signal, + }); +}; + +export const getApiDeutschepostOrdersFinalizeOrderCreateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiDeutschepostOrdersFinalizeOrderCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiDeutschepostOrdersFinalizeOrderCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostOrdersFinalizeOrderCreateMutationResult = + NonNullable< + Awaited> + >; + +export type ApiDeutschepostOrdersFinalizeOrderCreateMutationError = void; + +/** + * @summary Finalize Deutsche Post Order + */ +export const useApiDeutschepostOrdersFinalizeOrderCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiDeutschepostOrdersFinalizeOrderCreateMutationOptions(options), + queryClient, + ); +}; +/** + * + Generate and download shipping label PDF. This will: + - Attempt to download label from Deutsche Post API + - If API label not available, generate simple label with order details + - Save label PDF to order.label_pdf field + - Include barcode and tracking information + - Requires order to be created remotely first + + * @summary Generate Shipping Label + */ +export const apiDeutschepostOrdersGenerateLabelCreate = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/${id}/generate_label/`, + method: "POST", + signal, + }); +}; + +export const getApiDeutschepostOrdersGenerateLabelCreateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiDeutschepostOrdersGenerateLabelCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiDeutschepostOrdersGenerateLabelCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostOrdersGenerateLabelCreateMutationResult = + NonNullable< + Awaited> + >; + +export type ApiDeutschepostOrdersGenerateLabelCreateMutationError = void; + +/** + * @summary Generate Shipping Label + */ +export const useApiDeutschepostOrdersGenerateLabelCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiDeutschepostOrdersGenerateLabelCreateMutationOptions(options), + queryClient, + ); +}; +/** + * + Get the public tracking URL for the order that customers can use to track their shipment. + Returns the URL if available, or null if tracking is not yet available. + + * @summary Get Tracking URL + */ +export const apiDeutschepostOrdersGetTrackingUrlRetrieve = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/${id}/get_tracking_url/`, + method: "GET", + signal, + }); +}; + +export const getApiDeutschepostOrdersGetTrackingUrlRetrieveQueryKey = ( + id: number, +) => { + return [`/api/deutschepost/orders/${id}/get_tracking_url/`] as const; +}; + +export const getApiDeutschepostOrdersGetTrackingUrlRetrieveQueryOptions = < + TData = Awaited< + ReturnType + >, + TError = void, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? + getApiDeutschepostOrdersGetTrackingUrlRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiDeutschepostOrdersGetTrackingUrlRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiDeutschepostOrdersGetTrackingUrlRetrieveQueryResult = + NonNullable< + Awaited> + >; +export type ApiDeutschepostOrdersGetTrackingUrlRetrieveQueryError = void; + +export function useApiDeutschepostOrdersGetTrackingUrlRetrieve< + TData = Awaited< + ReturnType + >, + TError = void, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited< + ReturnType + >, + TError, + Awaited< + ReturnType + > + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostOrdersGetTrackingUrlRetrieve< + TData = Awaited< + ReturnType + >, + TError = void, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited< + ReturnType + >, + TError, + Awaited< + ReturnType + > + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiDeutschepostOrdersGetTrackingUrlRetrieve< + TData = Awaited< + ReturnType + >, + TError = void, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Get Tracking URL + */ + +export function useApiDeutschepostOrdersGetTrackingUrlRetrieve< + TData = Awaited< + ReturnType + >, + TError = void, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = + getApiDeutschepostOrdersGetTrackingUrlRetrieveQueryOptions(id, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * + Refresh tracking information from Deutsche Post API. This will: + - Fetch latest order status from Deutsche Post + - Update AWB number, barcode, and tracking URL + - Update order state based on shipment status + - Store raw tracking data in metadata + + Note: Orders are created and managed through the Carrier model in commerce app. + + * @summary Refresh Tracking Information + */ +export const apiDeutschepostOrdersRefreshTrackingCreate = ( + id: number, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/deutschepost/orders/${id}/refresh_tracking/`, + method: "POST", + signal, + }); +}; + +export const getApiDeutschepostOrdersRefreshTrackingCreateMutationOptions = < + TError = void, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiDeutschepostOrdersRefreshTrackingCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiDeutschepostOrdersRefreshTrackingCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiDeutschepostOrdersRefreshTrackingCreateMutationResult = + NonNullable< + Awaited> + >; + +export type ApiDeutschepostOrdersRefreshTrackingCreateMutationError = void; + +/** + * @summary Refresh Tracking Information + */ +export const useApiDeutschepostOrdersRefreshTrackingCreate = < + TError = void, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiDeutschepostOrdersRefreshTrackingCreateMutationOptions(options), + queryClient, + ); +}; diff --git a/frontend/src/api/generated/private/gopay/gopay.ts b/frontend/src/api/generated/private/gopay/gopay.ts index e0da5e4..2cc93c3 100644 --- a/frontend/src/api/generated/private/gopay/gopay.ts +++ b/frontend/src/api/generated/private/gopay/gopay.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -25,7 +25,7 @@ import type { GopayRefundPayment200, PaymentCreate, Refund, -} from ".././models"; +} from "../models"; import { privateMutator } from "../../../privateClient"; @@ -137,9 +137,10 @@ export const useGopayRefundPayment = ( { paymentId: string; data: NonReadonly }, TContext > => { - const mutationOptions = getGopayRefundPaymentMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getGopayRefundPaymentMutationOptions(options), + queryClient, + ); }; /** * Načte aktuální stav platby GoPay a případně synchronizuje lokální záznam. @@ -153,7 +154,7 @@ export const gopayGetStatus = (paymentId: string, signal?: AbortSignal) => { }); }; -export const getGopayGetStatusQueryKey = (paymentId?: string) => { +export const getGopayGetStatusQueryKey = (paymentId: string) => { return [`/api/payments/gopay/${paymentId}/status/`] as const; }; @@ -277,9 +278,7 @@ export function useGopayGetStatus< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -361,7 +360,8 @@ export const useGopayCreatePayment = ( { data: PaymentCreate }, TContext > => { - const mutationOptions = getGopayCreatePaymentMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getGopayCreatePaymentMutationOptions(options), + queryClient, + ); }; diff --git a/frontend/src/api/generated/private/hubs/hubs.ts b/frontend/src/api/generated/private/hubs/hubs.ts new file mode 100644 index 0000000..fe9f2fc --- /dev/null +++ b/frontend/src/api/generated/private/hubs/hubs.ts @@ -0,0 +1,2489 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import { useMutation, useQuery } from "@tanstack/react-query"; +import type { + DataTag, + DefinedInitialDataOptions, + DefinedUseQueryResult, + MutationFunction, + QueryClient, + QueryFunction, + QueryKey, + UndefinedInitialDataOptions, + UseMutationOptions, + UseMutationResult, + UseQueryOptions, + UseQueryResult, +} from "@tanstack/react-query"; + +import type { + ApiSocialHubsListParams, + ApiSocialHubsModeratorsListParams, + ApiSocialHubsTagsListParams, + Hub, + HubPermission, + PaginatedHubList, + PaginatedHubPermissionList, + PaginatedTagsList, + PatchedHub, + PatchedHubPermission, + PatchedTags, + Tags, + TransferInit, + TransferVerify, +} from "../models"; + +import { privateMutator } from "../../../privateClient"; + +// https://stackoverflow.com/questions/49579094/typescript-conditional-types-filter-out-readonly-properties-pick-only-requir/49579497#49579497 +type IfEquals = + (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? A : B; + +type WritableKeys = { + [P in keyof T]-?: IfEquals< + { [Q in P]: T[P] }, + { -readonly [Q in P]: T[P] }, + P + >; +}[keyof T]; + +type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ( + k: infer I, +) => void + ? I + : never; +type DistributeReadOnlyOverUnions = T extends any ? NonReadonly : never; + +type Writable = Pick>; +type NonReadonly = [T] extends [UnionToIntersection] + ? { + [P in keyof Writable]: T[P] extends object + ? NonReadonly> + : T[P]; + } + : DistributeReadOnlyOverUnions; + +/** + * Returns all public hubs. Authenticated users also see hubs they are members of. Admins see all hubs regardless of visibility. + * @summary List hubs + */ +export const apiSocialHubsList = ( + params?: ApiSocialHubsListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiSocialHubsListQueryKey = ( + params?: ApiSocialHubsListParams, +) => { + return [`/api/social/hubs/`, ...(params ? [params] : [])] as const; +}; + +export const getApiSocialHubsListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialHubsListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialHubsList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialHubsListQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsListQueryError = unknown; + +export function useApiSocialHubsList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiSocialHubsListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List hubs + */ + +export function useApiSocialHubsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialHubsListQueryOptions(params, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Creates a new hub. The requesting user is automatically set as the owner. + * @summary Create a hub + */ +export const apiSocialHubsCreate = ( + hub: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: hub, + signal, + }); +}; + +export const getApiSocialHubsCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialHubsCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiSocialHubsCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsCreateMutationBody = NonReadonly; +export type ApiSocialHubsCreateMutationError = unknown; + +/** + * @summary Create a hub + */ +export const useApiSocialHubsCreate = ( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialHubsCreateMutationOptions(options), + queryClient, + ); +}; +/** + * @summary Retrieve a hub + */ +export const apiSocialHubsRetrieve = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/hubs/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiSocialHubsRetrieveQueryKey = (id: string) => { + return [`/api/social/hubs/${id}/`] as const; +}; + +export const getApiSocialHubsRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialHubsRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialHubsRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialHubsRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsRetrieveQueryError = unknown; + +export function useApiSocialHubsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Retrieve a hub + */ + +export function useApiSocialHubsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialHubsRetrieveQueryOptions(id, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Full update. Restricted to the owner, site admin, or moderators (per-field permission flags are enforced). + * @summary Replace a hub + */ +export const apiSocialHubsUpdate = ( + id: string, + hub: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: hub, + signal, + }); +}; + +export const getApiSocialHubsUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialHubsUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialHubsUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsUpdateMutationBody = NonReadonly; +export type ApiSocialHubsUpdateMutationError = unknown; + +/** + * @summary Replace a hub + */ +export const useApiSocialHubsUpdate = ( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialHubsUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Partial update. Restricted to the owner, site admin, or moderators (per-field permission flags are enforced). + * @summary Update a hub + */ +export const apiSocialHubsPartialUpdate = ( + id: string, + patchedHub: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedHub, + signal, + }); +}; + +export const getApiSocialHubsPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialHubsPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialHubsPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsPartialUpdateMutationBody = NonReadonly; +export type ApiSocialHubsPartialUpdateMutationError = unknown; + +/** + * @summary Update a hub + */ +export const useApiSocialHubsPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialHubsPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Soft-deletes the hub. Owner or admin only. + * @summary Delete a hub + */ +export const apiSocialHubsDestroy = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/hubs/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiSocialHubsDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext +> => { + const mutationKey = ["apiSocialHubsDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string } + > = (props) => { + const { id } = props ?? {}; + + return apiSocialHubsDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiSocialHubsDestroyMutationError = unknown; + +/** + * @summary Delete a hub + */ +export const useApiSocialHubsDestroy = ( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string }, + TContext +> => { + return useMutation( + getApiSocialHubsDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * Adds the authenticated user as a member. Private hubs reject this request. + * @summary Join a hub + */ +export const apiSocialHubsJoinCreate = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/hubs/${id}/join/`, + method: "POST", + signal, + }); +}; + +export const getApiSocialHubsJoinCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext +> => { + const mutationKey = ["apiSocialHubsJoinCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string } + > = (props) => { + const { id } = props ?? {}; + + return apiSocialHubsJoinCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsJoinCreateMutationResult = NonNullable< + Awaited> +>; + +export type ApiSocialHubsJoinCreateMutationError = unknown; + +/** + * @summary Join a hub + */ +export const useApiSocialHubsJoinCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string }, + TContext +> => { + return useMutation( + getApiSocialHubsJoinCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Removes the authenticated user from the hub's members. + * @summary Leave a hub + */ +export const apiSocialHubsLeaveCreate = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/hubs/${id}/leave/`, + method: "POST", + signal, + }); +}; + +export const getApiSocialHubsLeaveCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext +> => { + const mutationKey = ["apiSocialHubsLeaveCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string } + > = (props) => { + const { id } = props ?? {}; + + return apiSocialHubsLeaveCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsLeaveCreateMutationResult = NonNullable< + Awaited> +>; + +export type ApiSocialHubsLeaveCreateMutationError = unknown; + +/** + * @summary Leave a hub + */ +export const useApiSocialHubsLeaveCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string }, + TContext +> => { + return useMutation( + getApiSocialHubsLeaveCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Cancels a pending transfer, clearing the token and recipient. Owner or admin only. + * @summary Cancel ownership transfer + */ +export const apiSocialHubsTransferCancelCreate = ( + id: string, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/${id}/transfer/cancel/`, + method: "POST", + signal, + }); +}; + +export const getApiSocialHubsTransferCancelCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext +> => { + const mutationKey = ["apiSocialHubsTransferCancelCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string } + > = (props) => { + const { id } = props ?? {}; + + return apiSocialHubsTransferCancelCreate(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsTransferCancelCreateMutationResult = NonNullable< + Awaited> +>; + +export type ApiSocialHubsTransferCancelCreateMutationError = unknown; + +/** + * @summary Cancel ownership transfer + */ +export const useApiSocialHubsTransferCancelCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string }, + TContext +> => { + return useMutation( + getApiSocialHubsTransferCancelCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Generates a transfer token and records the intended new owner. Only the current hub owner can initiate. The recipient must call `transfer/verify` with the token to complete the transfer. + * @summary Initiate ownership transfer + */ +export const apiSocialHubsTransferInitiateCreate = ( + id: string, + transferInit: TransferInit, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/${id}/transfer/initiate/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: transferInit, + signal, + }); +}; + +export const getApiSocialHubsTransferInitiateCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: TransferInit }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: TransferInit }, + TContext +> => { + const mutationKey = ["apiSocialHubsTransferInitiateCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: TransferInit } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialHubsTransferInitiateCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsTransferInitiateCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsTransferInitiateCreateMutationBody = TransferInit; +export type ApiSocialHubsTransferInitiateCreateMutationError = unknown; + +/** + * @summary Initiate ownership transfer + */ +export const useApiSocialHubsTransferInitiateCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: TransferInit }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: TransferInit }, + TContext +> => { + return useMutation( + getApiSocialHubsTransferInitiateCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Completes the transfer when the intended new owner supplies the correct token. Must be called by the transfer recipient. + * @summary Verify ownership transfer + */ +export const apiSocialHubsTransferVerifyCreate = ( + id: string, + transferVerify: TransferVerify, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/${id}/transfer/verify/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: transferVerify, + signal, + }); +}; + +export const getApiSocialHubsTransferVerifyCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: TransferVerify }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: TransferVerify }, + TContext +> => { + const mutationKey = ["apiSocialHubsTransferVerifyCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: TransferVerify } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialHubsTransferVerifyCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsTransferVerifyCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsTransferVerifyCreateMutationBody = TransferVerify; +export type ApiSocialHubsTransferVerifyCreateMutationError = unknown; + +/** + * @summary Verify ownership transfer + */ +export const useApiSocialHubsTransferVerifyCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: TransferVerify }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: TransferVerify }, + TContext +> => { + return useMutation( + getApiSocialHubsTransferVerifyCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Returns all moderators and their permission flags for a given hub. Pass `hub` as a query param. + * @summary List hub moderators + */ +export const apiSocialHubsModeratorsList = ( + params?: ApiSocialHubsModeratorsListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/moderators/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiSocialHubsModeratorsListQueryKey = ( + params?: ApiSocialHubsModeratorsListParams, +) => { + return [`/api/social/hubs/moderators/`, ...(params ? [params] : [])] as const; +}; + +export const getApiSocialHubsModeratorsListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsModeratorsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialHubsModeratorsListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialHubsModeratorsList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialHubsModeratorsListQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsModeratorsListQueryError = unknown; + +export function useApiSocialHubsModeratorsList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiSocialHubsModeratorsListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsModeratorsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsModeratorsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsModeratorsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsModeratorsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List hub moderators + */ + +export function useApiSocialHubsModeratorsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsModeratorsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialHubsModeratorsListQueryOptions( + params, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Grants a user moderator permissions on the hub. Owner or admin only. + * @summary Add a hub moderator + */ +export const apiSocialHubsModeratorsCreate = ( + hubPermission: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/moderators/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: hubPermission, + signal, + }); +}; + +export const getApiSocialHubsModeratorsCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialHubsModeratorsCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiSocialHubsModeratorsCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsModeratorsCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsModeratorsCreateMutationBody = + NonReadonly; +export type ApiSocialHubsModeratorsCreateMutationError = unknown; + +/** + * @summary Add a hub moderator + */ +export const useApiSocialHubsModeratorsCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialHubsModeratorsCreateMutationOptions(options), + queryClient, + ); +}; +/** + * @summary Retrieve a hub moderator + */ +export const apiSocialHubsModeratorsRetrieve = ( + id: string, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/moderators/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiSocialHubsModeratorsRetrieveQueryKey = (id: string) => { + return [`/api/social/hubs/moderators/${id}/`] as const; +}; + +export const getApiSocialHubsModeratorsRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialHubsModeratorsRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialHubsModeratorsRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialHubsModeratorsRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsModeratorsRetrieveQueryError = unknown; + +export function useApiSocialHubsModeratorsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsModeratorsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsModeratorsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Retrieve a hub moderator + */ + +export function useApiSocialHubsModeratorsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialHubsModeratorsRetrieveQueryOptions( + id, + options, + ); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Replaces all permission flags for a moderator. Owner or admin only. + * @summary Replace moderator permissions + */ +export const apiSocialHubsModeratorsUpdate = ( + id: string, + hubPermission: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/moderators/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: hubPermission, + signal, + }); +}; + +export const getApiSocialHubsModeratorsUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialHubsModeratorsUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialHubsModeratorsUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsModeratorsUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsModeratorsUpdateMutationBody = + NonReadonly; +export type ApiSocialHubsModeratorsUpdateMutationError = unknown; + +/** + * @summary Replace moderator permissions + */ +export const useApiSocialHubsModeratorsUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialHubsModeratorsUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Updates one or more permission flags for a moderator. Owner or admin only. + * @summary Update moderator permissions + */ +export const apiSocialHubsModeratorsPartialUpdate = ( + id: string, + patchedHubPermission: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/moderators/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedHubPermission, + signal, + }); +}; + +export const getApiSocialHubsModeratorsPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialHubsModeratorsPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialHubsModeratorsPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsModeratorsPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsModeratorsPartialUpdateMutationBody = + NonReadonly; +export type ApiSocialHubsModeratorsPartialUpdateMutationError = unknown; + +/** + * @summary Update moderator permissions + */ +export const useApiSocialHubsModeratorsPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialHubsModeratorsPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Revokes all moderator permissions from a user. Owner or admin only. + * @summary Remove a hub moderator + */ +export const apiSocialHubsModeratorsDestroy = ( + id: string, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/moderators/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiSocialHubsModeratorsDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext +> => { + const mutationKey = ["apiSocialHubsModeratorsDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string } + > = (props) => { + const { id } = props ?? {}; + + return apiSocialHubsModeratorsDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsModeratorsDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiSocialHubsModeratorsDestroyMutationError = unknown; + +/** + * @summary Remove a hub moderator + */ +export const useApiSocialHubsModeratorsDestroy = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string }, + TContext +> => { + return useMutation( + getApiSocialHubsModeratorsDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * Returns all tags for a given hub. Pass `hub` as a query param. + * @summary List hub tags + */ +export const apiSocialHubsTagsList = ( + params?: ApiSocialHubsTagsListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/tags/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiSocialHubsTagsListQueryKey = ( + params?: ApiSocialHubsTagsListParams, +) => { + return [`/api/social/hubs/tags/`, ...(params ? [params] : [])] as const; +}; + +export const getApiSocialHubsTagsListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsTagsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialHubsTagsListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialHubsTagsList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialHubsTagsListQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsTagsListQueryError = unknown; + +export function useApiSocialHubsTagsList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiSocialHubsTagsListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsTagsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsTagsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsTagsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsTagsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List hub tags + */ + +export function useApiSocialHubsTagsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialHubsTagsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialHubsTagsListQueryOptions(params, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Adds a tag to the hub. Owner, site admin, or moderator with `managing_posts`. + * @summary Create a hub tag + */ +export const apiSocialHubsTagsCreate = ( + tags: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/tags/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: tags, + signal, + }); +}; + +export const getApiSocialHubsTagsCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialHubsTagsCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiSocialHubsTagsCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsTagsCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsTagsCreateMutationBody = NonReadonly; +export type ApiSocialHubsTagsCreateMutationError = unknown; + +/** + * @summary Create a hub tag + */ +export const useApiSocialHubsTagsCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialHubsTagsCreateMutationOptions(options), + queryClient, + ); +}; +/** + * @summary Retrieve a hub tag + */ +export const apiSocialHubsTagsRetrieve = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/hubs/tags/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiSocialHubsTagsRetrieveQueryKey = (id: string) => { + return [`/api/social/hubs/tags/${id}/`] as const; +}; + +export const getApiSocialHubsTagsRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialHubsTagsRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialHubsTagsRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialHubsTagsRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsTagsRetrieveQueryError = unknown; + +export function useApiSocialHubsTagsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsTagsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialHubsTagsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Retrieve a hub tag + */ + +export function useApiSocialHubsTagsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: string, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialHubsTagsRetrieveQueryOptions(id, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Replaces a tag on the hub. Owner, site admin, or moderator with `managing_posts`. + * @summary Replace a hub tag + */ +export const apiSocialHubsTagsUpdate = ( + id: string, + tags: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/tags/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: tags, + signal, + }); +}; + +export const getApiSocialHubsTagsUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialHubsTagsUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialHubsTagsUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsTagsUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsTagsUpdateMutationBody = NonReadonly; +export type ApiSocialHubsTagsUpdateMutationError = unknown; + +/** + * @summary Replace a hub tag + */ +export const useApiSocialHubsTagsUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialHubsTagsUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Updates a tag on the hub. Owner, site admin, or moderator with `managing_posts`. + * @summary Update a hub tag + */ +export const apiSocialHubsTagsPartialUpdate = ( + id: string, + patchedTags: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/hubs/tags/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedTags, + signal, + }); +}; + +export const getApiSocialHubsTagsPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialHubsTagsPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialHubsTagsPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsTagsPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialHubsTagsPartialUpdateMutationBody = + NonReadonly; +export type ApiSocialHubsTagsPartialUpdateMutationError = unknown; + +/** + * @summary Update a hub tag + */ +export const useApiSocialHubsTagsPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialHubsTagsPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Removes a tag from the hub. Owner, site admin, or moderator with `managing_posts`. + * @summary Delete a hub tag + */ +export const apiSocialHubsTagsDestroy = (id: string, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/hubs/tags/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiSocialHubsTagsDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext +> => { + const mutationKey = ["apiSocialHubsTagsDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: string } + > = (props) => { + const { id } = props ?? {}; + + return apiSocialHubsTagsDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialHubsTagsDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiSocialHubsTagsDestroyMutationError = unknown; + +/** + * @summary Delete a hub tag + */ +export const useApiSocialHubsTagsDestroy = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: string }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: string }, + TContext +> => { + return useMutation( + getApiSocialHubsTagsDestroyMutationOptions(options), + queryClient, + ); +}; diff --git a/frontend/src/api/generated/private/models/additionalParam.ts b/frontend/src/api/generated/private/models/additionalParam.ts index e2a84cb..1f749ff 100644 --- a/frontend/src/api/generated/private/models/additionalParam.ts +++ b/frontend/src/api/generated/private/models/additionalParam.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/apiAccountUsersListParams.ts b/frontend/src/api/generated/private/models/apiAccountUsersListParams.ts index 062ace0..8328544 100644 --- a/frontend/src/api/generated/private/models/apiAccountUsersListParams.ts +++ b/frontend/src/api/generated/private/models/apiAccountUsersListParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/apiAdvertisementContactMessagesListParams.ts b/frontend/src/api/generated/private/models/apiAdvertisementContactMessagesListParams.ts index 4b5710b..4f29a96 100644 --- a/frontend/src/api/generated/private/models/apiAdvertisementContactMessagesListParams.ts +++ b/frontend/src/api/generated/private/models/apiAdvertisementContactMessagesListParams.ts @@ -1,12 +1,20 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ export type ApiAdvertisementContactMessagesListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; /** * A page number within the paginated result set. */ page?: number; + /** + * A search term. + */ + search?: string; }; diff --git a/frontend/src/api/generated/private/models/apiCommerceAdminWishlistsListParams.ts b/frontend/src/api/generated/private/models/apiCommerceAdminWishlistsListParams.ts new file mode 100644 index 0000000..4371310 --- /dev/null +++ b/frontend/src/api/generated/private/models/apiCommerceAdminWishlistsListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiCommerceAdminWishlistsListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiCommerceRefundsListParams.ts b/frontend/src/api/generated/private/models/apiCommerceRefundsListParams.ts index 0eb79d0..ee51a8c 100644 --- a/frontend/src/api/generated/private/models/apiCommerceRefundsListParams.ts +++ b/frontend/src/api/generated/private/models/apiCommerceRefundsListParams.ts @@ -1,12 +1,20 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ export type ApiCommerceRefundsListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; /** * A page number within the paginated result set. */ page?: number; + /** + * A search term. + */ + search?: string; }; diff --git a/frontend/src/api/generated/private/models/apiCommerceReviewsListParams.ts b/frontend/src/api/generated/private/models/apiCommerceReviewsListParams.ts new file mode 100644 index 0000000..aa89faa --- /dev/null +++ b/frontend/src/api/generated/private/models/apiCommerceReviewsListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiCommerceReviewsListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiConfigurationAdminShopConfigurationListParams.ts b/frontend/src/api/generated/private/models/apiConfigurationAdminShopConfigurationListParams.ts deleted file mode 100644 index 16711dd..0000000 --- a/frontend/src/api/generated/private/models/apiConfigurationAdminShopConfigurationListParams.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -export type ApiConfigurationAdminShopConfigurationListParams = { - /** - * A page number within the paginated result set. - */ - page?: number; -}; diff --git a/frontend/src/api/generated/private/models/apiConfigurationShopConfigurationListParams.ts b/frontend/src/api/generated/private/models/apiConfigurationShopConfigurationListParams.ts new file mode 100644 index 0000000..5de8f2f --- /dev/null +++ b/frontend/src/api/generated/private/models/apiConfigurationShopConfigurationListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiConfigurationShopConfigurationListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiConfigurationVatRatesListParams.ts b/frontend/src/api/generated/private/models/apiConfigurationVatRatesListParams.ts new file mode 100644 index 0000000..9f576d0 --- /dev/null +++ b/frontend/src/api/generated/private/models/apiConfigurationVatRatesListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiConfigurationVatRatesListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiDeutschepostBulkOrdersListParams.ts b/frontend/src/api/generated/private/models/apiDeutschepostBulkOrdersListParams.ts new file mode 100644 index 0000000..f537c37 --- /dev/null +++ b/frontend/src/api/generated/private/models/apiDeutschepostBulkOrdersListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiDeutschepostBulkOrdersListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiDeutschepostOrdersListParams.ts b/frontend/src/api/generated/private/models/apiDeutschepostOrdersListParams.ts new file mode 100644 index 0000000..f48d183 --- /dev/null +++ b/frontend/src/api/generated/private/models/apiDeutschepostOrdersListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiDeutschepostOrdersListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiSchemaRetrieve200Four.ts b/frontend/src/api/generated/private/models/apiSchemaRetrieve200Four.ts index e7149a9..ef4ebef 100644 --- a/frontend/src/api/generated/private/models/apiSchemaRetrieve200Four.ts +++ b/frontend/src/api/generated/private/models/apiSchemaRetrieve200Four.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/apiSchemaRetrieve200One.ts b/frontend/src/api/generated/private/models/apiSchemaRetrieve200One.ts index 0649b79..5d24d4c 100644 --- a/frontend/src/api/generated/private/models/apiSchemaRetrieve200One.ts +++ b/frontend/src/api/generated/private/models/apiSchemaRetrieve200One.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/apiSchemaRetrieve200Three.ts b/frontend/src/api/generated/private/models/apiSchemaRetrieve200Three.ts index b322b1e..05e6e56 100644 --- a/frontend/src/api/generated/private/models/apiSchemaRetrieve200Three.ts +++ b/frontend/src/api/generated/private/models/apiSchemaRetrieve200Three.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/apiSchemaRetrieve200Two.ts b/frontend/src/api/generated/private/models/apiSchemaRetrieve200Two.ts index fba4406..768b02b 100644 --- a/frontend/src/api/generated/private/models/apiSchemaRetrieve200Two.ts +++ b/frontend/src/api/generated/private/models/apiSchemaRetrieve200Two.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/apiSchemaRetrieveFormat.ts b/frontend/src/api/generated/private/models/apiSchemaRetrieveFormat.ts index 9213400..95e80f1 100644 --- a/frontend/src/api/generated/private/models/apiSchemaRetrieveFormat.ts +++ b/frontend/src/api/generated/private/models/apiSchemaRetrieveFormat.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -7,7 +7,6 @@ export type ApiSchemaRetrieveFormat = (typeof ApiSchemaRetrieveFormat)[keyof typeof ApiSchemaRetrieveFormat]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const ApiSchemaRetrieveFormat = { json: "json", yaml: "yaml", diff --git a/frontend/src/api/generated/private/models/apiSchemaRetrieveLang.ts b/frontend/src/api/generated/private/models/apiSchemaRetrieveLang.ts index 3607bc5..e2d0586 100644 --- a/frontend/src/api/generated/private/models/apiSchemaRetrieveLang.ts +++ b/frontend/src/api/generated/private/models/apiSchemaRetrieveLang.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -7,7 +7,6 @@ export type ApiSchemaRetrieveLang = (typeof ApiSchemaRetrieveLang)[keyof typeof ApiSchemaRetrieveLang]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const ApiSchemaRetrieveLang = { af: "af", ar: "ar", diff --git a/frontend/src/api/generated/private/models/apiSchemaRetrieveParams.ts b/frontend/src/api/generated/private/models/apiSchemaRetrieveParams.ts index 729826f..2f7279a 100644 --- a/frontend/src/api/generated/private/models/apiSchemaRetrieveParams.ts +++ b/frontend/src/api/generated/private/models/apiSchemaRetrieveParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/apiSocialChatsListParams.ts b/frontend/src/api/generated/private/models/apiSocialChatsListParams.ts new file mode 100644 index 0000000..2119b8c --- /dev/null +++ b/frontend/src/api/generated/private/models/apiSocialChatsListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiSocialChatsListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiSocialHubsListParams.ts b/frontend/src/api/generated/private/models/apiSocialHubsListParams.ts new file mode 100644 index 0000000..7cbf617 --- /dev/null +++ b/frontend/src/api/generated/private/models/apiSocialHubsListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiSocialHubsListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiSocialHubsModeratorsListParams.ts b/frontend/src/api/generated/private/models/apiSocialHubsModeratorsListParams.ts new file mode 100644 index 0000000..5f7d52b --- /dev/null +++ b/frontend/src/api/generated/private/models/apiSocialHubsModeratorsListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiSocialHubsModeratorsListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiSocialHubsTagsListParams.ts b/frontend/src/api/generated/private/models/apiSocialHubsTagsListParams.ts new file mode 100644 index 0000000..657d32c --- /dev/null +++ b/frontend/src/api/generated/private/models/apiSocialHubsTagsListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiSocialHubsTagsListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiSocialMessagesListParams.ts b/frontend/src/api/generated/private/models/apiSocialMessagesListParams.ts new file mode 100644 index 0000000..148fc21 --- /dev/null +++ b/frontend/src/api/generated/private/models/apiSocialMessagesListParams.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiSocialMessagesListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiSocialPostsListParams.ts b/frontend/src/api/generated/private/models/apiSocialPostsListParams.ts new file mode 100644 index 0000000..c42a7ed --- /dev/null +++ b/frontend/src/api/generated/private/models/apiSocialPostsListParams.ts @@ -0,0 +1,23 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export type ApiSocialPostsListParams = { + author?: number; + hub?: number; + /** + * Which field to use when ordering the results. + */ + ordering?: string; + /** + * A page number within the paginated result set. + */ + page?: number; + reply_to?: number; + /** + * A search term. + */ + search?: string; +}; diff --git a/frontend/src/api/generated/private/models/apiZasilkovnaShipmentsListParams.ts b/frontend/src/api/generated/private/models/apiZasilkovnaShipmentsListParams.ts index b9773e6..9d26373 100644 --- a/frontend/src/api/generated/private/models/apiZasilkovnaShipmentsListParams.ts +++ b/frontend/src/api/generated/private/models/apiZasilkovnaShipmentsListParams.ts @@ -1,12 +1,20 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ export type ApiZasilkovnaShipmentsListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; /** * A page number within the paginated result set. */ page?: number; + /** + * A search term. + */ + search?: string; }; diff --git a/frontend/src/api/generated/private/models/callback.ts b/frontend/src/api/generated/private/models/callback.ts index bbb23e9..cba0b37 100644 --- a/frontend/src/api/generated/private/models/callback.ts +++ b/frontend/src/api/generated/private/models/callback.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/carrierRead.ts b/frontend/src/api/generated/private/models/carrierRead.ts index bd4227f..6ee1d79 100644 --- a/frontend/src/api/generated/private/models/carrierRead.ts +++ b/frontend/src/api/generated/private/models/carrierRead.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ import type { ShippingMethodEnum } from "./shippingMethodEnum"; -import type { StateFdaEnum } from "./stateFdaEnum"; +import type { State1f6Enum } from "./state1f6Enum"; import type { ZasilkovnaPacketRead } from "./zasilkovnaPacketRead"; export interface CarrierRead { readonly shipping_method: ShippingMethodEnum; - readonly state: StateFdaEnum; + readonly state: State1f6Enum; readonly zasilkovna: readonly ZasilkovnaPacketRead[]; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly shipping_price: string; diff --git a/frontend/src/api/generated/private/models/cart.ts b/frontend/src/api/generated/private/models/cart.ts new file mode 100644 index 0000000..1d29a4f --- /dev/null +++ b/frontend/src/api/generated/private/models/cart.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { CartItem } from "./cartItem"; + +export interface Cart { + readonly id: number; + /** @nullable */ + readonly user: number | null; + readonly items: readonly CartItem[]; + readonly total: string; + readonly items_count: string; + readonly created_at: Date; + readonly updated_at: Date; +} diff --git a/frontend/src/api/generated/private/models/cartItem.ts b/frontend/src/api/generated/private/models/cartItem.ts new file mode 100644 index 0000000..5628399 --- /dev/null +++ b/frontend/src/api/generated/private/models/cartItem.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface CartItem { + readonly id: number; + product: number; + readonly product_name: string; + /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + readonly product_price: string; + /** + * @minimum 0 + * @maximum 9223372036854776000 + */ + quantity?: number; + readonly subtotal: string; + readonly added_at: Date; +} diff --git a/frontend/src/api/generated/private/models/category.ts b/frontend/src/api/generated/private/models/category.ts index a397395..6b1b2f4 100644 --- a/frontend/src/api/generated/private/models/category.ts +++ b/frontend/src/api/generated/private/models/category.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/chat.ts b/frontend/src/api/generated/private/models/chat.ts new file mode 100644 index 0000000..62dda8d --- /dev/null +++ b/frontend/src/api/generated/private/models/chat.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ChatTypeEnum } from "./chatTypeEnum"; + +export interface Chat { + readonly id: number; + chat_type?: ChatTypeEnum; + /** @nullable */ + readonly owner: number | null; + /** @maxLength 255 */ + name?: string; + /** @nullable */ + icon?: string | null; + /** @nullable */ + banner?: string | null; + members?: number[]; + moderators?: number[]; + /** @nullable */ + hub?: number | null; + readonly created_at: Date; + readonly updated_at: Date; +} diff --git a/frontend/src/api/generated/private/models/chatMember.ts b/frontend/src/api/generated/private/models/chatMember.ts new file mode 100644 index 0000000..aaa4538 --- /dev/null +++ b/frontend/src/api/generated/private/models/chatMember.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface ChatMember { + /** PK of the user to add or remove. */ + user_id: number; +} diff --git a/frontend/src/api/generated/private/models/chatTypeEnum.ts b/frontend/src/api/generated/private/models/chatTypeEnum.ts new file mode 100644 index 0000000..73e0a22 --- /dev/null +++ b/frontend/src/api/generated/private/models/chatTypeEnum.ts @@ -0,0 +1,16 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `DM` - Direct Message + * `GROUP` - Group + */ +export type ChatTypeEnum = (typeof ChatTypeEnum)[keyof typeof ChatTypeEnum]; + +export const ChatTypeEnum = { + DM: "DM", + GROUP: "GROUP", +} as const; diff --git a/frontend/src/api/generated/private/models/contact.ts b/frontend/src/api/generated/private/models/contact.ts index 016c510..c7bbd83 100644 --- a/frontend/src/api/generated/private/models/contact.ts +++ b/frontend/src/api/generated/private/models/contact.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/contactMe.ts b/frontend/src/api/generated/private/models/contactMe.ts index 8379b01..7655812 100644 --- a/frontend/src/api/generated/private/models/contactMe.ts +++ b/frontend/src/api/generated/private/models/contactMe.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/currencyEnum.ts b/frontend/src/api/generated/private/models/currencyEnum.ts index d0abaf1..e083db4 100644 --- a/frontend/src/api/generated/private/models/currencyEnum.ts +++ b/frontend/src/api/generated/private/models/currencyEnum.ts @@ -1,17 +1,32 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ /** - * * `CZK` - cz#Czech Koruna - * `EUR` - cz#Euro + * * `EUR` - Euro + * `CZK` - Czech Koruna + * `USD` - US Dollar + * `GBP` - British Pound + * `PLN` - Polish Zloty + * `HUF` - Hungarian Forint + * `SEK` - Swedish Krona + * `DKK` - Danish Krone + * `NOK` - Norwegian Krone + * `CHF` - Swiss Franc */ export type CurrencyEnum = (typeof CurrencyEnum)[keyof typeof CurrencyEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const CurrencyEnum = { - CZK: "CZK", EUR: "EUR", + CZK: "CZK", + USD: "USD", + GBP: "GBP", + PLN: "PLN", + HUF: "HUF", + SEK: "SEK", + DKK: "DKK", + NOK: "NOK", + CHF: "CHF", } as const; diff --git a/frontend/src/api/generated/private/models/customTokenObtainPair.ts b/frontend/src/api/generated/private/models/customTokenObtainPair.ts index 95a29ed..ba09059 100644 --- a/frontend/src/api/generated/private/models/customTokenObtainPair.ts +++ b/frontend/src/api/generated/private/models/customTokenObtainPair.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/customUser.ts b/frontend/src/api/generated/private/models/customUser.ts index f48e6a2..33d34d2 100644 --- a/frontend/src/api/generated/private/models/customUser.ts +++ b/frontend/src/api/generated/private/models/customUser.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/deutschePostBulkOrder.ts b/frontend/src/api/generated/private/models/deutschePostBulkOrder.ts new file mode 100644 index 0000000..d3008f2 --- /dev/null +++ b/frontend/src/api/generated/private/models/deutschePostBulkOrder.ts @@ -0,0 +1,47 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostBulkOrderStatusEnum } from "./deutschePostBulkOrderStatusEnum"; + +export interface DeutschePostBulkOrder { + readonly id: number; + readonly created_at: Date; + status?: DeutschePostBulkOrderStatusEnum; + readonly status_display: string; + /** + * Deutsche Post bulk order ID from API + * @nullable + */ + readonly bulk_order_id: string | null; + /** + * MIXED_BAG, etc. + * @maxLength 20 + */ + bulk_order_type?: string; + /** @maxLength 255 */ + description?: string; + readonly deutschepost_orders: readonly number[]; + /** List of DeutschePostOrder IDs to include in bulk order */ + deutschepost_order_ids: number[]; + readonly orders_count: string; + readonly total_weight_kg: string; + readonly tracking_url: string; + readonly status_url: string; + readonly can_be_cancelled: string; + /** + * Bulk shipment label PDF + * @nullable + */ + readonly bulk_label_pdf: string | null; + /** + * Bulk shipment paperwork PDF + * @nullable + */ + readonly paperwork_pdf: string | null; + /** Raw API response data */ + readonly metadata: unknown; + /** Last API error message */ + readonly last_error: string; +} diff --git a/frontend/src/api/generated/private/models/deutschePostBulkOrderStatusEnum.ts b/frontend/src/api/generated/private/models/deutschePostBulkOrderStatusEnum.ts new file mode 100644 index 0000000..2fef2c6 --- /dev/null +++ b/frontend/src/api/generated/private/models/deutschePostBulkOrderStatusEnum.ts @@ -0,0 +1,21 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `CREATED` - Vytvořeno + * `PROCESSING` - Zpracovává se + * `COMPLETED` - Dokončeno + * `ERROR` - Chyba + */ +export type DeutschePostBulkOrderStatusEnum = + (typeof DeutschePostBulkOrderStatusEnum)[keyof typeof DeutschePostBulkOrderStatusEnum]; + +export const DeutschePostBulkOrderStatusEnum = { + CREATED: "CREATED", + PROCESSING: "PROCESSING", + COMPLETED: "COMPLETED", + ERROR: "ERROR", +} as const; diff --git a/frontend/src/api/generated/private/models/deutschePostOrder.ts b/frontend/src/api/generated/private/models/deutschePostOrder.ts new file mode 100644 index 0000000..1217134 --- /dev/null +++ b/frontend/src/api/generated/private/models/deutschePostOrder.ts @@ -0,0 +1,113 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostOrderStateEnum } from "./deutschePostOrderStateEnum"; +import type { LabelSizeEnum } from "./labelSizeEnum"; + +export interface DeutschePostOrder { + readonly id: number; + readonly created_at: Date; + state?: DeutschePostOrderStateEnum; + readonly state_display: string; + /** + * Deutsche Post order ID from API + * @nullable + */ + readonly order_id: string | null; + /** + * @maxLength 20 + * @nullable + */ + customer_ekp?: string | null; + /** @maxLength 200 */ + recipient_name: string; + /** @maxLength 20 */ + recipient_phone?: string; + /** @maxLength 254 */ + recipient_email?: string; + /** @maxLength 255 */ + address_line1: string; + /** @maxLength 255 */ + address_line2?: string; + /** @maxLength 255 */ + address_line3?: string; + /** @maxLength 100 */ + city: string; + /** + * State/Province for shipping address + * @maxLength 100 + */ + address_state?: string; + /** @maxLength 20 */ + postal_code: string; + /** + * ISO 2-letter country code + * @maxLength 2 + */ + destination_country: string; + /** + * Deutsche Post product type (GPT, GMP, etc.) + * @maxLength 10 + */ + product_type?: string; + /** + * PRIORITY, STANDARD + * @maxLength 20 + */ + service_level?: string; + /** + * Weight in grams + * @minimum 0 + * @maximum 9223372036854776000 + */ + shipment_gross_weight: number; + /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + shipment_amount?: string; + /** @maxLength 3 */ + shipment_currency?: string; + /** + * IOSS number or sender tax ID + * @maxLength 50 + */ + sender_tax_id?: string; + /** + * IOSS number or importer tax ID + * @maxLength 50 + */ + importer_tax_id?: string; + return_item_wanted?: boolean; + /** + * Customer reference + * @maxLength 100 + */ + cust_ref?: string; + /** + * Air Waybill number + * @nullable + */ + readonly awb_number: string | null; + /** + * Item barcode + * @nullable + */ + readonly barcode: string | null; + readonly tracking_url: string; + /** + * Shipping label PDF + * @nullable + */ + readonly label_pdf: string | null; + label_size?: LabelSizeEnum; + readonly label_size_display: string; + /** Raw API response data */ + readonly metadata: unknown; + /** Last API error message */ + readonly last_error: string; + readonly estimated_delivery_days: string; + readonly shipping_cost_estimate: string; + readonly can_be_finalized: string; + readonly can_be_cancelled: string; + readonly is_trackable: string; +} diff --git a/frontend/src/api/generated/private/models/deutschePostOrderStateEnum.ts b/frontend/src/api/generated/private/models/deutschePostOrderStateEnum.ts new file mode 100644 index 0000000..2302d0b --- /dev/null +++ b/frontend/src/api/generated/private/models/deutschePostOrderStateEnum.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `CREATED` - Vytvořeno + * `FINALIZED` - Dokončeno + * `SHIPPED` - Odesláno + * `DELIVERED` - Doručeno + * `CANCELLED` - Zrušeno + * `ERROR` - Chyba + */ +export type DeutschePostOrderStateEnum = + (typeof DeutschePostOrderStateEnum)[keyof typeof DeutschePostOrderStateEnum]; + +export const DeutschePostOrderStateEnum = { + CREATED: "CREATED", + FINALIZED: "FINALIZED", + SHIPPED: "SHIPPED", + DELIVERED: "DELIVERED", + CANCELLED: "CANCELLED", + ERROR: "ERROR", +} as const; diff --git a/frontend/src/api/generated/private/models/deutschePostTracking.ts b/frontend/src/api/generated/private/models/deutschePostTracking.ts new file mode 100644 index 0000000..7d73f53 --- /dev/null +++ b/frontend/src/api/generated/private/models/deutschePostTracking.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * Serializer for tracking information response. + */ +export interface DeutschePostTracking { + readonly order_id: string; + readonly awb_number: string; + readonly barcode: string; + readonly tracking_url: string; + readonly state: string; + readonly last_updated: Date; + readonly tracking_events: unknown; +} diff --git a/frontend/src/api/generated/private/models/discountCode.ts b/frontend/src/api/generated/private/models/discountCode.ts index 298445a..72ab4b1 100644 --- a/frontend/src/api/generated/private/models/discountCode.ts +++ b/frontend/src/api/generated/private/models/discountCode.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -18,7 +18,7 @@ export interface DiscountCode { */ percent?: number | null; /** - * Fixní sleva v CZK + * Fixed discount amount in site currency * @nullable * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ diff --git a/frontend/src/api/generated/private/models/downloadErrorResponse.ts b/frontend/src/api/generated/private/models/downloadErrorResponse.ts index 8724fdb..a594850 100644 --- a/frontend/src/api/generated/private/models/downloadErrorResponse.ts +++ b/frontend/src/api/generated/private/models/downloadErrorResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/downloadRequest.ts b/frontend/src/api/generated/private/models/downloadRequest.ts index 72d0110..ac37487 100644 --- a/frontend/src/api/generated/private/models/downloadRequest.ts +++ b/frontend/src/api/generated/private/models/downloadRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/downloaderStats.ts b/frontend/src/api/generated/private/models/downloaderStats.ts index 28a7e0c..d478131 100644 --- a/frontend/src/api/generated/private/models/downloaderStats.ts +++ b/frontend/src/api/generated/private/models/downloaderStats.ts @@ -1,19 +1,36 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ +import type { PlatformCount } from "./platformCount"; +import type { QualityCount } from "./qualityCount"; +import type { TimeseriesPoint } from "./timeseriesPoint"; +import type { TopUrl } from "./topUrl"; export interface DownloaderStats { total_downloads: number; + successful_downloads: number; + failed_downloads: number; + /** Percentage 0-100 */ + success_rate: number; /** @nullable */ avg_length_of_media: number | null; /** @nullable */ - avg_file_size: number | null; - /** @nullable */ total_length_of_media: number | null; /** @nullable */ + avg_file_size: number | null; + /** @nullable */ total_file_size: number | null; /** @nullable */ + avg_processing_time: number | null; + /** @nullable */ most_common_format: string | null; + audio_only_count: number; + video_count: number; + downloads_by_platform: PlatformCount[]; + downloads_by_quality: QualityCount[]; + most_downloaded_urls: TopUrl[]; + downloads_per_day: TimeseriesPoint[]; + downloads_per_hour: TimeseriesPoint[]; } diff --git a/frontend/src/api/generated/private/models/errorResponse.ts b/frontend/src/api/generated/private/models/errorResponse.ts index 2647109..5ebe265 100644 --- a/frontend/src/api/generated/private/models/errorResponse.ts +++ b/frontend/src/api/generated/private/models/errorResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/gopayCreatePayment201.ts b/frontend/src/api/generated/private/models/gopayCreatePayment201.ts index ab4c759..0a02a4e 100644 --- a/frontend/src/api/generated/private/models/gopayCreatePayment201.ts +++ b/frontend/src/api/generated/private/models/gopayCreatePayment201.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/gopayGetStatus200.ts b/frontend/src/api/generated/private/models/gopayGetStatus200.ts index bd24e17..e4c0292 100644 --- a/frontend/src/api/generated/private/models/gopayGetStatus200.ts +++ b/frontend/src/api/generated/private/models/gopayGetStatus200.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/gopayRefundPayment200.ts b/frontend/src/api/generated/private/models/gopayRefundPayment200.ts index 044c1ef..e00ccba 100644 --- a/frontend/src/api/generated/private/models/gopayRefundPayment200.ts +++ b/frontend/src/api/generated/private/models/gopayRefundPayment200.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/hub.ts b/frontend/src/api/generated/private/models/hub.ts new file mode 100644 index 0000000..7b13b3f --- /dev/null +++ b/frontend/src/api/generated/private/models/hub.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { HubPermission } from "./hubPermission"; +import type { Tags } from "./tags"; + +export interface Hub { + readonly id: number; + /** @maxLength 255 */ + name: string; + /** @nullable */ + description?: string | null; + /** @nullable */ + readonly owner: number | null; + /** @nullable */ + icon?: string | null; + /** @nullable */ + banner?: string | null; + members?: number[]; + is_public?: boolean; + readonly tags: readonly Tags[]; + readonly moderators: readonly HubPermission[]; +} diff --git a/frontend/src/api/generated/private/models/hubPermission.ts b/frontend/src/api/generated/private/models/hubPermission.ts new file mode 100644 index 0000000..a24144b --- /dev/null +++ b/frontend/src/api/generated/private/models/hubPermission.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface HubPermission { + readonly id: number; + user: number; + changing_name?: boolean; + changing_description?: boolean; + changing_icon?: boolean; + changing_banner?: boolean; + managing_members?: boolean; + managing_posts?: boolean; + managing_chats?: boolean; +} diff --git a/frontend/src/api/generated/private/models/index.ts b/frontend/src/api/generated/private/models/index.ts index 42a4d9d..1aa119a 100644 --- a/frontend/src/api/generated/private/models/index.ts +++ b/frontend/src/api/generated/private/models/index.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -7,8 +7,13 @@ export * from "./additionalParam"; export * from "./apiAccountUsersListParams"; export * from "./apiAdvertisementContactMessagesListParams"; +export * from "./apiCommerceAdminWishlistsListParams"; export * from "./apiCommerceRefundsListParams"; -export * from "./apiConfigurationAdminShopConfigurationListParams"; +export * from "./apiCommerceReviewsListParams"; +export * from "./apiConfigurationShopConfigurationListParams"; +export * from "./apiConfigurationVatRatesListParams"; +export * from "./apiDeutschepostBulkOrdersListParams"; +export * from "./apiDeutschepostOrdersListParams"; export * from "./apiSchemaRetrieve200Four"; export * from "./apiSchemaRetrieve200One"; export * from "./apiSchemaRetrieve200Three"; @@ -16,24 +21,48 @@ export * from "./apiSchemaRetrieve200Two"; export * from "./apiSchemaRetrieveFormat"; export * from "./apiSchemaRetrieveLang"; export * from "./apiSchemaRetrieveParams"; +export * from "./apiSocialHubsListParams"; +export * from "./apiSocialHubsModeratorsListParams"; +export * from "./apiSocialHubsTagsListParams"; +export * from "./apiSocialChatsListParams"; +export * from "./apiSocialMessagesListParams"; +export * from "./apiSocialPostsListParams"; export * from "./apiZasilkovnaShipmentsListParams"; export * from "./callback"; export * from "./carrierRead"; +export * from "./cart"; +export * from "./cartItem"; export * from "./category"; export * from "./contact"; export * from "./contactMe"; export * from "./currencyEnum"; export * from "./customTokenObtainPair"; export * from "./customUser"; +export * from "./deutschePostBulkOrder"; +export * from "./deutschePostBulkOrderStatusEnum"; +export * from "./deutschePostOrder"; +export * from "./deutschePostOrderStateEnum"; +export * from "./deutschePostTracking"; export * from "./discountCode"; export * from "./downloadErrorResponse"; -export * from "./downloadRequest"; export * from "./downloaderStats"; +export * from "./downloadRequest"; export * from "./errorResponse"; export * from "./gopayCreatePayment201"; export * from "./gopayGetStatus200"; export * from "./gopayRefundPayment200"; +export * from "./hub"; +export * from "./hubPermission"; +export * from "./chat"; +export * from "./chatMember"; +export * from "./chatTypeEnum"; export * from "./item"; +export * from "./labelSizeEnum"; +export * from "./mediaTypeEnum"; +export * from "./message"; +export * from "./messageFile"; +export * from "./messageReaction"; +export * from "./messageSend"; export * from "./orderCarrier"; export * from "./orderCreate"; export * from "./orderItemCreate"; @@ -43,52 +72,83 @@ export * from "./orderRead"; export * from "./paginatedCategoryList"; export * from "./paginatedContactMeList"; export * from "./paginatedCustomUserList"; +export * from "./paginatedDeutschePostBulkOrderList"; +export * from "./paginatedDeutschePostOrderList"; export * from "./paginatedDiscountCodeList"; +export * from "./paginatedHubList"; +export * from "./paginatedHubPermissionList"; +export * from "./paginatedChatList"; +export * from "./paginatedMessageList"; export * from "./paginatedOrderReadList"; +export * from "./paginatedPostList"; export * from "./paginatedProductImageList"; export * from "./paginatedProductList"; export * from "./paginatedRefundList"; -export * from "./paginatedSiteConfigurationAdminList"; -export * from "./paginatedSiteConfigurationPublicList"; +export * from "./paginatedReviewSerializerPublicList"; +export * from "./paginatedSiteConfigurationList"; +export * from "./paginatedTagsList"; +export * from "./paginatedVATRateList"; +export * from "./paginatedWishlistList"; export * from "./paginatedZasilkovnaShipmentList"; export * from "./passwordResetConfirm"; export * from "./passwordResetRequest"; +export * from "./patchedCart"; export * from "./patchedCategory"; export * from "./patchedContactMe"; export * from "./patchedCustomUser"; +export * from "./patchedDeutschePostOrder"; export * from "./patchedDiscountCode"; +export * from "./patchedHub"; +export * from "./patchedHubPermission"; +export * from "./patchedChat"; +export * from "./patchedMessage"; export * from "./patchedOrderRead"; +export * from "./patchedPost"; export * from "./patchedProduct"; export * from "./patchedProductImage"; export * from "./patchedRefund"; -export * from "./patchedSiteConfigurationAdmin"; -export * from "./patchedSiteConfigurationAdminOpeningHours"; +export * from "./patchedReviewSerializerPublic"; +export * from "./patchedSiteConfiguration"; +export * from "./patchedTags"; +export * from "./patchedVATRate"; +export * from "./patchedWishlist"; export * from "./payer"; export * from "./payment"; export * from "./paymentBody"; export * from "./paymentCreate"; export * from "./paymentMethodEnum"; export * from "./paymentRead"; +export * from "./platformCount"; +export * from "./post"; +export * from "./postContent"; +export * from "./postVote"; export * from "./product"; export * from "./productImage"; export * from "./productMini"; +export * from "./productMiniForWishlist"; +export * from "./qualityCount"; export * from "./reasonChoiceEnum"; export * from "./refund"; +export * from "./reviewSerializerPublic"; export * from "./roleEnum"; export * from "./shippingMethodEnum"; -export * from "./siteConfigurationAdmin"; -export * from "./siteConfigurationAdminOpeningHours"; -export * from "./siteConfigurationPublic"; -export * from "./siteConfigurationPublicOpeningHours"; -export * from "./stateE15Enum"; -export * from "./stateFdaEnum"; -export * from "./statusEnum"; +export * from "./siteConfiguration"; +export * from "./state1f6Enum"; +export * from "./stateCdfEnum"; +export * from "./statusD4fEnum"; +export * from "./tagAttach"; +export * from "./tags"; +export * from "./timeseriesPoint"; +export * from "./topUrl"; export * from "./trackingURL"; +export * from "./transferInit"; +export * from "./transferVerify"; export * from "./userRegistration"; +export * from "./vATRate"; export * from "./videoInfo"; export * from "./videoInfoResponse"; +export * from "./voteEnum"; +export * from "./wishlist"; export * from "./zasilkovnaPacket"; export * from "./zasilkovnaPacketRead"; -export * from "./zasilkovnaPacketReadReturnRouting"; -export * from "./zasilkovnaPacketReturnRouting"; export * from "./zasilkovnaShipment"; diff --git a/frontend/src/api/generated/private/models/item.ts b/frontend/src/api/generated/private/models/item.ts index c7a7c1e..dbf990c 100644 --- a/frontend/src/api/generated/private/models/item.ts +++ b/frontend/src/api/generated/private/models/item.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/labelSizeEnum.ts b/frontend/src/api/generated/private/models/labelSizeEnum.ts new file mode 100644 index 0000000..2398c6b --- /dev/null +++ b/frontend/src/api/generated/private/models/labelSizeEnum.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `A4` - A4 (210x297mm) + * `A5` - A5 (148x210mm) + * `A6` - A6 (105x148mm) + */ +export type LabelSizeEnum = (typeof LabelSizeEnum)[keyof typeof LabelSizeEnum]; + +export const LabelSizeEnum = { + A4: "A4", + A5: "A5", + A6: "A6", +} as const; diff --git a/frontend/src/api/generated/private/models/mediaTypeEnum.ts b/frontend/src/api/generated/private/models/mediaTypeEnum.ts new file mode 100644 index 0000000..66161ba --- /dev/null +++ b/frontend/src/api/generated/private/models/mediaTypeEnum.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `IMAGE` - Image + * `VIDEO` - Video + * `FILE` - File + */ +export type MediaTypeEnum = (typeof MediaTypeEnum)[keyof typeof MediaTypeEnum]; + +export const MediaTypeEnum = { + IMAGE: "IMAGE", + VIDEO: "VIDEO", + FILE: "FILE", +} as const; diff --git a/frontend/src/api/generated/private/models/message.ts b/frontend/src/api/generated/private/models/message.ts new file mode 100644 index 0000000..a8f6185 --- /dev/null +++ b/frontend/src/api/generated/private/models/message.ts @@ -0,0 +1,24 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { MessageFile } from "./messageFile"; +import type { MessageReaction } from "./messageReaction"; + +export interface Message { + readonly id: number; + readonly chat: number; + /** @nullable */ + readonly sender: number | null; + /** @nullable */ + readonly reply_to: number | null; + content?: string; + readonly is_edited: boolean; + /** @nullable */ + readonly edited_at: Date | null; + readonly created_at: Date; + readonly updated_at: Date; + readonly media_files: readonly MessageFile[]; + readonly reactions: readonly MessageReaction[]; +} diff --git a/frontend/src/api/generated/private/models/messageFile.ts b/frontend/src/api/generated/private/models/messageFile.ts new file mode 100644 index 0000000..89dae48 --- /dev/null +++ b/frontend/src/api/generated/private/models/messageFile.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { MediaTypeEnum } from "./mediaTypeEnum"; + +export interface MessageFile { + readonly id: number; + file: string; + media_type?: MediaTypeEnum; + readonly uploaded_at: Date; +} diff --git a/frontend/src/api/generated/private/models/messageReaction.ts b/frontend/src/api/generated/private/models/messageReaction.ts new file mode 100644 index 0000000..dedabeb --- /dev/null +++ b/frontend/src/api/generated/private/models/messageReaction.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface MessageReaction { + readonly id: number; + readonly user: number; + /** @maxLength 10 */ + emoji: string; + readonly created_at: Date; +} diff --git a/frontend/src/api/generated/private/models/messageSend.ts b/frontend/src/api/generated/private/models/messageSend.ts new file mode 100644 index 0000000..6c4d750 --- /dev/null +++ b/frontend/src/api/generated/private/models/messageSend.ts @@ -0,0 +1,16 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * Used for the HTTP send endpoint (text + optional files). + */ +export interface MessageSend { + chat: number; + content?: string; + /** @nullable */ + reply_to?: number | null; + files?: string[]; +} diff --git a/frontend/src/api/generated/private/models/orderCarrier.ts b/frontend/src/api/generated/private/models/orderCarrier.ts index 2ae43b4..0a45a2a 100644 --- a/frontend/src/api/generated/private/models/orderCarrier.ts +++ b/frontend/src/api/generated/private/models/orderCarrier.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ import type { ShippingMethodEnum } from "./shippingMethodEnum"; -import type { StateFdaEnum } from "./stateFdaEnum"; +import type { State1f6Enum } from "./state1f6Enum"; import type { ZasilkovnaPacket } from "./zasilkovnaPacket"; export interface OrderCarrier { shipping_method?: ShippingMethodEnum; - readonly state: StateFdaEnum; + readonly state: State1f6Enum; readonly zasilkovna: readonly ZasilkovnaPacket[]; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly shipping_price: string; diff --git a/frontend/src/api/generated/private/models/orderCreate.ts b/frontend/src/api/generated/private/models/orderCreate.ts index acd9220..c3a182c 100644 --- a/frontend/src/api/generated/private/models/orderCreate.ts +++ b/frontend/src/api/generated/private/models/orderCreate.ts @@ -1,10 +1,10 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { OrderItemCreate } from "./orderItemCreate"; import type { OrderCarrier } from "./orderCarrier"; +import type { OrderItemCreate } from "./orderItemCreate"; import type { Payment } from "./payment"; export interface OrderCreate { diff --git a/frontend/src/api/generated/private/models/orderItemCreate.ts b/frontend/src/api/generated/private/models/orderItemCreate.ts index 5618bd6..ed4fc15 100644 --- a/frontend/src/api/generated/private/models/orderItemCreate.ts +++ b/frontend/src/api/generated/private/models/orderItemCreate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/orderItemRead.ts b/frontend/src/api/generated/private/models/orderItemRead.ts index ac483dc..765c0c9 100644 --- a/frontend/src/api/generated/private/models/orderItemRead.ts +++ b/frontend/src/api/generated/private/models/orderItemRead.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/orderMini.ts b/frontend/src/api/generated/private/models/orderMini.ts index b1f8b74..281484a 100644 --- a/frontend/src/api/generated/private/models/orderMini.ts +++ b/frontend/src/api/generated/private/models/orderMini.ts @@ -1,13 +1,13 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StatusEnum } from "./statusEnum"; +import type { StatusD4fEnum } from "./statusD4fEnum"; export interface OrderMini { readonly id: number; - readonly status: StatusEnum; + readonly status: StatusD4fEnum; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly total_price: string; readonly created_at: Date; diff --git a/frontend/src/api/generated/private/models/orderRead.ts b/frontend/src/api/generated/private/models/orderRead.ts index 4c6f2fa..8e55a98 100644 --- a/frontend/src/api/generated/private/models/orderRead.ts +++ b/frontend/src/api/generated/private/models/orderRead.ts @@ -1,18 +1,19 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StatusEnum } from "./statusEnum"; -import type { OrderItemRead } from "./orderItemRead"; import type { CarrierRead } from "./carrierRead"; +import type { OrderItemRead } from "./orderItemRead"; import type { PaymentRead } from "./paymentRead"; +import type { StatusD4fEnum } from "./statusD4fEnum"; export interface OrderRead { readonly id: number; - readonly status: StatusEnum; + readonly status: StatusD4fEnum; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly total_price: string; + /** Order currency - captured from site configuration at order creation and never changes */ readonly currency: string; /** @nullable */ readonly user: number | null; diff --git a/frontend/src/api/generated/private/models/paginatedCategoryList.ts b/frontend/src/api/generated/private/models/paginatedCategoryList.ts index 2f1b588..5157819 100644 --- a/frontend/src/api/generated/private/models/paginatedCategoryList.ts +++ b/frontend/src/api/generated/private/models/paginatedCategoryList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paginatedChatList.ts b/frontend/src/api/generated/private/models/paginatedChatList.ts new file mode 100644 index 0000000..c36f657 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedChatList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Chat } from "./chat"; + +export interface PaginatedChatList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Chat[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedContactMeList.ts b/frontend/src/api/generated/private/models/paginatedContactMeList.ts index a21a2c2..49d47e4 100644 --- a/frontend/src/api/generated/private/models/paginatedContactMeList.ts +++ b/frontend/src/api/generated/private/models/paginatedContactMeList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paginatedCustomUserList.ts b/frontend/src/api/generated/private/models/paginatedCustomUserList.ts index a48846d..154544e 100644 --- a/frontend/src/api/generated/private/models/paginatedCustomUserList.ts +++ b/frontend/src/api/generated/private/models/paginatedCustomUserList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paginatedDeutschePostBulkOrderList.ts b/frontend/src/api/generated/private/models/paginatedDeutschePostBulkOrderList.ts new file mode 100644 index 0000000..1631746 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedDeutschePostBulkOrderList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostBulkOrder } from "./deutschePostBulkOrder"; + +export interface PaginatedDeutschePostBulkOrderList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: DeutschePostBulkOrder[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedDeutschePostOrderList.ts b/frontend/src/api/generated/private/models/paginatedDeutschePostOrderList.ts new file mode 100644 index 0000000..b58e014 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedDeutschePostOrderList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostOrder } from "./deutschePostOrder"; + +export interface PaginatedDeutschePostOrderList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: DeutschePostOrder[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedDiscountCodeList.ts b/frontend/src/api/generated/private/models/paginatedDiscountCodeList.ts index 99ae666..ebcdfbf 100644 --- a/frontend/src/api/generated/private/models/paginatedDiscountCodeList.ts +++ b/frontend/src/api/generated/private/models/paginatedDiscountCodeList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paginatedHubList.ts b/frontend/src/api/generated/private/models/paginatedHubList.ts new file mode 100644 index 0000000..9111969 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedHubList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Hub } from "./hub"; + +export interface PaginatedHubList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Hub[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedHubPermissionList.ts b/frontend/src/api/generated/private/models/paginatedHubPermissionList.ts new file mode 100644 index 0000000..b65901e --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedHubPermissionList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { HubPermission } from "./hubPermission"; + +export interface PaginatedHubPermissionList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: HubPermission[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedMessageList.ts b/frontend/src/api/generated/private/models/paginatedMessageList.ts new file mode 100644 index 0000000..0aa2cb2 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedMessageList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Message } from "./message"; + +export interface PaginatedMessageList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Message[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedOrderReadList.ts b/frontend/src/api/generated/private/models/paginatedOrderReadList.ts index 0a71522..45f0dfb 100644 --- a/frontend/src/api/generated/private/models/paginatedOrderReadList.ts +++ b/frontend/src/api/generated/private/models/paginatedOrderReadList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paginatedPostList.ts b/frontend/src/api/generated/private/models/paginatedPostList.ts new file mode 100644 index 0000000..e5458e8 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedPostList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Post } from "./post"; + +export interface PaginatedPostList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Post[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedProductImageList.ts b/frontend/src/api/generated/private/models/paginatedProductImageList.ts index 9074e50..b14d444 100644 --- a/frontend/src/api/generated/private/models/paginatedProductImageList.ts +++ b/frontend/src/api/generated/private/models/paginatedProductImageList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paginatedProductList.ts b/frontend/src/api/generated/private/models/paginatedProductList.ts index 86ec08a..9e9a4e1 100644 --- a/frontend/src/api/generated/private/models/paginatedProductList.ts +++ b/frontend/src/api/generated/private/models/paginatedProductList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paginatedRefundList.ts b/frontend/src/api/generated/private/models/paginatedRefundList.ts index b76cf5e..ba3ee9b 100644 --- a/frontend/src/api/generated/private/models/paginatedRefundList.ts +++ b/frontend/src/api/generated/private/models/paginatedRefundList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paginatedReviewSerializerPublicList.ts b/frontend/src/api/generated/private/models/paginatedReviewSerializerPublicList.ts new file mode 100644 index 0000000..abcb168 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedReviewSerializerPublicList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ReviewSerializerPublic } from "./reviewSerializerPublic"; + +export interface PaginatedReviewSerializerPublicList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: ReviewSerializerPublic[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedSiteConfigurationAdminList.ts b/frontend/src/api/generated/private/models/paginatedSiteConfigurationAdminList.ts deleted file mode 100644 index 22334d9..0000000 --- a/frontend/src/api/generated/private/models/paginatedSiteConfigurationAdminList.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ -import type { SiteConfigurationAdmin } from "./siteConfigurationAdmin"; - -export interface PaginatedSiteConfigurationAdminList { - count: number; - /** @nullable */ - next?: string | null; - /** @nullable */ - previous?: string | null; - results: SiteConfigurationAdmin[]; -} diff --git a/frontend/src/api/generated/private/models/paginatedSiteConfigurationList.ts b/frontend/src/api/generated/private/models/paginatedSiteConfigurationList.ts new file mode 100644 index 0000000..8ceadf3 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedSiteConfigurationList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { SiteConfiguration } from "./siteConfiguration"; + +export interface PaginatedSiteConfigurationList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: SiteConfiguration[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedSiteConfigurationPublicList.ts b/frontend/src/api/generated/private/models/paginatedSiteConfigurationPublicList.ts deleted file mode 100644 index 1f221bb..0000000 --- a/frontend/src/api/generated/private/models/paginatedSiteConfigurationPublicList.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ -import type { SiteConfigurationPublic } from "./siteConfigurationPublic"; - -export interface PaginatedSiteConfigurationPublicList { - count: number; - /** @nullable */ - next?: string | null; - /** @nullable */ - previous?: string | null; - results: SiteConfigurationPublic[]; -} diff --git a/frontend/src/api/generated/private/models/paginatedTagsList.ts b/frontend/src/api/generated/private/models/paginatedTagsList.ts new file mode 100644 index 0000000..67b9e5c --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedTagsList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Tags } from "./tags"; + +export interface PaginatedTagsList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Tags[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedVATRateList.ts b/frontend/src/api/generated/private/models/paginatedVATRateList.ts new file mode 100644 index 0000000..4558e38 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedVATRateList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { VATRate } from "./vATRate"; + +export interface PaginatedVATRateList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: VATRate[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedWishlistList.ts b/frontend/src/api/generated/private/models/paginatedWishlistList.ts new file mode 100644 index 0000000..cc6eda3 --- /dev/null +++ b/frontend/src/api/generated/private/models/paginatedWishlistList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Wishlist } from "./wishlist"; + +export interface PaginatedWishlistList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Wishlist[]; +} diff --git a/frontend/src/api/generated/private/models/paginatedZasilkovnaShipmentList.ts b/frontend/src/api/generated/private/models/paginatedZasilkovnaShipmentList.ts index d7dc36a..bf9a74d 100644 --- a/frontend/src/api/generated/private/models/paginatedZasilkovnaShipmentList.ts +++ b/frontend/src/api/generated/private/models/paginatedZasilkovnaShipmentList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/passwordResetConfirm.ts b/frontend/src/api/generated/private/models/passwordResetConfirm.ts index 05b6555..9bfd302 100644 --- a/frontend/src/api/generated/private/models/passwordResetConfirm.ts +++ b/frontend/src/api/generated/private/models/passwordResetConfirm.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/passwordResetRequest.ts b/frontend/src/api/generated/private/models/passwordResetRequest.ts index 5a0bd8d..959f63b 100644 --- a/frontend/src/api/generated/private/models/passwordResetRequest.ts +++ b/frontend/src/api/generated/private/models/passwordResetRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/patchedCart.ts b/frontend/src/api/generated/private/models/patchedCart.ts new file mode 100644 index 0000000..38f92ba --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedCart.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { CartItem } from "./cartItem"; + +export interface PatchedCart { + readonly id?: number; + /** @nullable */ + readonly user?: number | null; + readonly items?: readonly CartItem[]; + readonly total?: string; + readonly items_count?: string; + readonly created_at?: Date; + readonly updated_at?: Date; +} diff --git a/frontend/src/api/generated/private/models/patchedCategory.ts b/frontend/src/api/generated/private/models/patchedCategory.ts index 419d2dd..4f56307 100644 --- a/frontend/src/api/generated/private/models/patchedCategory.ts +++ b/frontend/src/api/generated/private/models/patchedCategory.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/patchedChat.ts b/frontend/src/api/generated/private/models/patchedChat.ts new file mode 100644 index 0000000..8e3c89b --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedChat.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ChatTypeEnum } from "./chatTypeEnum"; + +export interface PatchedChat { + readonly id?: number; + chat_type?: ChatTypeEnum; + /** @nullable */ + readonly owner?: number | null; + /** @maxLength 255 */ + name?: string; + /** @nullable */ + icon?: string | null; + /** @nullable */ + banner?: string | null; + members?: number[]; + moderators?: number[]; + /** @nullable */ + hub?: number | null; + readonly created_at?: Date; + readonly updated_at?: Date; +} diff --git a/frontend/src/api/generated/private/models/patchedContactMe.ts b/frontend/src/api/generated/private/models/patchedContactMe.ts index c3201fd..8566aa0 100644 --- a/frontend/src/api/generated/private/models/patchedContactMe.ts +++ b/frontend/src/api/generated/private/models/patchedContactMe.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/patchedCustomUser.ts b/frontend/src/api/generated/private/models/patchedCustomUser.ts index 3078778..6e86887 100644 --- a/frontend/src/api/generated/private/models/patchedCustomUser.ts +++ b/frontend/src/api/generated/private/models/patchedCustomUser.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/patchedDeutschePostOrder.ts b/frontend/src/api/generated/private/models/patchedDeutschePostOrder.ts new file mode 100644 index 0000000..989cffb --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedDeutschePostOrder.ts @@ -0,0 +1,113 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostOrderStateEnum } from "./deutschePostOrderStateEnum"; +import type { LabelSizeEnum } from "./labelSizeEnum"; + +export interface PatchedDeutschePostOrder { + readonly id?: number; + readonly created_at?: Date; + state?: DeutschePostOrderStateEnum; + readonly state_display?: string; + /** + * Deutsche Post order ID from API + * @nullable + */ + readonly order_id?: string | null; + /** + * @maxLength 20 + * @nullable + */ + customer_ekp?: string | null; + /** @maxLength 200 */ + recipient_name?: string; + /** @maxLength 20 */ + recipient_phone?: string; + /** @maxLength 254 */ + recipient_email?: string; + /** @maxLength 255 */ + address_line1?: string; + /** @maxLength 255 */ + address_line2?: string; + /** @maxLength 255 */ + address_line3?: string; + /** @maxLength 100 */ + city?: string; + /** + * State/Province for shipping address + * @maxLength 100 + */ + address_state?: string; + /** @maxLength 20 */ + postal_code?: string; + /** + * ISO 2-letter country code + * @maxLength 2 + */ + destination_country?: string; + /** + * Deutsche Post product type (GPT, GMP, etc.) + * @maxLength 10 + */ + product_type?: string; + /** + * PRIORITY, STANDARD + * @maxLength 20 + */ + service_level?: string; + /** + * Weight in grams + * @minimum 0 + * @maximum 9223372036854776000 + */ + shipment_gross_weight?: number; + /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + shipment_amount?: string; + /** @maxLength 3 */ + shipment_currency?: string; + /** + * IOSS number or sender tax ID + * @maxLength 50 + */ + sender_tax_id?: string; + /** + * IOSS number or importer tax ID + * @maxLength 50 + */ + importer_tax_id?: string; + return_item_wanted?: boolean; + /** + * Customer reference + * @maxLength 100 + */ + cust_ref?: string; + /** + * Air Waybill number + * @nullable + */ + readonly awb_number?: string | null; + /** + * Item barcode + * @nullable + */ + readonly barcode?: string | null; + readonly tracking_url?: string; + /** + * Shipping label PDF + * @nullable + */ + readonly label_pdf?: string | null; + label_size?: LabelSizeEnum; + readonly label_size_display?: string; + /** Raw API response data */ + readonly metadata?: unknown; + /** Last API error message */ + readonly last_error?: string; + readonly estimated_delivery_days?: string; + readonly shipping_cost_estimate?: string; + readonly can_be_finalized?: string; + readonly can_be_cancelled?: string; + readonly is_trackable?: string; +} diff --git a/frontend/src/api/generated/private/models/patchedDiscountCode.ts b/frontend/src/api/generated/private/models/patchedDiscountCode.ts index 81092bb..cc30648 100644 --- a/frontend/src/api/generated/private/models/patchedDiscountCode.ts +++ b/frontend/src/api/generated/private/models/patchedDiscountCode.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -18,7 +18,7 @@ export interface PatchedDiscountCode { */ percent?: number | null; /** - * Fixní sleva v CZK + * Fixed discount amount in site currency * @nullable * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ diff --git a/frontend/src/api/generated/private/models/patchedHub.ts b/frontend/src/api/generated/private/models/patchedHub.ts new file mode 100644 index 0000000..859a9fe --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedHub.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { HubPermission } from "./hubPermission"; +import type { Tags } from "./tags"; + +export interface PatchedHub { + readonly id?: number; + /** @maxLength 255 */ + name?: string; + /** @nullable */ + description?: string | null; + /** @nullable */ + readonly owner?: number | null; + /** @nullable */ + icon?: string | null; + /** @nullable */ + banner?: string | null; + members?: number[]; + is_public?: boolean; + readonly tags?: readonly Tags[]; + readonly moderators?: readonly HubPermission[]; +} diff --git a/frontend/src/api/generated/private/models/patchedHubPermission.ts b/frontend/src/api/generated/private/models/patchedHubPermission.ts new file mode 100644 index 0000000..5ed589e --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedHubPermission.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PatchedHubPermission { + readonly id?: number; + user?: number; + changing_name?: boolean; + changing_description?: boolean; + changing_icon?: boolean; + changing_banner?: boolean; + managing_members?: boolean; + managing_posts?: boolean; + managing_chats?: boolean; +} diff --git a/frontend/src/api/generated/private/models/patchedMessage.ts b/frontend/src/api/generated/private/models/patchedMessage.ts new file mode 100644 index 0000000..2abd023 --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedMessage.ts @@ -0,0 +1,24 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { MessageFile } from "./messageFile"; +import type { MessageReaction } from "./messageReaction"; + +export interface PatchedMessage { + readonly id?: number; + readonly chat?: number; + /** @nullable */ + readonly sender?: number | null; + /** @nullable */ + readonly reply_to?: number | null; + content?: string; + readonly is_edited?: boolean; + /** @nullable */ + readonly edited_at?: Date | null; + readonly created_at?: Date; + readonly updated_at?: Date; + readonly media_files?: readonly MessageFile[]; + readonly reactions?: readonly MessageReaction[]; +} diff --git a/frontend/src/api/generated/private/models/patchedOrderRead.ts b/frontend/src/api/generated/private/models/patchedOrderRead.ts index 5b722aa..93b9317 100644 --- a/frontend/src/api/generated/private/models/patchedOrderRead.ts +++ b/frontend/src/api/generated/private/models/patchedOrderRead.ts @@ -1,18 +1,19 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StatusEnum } from "./statusEnum"; -import type { OrderItemRead } from "./orderItemRead"; import type { CarrierRead } from "./carrierRead"; +import type { OrderItemRead } from "./orderItemRead"; import type { PaymentRead } from "./paymentRead"; +import type { StatusD4fEnum } from "./statusD4fEnum"; export interface PatchedOrderRead { readonly id?: number; - readonly status?: StatusEnum; + readonly status?: StatusD4fEnum; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly total_price?: string; + /** Order currency - captured from site configuration at order creation and never changes */ readonly currency?: string; /** @nullable */ readonly user?: number | null; diff --git a/frontend/src/api/generated/private/models/patchedPost.ts b/frontend/src/api/generated/private/models/patchedPost.ts new file mode 100644 index 0000000..e61af6e --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedPost.ts @@ -0,0 +1,21 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { PostContent } from "./postContent"; +import type { Tags } from "./tags"; + +export interface PatchedPost { + readonly id?: number; + content?: string; + readonly created_at?: Date; + readonly updated_at?: Date; + readonly author?: number; + /** @nullable */ + hub?: number | null; + /** @nullable */ + reply_to?: number | null; + readonly tags?: readonly Tags[]; + readonly contents?: readonly PostContent[]; +} diff --git a/frontend/src/api/generated/private/models/patchedProduct.ts b/frontend/src/api/generated/private/models/patchedProduct.ts index 0365abd..befc283 100644 --- a/frontend/src/api/generated/private/models/patchedProduct.ts +++ b/frontend/src/api/generated/private/models/patchedProduct.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -14,7 +14,10 @@ export interface PatchedProduct { * @nullable */ code?: string | null; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + /** + * Net price (without VAT) + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ price?: string; /** * @maxLength 50 @@ -29,9 +32,15 @@ export interface PatchedProduct { is_active?: boolean; /** @nullable */ limited_to?: Date | null; + include_in_week_summary_email?: boolean; readonly created_at?: Date; readonly updated_at?: Date; category?: number; + /** + * VAT rate for this product. Leave empty to use default rate. + * @nullable + */ + vat_rate?: number | null; /** @nullable */ default_carrier?: number | null; /** Symetrické varianty produktu: pokud přidáte variantu A → B, Django automaticky přidá i variantu B → A. Všechny varianty jsou rovnocenné a zobrazí se vzájemně. */ diff --git a/frontend/src/api/generated/private/models/patchedProductImage.ts b/frontend/src/api/generated/private/models/patchedProductImage.ts index 276f2e0..fa71590 100644 --- a/frontend/src/api/generated/private/models/patchedProductImage.ts +++ b/frontend/src/api/generated/private/models/patchedProductImage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/patchedRefund.ts b/frontend/src/api/generated/private/models/patchedRefund.ts index bf8cfbc..a5e84e9 100644 --- a/frontend/src/api/generated/private/models/patchedRefund.ts +++ b/frontend/src/api/generated/private/models/patchedRefund.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/patchedReviewSerializerPublic.ts b/frontend/src/api/generated/private/models/patchedReviewSerializerPublic.ts new file mode 100644 index 0000000..f55a47d --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedReviewSerializerPublic.ts @@ -0,0 +1,19 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PatchedReviewSerializerPublic { + readonly id?: number; + /** + * @minimum 1 + * @maximum 5 + */ + rating?: number; + comment?: string; + readonly created_at?: Date; + readonly updated_at?: Date; + product?: number; + readonly user?: number; +} diff --git a/frontend/src/api/generated/private/models/patchedSiteConfigurationAdmin.ts b/frontend/src/api/generated/private/models/patchedSiteConfiguration.ts similarity index 67% rename from frontend/src/api/generated/private/models/patchedSiteConfigurationAdmin.ts rename to frontend/src/api/generated/private/models/patchedSiteConfiguration.ts index 7967712..0c52200 100644 --- a/frontend/src/api/generated/private/models/patchedSiteConfigurationAdmin.ts +++ b/frontend/src/api/generated/private/models/patchedSiteConfiguration.ts @@ -1,12 +1,14 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { PatchedSiteConfigurationAdminOpeningHours } from "./patchedSiteConfigurationAdminOpeningHours"; import type { CurrencyEnum } from "./currencyEnum"; -export interface PatchedSiteConfigurationAdmin { +/** + * Site configuration serializer - sensitive fields only for admins + */ +export interface PatchedSiteConfiguration { readonly id?: number; /** @maxLength 100 */ name?: string; @@ -26,8 +28,7 @@ export interface PatchedSiteConfigurationAdmin { contact_phone?: string | null; /** @nullable */ contact_address?: string | null; - /** @nullable */ - opening_hours?: PatchedSiteConfigurationAdminOpeningHours; + opening_hours?: unknown | null; /** * @maxLength 200 * @nullable @@ -67,6 +68,34 @@ export interface PatchedSiteConfigurationAdmin { * @nullable */ zasilkovna_api_password?: string | null; + /** + * Deutsche Post API URL (sandbox/production) + * @maxLength 255 + */ + deutschepost_api_url?: string; + /** + * Deutsche Post OAuth Client ID + * @maxLength 255 + * @nullable + */ + deutschepost_client_id?: string | null; + /** + * Deutsche Post OAuth Client Secret + * @maxLength 255 + * @nullable + */ + deutschepost_client_secret?: string | null; + /** + * Deutsche Post Customer EKP number + * @maxLength 20 + * @nullable + */ + deutschepost_customer_ekp?: string | null; + /** + * Default Deutsche Post shipping price in EUR + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ + deutschepost_shipping_price?: string; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ free_shipping_over?: string; /** Násobení kupónů v objednávce (ano/ne), pokud ne tak se použije pouze nejvyšší slevový kupón */ diff --git a/frontend/src/api/generated/private/models/patchedSiteConfigurationAdminOpeningHours.ts b/frontend/src/api/generated/private/models/patchedSiteConfigurationAdminOpeningHours.ts deleted file mode 100644 index 0e4a062..0000000 --- a/frontend/src/api/generated/private/models/patchedSiteConfigurationAdminOpeningHours.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * @nullable - */ -export type PatchedSiteConfigurationAdminOpeningHours = unknown | null; diff --git a/frontend/src/api/generated/private/models/patchedTags.ts b/frontend/src/api/generated/private/models/patchedTags.ts new file mode 100644 index 0000000..0ac2f18 --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedTags.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PatchedTags { + readonly id?: number; + /** @maxLength 50 */ + name?: string; + /** @nullable */ + description?: string | null; + /** @maxLength 7 */ + color?: string; +} diff --git a/frontend/src/api/generated/private/models/patchedVATRate.ts b/frontend/src/api/generated/private/models/patchedVATRate.ts new file mode 100644 index 0000000..ec49382 --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedVATRate.ts @@ -0,0 +1,31 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * VAT Rate serializer - admin fields only visible to admins + */ +export interface PatchedVATRate { + readonly id?: number; + /** + * E.g. 'German Standard', 'German Reduced', 'Czech Standard' + * @maxLength 100 + */ + name?: string; + /** + * VAT rate as percentage (e.g. 19.00 for 19%) + * @pattern ^-?\d{0,1}(?:\.\d{0,4})?$ + */ + rate?: string; + /** VAT rate as decimal (e.g., 0.19 for 19%) */ + readonly rate_decimal?: string; + /** Optional description: 'Standard rate for most products', 'Books and food', etc. */ + description?: string; + /** Whether this VAT rate is active and available for use */ + is_active?: boolean; + /** Default rate for new products */ + is_default?: boolean; + readonly created_at?: Date; +} diff --git a/frontend/src/api/generated/private/models/patchedWishlist.ts b/frontend/src/api/generated/private/models/patchedWishlist.ts new file mode 100644 index 0000000..dbb3766 --- /dev/null +++ b/frontend/src/api/generated/private/models/patchedWishlist.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ProductMiniForWishlist } from "./productMiniForWishlist"; + +export interface PatchedWishlist { + readonly id?: number; + readonly user?: number; + readonly products?: readonly ProductMiniForWishlist[]; + readonly products_count?: string; + readonly created_at?: Date; + readonly updated_at?: Date; +} diff --git a/frontend/src/api/generated/private/models/payer.ts b/frontend/src/api/generated/private/models/payer.ts index e90d28f..337205a 100644 --- a/frontend/src/api/generated/private/models/payer.ts +++ b/frontend/src/api/generated/private/models/payer.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/payment.ts b/frontend/src/api/generated/private/models/payment.ts index 6b383e7..73ea73f 100644 --- a/frontend/src/api/generated/private/models/payment.ts +++ b/frontend/src/api/generated/private/models/payment.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paymentBody.ts b/frontend/src/api/generated/private/models/paymentBody.ts index 69e05bd..a403898 100644 --- a/frontend/src/api/generated/private/models/paymentBody.ts +++ b/frontend/src/api/generated/private/models/paymentBody.ts @@ -1,12 +1,12 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { Payer } from "./payer"; +import type { AdditionalParam } from "./additionalParam"; import type { Callback } from "./callback"; import type { Item } from "./item"; -import type { AdditionalParam } from "./additionalParam"; +import type { Payer } from "./payer"; export interface PaymentBody { /** diff --git a/frontend/src/api/generated/private/models/paymentCreate.ts b/frontend/src/api/generated/private/models/paymentCreate.ts index 2bc6115..480ccfe 100644 --- a/frontend/src/api/generated/private/models/paymentCreate.ts +++ b/frontend/src/api/generated/private/models/paymentCreate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/paymentMethodEnum.ts b/frontend/src/api/generated/private/models/paymentMethodEnum.ts index dae3eda..ecae756 100644 --- a/frontend/src/api/generated/private/models/paymentMethodEnum.ts +++ b/frontend/src/api/generated/private/models/paymentMethodEnum.ts @@ -1,20 +1,19 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ /** - * * `Site` - cz#Platba v obchodě - * `stripe` - cz#Bankovní převod - * `cash_on_delivery` - cz#Dobírka + * * `shop` - Platba v obchodě + * `stripe` - Platební Brána + * `cash_on_delivery` - Dobírka */ export type PaymentMethodEnum = (typeof PaymentMethodEnum)[keyof typeof PaymentMethodEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const PaymentMethodEnum = { - Site: "Site", + shop: "shop", stripe: "stripe", cash_on_delivery: "cash_on_delivery", } as const; diff --git a/frontend/src/api/generated/private/models/paymentRead.ts b/frontend/src/api/generated/private/models/paymentRead.ts index 174cbb3..e367d60 100644 --- a/frontend/src/api/generated/private/models/paymentRead.ts +++ b/frontend/src/api/generated/private/models/paymentRead.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/platformCount.ts b/frontend/src/api/generated/private/models/platformCount.ts new file mode 100644 index 0000000..686a1be --- /dev/null +++ b/frontend/src/api/generated/private/models/platformCount.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PlatformCount { + platform: string; + count: number; +} diff --git a/frontend/src/api/generated/private/models/post.ts b/frontend/src/api/generated/private/models/post.ts new file mode 100644 index 0000000..f386f28 --- /dev/null +++ b/frontend/src/api/generated/private/models/post.ts @@ -0,0 +1,21 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { PostContent } from "./postContent"; +import type { Tags } from "./tags"; + +export interface Post { + readonly id: number; + content?: string; + readonly created_at: Date; + readonly updated_at: Date; + readonly author: number; + /** @nullable */ + hub?: number | null; + /** @nullable */ + reply_to?: number | null; + readonly tags: readonly Tags[]; + readonly contents: readonly PostContent[]; +} diff --git a/frontend/src/api/generated/private/models/postContent.ts b/frontend/src/api/generated/private/models/postContent.ts new file mode 100644 index 0000000..5616a2a --- /dev/null +++ b/frontend/src/api/generated/private/models/postContent.ts @@ -0,0 +1,14 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PostContent { + readonly id: number; + readonly mime_type: string; + /** @nullable */ + file?: string | null; + /** @nullable */ + alt_text?: string | null; +} diff --git a/frontend/src/api/generated/private/models/postVote.ts b/frontend/src/api/generated/private/models/postVote.ts new file mode 100644 index 0000000..0bb97ba --- /dev/null +++ b/frontend/src/api/generated/private/models/postVote.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { VoteEnum } from "./voteEnum"; + +export interface PostVote { + readonly id: number; + post: number; + readonly user: number; + /** + * @minimum -9223372036854776000 + * @maximum 9223372036854776000 + */ + vote: VoteEnum; + readonly created_at: Date; +} diff --git a/frontend/src/api/generated/private/models/product.ts b/frontend/src/api/generated/private/models/product.ts index 6146b27..febb8f8 100644 --- a/frontend/src/api/generated/private/models/product.ts +++ b/frontend/src/api/generated/private/models/product.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -14,7 +14,10 @@ export interface Product { * @nullable */ code?: string | null; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + /** + * Net price (without VAT) + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ price: string; /** * @maxLength 50 @@ -29,9 +32,15 @@ export interface Product { is_active?: boolean; /** @nullable */ limited_to?: Date | null; + include_in_week_summary_email?: boolean; readonly created_at: Date; readonly updated_at: Date; category: number; + /** + * VAT rate for this product. Leave empty to use default rate. + * @nullable + */ + vat_rate?: number | null; /** @nullable */ default_carrier?: number | null; /** Symetrické varianty produktu: pokud přidáte variantu A → B, Django automaticky přidá i variantu B → A. Všechny varianty jsou rovnocenné a zobrazí se vzájemně. */ diff --git a/frontend/src/api/generated/private/models/productImage.ts b/frontend/src/api/generated/private/models/productImage.ts index a192a08..e51817b 100644 --- a/frontend/src/api/generated/private/models/productImage.ts +++ b/frontend/src/api/generated/private/models/productImage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/productMini.ts b/frontend/src/api/generated/private/models/productMini.ts index ce227a0..7765fa2 100644 --- a/frontend/src/api/generated/private/models/productMini.ts +++ b/frontend/src/api/generated/private/models/productMini.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -8,6 +8,9 @@ export interface ProductMini { readonly id: number; /** @maxLength 200 */ name: string; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + /** + * Net price (without VAT) + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ price: string; } diff --git a/frontend/src/api/generated/private/models/productMiniForWishlist.ts b/frontend/src/api/generated/private/models/productMiniForWishlist.ts new file mode 100644 index 0000000..80c09dc --- /dev/null +++ b/frontend/src/api/generated/private/models/productMiniForWishlist.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * Minimal product info for wishlist display + */ +export interface ProductMiniForWishlist { + readonly id: number; + /** @maxLength 200 */ + name: string; + /** + * Net price (without VAT) + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ + price: string; + is_active?: boolean; + /** + * @minimum 0 + * @maximum 9223372036854776000 + */ + stock?: number; +} diff --git a/frontend/src/api/generated/private/models/qualityCount.ts b/frontend/src/api/generated/private/models/qualityCount.ts new file mode 100644 index 0000000..f042ba0 --- /dev/null +++ b/frontend/src/api/generated/private/models/qualityCount.ts @@ -0,0 +1,11 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface QualityCount { + /** @nullable */ + video_quality: number | null; + count: number; +} diff --git a/frontend/src/api/generated/private/models/reasonChoiceEnum.ts b/frontend/src/api/generated/private/models/reasonChoiceEnum.ts index f7311f2..494d45b 100644 --- a/frontend/src/api/generated/private/models/reasonChoiceEnum.ts +++ b/frontend/src/api/generated/private/models/reasonChoiceEnum.ts @@ -1,19 +1,18 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ /** - * * `retuning_before_fourteen_day_period` - cz#Vrácení před uplynutím 14-ti denní lhůty - * `damaged_product` - cz#Poškozený produkt - * `wrong_item` - cz#Špatná položka - * `other` - cz#Jiný důvod + * * `retuning_before_fourteen_day_period` - Vrácení před uplynutím 14-ti denní lhůty + * `damaged_product` - Poškozený produkt + * `wrong_item` - Špatná položka + * `other` - Jiný důvod */ export type ReasonChoiceEnum = (typeof ReasonChoiceEnum)[keyof typeof ReasonChoiceEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const ReasonChoiceEnum = { retuning_before_fourteen_day_period: "retuning_before_fourteen_day_period", damaged_product: "damaged_product", diff --git a/frontend/src/api/generated/private/models/refund.ts b/frontend/src/api/generated/private/models/refund.ts index 0b154d8..44eba98 100644 --- a/frontend/src/api/generated/private/models/refund.ts +++ b/frontend/src/api/generated/private/models/refund.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/reviewSerializerPublic.ts b/frontend/src/api/generated/private/models/reviewSerializerPublic.ts new file mode 100644 index 0000000..17643ee --- /dev/null +++ b/frontend/src/api/generated/private/models/reviewSerializerPublic.ts @@ -0,0 +1,19 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface ReviewSerializerPublic { + readonly id: number; + /** + * @minimum 1 + * @maximum 5 + */ + rating: number; + comment?: string; + readonly created_at: Date; + readonly updated_at: Date; + product: number; + readonly user: number; +} diff --git a/frontend/src/api/generated/private/models/roleEnum.ts b/frontend/src/api/generated/private/models/roleEnum.ts index 18f15f4..417f374 100644 --- a/frontend/src/api/generated/private/models/roleEnum.ts +++ b/frontend/src/api/generated/private/models/roleEnum.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -11,7 +11,6 @@ */ export type RoleEnum = (typeof RoleEnum)[keyof typeof RoleEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const RoleEnum = { admin: "admin", mod: "mod", diff --git a/frontend/src/api/generated/private/models/shippingMethodEnum.ts b/frontend/src/api/generated/private/models/shippingMethodEnum.ts index 50ed123..92e3bdc 100644 --- a/frontend/src/api/generated/private/models/shippingMethodEnum.ts +++ b/frontend/src/api/generated/private/models/shippingMethodEnum.ts @@ -1,18 +1,19 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ /** - * * `packeta` - cz#Zásilkovna - * `store` - cz#Osobní odběr + * * `packeta` - Zásilkovna + * `deutschepost` - Deutsche Post + * `store` - Osobní odběr */ export type ShippingMethodEnum = (typeof ShippingMethodEnum)[keyof typeof ShippingMethodEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const ShippingMethodEnum = { packeta: "packeta", + deutschepost: "deutschepost", store: "store", } as const; diff --git a/frontend/src/api/generated/private/models/siteConfigurationAdmin.ts b/frontend/src/api/generated/private/models/siteConfiguration.ts similarity index 67% rename from frontend/src/api/generated/private/models/siteConfigurationAdmin.ts rename to frontend/src/api/generated/private/models/siteConfiguration.ts index 0a029ea..c14a456 100644 --- a/frontend/src/api/generated/private/models/siteConfigurationAdmin.ts +++ b/frontend/src/api/generated/private/models/siteConfiguration.ts @@ -1,12 +1,14 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { SiteConfigurationAdminOpeningHours } from "./siteConfigurationAdminOpeningHours"; import type { CurrencyEnum } from "./currencyEnum"; -export interface SiteConfigurationAdmin { +/** + * Site configuration serializer - sensitive fields only for admins + */ +export interface SiteConfiguration { readonly id: number; /** @maxLength 100 */ name?: string; @@ -26,8 +28,7 @@ export interface SiteConfigurationAdmin { contact_phone?: string | null; /** @nullable */ contact_address?: string | null; - /** @nullable */ - opening_hours?: SiteConfigurationAdminOpeningHours; + opening_hours?: unknown | null; /** * @maxLength 200 * @nullable @@ -67,6 +68,34 @@ export interface SiteConfigurationAdmin { * @nullable */ zasilkovna_api_password?: string | null; + /** + * Deutsche Post API URL (sandbox/production) + * @maxLength 255 + */ + deutschepost_api_url?: string; + /** + * Deutsche Post OAuth Client ID + * @maxLength 255 + * @nullable + */ + deutschepost_client_id?: string | null; + /** + * Deutsche Post OAuth Client Secret + * @maxLength 255 + * @nullable + */ + deutschepost_client_secret?: string | null; + /** + * Deutsche Post Customer EKP number + * @maxLength 20 + * @nullable + */ + deutschepost_customer_ekp?: string | null; + /** + * Default Deutsche Post shipping price in EUR + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ + deutschepost_shipping_price?: string; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ free_shipping_over?: string; /** Násobení kupónů v objednávce (ano/ne), pokud ne tak se použije pouze nejvyšší slevový kupón */ diff --git a/frontend/src/api/generated/private/models/siteConfigurationAdminOpeningHours.ts b/frontend/src/api/generated/private/models/siteConfigurationAdminOpeningHours.ts deleted file mode 100644 index e79fcad..0000000 --- a/frontend/src/api/generated/private/models/siteConfigurationAdminOpeningHours.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * @nullable - */ -export type SiteConfigurationAdminOpeningHours = unknown | null; diff --git a/frontend/src/api/generated/private/models/siteConfigurationPublic.ts b/frontend/src/api/generated/private/models/siteConfigurationPublic.ts deleted file mode 100644 index 0887202..0000000 --- a/frontend/src/api/generated/private/models/siteConfigurationPublic.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ -import type { SiteConfigurationPublicOpeningHours } from "./siteConfigurationPublicOpeningHours"; -import type { CurrencyEnum } from "./currencyEnum"; - -export interface SiteConfigurationPublic { - readonly id: number; - /** @maxLength 100 */ - name?: string; - /** @nullable */ - logo?: string | null; - /** @nullable */ - favicon?: string | null; - /** - * @maxLength 254 - * @nullable - */ - contact_email?: string | null; - /** - * @maxLength 20 - * @nullable - */ - contact_phone?: string | null; - /** @nullable */ - contact_address?: string | null; - /** @nullable */ - opening_hours?: SiteConfigurationPublicOpeningHours; - /** - * @maxLength 200 - * @nullable - */ - facebook_url?: string | null; - /** - * @maxLength 200 - * @nullable - */ - instagram_url?: string | null; - /** - * @maxLength 200 - * @nullable - */ - youtube_url?: string | null; - /** - * @maxLength 200 - * @nullable - */ - tiktok_url?: string | null; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ - zasilkovna_shipping_price?: string; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ - free_shipping_over?: string; - currency?: CurrencyEnum; -} diff --git a/frontend/src/api/generated/private/models/siteConfigurationPublicOpeningHours.ts b/frontend/src/api/generated/private/models/siteConfigurationPublicOpeningHours.ts deleted file mode 100644 index 300d3d4..0000000 --- a/frontend/src/api/generated/private/models/siteConfigurationPublicOpeningHours.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * @nullable - */ -export type SiteConfigurationPublicOpeningHours = unknown | null; diff --git a/frontend/src/api/generated/private/models/state1f6Enum.ts b/frontend/src/api/generated/private/models/state1f6Enum.ts new file mode 100644 index 0000000..dcf03d9 --- /dev/null +++ b/frontend/src/api/generated/private/models/state1f6Enum.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `ordered` - Objednávka se připravuje + * `shipped` - Odesláno + * `delivered` - Doručeno + * `ready_to_pickup` - Připraveno k vyzvednutí + */ +export type State1f6Enum = (typeof State1f6Enum)[keyof typeof State1f6Enum]; + +export const State1f6Enum = { + ordered: "ordered", + shipped: "shipped", + delivered: "delivered", + ready_to_pickup: "ready_to_pickup", +} as const; diff --git a/frontend/src/api/generated/private/models/stateCdfEnum.ts b/frontend/src/api/generated/private/models/stateCdfEnum.ts new file mode 100644 index 0000000..749273f --- /dev/null +++ b/frontend/src/api/generated/private/models/stateCdfEnum.ts @@ -0,0 +1,26 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `WAITING_FOR_ORDERING_SHIPMENT` - Čeká na objednání zásilkovny + * `PENDING` - Podáno + * `SENDED` - Odesláno + * `ARRIVED` - Doručeno + * `CANCELED` - Zrušeno + * `RETURNING` - Posláno zpátky + * `RETURNED` - Vráceno + */ +export type StateCdfEnum = (typeof StateCdfEnum)[keyof typeof StateCdfEnum]; + +export const StateCdfEnum = { + WAITING_FOR_ORDERING_SHIPMENT: "WAITING_FOR_ORDERING_SHIPMENT", + PENDING: "PENDING", + SENDED: "SENDED", + ARRIVED: "ARRIVED", + CANCELED: "CANCELED", + RETURNING: "RETURNING", + RETURNED: "RETURNED", +} as const; diff --git a/frontend/src/api/generated/private/models/stateE15Enum.ts b/frontend/src/api/generated/private/models/stateE15Enum.ts deleted file mode 100644 index e2ca3c9..0000000 --- a/frontend/src/api/generated/private/models/stateE15Enum.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * * `WAITING_FOR_ORDERING_SHIPMENT` - cz#Čeká na objednání zásilkovny - * `PENDING` - cz#Podáno - * `SENDED` - cz#Odesláno - * `ARRIVED` - cz#Doručeno - * `CANCELED` - cz#Zrušeno - * `RETURNING` - cz#Posláno zpátky - * `RETURNED` - cz#Vráceno - */ -export type StateE15Enum = (typeof StateE15Enum)[keyof typeof StateE15Enum]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const StateE15Enum = { - WAITING_FOR_ORDERING_SHIPMENT: "WAITING_FOR_ORDERING_SHIPMENT", - PENDING: "PENDING", - SENDED: "SENDED", - ARRIVED: "ARRIVED", - CANCELED: "CANCELED", - RETURNING: "RETURNING", - RETURNED: "RETURNED", -} as const; diff --git a/frontend/src/api/generated/private/models/stateFdaEnum.ts b/frontend/src/api/generated/private/models/stateFdaEnum.ts deleted file mode 100644 index d76f293..0000000 --- a/frontend/src/api/generated/private/models/stateFdaEnum.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * * `ordered` - cz#Objednávka se připravuje - * `shipped` - cz#Odesláno - * `delivered` - cz#Doručeno - * `ready_to_pickup` - cz#Připraveno k vyzvednutí - */ -export type StateFdaEnum = (typeof StateFdaEnum)[keyof typeof StateFdaEnum]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const StateFdaEnum = { - ordered: "ordered", - shipped: "shipped", - delivered: "delivered", - ready_to_pickup: "ready_to_pickup", -} as const; diff --git a/frontend/src/api/generated/private/models/statusD4fEnum.ts b/frontend/src/api/generated/private/models/statusD4fEnum.ts new file mode 100644 index 0000000..7981f7d --- /dev/null +++ b/frontend/src/api/generated/private/models/statusD4fEnum.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `created` - Vytvořeno + * `cancelled` - Zrušeno + * `completed` - Dokončeno + * `refunding` - Vrácení v procesu + * `refunded` - Vráceno + */ +export type StatusD4fEnum = (typeof StatusD4fEnum)[keyof typeof StatusD4fEnum]; + +export const StatusD4fEnum = { + created: "created", + cancelled: "cancelled", + completed: "completed", + refunding: "refunding", + refunded: "refunded", +} as const; diff --git a/frontend/src/api/generated/private/models/statusEnum.ts b/frontend/src/api/generated/private/models/statusEnum.ts deleted file mode 100644 index 9194303..0000000 --- a/frontend/src/api/generated/private/models/statusEnum.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * * `created` - cz#Vytvořeno - * `cancelled` - cz#Zrušeno - * `completed` - cz#Dokončeno - * `refunding` - cz#Vrácení v procesu - * `refunded` - cz#Vráceno - */ -export type StatusEnum = (typeof StatusEnum)[keyof typeof StatusEnum]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const StatusEnum = { - created: "created", - cancelled: "cancelled", - completed: "completed", - refunding: "refunding", - refunded: "refunded", -} as const; diff --git a/frontend/src/api/generated/private/models/tagAttach.ts b/frontend/src/api/generated/private/models/tagAttach.ts new file mode 100644 index 0000000..87dd020 --- /dev/null +++ b/frontend/src/api/generated/private/models/tagAttach.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TagAttach { + /** PK of the hub tag to attach or detach. */ + tag_id: number; +} diff --git a/frontend/src/api/generated/private/models/tags.ts b/frontend/src/api/generated/private/models/tags.ts new file mode 100644 index 0000000..68c3d5b --- /dev/null +++ b/frontend/src/api/generated/private/models/tags.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface Tags { + readonly id: number; + /** @maxLength 50 */ + name: string; + /** @nullable */ + description?: string | null; + /** @maxLength 7 */ + color?: string; +} diff --git a/frontend/src/api/generated/private/models/timeseriesPoint.ts b/frontend/src/api/generated/private/models/timeseriesPoint.ts new file mode 100644 index 0000000..7c8c274 --- /dev/null +++ b/frontend/src/api/generated/private/models/timeseriesPoint.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TimeseriesPoint { + period: Date; + count: number; +} diff --git a/frontend/src/api/generated/private/models/topUrl.ts b/frontend/src/api/generated/private/models/topUrl.ts new file mode 100644 index 0000000..5223a90 --- /dev/null +++ b/frontend/src/api/generated/private/models/topUrl.ts @@ -0,0 +1,11 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TopUrl { + url: string; + title: string; + count: number; +} diff --git a/frontend/src/api/generated/private/models/trackingURL.ts b/frontend/src/api/generated/private/models/trackingURL.ts index 056d051..127957c 100644 --- a/frontend/src/api/generated/private/models/trackingURL.ts +++ b/frontend/src/api/generated/private/models/trackingURL.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/transferInit.ts b/frontend/src/api/generated/private/models/transferInit.ts new file mode 100644 index 0000000..675a340 --- /dev/null +++ b/frontend/src/api/generated/private/models/transferInit.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TransferInit { + /** PK of the user to transfer ownership to. */ + user_id: number; +} diff --git a/frontend/src/api/generated/private/models/transferVerify.ts b/frontend/src/api/generated/private/models/transferVerify.ts new file mode 100644 index 0000000..c5937c1 --- /dev/null +++ b/frontend/src/api/generated/private/models/transferVerify.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TransferVerify { + /** Transfer token sent to the new owner. */ + token: string; +} diff --git a/frontend/src/api/generated/private/models/userRegistration.ts b/frontend/src/api/generated/private/models/userRegistration.ts index 52db518..739416b 100644 --- a/frontend/src/api/generated/private/models/userRegistration.ts +++ b/frontend/src/api/generated/private/models/userRegistration.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/vATRate.ts b/frontend/src/api/generated/private/models/vATRate.ts new file mode 100644 index 0000000..6e107da --- /dev/null +++ b/frontend/src/api/generated/private/models/vATRate.ts @@ -0,0 +1,31 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * VAT Rate serializer - admin fields only visible to admins + */ +export interface VATRate { + readonly id: number; + /** + * E.g. 'German Standard', 'German Reduced', 'Czech Standard' + * @maxLength 100 + */ + name: string; + /** + * VAT rate as percentage (e.g. 19.00 for 19%) + * @pattern ^-?\d{0,1}(?:\.\d{0,4})?$ + */ + rate: string; + /** VAT rate as decimal (e.g., 0.19 for 19%) */ + readonly rate_decimal: string; + /** Optional description: 'Standard rate for most products', 'Books and food', etc. */ + description?: string; + /** Whether this VAT rate is active and available for use */ + is_active?: boolean; + /** Default rate for new products */ + is_default?: boolean; + readonly created_at: Date; +} diff --git a/frontend/src/api/generated/private/models/videoInfo.ts b/frontend/src/api/generated/private/models/videoInfo.ts index ee6811d..4f25392 100644 --- a/frontend/src/api/generated/private/models/videoInfo.ts +++ b/frontend/src/api/generated/private/models/videoInfo.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/videoInfoResponse.ts b/frontend/src/api/generated/private/models/videoInfoResponse.ts index a47d833..b189c22 100644 --- a/frontend/src/api/generated/private/models/videoInfoResponse.ts +++ b/frontend/src/api/generated/private/models/videoInfoResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/models/voteEnum.ts b/frontend/src/api/generated/private/models/voteEnum.ts new file mode 100644 index 0000000..16a0340 --- /dev/null +++ b/frontend/src/api/generated/private/models/voteEnum.ts @@ -0,0 +1,16 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `1` - Upvote + * `-1` - Downvote + */ +export type VoteEnum = (typeof VoteEnum)[keyof typeof VoteEnum]; + +export const VoteEnum = { + NUMBER_1: 1, + NUMBER_MINUS_1: -1, +} as const; diff --git a/frontend/src/api/generated/private/models/wishlist.ts b/frontend/src/api/generated/private/models/wishlist.ts new file mode 100644 index 0000000..f8da1cc --- /dev/null +++ b/frontend/src/api/generated/private/models/wishlist.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ProductMiniForWishlist } from "./productMiniForWishlist"; + +export interface Wishlist { + readonly id: number; + readonly user: number; + readonly products: readonly ProductMiniForWishlist[]; + readonly products_count: string; + readonly created_at: Date; + readonly updated_at: Date; +} diff --git a/frontend/src/api/generated/private/models/zasilkovnaPacket.ts b/frontend/src/api/generated/private/models/zasilkovnaPacket.ts index 3164441..20abadc 100644 --- a/frontend/src/api/generated/private/models/zasilkovnaPacket.ts +++ b/frontend/src/api/generated/private/models/zasilkovnaPacket.ts @@ -1,10 +1,9 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StateE15Enum } from "./stateE15Enum"; -import type { ZasilkovnaPacketReturnRouting } from "./zasilkovnaPacketReturnRouting"; +import type { StateCdfEnum } from "./stateCdfEnum"; export interface ZasilkovnaPacket { readonly id: number; @@ -21,12 +20,9 @@ export interface ZasilkovnaPacket { * @nullable */ readonly barcode: string | null; - readonly state: StateE15Enum; + readonly state: StateCdfEnum; /** Hmotnost zásilky v gramech */ readonly weight: number; - /** - * Seznam 2 routing stringů pro vrácení zásilky - * @nullable - */ - readonly return_routing: ZasilkovnaPacketReturnRouting; + /** Seznam 2 routing stringů pro vrácení zásilky */ + readonly return_routing: unknown | null; } diff --git a/frontend/src/api/generated/private/models/zasilkovnaPacketRead.ts b/frontend/src/api/generated/private/models/zasilkovnaPacketRead.ts index a99eb56..e05ebd7 100644 --- a/frontend/src/api/generated/private/models/zasilkovnaPacketRead.ts +++ b/frontend/src/api/generated/private/models/zasilkovnaPacketRead.ts @@ -1,10 +1,9 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StateE15Enum } from "./stateE15Enum"; -import type { ZasilkovnaPacketReadReturnRouting } from "./zasilkovnaPacketReadReturnRouting"; +import type { StateCdfEnum } from "./stateCdfEnum"; export interface ZasilkovnaPacketRead { readonly id: number; @@ -21,12 +20,9 @@ export interface ZasilkovnaPacketRead { * @nullable */ readonly barcode: string | null; - readonly state: StateE15Enum; + readonly state: StateCdfEnum; /** Hmotnost zásilky v gramech */ readonly weight: number; - /** - * Seznam 2 routing stringů pro vrácení zásilky - * @nullable - */ - readonly return_routing: ZasilkovnaPacketReadReturnRouting; + /** Seznam 2 routing stringů pro vrácení zásilky */ + readonly return_routing: unknown | null; } diff --git a/frontend/src/api/generated/private/models/zasilkovnaPacketReadReturnRouting.ts b/frontend/src/api/generated/private/models/zasilkovnaPacketReadReturnRouting.ts deleted file mode 100644 index cfcb819..0000000 --- a/frontend/src/api/generated/private/models/zasilkovnaPacketReadReturnRouting.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * Seznam 2 routing stringů pro vrácení zásilky - * @nullable - */ -export type ZasilkovnaPacketReadReturnRouting = unknown | null; diff --git a/frontend/src/api/generated/private/models/zasilkovnaPacketReturnRouting.ts b/frontend/src/api/generated/private/models/zasilkovnaPacketReturnRouting.ts deleted file mode 100644 index 0cf56d3..0000000 --- a/frontend/src/api/generated/private/models/zasilkovnaPacketReturnRouting.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * Seznam 2 routing stringů pro vrácení zásilky - * @nullable - */ -export type ZasilkovnaPacketReturnRouting = unknown | null; diff --git a/frontend/src/api/generated/private/models/zasilkovnaShipment.ts b/frontend/src/api/generated/private/models/zasilkovnaShipment.ts index 7929af0..29e3163 100644 --- a/frontend/src/api/generated/private/models/zasilkovnaShipment.ts +++ b/frontend/src/api/generated/private/models/zasilkovnaShipment.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/private/posts/posts.ts b/frontend/src/api/generated/private/posts/posts.ts new file mode 100644 index 0000000..e6ee632 --- /dev/null +++ b/frontend/src/api/generated/private/posts/posts.ts @@ -0,0 +1,978 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import { useMutation, useQuery } from "@tanstack/react-query"; +import type { + DataTag, + DefinedInitialDataOptions, + DefinedUseQueryResult, + MutationFunction, + QueryClient, + QueryFunction, + QueryKey, + UndefinedInitialDataOptions, + UseMutationOptions, + UseMutationResult, + UseQueryOptions, + UseQueryResult, +} from "@tanstack/react-query"; + +import type { + ApiSocialPostsListParams, + PaginatedPostList, + PatchedPost, + Post, + PostVote, + TagAttach, +} from "../models"; + +import { privateMutator } from "../../../privateClient"; + +// https://stackoverflow.com/questions/49579094/typescript-conditional-types-filter-out-readonly-properties-pick-only-requir/49579497#49579497 +type IfEquals = + (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? A : B; + +type WritableKeys = { + [P in keyof T]-?: IfEquals< + { [Q in P]: T[P] }, + { -readonly [Q in P]: T[P] }, + P + >; +}[keyof T]; + +type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ( + k: infer I, +) => void + ? I + : never; +type DistributeReadOnlyOverUnions = T extends any ? NonReadonly : never; + +type Writable = Pick>; +type NonReadonly = [T] extends [UnionToIntersection] + ? { + [P in keyof Writable]: T[P] extends object + ? NonReadonly> + : T[P]; + } + : DistributeReadOnlyOverUnions; + +/** + * Returns posts. Filter by `hub` query param to scope to a hub. + * @summary List posts + */ +export const apiSocialPostsList = ( + params?: ApiSocialPostsListParams, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/posts/`, + method: "GET", + params, + signal, + }); +}; + +export const getApiSocialPostsListQueryKey = ( + params?: ApiSocialPostsListParams, +) => { + return [`/api/social/posts/`, ...(params ? [params] : [])] as const; +}; + +export const getApiSocialPostsListQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialPostsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialPostsListQueryKey(params); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialPostsList(params, signal); + + return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialPostsListQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialPostsListQueryError = unknown; + +export function useApiSocialPostsList< + TData = Awaited>, + TError = unknown, +>( + params: undefined | ApiSocialPostsListParams, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialPostsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialPostsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialPostsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialPostsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary List posts + */ + +export function useApiSocialPostsList< + TData = Awaited>, + TError = unknown, +>( + params?: ApiSocialPostsListParams, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialPostsListQueryOptions(params, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Creates a post. The requesting user is set as the author automatically. + * @summary Create a post + */ +export const apiSocialPostsCreate = ( + post: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/posts/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: post, + signal, + }); +}; + +export const getApiSocialPostsCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialPostsCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiSocialPostsCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialPostsCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialPostsCreateMutationBody = NonReadonly; +export type ApiSocialPostsCreateMutationError = unknown; + +/** + * @summary Create a post + */ +export const useApiSocialPostsCreate = ( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialPostsCreateMutationOptions(options), + queryClient, + ); +}; +/** + * @summary Retrieve a post + */ +export const apiSocialPostsRetrieve = (id: number, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/posts/${id}/`, + method: "GET", + signal, + }); +}; + +export const getApiSocialPostsRetrieveQueryKey = (id: number) => { + return [`/api/social/posts/${id}/`] as const; +}; + +export const getApiSocialPostsRetrieveQueryOptions = < + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, +) => { + const { query: queryOptions } = options ?? {}; + + const queryKey = + queryOptions?.queryKey ?? getApiSocialPostsRetrieveQueryKey(id); + + const queryFn: QueryFunction< + Awaited> + > = ({ signal }) => apiSocialPostsRetrieve(id, signal); + + return { + queryKey, + queryFn, + enabled: !!id, + ...queryOptions, + } as UseQueryOptions< + Awaited>, + TError, + TData + > & { queryKey: DataTag }; +}; + +export type ApiSocialPostsRetrieveQueryResult = NonNullable< + Awaited> +>; +export type ApiSocialPostsRetrieveQueryError = unknown; + +export function useApiSocialPostsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options: { + query: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + DefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): DefinedUseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialPostsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + > & + Pick< + UndefinedInitialDataOptions< + Awaited>, + TError, + Awaited> + >, + "initialData" + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +export function useApiSocialPostsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +}; +/** + * @summary Retrieve a post + */ + +export function useApiSocialPostsRetrieve< + TData = Awaited>, + TError = unknown, +>( + id: number, + options?: { + query?: Partial< + UseQueryOptions< + Awaited>, + TError, + TData + > + >; + }, + queryClient?: QueryClient, +): UseQueryResult & { + queryKey: DataTag; +} { + const queryOptions = getApiSocialPostsRetrieveQueryOptions(id, options); + + const query = useQuery(queryOptions, queryClient) as UseQueryResult< + TData, + TError + > & { queryKey: DataTag }; + + return { ...query, queryKey: queryOptions.queryKey }; +} + +/** + * Full update. Author only. + * @summary Replace a post + */ +export const apiSocialPostsUpdate = ( + id: number, + post: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/posts/${id}/`, + method: "PUT", + headers: { "Content-Type": "application/json" }, + data: post, + signal, + }); +}; + +export const getApiSocialPostsUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialPostsUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialPostsUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialPostsUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialPostsUpdateMutationBody = NonReadonly; +export type ApiSocialPostsUpdateMutationError = unknown; + +/** + * @summary Replace a post + */ +export const useApiSocialPostsUpdate = ( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialPostsUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Partial update. Author only. + * @summary Update a post + */ +export const apiSocialPostsPartialUpdate = ( + id: number, + patchedPost: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/posts/${id}/`, + method: "PATCH", + headers: { "Content-Type": "application/json" }, + data: patchedPost, + signal, + }); +}; + +export const getApiSocialPostsPartialUpdateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialPostsPartialUpdate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialPostsPartialUpdate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialPostsPartialUpdateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialPostsPartialUpdateMutationBody = NonReadonly; +export type ApiSocialPostsPartialUpdateMutationError = unknown; + +/** + * @summary Update a post + */ +export const useApiSocialPostsPartialUpdate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialPostsPartialUpdateMutationOptions(options), + queryClient, + ); +}; +/** + * Soft-deletes the post. Author, superuser, hub owner, or hub moderator with `managing_posts`. + * @summary Delete a post + */ +export const apiSocialPostsDestroy = (id: number, signal?: AbortSignal) => { + return privateMutator({ + url: `/api/social/posts/${id}/`, + method: "DELETE", + signal, + }); +}; + +export const getApiSocialPostsDestroyMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext +> => { + const mutationKey = ["apiSocialPostsDestroy"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number } + > = (props) => { + const { id } = props ?? {}; + + return apiSocialPostsDestroy(id); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialPostsDestroyMutationResult = NonNullable< + Awaited> +>; + +export type ApiSocialPostsDestroyMutationError = unknown; + +/** + * @summary Delete a post + */ +export const useApiSocialPostsDestroy = ( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number }, + TContext +> => { + return useMutation( + getApiSocialPostsDestroyMutationOptions(options), + queryClient, + ); +}; +/** + * Attaches an existing hub tag to the post. The tag must belong to the same hub as the post. Any authenticated hub member can attach tags. + * @summary Attach a tag to a post + */ +export const apiSocialPostsTagsAttachCreate = ( + id: number, + tagAttach: TagAttach, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/posts/${id}/tags/attach/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: tagAttach, + signal, + }); +}; + +export const getApiSocialPostsTagsAttachCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: TagAttach }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: TagAttach }, + TContext +> => { + const mutationKey = ["apiSocialPostsTagsAttachCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: TagAttach } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialPostsTagsAttachCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialPostsTagsAttachCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialPostsTagsAttachCreateMutationBody = TagAttach; +export type ApiSocialPostsTagsAttachCreateMutationError = unknown; + +/** + * @summary Attach a tag to a post + */ +export const useApiSocialPostsTagsAttachCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: TagAttach }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: TagAttach }, + TContext +> => { + return useMutation( + getApiSocialPostsTagsAttachCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Removes a tag from the post. Post author, hub owner, site admin, or moderator with `managing_posts` can detach. + * @summary Detach a tag from a post + */ +export const apiSocialPostsTagsDetachCreate = ( + id: number, + tagAttach: TagAttach, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/posts/${id}/tags/detach/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: tagAttach, + signal, + }); +}; + +export const getApiSocialPostsTagsDetachCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: TagAttach }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: TagAttach }, + TContext +> => { + const mutationKey = ["apiSocialPostsTagsDetachCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: TagAttach } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialPostsTagsDetachCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialPostsTagsDetachCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialPostsTagsDetachCreateMutationBody = TagAttach; +export type ApiSocialPostsTagsDetachCreateMutationError = unknown; + +/** + * @summary Detach a tag from a post + */ +export const useApiSocialPostsTagsDetachCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: TagAttach }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: TagAttach }, + TContext +> => { + return useMutation( + getApiSocialPostsTagsDetachCreateMutationOptions(options), + queryClient, + ); +}; +/** + * Cast or update a vote (`1` = upvote, `-1` = downvote) on a post. + * @summary Vote on a post + */ +export const apiSocialPostsVoteCreate = ( + id: number, + postVote: NonReadonly, + signal?: AbortSignal, +) => { + return privateMutator({ + url: `/api/social/posts/${id}/vote/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: postVote, + signal, + }); +}; + +export const getApiSocialPostsVoteCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiSocialPostsVoteCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { id: number; data: NonReadonly } + > = (props) => { + const { id, data } = props ?? {}; + + return apiSocialPostsVoteCreate(id, data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiSocialPostsVoteCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiSocialPostsVoteCreateMutationBody = NonReadonly; +export type ApiSocialPostsVoteCreateMutationError = unknown; + +/** + * @summary Vote on a post + */ +export const useApiSocialPostsVoteCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { id: number; data: NonReadonly }, + TContext +> => { + return useMutation( + getApiSocialPostsVoteCreateMutationOptions(options), + queryClient, + ); +}; diff --git a/frontend/src/api/generated/private/stripe/stripe.ts b/frontend/src/api/generated/private/stripe/stripe.ts index d83bbc9..e0f6dde 100644 --- a/frontend/src/api/generated/private/stripe/stripe.ts +++ b/frontend/src/api/generated/private/stripe/stripe.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -81,8 +81,8 @@ export const useApiStripeStripeWebhookCreate = < void, TContext > => { - const mutationOptions = - getApiStripeStripeWebhookCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiStripeStripeWebhookCreateMutationOptions(options), + queryClient, + ); }; diff --git a/frontend/src/api/generated/private/trading212/trading212.ts b/frontend/src/api/generated/private/trading212/trading212.ts index 822028b..44cb3a8 100644 --- a/frontend/src/api/generated/private/trading212/trading212.ts +++ b/frontend/src/api/generated/private/trading212/trading212.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -161,9 +161,7 @@ export function useApiTrading212EquityCashRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -310,7 +308,5 @@ export function useApiTrading212EquitySummaryRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } diff --git a/frontend/src/api/generated/private/zasilkovna/zasilkovna.ts b/frontend/src/api/generated/private/zasilkovna/zasilkovna.ts index 3d2a1e0..3085320 100644 --- a/frontend/src/api/generated/private/zasilkovna/zasilkovna.ts +++ b/frontend/src/api/generated/private/zasilkovna/zasilkovna.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -25,7 +25,7 @@ import type { TrackingURL, ZasilkovnaPacket, ZasilkovnaShipment, -} from ".././models"; +} from "../models"; import { privateMutator } from "../../../privateClient"; @@ -44,7 +44,7 @@ export const apiZasilkovnaPacketsRetrieve = ( }); }; -export const getApiZasilkovnaPacketsRetrieveQueryKey = (id?: number) => { +export const getApiZasilkovnaPacketsRetrieveQueryKey = (id: number) => { return [`/api/zasilkovna/packets/${id}/`] as const; }; @@ -188,19 +188,21 @@ export function useApiZasilkovnaPacketsRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** * Cancels the packet through the Packeta API and updates its state to CANCELED. No request body is required. * @summary Cancel packet */ -export const apiZasilkovnaPacketsCancelPartialUpdate = (id: number) => { +export const apiZasilkovnaPacketsCancelPartialUpdate = ( + id: number, + signal?: AbortSignal, +) => { return privateMutator({ url: `/api/zasilkovna/packets/${id}/cancel/`, method: "PATCH", + signal, }); }; @@ -269,19 +271,23 @@ export const useApiZasilkovnaPacketsCancelPartialUpdate = < { id: number }, TContext > => { - const mutationOptions = - getApiZasilkovnaPacketsCancelPartialUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiZasilkovnaPacketsCancelPartialUpdateMutationOptions(options), + queryClient, + ); }; /** * Objedná přepravu přes API Packety,podle existujicího objektu, kde je od uživatele uložený id od místa poslání. * @summary Order shipping */ -export const apiZasilkovnaPacketsOrderShippingPartialUpdate = (id: number) => { +export const apiZasilkovnaPacketsOrderShippingPartialUpdate = ( + id: number, + signal?: AbortSignal, +) => { return privateMutator({ url: `/api/zasilkovna/packets/${id}/order-shipping/`, method: "PATCH", + signal, }); }; @@ -356,10 +362,10 @@ export const useApiZasilkovnaPacketsOrderShippingPartialUpdate = < { id: number }, TContext > => { - const mutationOptions = - getApiZasilkovnaPacketsOrderShippingPartialUpdateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiZasilkovnaPacketsOrderShippingPartialUpdateMutationOptions(options), + queryClient, + ); }; /** * Returns HTML widget for user to select pickup point. No request body is required. @@ -377,7 +383,7 @@ export const apiZasilkovnaPacketsPickupPointWidgetRetrieve = ( }; export const getApiZasilkovnaPacketsPickupPointWidgetRetrieveQueryKey = ( - id?: number, + id: number, ) => { return [`/api/zasilkovna/packets/${id}/pickup-point-widget/`] as const; }; @@ -553,9 +559,7 @@ export function useApiZasilkovnaPacketsPickupPointWidgetRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -574,7 +578,7 @@ export const apiZasilkovnaPacketsTrackingUrlRetrieve = ( }; export const getApiZasilkovnaPacketsTrackingUrlRetrieveQueryKey = ( - id?: number, + id: number, ) => { return [`/api/zasilkovna/packets/${id}/tracking-url/`] as const; }; @@ -723,9 +727,7 @@ export function useApiZasilkovnaPacketsTrackingUrlRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -888,9 +890,7 @@ export function useApiZasilkovnaShipmentsList< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -908,7 +908,7 @@ export const apiZasilkovnaShipmentsRetrieve = ( }); }; -export const getApiZasilkovnaShipmentsRetrieveQueryKey = (id?: number) => { +export const getApiZasilkovnaShipmentsRetrieveQueryKey = (id: number) => { return [`/api/zasilkovna/shipments/${id}/`] as const; }; @@ -1055,7 +1055,5 @@ export function useApiZasilkovnaShipmentsRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } diff --git a/frontend/src/api/generated/public/account.ts b/frontend/src/api/generated/public/account.ts index fd2b7d8..3840bdd 100644 --- a/frontend/src/api/generated/public/account.ts +++ b/frontend/src/api/generated/public/account.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -107,9 +107,10 @@ export const useApiAccountLoginCreate = ( { data: CustomTokenObtainPair }, TContext > => { - const mutationOptions = getApiAccountLoginCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountLoginCreateMutationOptions(options), + queryClient, + ); }; /** * Logs out the user by deleting access and refresh token cookies. @@ -183,9 +184,10 @@ export const useApiAccountLogoutCreate = ( void, TContext > => { - const mutationOptions = getApiAccountLogoutCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountLogoutCreateMutationOptions(options), + queryClient, + ); }; /** * Request password reset by providing registered email. An email with instructions will be sent. @@ -269,10 +271,10 @@ export const useApiAccountPasswordResetCreate = < { data: PasswordResetRequest }, TContext > => { - const mutationOptions = - getApiAccountPasswordResetCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountPasswordResetCreateMutationOptions(options), + queryClient, + ); }; /** * Confirm password reset using token from email. @@ -359,10 +361,10 @@ export const useApiAccountPasswordResetConfirmCreate = < { uidb64: string; token: string; data: PasswordResetConfirm }, TContext > => { - const mutationOptions = - getApiAccountPasswordResetConfirmCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountPasswordResetConfirmCreateMutationOptions(options), + queryClient, + ); }; /** * Register a new user (company or individual). The user will receive an email with a verification link. @@ -443,9 +445,10 @@ export const useApiAccountRegisterCreate = ( { data: UserRegistration }, TContext > => { - const mutationOptions = getApiAccountRegisterCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountRegisterCreateMutationOptions(options), + queryClient, + ); }; /** * Refresh JWT access and refresh tokens using the refresh token stored in cookie. @@ -522,10 +525,10 @@ export const useApiAccountTokenRefreshCreate = < void, TContext > => { - const mutationOptions = - getApiAccountTokenRefreshCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAccountTokenRefreshCreateMutationOptions(options), + queryClient, + ); }; /** * Verify user email using the link with uid and token. @@ -544,8 +547,8 @@ export const apiAccountVerifyEmailRetrieve = ( }; export const getApiAccountVerifyEmailRetrieveQueryKey = ( - uidb64?: string, - token?: string, + uidb64: string, + token: string, ) => { return [`/api/account/verify-email/${uidb64}/${token}/`] as const; }; @@ -700,7 +703,5 @@ export function useApiAccountVerifyEmailRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } diff --git a/frontend/src/api/generated/public/advertisement.ts b/frontend/src/api/generated/public/advertisement.ts index b462adc..be7ff68 100644 --- a/frontend/src/api/generated/public/advertisement.ts +++ b/frontend/src/api/generated/public/advertisement.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -81,8 +81,8 @@ export const useApiAdvertisementContactMeCreate = < void, TContext > => { - const mutationOptions = - getApiAdvertisementContactMeCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiAdvertisementContactMeCreateMutationOptions(options), + queryClient, + ); }; diff --git a/frontend/src/api/generated/public/commerce.ts b/frontend/src/api/generated/public/commerce.ts index bc02f4f..229296a 100644 --- a/frontend/src/api/generated/public/commerce.ts +++ b/frontend/src/api/generated/public/commerce.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -36,10 +36,39 @@ import type { PaginatedProductList, Product, ProductImage, + ReviewSerializerPublic, } from "./models"; import { publicMutator } from "../../publicClient"; +// https://stackoverflow.com/questions/49579094/typescript-conditional-types-filter-out-readonly-properties-pick-only-requir/49579497#49579497 +type IfEquals = + (() => T extends X ? 1 : 2) extends () => T extends Y ? 1 : 2 ? A : B; + +type WritableKeys = { + [P in keyof T]-?: IfEquals< + { [Q in P]: T[P] }, + { -readonly [Q in P]: T[P] }, + P + >; +}[keyof T]; + +type UnionToIntersection = (U extends any ? (k: U) => void : never) extends ( + k: infer I, +) => void + ? I + : never; +type DistributeReadOnlyOverUnions = T extends any ? NonReadonly : never; + +type Writable = Pick>; +type NonReadonly = [T] extends [UnionToIntersection] + ? { + [P in keyof Writable]: T[P] extends object + ? NonReadonly> + : T[P]; + } + : DistributeReadOnlyOverUnions; + /** * @summary List categories (public) */ @@ -199,9 +228,7 @@ export function useApiCommerceCategoriesList< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -218,7 +245,7 @@ export const apiCommerceCategoriesRetrieve = ( }); }; -export const getApiCommerceCategoriesRetrieveQueryKey = (id?: number) => { +export const getApiCommerceCategoriesRetrieveQueryKey = (id: number) => { return [`/api/commerce/categories/${id}/`] as const; }; @@ -365,9 +392,7 @@ export function useApiCommerceCategoriesRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -532,9 +557,7 @@ export function useApiCommerceDiscountCodesList< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -551,7 +574,7 @@ export const apiCommerceDiscountCodesRetrieve = ( }); }; -export const getApiCommerceDiscountCodesRetrieveQueryKey = (id?: number) => { +export const getApiCommerceDiscountCodesRetrieveQueryKey = (id: number) => { return [`/api/commerce/discount-codes/${id}/`] as const; }; @@ -698,13 +721,11 @@ export function useApiCommerceDiscountCodesRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** - * @summary List Orders (public) + * @summary List Orders (public - anonymous orders, authenticated - user orders, admin - all orders) */ export const apiCommerceOrdersList = ( params?: ApiCommerceOrdersListParams, @@ -831,7 +852,7 @@ export function useApiCommerceOrdersList< queryKey: DataTag; }; /** - * @summary List Orders (public) + * @summary List Orders (public - anonymous orders, authenticated - user orders, admin - all orders) */ export function useApiCommerceOrdersList< @@ -859,9 +880,7 @@ export function useApiCommerceOrdersList< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -871,7 +890,7 @@ export const apiCommerceOrdersCreate = ( orderCreate: OrderCreate, signal?: AbortSignal, ) => { - return publicMutator({ + return publicMutator({ url: `/api/commerce/orders/`, method: "POST", headers: { "Content-Type": "application/json" }, @@ -945,12 +964,13 @@ export const useApiCommerceOrdersCreate = < { data: OrderCreate }, TContext > => { - const mutationOptions = getApiCommerceOrdersCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiCommerceOrdersCreateMutationOptions(options), + queryClient, + ); }; /** - * @summary Retrieve Order (public) + * @summary Retrieve Order (public - anonymous orders, authenticated - user orders, admin - all orders) */ export const apiCommerceOrdersRetrieve = (id: number, signal?: AbortSignal) => { return publicMutator({ @@ -960,7 +980,7 @@ export const apiCommerceOrdersRetrieve = (id: number, signal?: AbortSignal) => { }); }; -export const getApiCommerceOrdersRetrieveQueryKey = (id?: number) => { +export const getApiCommerceOrdersRetrieveQueryKey = (id: number) => { return [`/api/commerce/orders/${id}/`] as const; }; @@ -1076,7 +1096,7 @@ export function useApiCommerceOrdersRetrieve< queryKey: DataTag; }; /** - * @summary Retrieve Order (public) + * @summary Retrieve Order (public - anonymous orders, authenticated - user orders, admin - all orders) */ export function useApiCommerceOrdersRetrieve< @@ -1104,9 +1124,7 @@ export function useApiCommerceOrdersRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -1271,9 +1289,7 @@ export function useApiCommerceProductImagesList< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -1290,7 +1306,7 @@ export const apiCommerceProductImagesRetrieve = ( }); }; -export const getApiCommerceProductImagesRetrieveQueryKey = (id?: number) => { +export const getApiCommerceProductImagesRetrieveQueryKey = (id: number) => { return [`/api/commerce/product-images/${id}/`] as const; }; @@ -1437,9 +1453,7 @@ export function useApiCommerceProductImagesRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -1598,9 +1612,7 @@ export function useApiCommerceProductsList< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** @@ -1617,7 +1629,7 @@ export const apiCommerceProductsRetrieve = ( }); }; -export const getApiCommerceProductsRetrieveQueryKey = (id?: number) => { +export const getApiCommerceProductsRetrieveQueryKey = (id: number) => { return [`/api/commerce/products/${id}/`] as const; }; @@ -1761,7 +1773,94 @@ export function useApiCommerceProductsRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } + +/** + * Public endpoint to create a review for a product. + * @summary Create a product review (public) + */ +export const apiCommerceReviewsCreateCreate = ( + reviewSerializerPublic: NonReadonly, + signal?: AbortSignal, +) => { + return publicMutator({ + url: `/api/commerce/reviews/create/`, + method: "POST", + headers: { "Content-Type": "application/json" }, + data: reviewSerializerPublic, + signal, + }); +}; + +export const getApiCommerceReviewsCreateCreateMutationOptions = < + TError = unknown, + TContext = unknown, +>(options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; +}): UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + const mutationKey = ["apiCommerceReviewsCreateCreate"]; + const { mutation: mutationOptions } = options + ? options.mutation && + "mutationKey" in options.mutation && + options.mutation.mutationKey + ? options + : { ...options, mutation: { ...options.mutation, mutationKey } } + : { mutation: { mutationKey } }; + + const mutationFn: MutationFunction< + Awaited>, + { data: NonReadonly } + > = (props) => { + const { data } = props ?? {}; + + return apiCommerceReviewsCreateCreate(data); + }; + + return { mutationFn, ...mutationOptions }; +}; + +export type ApiCommerceReviewsCreateCreateMutationResult = NonNullable< + Awaited> +>; +export type ApiCommerceReviewsCreateCreateMutationBody = + NonReadonly; +export type ApiCommerceReviewsCreateCreateMutationError = unknown; + +/** + * @summary Create a product review (public) + */ +export const useApiCommerceReviewsCreateCreate = < + TError = unknown, + TContext = unknown, +>( + options?: { + mutation?: UseMutationOptions< + Awaited>, + TError, + { data: NonReadonly }, + TContext + >; + }, + queryClient?: QueryClient, +): UseMutationResult< + Awaited>, + TError, + { data: NonReadonly }, + TContext +> => { + return useMutation( + getApiCommerceReviewsCreateCreateMutationOptions(options), + queryClient, + ); +}; diff --git a/frontend/src/api/generated/public/configuration.ts b/frontend/src/api/generated/public/configuration.ts deleted file mode 100644 index 7bb424d..0000000 --- a/frontend/src/api/generated/public/configuration.ts +++ /dev/null @@ -1,408 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ -import { useQuery } from "@tanstack/react-query"; -import type { - DataTag, - DefinedInitialDataOptions, - DefinedUseQueryResult, - QueryClient, - QueryFunction, - QueryKey, - UndefinedInitialDataOptions, - UseQueryOptions, - UseQueryResult, -} from "@tanstack/react-query"; - -import type { - ApiConfigurationPublicShopConfigurationListParams, - PaginatedSiteConfigurationPublicList, - SiteConfigurationPublic, -} from "./models"; - -import { publicMutator } from "../../publicClient"; - -/** - * @summary List site configuration (public) - */ -export const apiConfigurationPublicShopConfigurationList = ( - params?: ApiConfigurationPublicShopConfigurationListParams, - signal?: AbortSignal, -) => { - return publicMutator({ - url: `/api/configuration/public/shop-configuration/`, - method: "GET", - params, - signal, - }); -}; - -export const getApiConfigurationPublicShopConfigurationListQueryKey = ( - params?: ApiConfigurationPublicShopConfigurationListParams, -) => { - return [ - `/api/configuration/public/shop-configuration/`, - ...(params ? [params] : []), - ] as const; -}; - -export const getApiConfigurationPublicShopConfigurationListQueryOptions = < - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - params?: ApiConfigurationPublicShopConfigurationListParams, - options?: { - query?: Partial< - UseQueryOptions< - Awaited>, - TError, - TData - > - >; - }, -) => { - const { query: queryOptions } = options ?? {}; - - const queryKey = - queryOptions?.queryKey ?? - getApiConfigurationPublicShopConfigurationListQueryKey(params); - - const queryFn: QueryFunction< - Awaited> - > = ({ signal }) => - apiConfigurationPublicShopConfigurationList(params, signal); - - return { queryKey, queryFn, ...queryOptions } as UseQueryOptions< - Awaited>, - TError, - TData - > & { queryKey: DataTag }; -}; - -export type ApiConfigurationPublicShopConfigurationListQueryResult = - NonNullable< - Awaited> - >; -export type ApiConfigurationPublicShopConfigurationListQueryError = unknown; - -export function useApiConfigurationPublicShopConfigurationList< - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - params: undefined | ApiConfigurationPublicShopConfigurationListParams, - options: { - query: Partial< - UseQueryOptions< - Awaited>, - TError, - TData - > - > & - Pick< - DefinedInitialDataOptions< - Awaited< - ReturnType - >, - TError, - Awaited< - ReturnType - > - >, - "initialData" - >; - }, - queryClient?: QueryClient, -): DefinedUseQueryResult & { - queryKey: DataTag; -}; -export function useApiConfigurationPublicShopConfigurationList< - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - params?: ApiConfigurationPublicShopConfigurationListParams, - options?: { - query?: Partial< - UseQueryOptions< - Awaited>, - TError, - TData - > - > & - Pick< - UndefinedInitialDataOptions< - Awaited< - ReturnType - >, - TError, - Awaited< - ReturnType - > - >, - "initialData" - >; - }, - queryClient?: QueryClient, -): UseQueryResult & { - queryKey: DataTag; -}; -export function useApiConfigurationPublicShopConfigurationList< - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - params?: ApiConfigurationPublicShopConfigurationListParams, - options?: { - query?: Partial< - UseQueryOptions< - Awaited>, - TError, - TData - > - >; - }, - queryClient?: QueryClient, -): UseQueryResult & { - queryKey: DataTag; -}; -/** - * @summary List site configuration (public) - */ - -export function useApiConfigurationPublicShopConfigurationList< - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - params?: ApiConfigurationPublicShopConfigurationListParams, - options?: { - query?: Partial< - UseQueryOptions< - Awaited>, - TError, - TData - > - >; - }, - queryClient?: QueryClient, -): UseQueryResult & { - queryKey: DataTag; -} { - const queryOptions = - getApiConfigurationPublicShopConfigurationListQueryOptions(params, options); - - const query = useQuery(queryOptions, queryClient) as UseQueryResult< - TData, - TError - > & { queryKey: DataTag }; - - query.queryKey = queryOptions.queryKey; - - return query; -} - -/** - * @summary Retrieve site configuration (public) - */ -export const apiConfigurationPublicShopConfigurationRetrieve = ( - id: number, - signal?: AbortSignal, -) => { - return publicMutator({ - url: `/api/configuration/public/shop-configuration/${id}/`, - method: "GET", - signal, - }); -}; - -export const getApiConfigurationPublicShopConfigurationRetrieveQueryKey = ( - id?: number, -) => { - return [`/api/configuration/public/shop-configuration/${id}/`] as const; -}; - -export const getApiConfigurationPublicShopConfigurationRetrieveQueryOptions = < - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - id: number, - options?: { - query?: Partial< - UseQueryOptions< - Awaited< - ReturnType - >, - TError, - TData - > - >; - }, -) => { - const { query: queryOptions } = options ?? {}; - - const queryKey = - queryOptions?.queryKey ?? - getApiConfigurationPublicShopConfigurationRetrieveQueryKey(id); - - const queryFn: QueryFunction< - Awaited> - > = ({ signal }) => - apiConfigurationPublicShopConfigurationRetrieve(id, signal); - - return { - queryKey, - queryFn, - enabled: !!id, - ...queryOptions, - } as UseQueryOptions< - Awaited>, - TError, - TData - > & { queryKey: DataTag }; -}; - -export type ApiConfigurationPublicShopConfigurationRetrieveQueryResult = - NonNullable< - Awaited> - >; -export type ApiConfigurationPublicShopConfigurationRetrieveQueryError = unknown; - -export function useApiConfigurationPublicShopConfigurationRetrieve< - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - id: number, - options: { - query: Partial< - UseQueryOptions< - Awaited< - ReturnType - >, - TError, - TData - > - > & - Pick< - DefinedInitialDataOptions< - Awaited< - ReturnType - >, - TError, - Awaited< - ReturnType - > - >, - "initialData" - >; - }, - queryClient?: QueryClient, -): DefinedUseQueryResult & { - queryKey: DataTag; -}; -export function useApiConfigurationPublicShopConfigurationRetrieve< - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - id: number, - options?: { - query?: Partial< - UseQueryOptions< - Awaited< - ReturnType - >, - TError, - TData - > - > & - Pick< - UndefinedInitialDataOptions< - Awaited< - ReturnType - >, - TError, - Awaited< - ReturnType - > - >, - "initialData" - >; - }, - queryClient?: QueryClient, -): UseQueryResult & { - queryKey: DataTag; -}; -export function useApiConfigurationPublicShopConfigurationRetrieve< - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - id: number, - options?: { - query?: Partial< - UseQueryOptions< - Awaited< - ReturnType - >, - TError, - TData - > - >; - }, - queryClient?: QueryClient, -): UseQueryResult & { - queryKey: DataTag; -}; -/** - * @summary Retrieve site configuration (public) - */ - -export function useApiConfigurationPublicShopConfigurationRetrieve< - TData = Awaited< - ReturnType - >, - TError = unknown, ->( - id: number, - options?: { - query?: Partial< - UseQueryOptions< - Awaited< - ReturnType - >, - TError, - TData - > - >; - }, - queryClient?: QueryClient, -): UseQueryResult & { - queryKey: DataTag; -} { - const queryOptions = - getApiConfigurationPublicShopConfigurationRetrieveQueryOptions(id, options); - - const query = useQuery(queryOptions, queryClient) as UseQueryResult< - TData, - TError - > & { queryKey: DataTag }; - - query.queryKey = queryOptions.queryKey; - - return query; -} diff --git a/frontend/src/api/generated/public/downloader.ts b/frontend/src/api/generated/public/downloader.ts index 30bdac3..a39fbca 100644 --- a/frontend/src/api/generated/public/downloader.ts +++ b/frontend/src/api/generated/public/downloader.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -31,27 +31,27 @@ import type { import { publicMutator } from "../../publicClient"; /** - * + * Fetch detailed information about a video or playlist from supported platforms. - + **Supported platforms:** YouTube, TikTok, Vimeo, Twitter, Instagram, Facebook, Reddit, and many more. - + **Returns:** For single videos: - Video title, duration, and thumbnail - Available video qualities/resolutions - Available audio formats - + For playlists: - Array of videos with the same info structure as single videos - Each video includes title, duration, thumbnail, and available qualities - + **Usage:** ``` GET /api/downloader/download/?url=https://youtube.com/watch?v=VIDEO_ID GET /api/downloader/download/?url=https://youtube.com/playlist?list=PLAYLIST_ID ``` - + * @summary Get video info from URL */ export const apiDownloaderDownloadRetrieve = ( @@ -210,37 +210,35 @@ export function useApiDownloaderDownloadRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } /** - * + * Download video/playlist with optional quality constraints and container format conversion. - + **For Playlists:** - Returns a ZIP file containing all selected videos - Use `selected_videos` to specify which videos to download (e.g., [1,3,5] or [1,2,3,4,5]) - If `selected_videos` is not provided, all videos in the playlist will be downloaded - + **Quality Parameters (optional):** - If not specified, yt-dlp will automatically select the best available quality. - `video_quality`: Maximum video height in pixels (e.g., 1080, 720, 480). - `audio_quality`: Maximum audio bitrate in kbps (e.g., 320, 192, 128). - + **Format/Extension:** - Any format supported by ffmpeg (mp4, mkv, webm, avi, mov, flv, m4a, mp3, etc.). - Defaults to 'mp4' if not specified. - The conversion is handled automatically by ffmpeg in the background. - + **Advanced Options:** - `subtitles`: Download subtitles (language codes like 'en,cs' or 'all') - `embed_subtitles`: Embed subtitles into video file - `embed_thumbnail`: Embed thumbnail as cover art - `extract_audio`: Extract audio only (ignores video quality) - `cookies`: Browser cookies for age-restricted content (Netscape format) - + * @summary Download video or playlist from URL */ export const apiDownloaderDownloadCreate = ( @@ -252,7 +250,6 @@ export const apiDownloaderDownloadCreate = ( method: "POST", headers: { "Content-Type": "application/json" }, data: downloadRequest, - responseType: "blob", signal, }); }; @@ -322,10 +319,10 @@ export const useApiDownloaderDownloadCreate = < { data: DownloadRequest }, TContext > => { - const mutationOptions = - getApiDownloaderDownloadCreateMutationOptions(options); - - return useMutation(mutationOptions, queryClient); + return useMutation( + getApiDownloaderDownloadCreateMutationOptions(options), + queryClient, + ); }; /** * Vrací agregované statistiky z tabulky DownloaderRecord. @@ -471,7 +468,5 @@ export function useApiDownloaderStatsRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } diff --git a/frontend/src/api/generated/public/models/additionalParam.ts b/frontend/src/api/generated/public/models/additionalParam.ts index e2a84cb..1f749ff 100644 --- a/frontend/src/api/generated/public/models/additionalParam.ts +++ b/frontend/src/api/generated/public/models/additionalParam.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/apiChoicesRetrieve200.ts b/frontend/src/api/generated/public/models/apiChoicesRetrieve200.ts index 86ed6fa..97f3de2 100644 --- a/frontend/src/api/generated/public/models/apiChoicesRetrieve200.ts +++ b/frontend/src/api/generated/public/models/apiChoicesRetrieve200.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/apiChoicesRetrieve200Item.ts b/frontend/src/api/generated/public/models/apiChoicesRetrieve200Item.ts index 3766df4..f738ce5 100644 --- a/frontend/src/api/generated/public/models/apiChoicesRetrieve200Item.ts +++ b/frontend/src/api/generated/public/models/apiChoicesRetrieve200Item.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/apiChoicesRetrieveParams.ts b/frontend/src/api/generated/public/models/apiChoicesRetrieveParams.ts index 877c56f..666a086 100644 --- a/frontend/src/api/generated/public/models/apiChoicesRetrieveParams.ts +++ b/frontend/src/api/generated/public/models/apiChoicesRetrieveParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/apiCommerceCategoriesListParams.ts b/frontend/src/api/generated/public/models/apiCommerceCategoriesListParams.ts index 1382a47..a388bdf 100644 --- a/frontend/src/api/generated/public/models/apiCommerceCategoriesListParams.ts +++ b/frontend/src/api/generated/public/models/apiCommerceCategoriesListParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/apiCommerceDiscountCodesListParams.ts b/frontend/src/api/generated/public/models/apiCommerceDiscountCodesListParams.ts index 632d1f5..ec3f422 100644 --- a/frontend/src/api/generated/public/models/apiCommerceDiscountCodesListParams.ts +++ b/frontend/src/api/generated/public/models/apiCommerceDiscountCodesListParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/apiCommerceOrdersListParams.ts b/frontend/src/api/generated/public/models/apiCommerceOrdersListParams.ts index 6a7dbb3..a8f5d53 100644 --- a/frontend/src/api/generated/public/models/apiCommerceOrdersListParams.ts +++ b/frontend/src/api/generated/public/models/apiCommerceOrdersListParams.ts @@ -1,12 +1,20 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ export type ApiCommerceOrdersListParams = { + /** + * Which field to use when ordering the results. + */ + ordering?: string; /** * A page number within the paginated result set. */ page?: number; + /** + * A search term. + */ + search?: string; }; diff --git a/frontend/src/api/generated/public/models/apiCommerceProductImagesListParams.ts b/frontend/src/api/generated/public/models/apiCommerceProductImagesListParams.ts index c3ad8ed..0e55055 100644 --- a/frontend/src/api/generated/public/models/apiCommerceProductImagesListParams.ts +++ b/frontend/src/api/generated/public/models/apiCommerceProductImagesListParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/apiCommerceProductsListParams.ts b/frontend/src/api/generated/public/models/apiCommerceProductsListParams.ts index 431a4f4..feffe67 100644 --- a/frontend/src/api/generated/public/models/apiCommerceProductsListParams.ts +++ b/frontend/src/api/generated/public/models/apiCommerceProductsListParams.ts @@ -1,10 +1,14 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ export type ApiCommerceProductsListParams = { + category?: number; + created_at?: Date; + is_active?: boolean; + limited_to?: Date; /** * Which field to use when ordering the results. */ @@ -13,8 +17,11 @@ export type ApiCommerceProductsListParams = { * A page number within the paginated result set. */ page?: number; + price?: number; /** * A search term. */ search?: string; + stock?: number; + updated_at?: Date; }; diff --git a/frontend/src/api/generated/public/models/apiConfigurationPublicShopConfigurationListParams.ts b/frontend/src/api/generated/public/models/apiConfigurationPublicShopConfigurationListParams.ts deleted file mode 100644 index f05f0e5..0000000 --- a/frontend/src/api/generated/public/models/apiConfigurationPublicShopConfigurationListParams.ts +++ /dev/null @@ -1,12 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -export type ApiConfigurationPublicShopConfigurationListParams = { - /** - * A page number within the paginated result set. - */ - page?: number; -}; diff --git a/frontend/src/api/generated/public/models/apiDownloaderDownloadRetrieveParams.ts b/frontend/src/api/generated/public/models/apiDownloaderDownloadRetrieveParams.ts index a68c492..9fad926 100644 --- a/frontend/src/api/generated/public/models/apiDownloaderDownloadRetrieveParams.ts +++ b/frontend/src/api/generated/public/models/apiDownloaderDownloadRetrieveParams.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/callback.ts b/frontend/src/api/generated/public/models/callback.ts index bbb23e9..cba0b37 100644 --- a/frontend/src/api/generated/public/models/callback.ts +++ b/frontend/src/api/generated/public/models/callback.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/carrierRead.ts b/frontend/src/api/generated/public/models/carrierRead.ts index bd4227f..6ee1d79 100644 --- a/frontend/src/api/generated/public/models/carrierRead.ts +++ b/frontend/src/api/generated/public/models/carrierRead.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ import type { ShippingMethodEnum } from "./shippingMethodEnum"; -import type { StateFdaEnum } from "./stateFdaEnum"; +import type { State1f6Enum } from "./state1f6Enum"; import type { ZasilkovnaPacketRead } from "./zasilkovnaPacketRead"; export interface CarrierRead { readonly shipping_method: ShippingMethodEnum; - readonly state: StateFdaEnum; + readonly state: State1f6Enum; readonly zasilkovna: readonly ZasilkovnaPacketRead[]; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly shipping_price: string; diff --git a/frontend/src/api/generated/public/models/cart.ts b/frontend/src/api/generated/public/models/cart.ts new file mode 100644 index 0000000..1d29a4f --- /dev/null +++ b/frontend/src/api/generated/public/models/cart.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { CartItem } from "./cartItem"; + +export interface Cart { + readonly id: number; + /** @nullable */ + readonly user: number | null; + readonly items: readonly CartItem[]; + readonly total: string; + readonly items_count: string; + readonly created_at: Date; + readonly updated_at: Date; +} diff --git a/frontend/src/api/generated/public/models/cartItem.ts b/frontend/src/api/generated/public/models/cartItem.ts new file mode 100644 index 0000000..5628399 --- /dev/null +++ b/frontend/src/api/generated/public/models/cartItem.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface CartItem { + readonly id: number; + product: number; + readonly product_name: string; + /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + readonly product_price: string; + /** + * @minimum 0 + * @maximum 9223372036854776000 + */ + quantity?: number; + readonly subtotal: string; + readonly added_at: Date; +} diff --git a/frontend/src/api/generated/public/models/category.ts b/frontend/src/api/generated/public/models/category.ts index a397395..6b1b2f4 100644 --- a/frontend/src/api/generated/public/models/category.ts +++ b/frontend/src/api/generated/public/models/category.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/chat.ts b/frontend/src/api/generated/public/models/chat.ts new file mode 100644 index 0000000..62dda8d --- /dev/null +++ b/frontend/src/api/generated/public/models/chat.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ChatTypeEnum } from "./chatTypeEnum"; + +export interface Chat { + readonly id: number; + chat_type?: ChatTypeEnum; + /** @nullable */ + readonly owner: number | null; + /** @maxLength 255 */ + name?: string; + /** @nullable */ + icon?: string | null; + /** @nullable */ + banner?: string | null; + members?: number[]; + moderators?: number[]; + /** @nullable */ + hub?: number | null; + readonly created_at: Date; + readonly updated_at: Date; +} diff --git a/frontend/src/api/generated/public/models/chatMember.ts b/frontend/src/api/generated/public/models/chatMember.ts new file mode 100644 index 0000000..aaa4538 --- /dev/null +++ b/frontend/src/api/generated/public/models/chatMember.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface ChatMember { + /** PK of the user to add or remove. */ + user_id: number; +} diff --git a/frontend/src/api/generated/public/models/chatTypeEnum.ts b/frontend/src/api/generated/public/models/chatTypeEnum.ts new file mode 100644 index 0000000..73e0a22 --- /dev/null +++ b/frontend/src/api/generated/public/models/chatTypeEnum.ts @@ -0,0 +1,16 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `DM` - Direct Message + * `GROUP` - Group + */ +export type ChatTypeEnum = (typeof ChatTypeEnum)[keyof typeof ChatTypeEnum]; + +export const ChatTypeEnum = { + DM: "DM", + GROUP: "GROUP", +} as const; diff --git a/frontend/src/api/generated/public/models/contact.ts b/frontend/src/api/generated/public/models/contact.ts index 016c510..c7bbd83 100644 --- a/frontend/src/api/generated/public/models/contact.ts +++ b/frontend/src/api/generated/public/models/contact.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/contactMe.ts b/frontend/src/api/generated/public/models/contactMe.ts index 8379b01..7655812 100644 --- a/frontend/src/api/generated/public/models/contactMe.ts +++ b/frontend/src/api/generated/public/models/contactMe.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/currencyEnum.ts b/frontend/src/api/generated/public/models/currencyEnum.ts index d0abaf1..e083db4 100644 --- a/frontend/src/api/generated/public/models/currencyEnum.ts +++ b/frontend/src/api/generated/public/models/currencyEnum.ts @@ -1,17 +1,32 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ /** - * * `CZK` - cz#Czech Koruna - * `EUR` - cz#Euro + * * `EUR` - Euro + * `CZK` - Czech Koruna + * `USD` - US Dollar + * `GBP` - British Pound + * `PLN` - Polish Zloty + * `HUF` - Hungarian Forint + * `SEK` - Swedish Krona + * `DKK` - Danish Krone + * `NOK` - Norwegian Krone + * `CHF` - Swiss Franc */ export type CurrencyEnum = (typeof CurrencyEnum)[keyof typeof CurrencyEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const CurrencyEnum = { - CZK: "CZK", EUR: "EUR", + CZK: "CZK", + USD: "USD", + GBP: "GBP", + PLN: "PLN", + HUF: "HUF", + SEK: "SEK", + DKK: "DKK", + NOK: "NOK", + CHF: "CHF", } as const; diff --git a/frontend/src/api/generated/public/models/customTokenObtainPair.ts b/frontend/src/api/generated/public/models/customTokenObtainPair.ts index 95a29ed..ba09059 100644 --- a/frontend/src/api/generated/public/models/customTokenObtainPair.ts +++ b/frontend/src/api/generated/public/models/customTokenObtainPair.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/customUser.ts b/frontend/src/api/generated/public/models/customUser.ts index f48e6a2..33d34d2 100644 --- a/frontend/src/api/generated/public/models/customUser.ts +++ b/frontend/src/api/generated/public/models/customUser.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/deutschePostBulkOrder.ts b/frontend/src/api/generated/public/models/deutschePostBulkOrder.ts new file mode 100644 index 0000000..d3008f2 --- /dev/null +++ b/frontend/src/api/generated/public/models/deutschePostBulkOrder.ts @@ -0,0 +1,47 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostBulkOrderStatusEnum } from "./deutschePostBulkOrderStatusEnum"; + +export interface DeutschePostBulkOrder { + readonly id: number; + readonly created_at: Date; + status?: DeutschePostBulkOrderStatusEnum; + readonly status_display: string; + /** + * Deutsche Post bulk order ID from API + * @nullable + */ + readonly bulk_order_id: string | null; + /** + * MIXED_BAG, etc. + * @maxLength 20 + */ + bulk_order_type?: string; + /** @maxLength 255 */ + description?: string; + readonly deutschepost_orders: readonly number[]; + /** List of DeutschePostOrder IDs to include in bulk order */ + deutschepost_order_ids: number[]; + readonly orders_count: string; + readonly total_weight_kg: string; + readonly tracking_url: string; + readonly status_url: string; + readonly can_be_cancelled: string; + /** + * Bulk shipment label PDF + * @nullable + */ + readonly bulk_label_pdf: string | null; + /** + * Bulk shipment paperwork PDF + * @nullable + */ + readonly paperwork_pdf: string | null; + /** Raw API response data */ + readonly metadata: unknown; + /** Last API error message */ + readonly last_error: string; +} diff --git a/frontend/src/api/generated/public/models/deutschePostBulkOrderStatusEnum.ts b/frontend/src/api/generated/public/models/deutschePostBulkOrderStatusEnum.ts new file mode 100644 index 0000000..2fef2c6 --- /dev/null +++ b/frontend/src/api/generated/public/models/deutschePostBulkOrderStatusEnum.ts @@ -0,0 +1,21 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `CREATED` - Vytvořeno + * `PROCESSING` - Zpracovává se + * `COMPLETED` - Dokončeno + * `ERROR` - Chyba + */ +export type DeutschePostBulkOrderStatusEnum = + (typeof DeutschePostBulkOrderStatusEnum)[keyof typeof DeutschePostBulkOrderStatusEnum]; + +export const DeutschePostBulkOrderStatusEnum = { + CREATED: "CREATED", + PROCESSING: "PROCESSING", + COMPLETED: "COMPLETED", + ERROR: "ERROR", +} as const; diff --git a/frontend/src/api/generated/public/models/deutschePostOrder.ts b/frontend/src/api/generated/public/models/deutschePostOrder.ts new file mode 100644 index 0000000..1217134 --- /dev/null +++ b/frontend/src/api/generated/public/models/deutschePostOrder.ts @@ -0,0 +1,113 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostOrderStateEnum } from "./deutschePostOrderStateEnum"; +import type { LabelSizeEnum } from "./labelSizeEnum"; + +export interface DeutschePostOrder { + readonly id: number; + readonly created_at: Date; + state?: DeutschePostOrderStateEnum; + readonly state_display: string; + /** + * Deutsche Post order ID from API + * @nullable + */ + readonly order_id: string | null; + /** + * @maxLength 20 + * @nullable + */ + customer_ekp?: string | null; + /** @maxLength 200 */ + recipient_name: string; + /** @maxLength 20 */ + recipient_phone?: string; + /** @maxLength 254 */ + recipient_email?: string; + /** @maxLength 255 */ + address_line1: string; + /** @maxLength 255 */ + address_line2?: string; + /** @maxLength 255 */ + address_line3?: string; + /** @maxLength 100 */ + city: string; + /** + * State/Province for shipping address + * @maxLength 100 + */ + address_state?: string; + /** @maxLength 20 */ + postal_code: string; + /** + * ISO 2-letter country code + * @maxLength 2 + */ + destination_country: string; + /** + * Deutsche Post product type (GPT, GMP, etc.) + * @maxLength 10 + */ + product_type?: string; + /** + * PRIORITY, STANDARD + * @maxLength 20 + */ + service_level?: string; + /** + * Weight in grams + * @minimum 0 + * @maximum 9223372036854776000 + */ + shipment_gross_weight: number; + /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + shipment_amount?: string; + /** @maxLength 3 */ + shipment_currency?: string; + /** + * IOSS number or sender tax ID + * @maxLength 50 + */ + sender_tax_id?: string; + /** + * IOSS number or importer tax ID + * @maxLength 50 + */ + importer_tax_id?: string; + return_item_wanted?: boolean; + /** + * Customer reference + * @maxLength 100 + */ + cust_ref?: string; + /** + * Air Waybill number + * @nullable + */ + readonly awb_number: string | null; + /** + * Item barcode + * @nullable + */ + readonly barcode: string | null; + readonly tracking_url: string; + /** + * Shipping label PDF + * @nullable + */ + readonly label_pdf: string | null; + label_size?: LabelSizeEnum; + readonly label_size_display: string; + /** Raw API response data */ + readonly metadata: unknown; + /** Last API error message */ + readonly last_error: string; + readonly estimated_delivery_days: string; + readonly shipping_cost_estimate: string; + readonly can_be_finalized: string; + readonly can_be_cancelled: string; + readonly is_trackable: string; +} diff --git a/frontend/src/api/generated/public/models/deutschePostOrderStateEnum.ts b/frontend/src/api/generated/public/models/deutschePostOrderStateEnum.ts new file mode 100644 index 0000000..2302d0b --- /dev/null +++ b/frontend/src/api/generated/public/models/deutschePostOrderStateEnum.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `CREATED` - Vytvořeno + * `FINALIZED` - Dokončeno + * `SHIPPED` - Odesláno + * `DELIVERED` - Doručeno + * `CANCELLED` - Zrušeno + * `ERROR` - Chyba + */ +export type DeutschePostOrderStateEnum = + (typeof DeutschePostOrderStateEnum)[keyof typeof DeutschePostOrderStateEnum]; + +export const DeutschePostOrderStateEnum = { + CREATED: "CREATED", + FINALIZED: "FINALIZED", + SHIPPED: "SHIPPED", + DELIVERED: "DELIVERED", + CANCELLED: "CANCELLED", + ERROR: "ERROR", +} as const; diff --git a/frontend/src/api/generated/public/models/deutschePostTracking.ts b/frontend/src/api/generated/public/models/deutschePostTracking.ts new file mode 100644 index 0000000..7d73f53 --- /dev/null +++ b/frontend/src/api/generated/public/models/deutschePostTracking.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * Serializer for tracking information response. + */ +export interface DeutschePostTracking { + readonly order_id: string; + readonly awb_number: string; + readonly barcode: string; + readonly tracking_url: string; + readonly state: string; + readonly last_updated: Date; + readonly tracking_events: unknown; +} diff --git a/frontend/src/api/generated/public/models/discountCode.ts b/frontend/src/api/generated/public/models/discountCode.ts index 298445a..72ab4b1 100644 --- a/frontend/src/api/generated/public/models/discountCode.ts +++ b/frontend/src/api/generated/public/models/discountCode.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -18,7 +18,7 @@ export interface DiscountCode { */ percent?: number | null; /** - * Fixní sleva v CZK + * Fixed discount amount in site currency * @nullable * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ diff --git a/frontend/src/api/generated/public/models/downloadErrorResponse.ts b/frontend/src/api/generated/public/models/downloadErrorResponse.ts index 8724fdb..a594850 100644 --- a/frontend/src/api/generated/public/models/downloadErrorResponse.ts +++ b/frontend/src/api/generated/public/models/downloadErrorResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/downloadRequest.ts b/frontend/src/api/generated/public/models/downloadRequest.ts index 72d0110..ac37487 100644 --- a/frontend/src/api/generated/public/models/downloadRequest.ts +++ b/frontend/src/api/generated/public/models/downloadRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/downloaderStats.ts b/frontend/src/api/generated/public/models/downloaderStats.ts index 28a7e0c..d478131 100644 --- a/frontend/src/api/generated/public/models/downloaderStats.ts +++ b/frontend/src/api/generated/public/models/downloaderStats.ts @@ -1,19 +1,36 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ +import type { PlatformCount } from "./platformCount"; +import type { QualityCount } from "./qualityCount"; +import type { TimeseriesPoint } from "./timeseriesPoint"; +import type { TopUrl } from "./topUrl"; export interface DownloaderStats { total_downloads: number; + successful_downloads: number; + failed_downloads: number; + /** Percentage 0-100 */ + success_rate: number; /** @nullable */ avg_length_of_media: number | null; /** @nullable */ - avg_file_size: number | null; - /** @nullable */ total_length_of_media: number | null; /** @nullable */ + avg_file_size: number | null; + /** @nullable */ total_file_size: number | null; /** @nullable */ + avg_processing_time: number | null; + /** @nullable */ most_common_format: string | null; + audio_only_count: number; + video_count: number; + downloads_by_platform: PlatformCount[]; + downloads_by_quality: QualityCount[]; + most_downloaded_urls: TopUrl[]; + downloads_per_day: TimeseriesPoint[]; + downloads_per_hour: TimeseriesPoint[]; } diff --git a/frontend/src/api/generated/public/models/errorResponse.ts b/frontend/src/api/generated/public/models/errorResponse.ts index 2647109..5ebe265 100644 --- a/frontend/src/api/generated/public/models/errorResponse.ts +++ b/frontend/src/api/generated/public/models/errorResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/hub.ts b/frontend/src/api/generated/public/models/hub.ts new file mode 100644 index 0000000..7b13b3f --- /dev/null +++ b/frontend/src/api/generated/public/models/hub.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { HubPermission } from "./hubPermission"; +import type { Tags } from "./tags"; + +export interface Hub { + readonly id: number; + /** @maxLength 255 */ + name: string; + /** @nullable */ + description?: string | null; + /** @nullable */ + readonly owner: number | null; + /** @nullable */ + icon?: string | null; + /** @nullable */ + banner?: string | null; + members?: number[]; + is_public?: boolean; + readonly tags: readonly Tags[]; + readonly moderators: readonly HubPermission[]; +} diff --git a/frontend/src/api/generated/public/models/hubPermission.ts b/frontend/src/api/generated/public/models/hubPermission.ts new file mode 100644 index 0000000..a24144b --- /dev/null +++ b/frontend/src/api/generated/public/models/hubPermission.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface HubPermission { + readonly id: number; + user: number; + changing_name?: boolean; + changing_description?: boolean; + changing_icon?: boolean; + changing_banner?: boolean; + managing_members?: boolean; + managing_posts?: boolean; + managing_chats?: boolean; +} diff --git a/frontend/src/api/generated/public/models/index.ts b/frontend/src/api/generated/public/models/index.ts index 609b709..976747b 100644 --- a/frontend/src/api/generated/public/models/index.ts +++ b/frontend/src/api/generated/public/models/index.ts @@ -1,34 +1,51 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ export * from "./additionalParam"; -export * from "./apiChoicesRetrieve200"; -export * from "./apiChoicesRetrieve200Item"; -export * from "./apiChoicesRetrieveParams"; export * from "./apiCommerceCategoriesListParams"; export * from "./apiCommerceDiscountCodesListParams"; export * from "./apiCommerceOrdersListParams"; export * from "./apiCommerceProductImagesListParams"; export * from "./apiCommerceProductsListParams"; -export * from "./apiConfigurationPublicShopConfigurationListParams"; export * from "./apiDownloaderDownloadRetrieveParams"; +export * from "./apiChoicesRetrieve200"; +export * from "./apiChoicesRetrieve200Item"; +export * from "./apiChoicesRetrieveParams"; export * from "./callback"; export * from "./carrierRead"; +export * from "./cart"; +export * from "./cartItem"; export * from "./category"; export * from "./contact"; export * from "./contactMe"; export * from "./currencyEnum"; export * from "./customTokenObtainPair"; export * from "./customUser"; +export * from "./deutschePostBulkOrder"; +export * from "./deutschePostBulkOrderStatusEnum"; +export * from "./deutschePostOrder"; +export * from "./deutschePostOrderStateEnum"; +export * from "./deutschePostTracking"; export * from "./discountCode"; export * from "./downloadErrorResponse"; -export * from "./downloadRequest"; export * from "./downloaderStats"; +export * from "./downloadRequest"; export * from "./errorResponse"; +export * from "./hub"; +export * from "./hubPermission"; +export * from "./chat"; +export * from "./chatMember"; +export * from "./chatTypeEnum"; export * from "./item"; +export * from "./labelSizeEnum"; +export * from "./mediaTypeEnum"; +export * from "./message"; +export * from "./messageFile"; +export * from "./messageReaction"; +export * from "./messageSend"; export * from "./orderCarrier"; export * from "./orderCreate"; export * from "./orderItemCreate"; @@ -38,52 +55,83 @@ export * from "./orderRead"; export * from "./paginatedCategoryList"; export * from "./paginatedContactMeList"; export * from "./paginatedCustomUserList"; +export * from "./paginatedDeutschePostBulkOrderList"; +export * from "./paginatedDeutschePostOrderList"; export * from "./paginatedDiscountCodeList"; +export * from "./paginatedHubList"; +export * from "./paginatedHubPermissionList"; +export * from "./paginatedChatList"; +export * from "./paginatedMessageList"; export * from "./paginatedOrderReadList"; +export * from "./paginatedPostList"; export * from "./paginatedProductImageList"; export * from "./paginatedProductList"; export * from "./paginatedRefundList"; -export * from "./paginatedSiteConfigurationAdminList"; -export * from "./paginatedSiteConfigurationPublicList"; +export * from "./paginatedReviewSerializerPublicList"; +export * from "./paginatedSiteConfigurationList"; +export * from "./paginatedTagsList"; +export * from "./paginatedVATRateList"; +export * from "./paginatedWishlistList"; export * from "./paginatedZasilkovnaShipmentList"; export * from "./passwordResetConfirm"; export * from "./passwordResetRequest"; +export * from "./patchedCart"; export * from "./patchedCategory"; export * from "./patchedContactMe"; export * from "./patchedCustomUser"; +export * from "./patchedDeutschePostOrder"; export * from "./patchedDiscountCode"; +export * from "./patchedHub"; +export * from "./patchedHubPermission"; +export * from "./patchedChat"; +export * from "./patchedMessage"; export * from "./patchedOrderRead"; +export * from "./patchedPost"; export * from "./patchedProduct"; export * from "./patchedProductImage"; export * from "./patchedRefund"; -export * from "./patchedSiteConfigurationAdmin"; -export * from "./patchedSiteConfigurationAdminOpeningHours"; +export * from "./patchedReviewSerializerPublic"; +export * from "./patchedSiteConfiguration"; +export * from "./patchedTags"; +export * from "./patchedVATRate"; +export * from "./patchedWishlist"; export * from "./payer"; export * from "./payment"; export * from "./paymentBody"; export * from "./paymentCreate"; export * from "./paymentMethodEnum"; export * from "./paymentRead"; +export * from "./platformCount"; +export * from "./post"; +export * from "./postContent"; +export * from "./postVote"; export * from "./product"; export * from "./productImage"; export * from "./productMini"; +export * from "./productMiniForWishlist"; +export * from "./qualityCount"; export * from "./reasonChoiceEnum"; export * from "./refund"; +export * from "./reviewSerializerPublic"; export * from "./roleEnum"; export * from "./shippingMethodEnum"; -export * from "./siteConfigurationAdmin"; -export * from "./siteConfigurationAdminOpeningHours"; -export * from "./siteConfigurationPublic"; -export * from "./siteConfigurationPublicOpeningHours"; -export * from "./stateE15Enum"; -export * from "./stateFdaEnum"; -export * from "./statusEnum"; +export * from "./siteConfiguration"; +export * from "./state1f6Enum"; +export * from "./stateCdfEnum"; +export * from "./statusD4fEnum"; +export * from "./tagAttach"; +export * from "./tags"; +export * from "./timeseriesPoint"; +export * from "./topUrl"; export * from "./trackingURL"; +export * from "./transferInit"; +export * from "./transferVerify"; export * from "./userRegistration"; +export * from "./vATRate"; export * from "./videoInfo"; export * from "./videoInfoResponse"; +export * from "./voteEnum"; +export * from "./wishlist"; export * from "./zasilkovnaPacket"; export * from "./zasilkovnaPacketRead"; -export * from "./zasilkovnaPacketReadReturnRouting"; -export * from "./zasilkovnaPacketReturnRouting"; export * from "./zasilkovnaShipment"; diff --git a/frontend/src/api/generated/public/models/item.ts b/frontend/src/api/generated/public/models/item.ts index c7a7c1e..dbf990c 100644 --- a/frontend/src/api/generated/public/models/item.ts +++ b/frontend/src/api/generated/public/models/item.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/labelSizeEnum.ts b/frontend/src/api/generated/public/models/labelSizeEnum.ts new file mode 100644 index 0000000..2398c6b --- /dev/null +++ b/frontend/src/api/generated/public/models/labelSizeEnum.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `A4` - A4 (210x297mm) + * `A5` - A5 (148x210mm) + * `A6` - A6 (105x148mm) + */ +export type LabelSizeEnum = (typeof LabelSizeEnum)[keyof typeof LabelSizeEnum]; + +export const LabelSizeEnum = { + A4: "A4", + A5: "A5", + A6: "A6", +} as const; diff --git a/frontend/src/api/generated/public/models/mediaTypeEnum.ts b/frontend/src/api/generated/public/models/mediaTypeEnum.ts new file mode 100644 index 0000000..66161ba --- /dev/null +++ b/frontend/src/api/generated/public/models/mediaTypeEnum.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `IMAGE` - Image + * `VIDEO` - Video + * `FILE` - File + */ +export type MediaTypeEnum = (typeof MediaTypeEnum)[keyof typeof MediaTypeEnum]; + +export const MediaTypeEnum = { + IMAGE: "IMAGE", + VIDEO: "VIDEO", + FILE: "FILE", +} as const; diff --git a/frontend/src/api/generated/public/models/message.ts b/frontend/src/api/generated/public/models/message.ts new file mode 100644 index 0000000..a8f6185 --- /dev/null +++ b/frontend/src/api/generated/public/models/message.ts @@ -0,0 +1,24 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { MessageFile } from "./messageFile"; +import type { MessageReaction } from "./messageReaction"; + +export interface Message { + readonly id: number; + readonly chat: number; + /** @nullable */ + readonly sender: number | null; + /** @nullable */ + readonly reply_to: number | null; + content?: string; + readonly is_edited: boolean; + /** @nullable */ + readonly edited_at: Date | null; + readonly created_at: Date; + readonly updated_at: Date; + readonly media_files: readonly MessageFile[]; + readonly reactions: readonly MessageReaction[]; +} diff --git a/frontend/src/api/generated/public/models/messageFile.ts b/frontend/src/api/generated/public/models/messageFile.ts new file mode 100644 index 0000000..89dae48 --- /dev/null +++ b/frontend/src/api/generated/public/models/messageFile.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { MediaTypeEnum } from "./mediaTypeEnum"; + +export interface MessageFile { + readonly id: number; + file: string; + media_type?: MediaTypeEnum; + readonly uploaded_at: Date; +} diff --git a/frontend/src/api/generated/public/models/messageReaction.ts b/frontend/src/api/generated/public/models/messageReaction.ts new file mode 100644 index 0000000..dedabeb --- /dev/null +++ b/frontend/src/api/generated/public/models/messageReaction.ts @@ -0,0 +1,13 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface MessageReaction { + readonly id: number; + readonly user: number; + /** @maxLength 10 */ + emoji: string; + readonly created_at: Date; +} diff --git a/frontend/src/api/generated/public/models/messageSend.ts b/frontend/src/api/generated/public/models/messageSend.ts new file mode 100644 index 0000000..6c4d750 --- /dev/null +++ b/frontend/src/api/generated/public/models/messageSend.ts @@ -0,0 +1,16 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * Used for the HTTP send endpoint (text + optional files). + */ +export interface MessageSend { + chat: number; + content?: string; + /** @nullable */ + reply_to?: number | null; + files?: string[]; +} diff --git a/frontend/src/api/generated/public/models/orderCarrier.ts b/frontend/src/api/generated/public/models/orderCarrier.ts index 2ae43b4..0a45a2a 100644 --- a/frontend/src/api/generated/public/models/orderCarrier.ts +++ b/frontend/src/api/generated/public/models/orderCarrier.ts @@ -1,15 +1,15 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ import type { ShippingMethodEnum } from "./shippingMethodEnum"; -import type { StateFdaEnum } from "./stateFdaEnum"; +import type { State1f6Enum } from "./state1f6Enum"; import type { ZasilkovnaPacket } from "./zasilkovnaPacket"; export interface OrderCarrier { shipping_method?: ShippingMethodEnum; - readonly state: StateFdaEnum; + readonly state: State1f6Enum; readonly zasilkovna: readonly ZasilkovnaPacket[]; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly shipping_price: string; diff --git a/frontend/src/api/generated/public/models/orderCreate.ts b/frontend/src/api/generated/public/models/orderCreate.ts index acd9220..c3a182c 100644 --- a/frontend/src/api/generated/public/models/orderCreate.ts +++ b/frontend/src/api/generated/public/models/orderCreate.ts @@ -1,10 +1,10 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { OrderItemCreate } from "./orderItemCreate"; import type { OrderCarrier } from "./orderCarrier"; +import type { OrderItemCreate } from "./orderItemCreate"; import type { Payment } from "./payment"; export interface OrderCreate { diff --git a/frontend/src/api/generated/public/models/orderItemCreate.ts b/frontend/src/api/generated/public/models/orderItemCreate.ts index 5618bd6..ed4fc15 100644 --- a/frontend/src/api/generated/public/models/orderItemCreate.ts +++ b/frontend/src/api/generated/public/models/orderItemCreate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/orderItemRead.ts b/frontend/src/api/generated/public/models/orderItemRead.ts index ac483dc..765c0c9 100644 --- a/frontend/src/api/generated/public/models/orderItemRead.ts +++ b/frontend/src/api/generated/public/models/orderItemRead.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/orderMini.ts b/frontend/src/api/generated/public/models/orderMini.ts index b1f8b74..281484a 100644 --- a/frontend/src/api/generated/public/models/orderMini.ts +++ b/frontend/src/api/generated/public/models/orderMini.ts @@ -1,13 +1,13 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StatusEnum } from "./statusEnum"; +import type { StatusD4fEnum } from "./statusD4fEnum"; export interface OrderMini { readonly id: number; - readonly status: StatusEnum; + readonly status: StatusD4fEnum; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly total_price: string; readonly created_at: Date; diff --git a/frontend/src/api/generated/public/models/orderRead.ts b/frontend/src/api/generated/public/models/orderRead.ts index 4c6f2fa..8e55a98 100644 --- a/frontend/src/api/generated/public/models/orderRead.ts +++ b/frontend/src/api/generated/public/models/orderRead.ts @@ -1,18 +1,19 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StatusEnum } from "./statusEnum"; -import type { OrderItemRead } from "./orderItemRead"; import type { CarrierRead } from "./carrierRead"; +import type { OrderItemRead } from "./orderItemRead"; import type { PaymentRead } from "./paymentRead"; +import type { StatusD4fEnum } from "./statusD4fEnum"; export interface OrderRead { readonly id: number; - readonly status: StatusEnum; + readonly status: StatusD4fEnum; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly total_price: string; + /** Order currency - captured from site configuration at order creation and never changes */ readonly currency: string; /** @nullable */ readonly user: number | null; diff --git a/frontend/src/api/generated/public/models/paginatedCategoryList.ts b/frontend/src/api/generated/public/models/paginatedCategoryList.ts index 2f1b588..5157819 100644 --- a/frontend/src/api/generated/public/models/paginatedCategoryList.ts +++ b/frontend/src/api/generated/public/models/paginatedCategoryList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paginatedChatList.ts b/frontend/src/api/generated/public/models/paginatedChatList.ts new file mode 100644 index 0000000..c36f657 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedChatList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Chat } from "./chat"; + +export interface PaginatedChatList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Chat[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedContactMeList.ts b/frontend/src/api/generated/public/models/paginatedContactMeList.ts index a21a2c2..49d47e4 100644 --- a/frontend/src/api/generated/public/models/paginatedContactMeList.ts +++ b/frontend/src/api/generated/public/models/paginatedContactMeList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paginatedCustomUserList.ts b/frontend/src/api/generated/public/models/paginatedCustomUserList.ts index a48846d..154544e 100644 --- a/frontend/src/api/generated/public/models/paginatedCustomUserList.ts +++ b/frontend/src/api/generated/public/models/paginatedCustomUserList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paginatedDeutschePostBulkOrderList.ts b/frontend/src/api/generated/public/models/paginatedDeutschePostBulkOrderList.ts new file mode 100644 index 0000000..1631746 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedDeutschePostBulkOrderList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostBulkOrder } from "./deutschePostBulkOrder"; + +export interface PaginatedDeutschePostBulkOrderList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: DeutschePostBulkOrder[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedDeutschePostOrderList.ts b/frontend/src/api/generated/public/models/paginatedDeutschePostOrderList.ts new file mode 100644 index 0000000..b58e014 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedDeutschePostOrderList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostOrder } from "./deutschePostOrder"; + +export interface PaginatedDeutschePostOrderList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: DeutschePostOrder[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedDiscountCodeList.ts b/frontend/src/api/generated/public/models/paginatedDiscountCodeList.ts index 99ae666..ebcdfbf 100644 --- a/frontend/src/api/generated/public/models/paginatedDiscountCodeList.ts +++ b/frontend/src/api/generated/public/models/paginatedDiscountCodeList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paginatedHubList.ts b/frontend/src/api/generated/public/models/paginatedHubList.ts new file mode 100644 index 0000000..9111969 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedHubList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Hub } from "./hub"; + +export interface PaginatedHubList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Hub[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedHubPermissionList.ts b/frontend/src/api/generated/public/models/paginatedHubPermissionList.ts new file mode 100644 index 0000000..b65901e --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedHubPermissionList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { HubPermission } from "./hubPermission"; + +export interface PaginatedHubPermissionList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: HubPermission[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedMessageList.ts b/frontend/src/api/generated/public/models/paginatedMessageList.ts new file mode 100644 index 0000000..0aa2cb2 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedMessageList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Message } from "./message"; + +export interface PaginatedMessageList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Message[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedOrderReadList.ts b/frontend/src/api/generated/public/models/paginatedOrderReadList.ts index 0a71522..45f0dfb 100644 --- a/frontend/src/api/generated/public/models/paginatedOrderReadList.ts +++ b/frontend/src/api/generated/public/models/paginatedOrderReadList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paginatedPostList.ts b/frontend/src/api/generated/public/models/paginatedPostList.ts new file mode 100644 index 0000000..e5458e8 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedPostList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Post } from "./post"; + +export interface PaginatedPostList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Post[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedProductImageList.ts b/frontend/src/api/generated/public/models/paginatedProductImageList.ts index 9074e50..b14d444 100644 --- a/frontend/src/api/generated/public/models/paginatedProductImageList.ts +++ b/frontend/src/api/generated/public/models/paginatedProductImageList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paginatedProductList.ts b/frontend/src/api/generated/public/models/paginatedProductList.ts index 86ec08a..9e9a4e1 100644 --- a/frontend/src/api/generated/public/models/paginatedProductList.ts +++ b/frontend/src/api/generated/public/models/paginatedProductList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paginatedRefundList.ts b/frontend/src/api/generated/public/models/paginatedRefundList.ts index b76cf5e..ba3ee9b 100644 --- a/frontend/src/api/generated/public/models/paginatedRefundList.ts +++ b/frontend/src/api/generated/public/models/paginatedRefundList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paginatedReviewSerializerPublicList.ts b/frontend/src/api/generated/public/models/paginatedReviewSerializerPublicList.ts new file mode 100644 index 0000000..abcb168 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedReviewSerializerPublicList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ReviewSerializerPublic } from "./reviewSerializerPublic"; + +export interface PaginatedReviewSerializerPublicList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: ReviewSerializerPublic[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedSiteConfigurationAdminList.ts b/frontend/src/api/generated/public/models/paginatedSiteConfigurationAdminList.ts deleted file mode 100644 index 22334d9..0000000 --- a/frontend/src/api/generated/public/models/paginatedSiteConfigurationAdminList.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ -import type { SiteConfigurationAdmin } from "./siteConfigurationAdmin"; - -export interface PaginatedSiteConfigurationAdminList { - count: number; - /** @nullable */ - next?: string | null; - /** @nullable */ - previous?: string | null; - results: SiteConfigurationAdmin[]; -} diff --git a/frontend/src/api/generated/public/models/paginatedSiteConfigurationList.ts b/frontend/src/api/generated/public/models/paginatedSiteConfigurationList.ts new file mode 100644 index 0000000..8ceadf3 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedSiteConfigurationList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { SiteConfiguration } from "./siteConfiguration"; + +export interface PaginatedSiteConfigurationList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: SiteConfiguration[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedSiteConfigurationPublicList.ts b/frontend/src/api/generated/public/models/paginatedSiteConfigurationPublicList.ts deleted file mode 100644 index 1f221bb..0000000 --- a/frontend/src/api/generated/public/models/paginatedSiteConfigurationPublicList.ts +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ -import type { SiteConfigurationPublic } from "./siteConfigurationPublic"; - -export interface PaginatedSiteConfigurationPublicList { - count: number; - /** @nullable */ - next?: string | null; - /** @nullable */ - previous?: string | null; - results: SiteConfigurationPublic[]; -} diff --git a/frontend/src/api/generated/public/models/paginatedTagsList.ts b/frontend/src/api/generated/public/models/paginatedTagsList.ts new file mode 100644 index 0000000..67b9e5c --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedTagsList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Tags } from "./tags"; + +export interface PaginatedTagsList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Tags[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedVATRateList.ts b/frontend/src/api/generated/public/models/paginatedVATRateList.ts new file mode 100644 index 0000000..4558e38 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedVATRateList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { VATRate } from "./vATRate"; + +export interface PaginatedVATRateList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: VATRate[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedWishlistList.ts b/frontend/src/api/generated/public/models/paginatedWishlistList.ts new file mode 100644 index 0000000..cc6eda3 --- /dev/null +++ b/frontend/src/api/generated/public/models/paginatedWishlistList.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { Wishlist } from "./wishlist"; + +export interface PaginatedWishlistList { + count: number; + /** @nullable */ + next?: string | null; + /** @nullable */ + previous?: string | null; + results: Wishlist[]; +} diff --git a/frontend/src/api/generated/public/models/paginatedZasilkovnaShipmentList.ts b/frontend/src/api/generated/public/models/paginatedZasilkovnaShipmentList.ts index d7dc36a..bf9a74d 100644 --- a/frontend/src/api/generated/public/models/paginatedZasilkovnaShipmentList.ts +++ b/frontend/src/api/generated/public/models/paginatedZasilkovnaShipmentList.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/passwordResetConfirm.ts b/frontend/src/api/generated/public/models/passwordResetConfirm.ts index 05b6555..9bfd302 100644 --- a/frontend/src/api/generated/public/models/passwordResetConfirm.ts +++ b/frontend/src/api/generated/public/models/passwordResetConfirm.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/passwordResetRequest.ts b/frontend/src/api/generated/public/models/passwordResetRequest.ts index 5a0bd8d..959f63b 100644 --- a/frontend/src/api/generated/public/models/passwordResetRequest.ts +++ b/frontend/src/api/generated/public/models/passwordResetRequest.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/patchedCart.ts b/frontend/src/api/generated/public/models/patchedCart.ts new file mode 100644 index 0000000..38f92ba --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedCart.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { CartItem } from "./cartItem"; + +export interface PatchedCart { + readonly id?: number; + /** @nullable */ + readonly user?: number | null; + readonly items?: readonly CartItem[]; + readonly total?: string; + readonly items_count?: string; + readonly created_at?: Date; + readonly updated_at?: Date; +} diff --git a/frontend/src/api/generated/public/models/patchedCategory.ts b/frontend/src/api/generated/public/models/patchedCategory.ts index 419d2dd..4f56307 100644 --- a/frontend/src/api/generated/public/models/patchedCategory.ts +++ b/frontend/src/api/generated/public/models/patchedCategory.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/patchedChat.ts b/frontend/src/api/generated/public/models/patchedChat.ts new file mode 100644 index 0000000..8e3c89b --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedChat.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ChatTypeEnum } from "./chatTypeEnum"; + +export interface PatchedChat { + readonly id?: number; + chat_type?: ChatTypeEnum; + /** @nullable */ + readonly owner?: number | null; + /** @maxLength 255 */ + name?: string; + /** @nullable */ + icon?: string | null; + /** @nullable */ + banner?: string | null; + members?: number[]; + moderators?: number[]; + /** @nullable */ + hub?: number | null; + readonly created_at?: Date; + readonly updated_at?: Date; +} diff --git a/frontend/src/api/generated/public/models/patchedContactMe.ts b/frontend/src/api/generated/public/models/patchedContactMe.ts index c3201fd..8566aa0 100644 --- a/frontend/src/api/generated/public/models/patchedContactMe.ts +++ b/frontend/src/api/generated/public/models/patchedContactMe.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/patchedCustomUser.ts b/frontend/src/api/generated/public/models/patchedCustomUser.ts index 3078778..6e86887 100644 --- a/frontend/src/api/generated/public/models/patchedCustomUser.ts +++ b/frontend/src/api/generated/public/models/patchedCustomUser.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/patchedDeutschePostOrder.ts b/frontend/src/api/generated/public/models/patchedDeutschePostOrder.ts new file mode 100644 index 0000000..989cffb --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedDeutschePostOrder.ts @@ -0,0 +1,113 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { DeutschePostOrderStateEnum } from "./deutschePostOrderStateEnum"; +import type { LabelSizeEnum } from "./labelSizeEnum"; + +export interface PatchedDeutschePostOrder { + readonly id?: number; + readonly created_at?: Date; + state?: DeutschePostOrderStateEnum; + readonly state_display?: string; + /** + * Deutsche Post order ID from API + * @nullable + */ + readonly order_id?: string | null; + /** + * @maxLength 20 + * @nullable + */ + customer_ekp?: string | null; + /** @maxLength 200 */ + recipient_name?: string; + /** @maxLength 20 */ + recipient_phone?: string; + /** @maxLength 254 */ + recipient_email?: string; + /** @maxLength 255 */ + address_line1?: string; + /** @maxLength 255 */ + address_line2?: string; + /** @maxLength 255 */ + address_line3?: string; + /** @maxLength 100 */ + city?: string; + /** + * State/Province for shipping address + * @maxLength 100 + */ + address_state?: string; + /** @maxLength 20 */ + postal_code?: string; + /** + * ISO 2-letter country code + * @maxLength 2 + */ + destination_country?: string; + /** + * Deutsche Post product type (GPT, GMP, etc.) + * @maxLength 10 + */ + product_type?: string; + /** + * PRIORITY, STANDARD + * @maxLength 20 + */ + service_level?: string; + /** + * Weight in grams + * @minimum 0 + * @maximum 9223372036854776000 + */ + shipment_gross_weight?: number; + /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + shipment_amount?: string; + /** @maxLength 3 */ + shipment_currency?: string; + /** + * IOSS number or sender tax ID + * @maxLength 50 + */ + sender_tax_id?: string; + /** + * IOSS number or importer tax ID + * @maxLength 50 + */ + importer_tax_id?: string; + return_item_wanted?: boolean; + /** + * Customer reference + * @maxLength 100 + */ + cust_ref?: string; + /** + * Air Waybill number + * @nullable + */ + readonly awb_number?: string | null; + /** + * Item barcode + * @nullable + */ + readonly barcode?: string | null; + readonly tracking_url?: string; + /** + * Shipping label PDF + * @nullable + */ + readonly label_pdf?: string | null; + label_size?: LabelSizeEnum; + readonly label_size_display?: string; + /** Raw API response data */ + readonly metadata?: unknown; + /** Last API error message */ + readonly last_error?: string; + readonly estimated_delivery_days?: string; + readonly shipping_cost_estimate?: string; + readonly can_be_finalized?: string; + readonly can_be_cancelled?: string; + readonly is_trackable?: string; +} diff --git a/frontend/src/api/generated/public/models/patchedDiscountCode.ts b/frontend/src/api/generated/public/models/patchedDiscountCode.ts index 81092bb..cc30648 100644 --- a/frontend/src/api/generated/public/models/patchedDiscountCode.ts +++ b/frontend/src/api/generated/public/models/patchedDiscountCode.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -18,7 +18,7 @@ export interface PatchedDiscountCode { */ percent?: number | null; /** - * Fixní sleva v CZK + * Fixed discount amount in site currency * @nullable * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ diff --git a/frontend/src/api/generated/public/models/patchedHub.ts b/frontend/src/api/generated/public/models/patchedHub.ts new file mode 100644 index 0000000..859a9fe --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedHub.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { HubPermission } from "./hubPermission"; +import type { Tags } from "./tags"; + +export interface PatchedHub { + readonly id?: number; + /** @maxLength 255 */ + name?: string; + /** @nullable */ + description?: string | null; + /** @nullable */ + readonly owner?: number | null; + /** @nullable */ + icon?: string | null; + /** @nullable */ + banner?: string | null; + members?: number[]; + is_public?: boolean; + readonly tags?: readonly Tags[]; + readonly moderators?: readonly HubPermission[]; +} diff --git a/frontend/src/api/generated/public/models/patchedHubPermission.ts b/frontend/src/api/generated/public/models/patchedHubPermission.ts new file mode 100644 index 0000000..5ed589e --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedHubPermission.ts @@ -0,0 +1,17 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PatchedHubPermission { + readonly id?: number; + user?: number; + changing_name?: boolean; + changing_description?: boolean; + changing_icon?: boolean; + changing_banner?: boolean; + managing_members?: boolean; + managing_posts?: boolean; + managing_chats?: boolean; +} diff --git a/frontend/src/api/generated/public/models/patchedMessage.ts b/frontend/src/api/generated/public/models/patchedMessage.ts new file mode 100644 index 0000000..2abd023 --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedMessage.ts @@ -0,0 +1,24 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { MessageFile } from "./messageFile"; +import type { MessageReaction } from "./messageReaction"; + +export interface PatchedMessage { + readonly id?: number; + readonly chat?: number; + /** @nullable */ + readonly sender?: number | null; + /** @nullable */ + readonly reply_to?: number | null; + content?: string; + readonly is_edited?: boolean; + /** @nullable */ + readonly edited_at?: Date | null; + readonly created_at?: Date; + readonly updated_at?: Date; + readonly media_files?: readonly MessageFile[]; + readonly reactions?: readonly MessageReaction[]; +} diff --git a/frontend/src/api/generated/public/models/patchedOrderRead.ts b/frontend/src/api/generated/public/models/patchedOrderRead.ts index 5b722aa..93b9317 100644 --- a/frontend/src/api/generated/public/models/patchedOrderRead.ts +++ b/frontend/src/api/generated/public/models/patchedOrderRead.ts @@ -1,18 +1,19 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StatusEnum } from "./statusEnum"; -import type { OrderItemRead } from "./orderItemRead"; import type { CarrierRead } from "./carrierRead"; +import type { OrderItemRead } from "./orderItemRead"; import type { PaymentRead } from "./paymentRead"; +import type { StatusD4fEnum } from "./statusD4fEnum"; export interface PatchedOrderRead { readonly id?: number; - readonly status?: StatusEnum; + readonly status?: StatusD4fEnum; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ readonly total_price?: string; + /** Order currency - captured from site configuration at order creation and never changes */ readonly currency?: string; /** @nullable */ readonly user?: number | null; diff --git a/frontend/src/api/generated/public/models/patchedPost.ts b/frontend/src/api/generated/public/models/patchedPost.ts new file mode 100644 index 0000000..e61af6e --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedPost.ts @@ -0,0 +1,21 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { PostContent } from "./postContent"; +import type { Tags } from "./tags"; + +export interface PatchedPost { + readonly id?: number; + content?: string; + readonly created_at?: Date; + readonly updated_at?: Date; + readonly author?: number; + /** @nullable */ + hub?: number | null; + /** @nullable */ + reply_to?: number | null; + readonly tags?: readonly Tags[]; + readonly contents?: readonly PostContent[]; +} diff --git a/frontend/src/api/generated/public/models/patchedProduct.ts b/frontend/src/api/generated/public/models/patchedProduct.ts index 0365abd..befc283 100644 --- a/frontend/src/api/generated/public/models/patchedProduct.ts +++ b/frontend/src/api/generated/public/models/patchedProduct.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -14,7 +14,10 @@ export interface PatchedProduct { * @nullable */ code?: string | null; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + /** + * Net price (without VAT) + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ price?: string; /** * @maxLength 50 @@ -29,9 +32,15 @@ export interface PatchedProduct { is_active?: boolean; /** @nullable */ limited_to?: Date | null; + include_in_week_summary_email?: boolean; readonly created_at?: Date; readonly updated_at?: Date; category?: number; + /** + * VAT rate for this product. Leave empty to use default rate. + * @nullable + */ + vat_rate?: number | null; /** @nullable */ default_carrier?: number | null; /** Symetrické varianty produktu: pokud přidáte variantu A → B, Django automaticky přidá i variantu B → A. Všechny varianty jsou rovnocenné a zobrazí se vzájemně. */ diff --git a/frontend/src/api/generated/public/models/patchedProductImage.ts b/frontend/src/api/generated/public/models/patchedProductImage.ts index 276f2e0..fa71590 100644 --- a/frontend/src/api/generated/public/models/patchedProductImage.ts +++ b/frontend/src/api/generated/public/models/patchedProductImage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/patchedRefund.ts b/frontend/src/api/generated/public/models/patchedRefund.ts index bf8cfbc..a5e84e9 100644 --- a/frontend/src/api/generated/public/models/patchedRefund.ts +++ b/frontend/src/api/generated/public/models/patchedRefund.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/patchedReviewSerializerPublic.ts b/frontend/src/api/generated/public/models/patchedReviewSerializerPublic.ts new file mode 100644 index 0000000..f55a47d --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedReviewSerializerPublic.ts @@ -0,0 +1,19 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PatchedReviewSerializerPublic { + readonly id?: number; + /** + * @minimum 1 + * @maximum 5 + */ + rating?: number; + comment?: string; + readonly created_at?: Date; + readonly updated_at?: Date; + product?: number; + readonly user?: number; +} diff --git a/frontend/src/api/generated/public/models/patchedSiteConfigurationAdmin.ts b/frontend/src/api/generated/public/models/patchedSiteConfiguration.ts similarity index 67% rename from frontend/src/api/generated/public/models/patchedSiteConfigurationAdmin.ts rename to frontend/src/api/generated/public/models/patchedSiteConfiguration.ts index 7967712..0c52200 100644 --- a/frontend/src/api/generated/public/models/patchedSiteConfigurationAdmin.ts +++ b/frontend/src/api/generated/public/models/patchedSiteConfiguration.ts @@ -1,12 +1,14 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { PatchedSiteConfigurationAdminOpeningHours } from "./patchedSiteConfigurationAdminOpeningHours"; import type { CurrencyEnum } from "./currencyEnum"; -export interface PatchedSiteConfigurationAdmin { +/** + * Site configuration serializer - sensitive fields only for admins + */ +export interface PatchedSiteConfiguration { readonly id?: number; /** @maxLength 100 */ name?: string; @@ -26,8 +28,7 @@ export interface PatchedSiteConfigurationAdmin { contact_phone?: string | null; /** @nullable */ contact_address?: string | null; - /** @nullable */ - opening_hours?: PatchedSiteConfigurationAdminOpeningHours; + opening_hours?: unknown | null; /** * @maxLength 200 * @nullable @@ -67,6 +68,34 @@ export interface PatchedSiteConfigurationAdmin { * @nullable */ zasilkovna_api_password?: string | null; + /** + * Deutsche Post API URL (sandbox/production) + * @maxLength 255 + */ + deutschepost_api_url?: string; + /** + * Deutsche Post OAuth Client ID + * @maxLength 255 + * @nullable + */ + deutschepost_client_id?: string | null; + /** + * Deutsche Post OAuth Client Secret + * @maxLength 255 + * @nullable + */ + deutschepost_client_secret?: string | null; + /** + * Deutsche Post Customer EKP number + * @maxLength 20 + * @nullable + */ + deutschepost_customer_ekp?: string | null; + /** + * Default Deutsche Post shipping price in EUR + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ + deutschepost_shipping_price?: string; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ free_shipping_over?: string; /** Násobení kupónů v objednávce (ano/ne), pokud ne tak se použije pouze nejvyšší slevový kupón */ diff --git a/frontend/src/api/generated/public/models/patchedSiteConfigurationAdminOpeningHours.ts b/frontend/src/api/generated/public/models/patchedSiteConfigurationAdminOpeningHours.ts deleted file mode 100644 index 0e4a062..0000000 --- a/frontend/src/api/generated/public/models/patchedSiteConfigurationAdminOpeningHours.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * @nullable - */ -export type PatchedSiteConfigurationAdminOpeningHours = unknown | null; diff --git a/frontend/src/api/generated/public/models/patchedTags.ts b/frontend/src/api/generated/public/models/patchedTags.ts new file mode 100644 index 0000000..0ac2f18 --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedTags.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PatchedTags { + readonly id?: number; + /** @maxLength 50 */ + name?: string; + /** @nullable */ + description?: string | null; + /** @maxLength 7 */ + color?: string; +} diff --git a/frontend/src/api/generated/public/models/patchedVATRate.ts b/frontend/src/api/generated/public/models/patchedVATRate.ts new file mode 100644 index 0000000..ec49382 --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedVATRate.ts @@ -0,0 +1,31 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * VAT Rate serializer - admin fields only visible to admins + */ +export interface PatchedVATRate { + readonly id?: number; + /** + * E.g. 'German Standard', 'German Reduced', 'Czech Standard' + * @maxLength 100 + */ + name?: string; + /** + * VAT rate as percentage (e.g. 19.00 for 19%) + * @pattern ^-?\d{0,1}(?:\.\d{0,4})?$ + */ + rate?: string; + /** VAT rate as decimal (e.g., 0.19 for 19%) */ + readonly rate_decimal?: string; + /** Optional description: 'Standard rate for most products', 'Books and food', etc. */ + description?: string; + /** Whether this VAT rate is active and available for use */ + is_active?: boolean; + /** Default rate for new products */ + is_default?: boolean; + readonly created_at?: Date; +} diff --git a/frontend/src/api/generated/public/models/patchedWishlist.ts b/frontend/src/api/generated/public/models/patchedWishlist.ts new file mode 100644 index 0000000..dbb3766 --- /dev/null +++ b/frontend/src/api/generated/public/models/patchedWishlist.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ProductMiniForWishlist } from "./productMiniForWishlist"; + +export interface PatchedWishlist { + readonly id?: number; + readonly user?: number; + readonly products?: readonly ProductMiniForWishlist[]; + readonly products_count?: string; + readonly created_at?: Date; + readonly updated_at?: Date; +} diff --git a/frontend/src/api/generated/public/models/payer.ts b/frontend/src/api/generated/public/models/payer.ts index e90d28f..337205a 100644 --- a/frontend/src/api/generated/public/models/payer.ts +++ b/frontend/src/api/generated/public/models/payer.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/payment.ts b/frontend/src/api/generated/public/models/payment.ts index 6b383e7..73ea73f 100644 --- a/frontend/src/api/generated/public/models/payment.ts +++ b/frontend/src/api/generated/public/models/payment.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paymentBody.ts b/frontend/src/api/generated/public/models/paymentBody.ts index 69e05bd..a403898 100644 --- a/frontend/src/api/generated/public/models/paymentBody.ts +++ b/frontend/src/api/generated/public/models/paymentBody.ts @@ -1,12 +1,12 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { Payer } from "./payer"; +import type { AdditionalParam } from "./additionalParam"; import type { Callback } from "./callback"; import type { Item } from "./item"; -import type { AdditionalParam } from "./additionalParam"; +import type { Payer } from "./payer"; export interface PaymentBody { /** diff --git a/frontend/src/api/generated/public/models/paymentCreate.ts b/frontend/src/api/generated/public/models/paymentCreate.ts index 2bc6115..480ccfe 100644 --- a/frontend/src/api/generated/public/models/paymentCreate.ts +++ b/frontend/src/api/generated/public/models/paymentCreate.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/paymentMethodEnum.ts b/frontend/src/api/generated/public/models/paymentMethodEnum.ts index dae3eda..ecae756 100644 --- a/frontend/src/api/generated/public/models/paymentMethodEnum.ts +++ b/frontend/src/api/generated/public/models/paymentMethodEnum.ts @@ -1,20 +1,19 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ /** - * * `Site` - cz#Platba v obchodě - * `stripe` - cz#Bankovní převod - * `cash_on_delivery` - cz#Dobírka + * * `shop` - Platba v obchodě + * `stripe` - Platební Brána + * `cash_on_delivery` - Dobírka */ export type PaymentMethodEnum = (typeof PaymentMethodEnum)[keyof typeof PaymentMethodEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const PaymentMethodEnum = { - Site: "Site", + shop: "shop", stripe: "stripe", cash_on_delivery: "cash_on_delivery", } as const; diff --git a/frontend/src/api/generated/public/models/paymentRead.ts b/frontend/src/api/generated/public/models/paymentRead.ts index 174cbb3..e367d60 100644 --- a/frontend/src/api/generated/public/models/paymentRead.ts +++ b/frontend/src/api/generated/public/models/paymentRead.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/platformCount.ts b/frontend/src/api/generated/public/models/platformCount.ts new file mode 100644 index 0000000..686a1be --- /dev/null +++ b/frontend/src/api/generated/public/models/platformCount.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PlatformCount { + platform: string; + count: number; +} diff --git a/frontend/src/api/generated/public/models/post.ts b/frontend/src/api/generated/public/models/post.ts new file mode 100644 index 0000000..f386f28 --- /dev/null +++ b/frontend/src/api/generated/public/models/post.ts @@ -0,0 +1,21 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { PostContent } from "./postContent"; +import type { Tags } from "./tags"; + +export interface Post { + readonly id: number; + content?: string; + readonly created_at: Date; + readonly updated_at: Date; + readonly author: number; + /** @nullable */ + hub?: number | null; + /** @nullable */ + reply_to?: number | null; + readonly tags: readonly Tags[]; + readonly contents: readonly PostContent[]; +} diff --git a/frontend/src/api/generated/public/models/postContent.ts b/frontend/src/api/generated/public/models/postContent.ts new file mode 100644 index 0000000..5616a2a --- /dev/null +++ b/frontend/src/api/generated/public/models/postContent.ts @@ -0,0 +1,14 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface PostContent { + readonly id: number; + readonly mime_type: string; + /** @nullable */ + file?: string | null; + /** @nullable */ + alt_text?: string | null; +} diff --git a/frontend/src/api/generated/public/models/postVote.ts b/frontend/src/api/generated/public/models/postVote.ts new file mode 100644 index 0000000..0bb97ba --- /dev/null +++ b/frontend/src/api/generated/public/models/postVote.ts @@ -0,0 +1,18 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { VoteEnum } from "./voteEnum"; + +export interface PostVote { + readonly id: number; + post: number; + readonly user: number; + /** + * @minimum -9223372036854776000 + * @maximum 9223372036854776000 + */ + vote: VoteEnum; + readonly created_at: Date; +} diff --git a/frontend/src/api/generated/public/models/product.ts b/frontend/src/api/generated/public/models/product.ts index 6146b27..febb8f8 100644 --- a/frontend/src/api/generated/public/models/product.ts +++ b/frontend/src/api/generated/public/models/product.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -14,7 +14,10 @@ export interface Product { * @nullable */ code?: string | null; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + /** + * Net price (without VAT) + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ price: string; /** * @maxLength 50 @@ -29,9 +32,15 @@ export interface Product { is_active?: boolean; /** @nullable */ limited_to?: Date | null; + include_in_week_summary_email?: boolean; readonly created_at: Date; readonly updated_at: Date; category: number; + /** + * VAT rate for this product. Leave empty to use default rate. + * @nullable + */ + vat_rate?: number | null; /** @nullable */ default_carrier?: number | null; /** Symetrické varianty produktu: pokud přidáte variantu A → B, Django automaticky přidá i variantu B → A. Všechny varianty jsou rovnocenné a zobrazí se vzájemně. */ diff --git a/frontend/src/api/generated/public/models/productImage.ts b/frontend/src/api/generated/public/models/productImage.ts index a192a08..e51817b 100644 --- a/frontend/src/api/generated/public/models/productImage.ts +++ b/frontend/src/api/generated/public/models/productImage.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/productMini.ts b/frontend/src/api/generated/public/models/productMini.ts index ce227a0..7765fa2 100644 --- a/frontend/src/api/generated/public/models/productMini.ts +++ b/frontend/src/api/generated/public/models/productMini.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -8,6 +8,9 @@ export interface ProductMini { readonly id: number; /** @maxLength 200 */ name: string; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ + /** + * Net price (without VAT) + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ price: string; } diff --git a/frontend/src/api/generated/public/models/productMiniForWishlist.ts b/frontend/src/api/generated/public/models/productMiniForWishlist.ts new file mode 100644 index 0000000..80c09dc --- /dev/null +++ b/frontend/src/api/generated/public/models/productMiniForWishlist.ts @@ -0,0 +1,25 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * Minimal product info for wishlist display + */ +export interface ProductMiniForWishlist { + readonly id: number; + /** @maxLength 200 */ + name: string; + /** + * Net price (without VAT) + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ + price: string; + is_active?: boolean; + /** + * @minimum 0 + * @maximum 9223372036854776000 + */ + stock?: number; +} diff --git a/frontend/src/api/generated/public/models/qualityCount.ts b/frontend/src/api/generated/public/models/qualityCount.ts new file mode 100644 index 0000000..f042ba0 --- /dev/null +++ b/frontend/src/api/generated/public/models/qualityCount.ts @@ -0,0 +1,11 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface QualityCount { + /** @nullable */ + video_quality: number | null; + count: number; +} diff --git a/frontend/src/api/generated/public/models/reasonChoiceEnum.ts b/frontend/src/api/generated/public/models/reasonChoiceEnum.ts index f7311f2..494d45b 100644 --- a/frontend/src/api/generated/public/models/reasonChoiceEnum.ts +++ b/frontend/src/api/generated/public/models/reasonChoiceEnum.ts @@ -1,19 +1,18 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ /** - * * `retuning_before_fourteen_day_period` - cz#Vrácení před uplynutím 14-ti denní lhůty - * `damaged_product` - cz#Poškozený produkt - * `wrong_item` - cz#Špatná položka - * `other` - cz#Jiný důvod + * * `retuning_before_fourteen_day_period` - Vrácení před uplynutím 14-ti denní lhůty + * `damaged_product` - Poškozený produkt + * `wrong_item` - Špatná položka + * `other` - Jiný důvod */ export type ReasonChoiceEnum = (typeof ReasonChoiceEnum)[keyof typeof ReasonChoiceEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const ReasonChoiceEnum = { retuning_before_fourteen_day_period: "retuning_before_fourteen_day_period", damaged_product: "damaged_product", diff --git a/frontend/src/api/generated/public/models/refund.ts b/frontend/src/api/generated/public/models/refund.ts index 0b154d8..44eba98 100644 --- a/frontend/src/api/generated/public/models/refund.ts +++ b/frontend/src/api/generated/public/models/refund.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/reviewSerializerPublic.ts b/frontend/src/api/generated/public/models/reviewSerializerPublic.ts new file mode 100644 index 0000000..17643ee --- /dev/null +++ b/frontend/src/api/generated/public/models/reviewSerializerPublic.ts @@ -0,0 +1,19 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface ReviewSerializerPublic { + readonly id: number; + /** + * @minimum 1 + * @maximum 5 + */ + rating: number; + comment?: string; + readonly created_at: Date; + readonly updated_at: Date; + product: number; + readonly user: number; +} diff --git a/frontend/src/api/generated/public/models/roleEnum.ts b/frontend/src/api/generated/public/models/roleEnum.ts index 18f15f4..417f374 100644 --- a/frontend/src/api/generated/public/models/roleEnum.ts +++ b/frontend/src/api/generated/public/models/roleEnum.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -11,7 +11,6 @@ */ export type RoleEnum = (typeof RoleEnum)[keyof typeof RoleEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const RoleEnum = { admin: "admin", mod: "mod", diff --git a/frontend/src/api/generated/public/models/shippingMethodEnum.ts b/frontend/src/api/generated/public/models/shippingMethodEnum.ts index 50ed123..92e3bdc 100644 --- a/frontend/src/api/generated/public/models/shippingMethodEnum.ts +++ b/frontend/src/api/generated/public/models/shippingMethodEnum.ts @@ -1,18 +1,19 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ /** - * * `packeta` - cz#Zásilkovna - * `store` - cz#Osobní odběr + * * `packeta` - Zásilkovna + * `deutschepost` - Deutsche Post + * `store` - Osobní odběr */ export type ShippingMethodEnum = (typeof ShippingMethodEnum)[keyof typeof ShippingMethodEnum]; -// eslint-disable-next-line @typescript-eslint/no-redeclare export const ShippingMethodEnum = { packeta: "packeta", + deutschepost: "deutschepost", store: "store", } as const; diff --git a/frontend/src/api/generated/public/models/siteConfigurationAdmin.ts b/frontend/src/api/generated/public/models/siteConfiguration.ts similarity index 67% rename from frontend/src/api/generated/public/models/siteConfigurationAdmin.ts rename to frontend/src/api/generated/public/models/siteConfiguration.ts index 0a029ea..c14a456 100644 --- a/frontend/src/api/generated/public/models/siteConfigurationAdmin.ts +++ b/frontend/src/api/generated/public/models/siteConfiguration.ts @@ -1,12 +1,14 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { SiteConfigurationAdminOpeningHours } from "./siteConfigurationAdminOpeningHours"; import type { CurrencyEnum } from "./currencyEnum"; -export interface SiteConfigurationAdmin { +/** + * Site configuration serializer - sensitive fields only for admins + */ +export interface SiteConfiguration { readonly id: number; /** @maxLength 100 */ name?: string; @@ -26,8 +28,7 @@ export interface SiteConfigurationAdmin { contact_phone?: string | null; /** @nullable */ contact_address?: string | null; - /** @nullable */ - opening_hours?: SiteConfigurationAdminOpeningHours; + opening_hours?: unknown | null; /** * @maxLength 200 * @nullable @@ -67,6 +68,34 @@ export interface SiteConfigurationAdmin { * @nullable */ zasilkovna_api_password?: string | null; + /** + * Deutsche Post API URL (sandbox/production) + * @maxLength 255 + */ + deutschepost_api_url?: string; + /** + * Deutsche Post OAuth Client ID + * @maxLength 255 + * @nullable + */ + deutschepost_client_id?: string | null; + /** + * Deutsche Post OAuth Client Secret + * @maxLength 255 + * @nullable + */ + deutschepost_client_secret?: string | null; + /** + * Deutsche Post Customer EKP number + * @maxLength 20 + * @nullable + */ + deutschepost_customer_ekp?: string | null; + /** + * Default Deutsche Post shipping price in EUR + * @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ + */ + deutschepost_shipping_price?: string; /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ free_shipping_over?: string; /** Násobení kupónů v objednávce (ano/ne), pokud ne tak se použije pouze nejvyšší slevový kupón */ diff --git a/frontend/src/api/generated/public/models/siteConfigurationAdminOpeningHours.ts b/frontend/src/api/generated/public/models/siteConfigurationAdminOpeningHours.ts deleted file mode 100644 index e79fcad..0000000 --- a/frontend/src/api/generated/public/models/siteConfigurationAdminOpeningHours.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * @nullable - */ -export type SiteConfigurationAdminOpeningHours = unknown | null; diff --git a/frontend/src/api/generated/public/models/siteConfigurationPublic.ts b/frontend/src/api/generated/public/models/siteConfigurationPublic.ts deleted file mode 100644 index 0887202..0000000 --- a/frontend/src/api/generated/public/models/siteConfigurationPublic.ts +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ -import type { SiteConfigurationPublicOpeningHours } from "./siteConfigurationPublicOpeningHours"; -import type { CurrencyEnum } from "./currencyEnum"; - -export interface SiteConfigurationPublic { - readonly id: number; - /** @maxLength 100 */ - name?: string; - /** @nullable */ - logo?: string | null; - /** @nullable */ - favicon?: string | null; - /** - * @maxLength 254 - * @nullable - */ - contact_email?: string | null; - /** - * @maxLength 20 - * @nullable - */ - contact_phone?: string | null; - /** @nullable */ - contact_address?: string | null; - /** @nullable */ - opening_hours?: SiteConfigurationPublicOpeningHours; - /** - * @maxLength 200 - * @nullable - */ - facebook_url?: string | null; - /** - * @maxLength 200 - * @nullable - */ - instagram_url?: string | null; - /** - * @maxLength 200 - * @nullable - */ - youtube_url?: string | null; - /** - * @maxLength 200 - * @nullable - */ - tiktok_url?: string | null; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ - zasilkovna_shipping_price?: string; - /** @pattern ^-?\d{0,8}(?:\.\d{0,2})?$ */ - free_shipping_over?: string; - currency?: CurrencyEnum; -} diff --git a/frontend/src/api/generated/public/models/siteConfigurationPublicOpeningHours.ts b/frontend/src/api/generated/public/models/siteConfigurationPublicOpeningHours.ts deleted file mode 100644 index 300d3d4..0000000 --- a/frontend/src/api/generated/public/models/siteConfigurationPublicOpeningHours.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * @nullable - */ -export type SiteConfigurationPublicOpeningHours = unknown | null; diff --git a/frontend/src/api/generated/public/models/state1f6Enum.ts b/frontend/src/api/generated/public/models/state1f6Enum.ts new file mode 100644 index 0000000..dcf03d9 --- /dev/null +++ b/frontend/src/api/generated/public/models/state1f6Enum.ts @@ -0,0 +1,20 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `ordered` - Objednávka se připravuje + * `shipped` - Odesláno + * `delivered` - Doručeno + * `ready_to_pickup` - Připraveno k vyzvednutí + */ +export type State1f6Enum = (typeof State1f6Enum)[keyof typeof State1f6Enum]; + +export const State1f6Enum = { + ordered: "ordered", + shipped: "shipped", + delivered: "delivered", + ready_to_pickup: "ready_to_pickup", +} as const; diff --git a/frontend/src/api/generated/public/models/stateCdfEnum.ts b/frontend/src/api/generated/public/models/stateCdfEnum.ts new file mode 100644 index 0000000..749273f --- /dev/null +++ b/frontend/src/api/generated/public/models/stateCdfEnum.ts @@ -0,0 +1,26 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `WAITING_FOR_ORDERING_SHIPMENT` - Čeká na objednání zásilkovny + * `PENDING` - Podáno + * `SENDED` - Odesláno + * `ARRIVED` - Doručeno + * `CANCELED` - Zrušeno + * `RETURNING` - Posláno zpátky + * `RETURNED` - Vráceno + */ +export type StateCdfEnum = (typeof StateCdfEnum)[keyof typeof StateCdfEnum]; + +export const StateCdfEnum = { + WAITING_FOR_ORDERING_SHIPMENT: "WAITING_FOR_ORDERING_SHIPMENT", + PENDING: "PENDING", + SENDED: "SENDED", + ARRIVED: "ARRIVED", + CANCELED: "CANCELED", + RETURNING: "RETURNING", + RETURNED: "RETURNED", +} as const; diff --git a/frontend/src/api/generated/public/models/stateE15Enum.ts b/frontend/src/api/generated/public/models/stateE15Enum.ts deleted file mode 100644 index e2ca3c9..0000000 --- a/frontend/src/api/generated/public/models/stateE15Enum.ts +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * * `WAITING_FOR_ORDERING_SHIPMENT` - cz#Čeká na objednání zásilkovny - * `PENDING` - cz#Podáno - * `SENDED` - cz#Odesláno - * `ARRIVED` - cz#Doručeno - * `CANCELED` - cz#Zrušeno - * `RETURNING` - cz#Posláno zpátky - * `RETURNED` - cz#Vráceno - */ -export type StateE15Enum = (typeof StateE15Enum)[keyof typeof StateE15Enum]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const StateE15Enum = { - WAITING_FOR_ORDERING_SHIPMENT: "WAITING_FOR_ORDERING_SHIPMENT", - PENDING: "PENDING", - SENDED: "SENDED", - ARRIVED: "ARRIVED", - CANCELED: "CANCELED", - RETURNING: "RETURNING", - RETURNED: "RETURNED", -} as const; diff --git a/frontend/src/api/generated/public/models/stateFdaEnum.ts b/frontend/src/api/generated/public/models/stateFdaEnum.ts deleted file mode 100644 index d76f293..0000000 --- a/frontend/src/api/generated/public/models/stateFdaEnum.ts +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * * `ordered` - cz#Objednávka se připravuje - * `shipped` - cz#Odesláno - * `delivered` - cz#Doručeno - * `ready_to_pickup` - cz#Připraveno k vyzvednutí - */ -export type StateFdaEnum = (typeof StateFdaEnum)[keyof typeof StateFdaEnum]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const StateFdaEnum = { - ordered: "ordered", - shipped: "shipped", - delivered: "delivered", - ready_to_pickup: "ready_to_pickup", -} as const; diff --git a/frontend/src/api/generated/public/models/statusD4fEnum.ts b/frontend/src/api/generated/public/models/statusD4fEnum.ts new file mode 100644 index 0000000..7981f7d --- /dev/null +++ b/frontend/src/api/generated/public/models/statusD4fEnum.ts @@ -0,0 +1,22 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `created` - Vytvořeno + * `cancelled` - Zrušeno + * `completed` - Dokončeno + * `refunding` - Vrácení v procesu + * `refunded` - Vráceno + */ +export type StatusD4fEnum = (typeof StatusD4fEnum)[keyof typeof StatusD4fEnum]; + +export const StatusD4fEnum = { + created: "created", + cancelled: "cancelled", + completed: "completed", + refunding: "refunding", + refunded: "refunded", +} as const; diff --git a/frontend/src/api/generated/public/models/statusEnum.ts b/frontend/src/api/generated/public/models/statusEnum.ts deleted file mode 100644 index 9194303..0000000 --- a/frontend/src/api/generated/public/models/statusEnum.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * * `created` - cz#Vytvořeno - * `cancelled` - cz#Zrušeno - * `completed` - cz#Dokončeno - * `refunding` - cz#Vrácení v procesu - * `refunded` - cz#Vráceno - */ -export type StatusEnum = (typeof StatusEnum)[keyof typeof StatusEnum]; - -// eslint-disable-next-line @typescript-eslint/no-redeclare -export const StatusEnum = { - created: "created", - cancelled: "cancelled", - completed: "completed", - refunding: "refunding", - refunded: "refunded", -} as const; diff --git a/frontend/src/api/generated/public/models/tagAttach.ts b/frontend/src/api/generated/public/models/tagAttach.ts new file mode 100644 index 0000000..87dd020 --- /dev/null +++ b/frontend/src/api/generated/public/models/tagAttach.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TagAttach { + /** PK of the hub tag to attach or detach. */ + tag_id: number; +} diff --git a/frontend/src/api/generated/public/models/tags.ts b/frontend/src/api/generated/public/models/tags.ts new file mode 100644 index 0000000..68c3d5b --- /dev/null +++ b/frontend/src/api/generated/public/models/tags.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface Tags { + readonly id: number; + /** @maxLength 50 */ + name: string; + /** @nullable */ + description?: string | null; + /** @maxLength 7 */ + color?: string; +} diff --git a/frontend/src/api/generated/public/models/timeseriesPoint.ts b/frontend/src/api/generated/public/models/timeseriesPoint.ts new file mode 100644 index 0000000..7c8c274 --- /dev/null +++ b/frontend/src/api/generated/public/models/timeseriesPoint.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TimeseriesPoint { + period: Date; + count: number; +} diff --git a/frontend/src/api/generated/public/models/topUrl.ts b/frontend/src/api/generated/public/models/topUrl.ts new file mode 100644 index 0000000..5223a90 --- /dev/null +++ b/frontend/src/api/generated/public/models/topUrl.ts @@ -0,0 +1,11 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TopUrl { + url: string; + title: string; + count: number; +} diff --git a/frontend/src/api/generated/public/models/trackingURL.ts b/frontend/src/api/generated/public/models/trackingURL.ts index 056d051..127957c 100644 --- a/frontend/src/api/generated/public/models/trackingURL.ts +++ b/frontend/src/api/generated/public/models/trackingURL.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/transferInit.ts b/frontend/src/api/generated/public/models/transferInit.ts new file mode 100644 index 0000000..675a340 --- /dev/null +++ b/frontend/src/api/generated/public/models/transferInit.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TransferInit { + /** PK of the user to transfer ownership to. */ + user_id: number; +} diff --git a/frontend/src/api/generated/public/models/transferVerify.ts b/frontend/src/api/generated/public/models/transferVerify.ts new file mode 100644 index 0000000..c5937c1 --- /dev/null +++ b/frontend/src/api/generated/public/models/transferVerify.ts @@ -0,0 +1,10 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +export interface TransferVerify { + /** Transfer token sent to the new owner. */ + token: string; +} diff --git a/frontend/src/api/generated/public/models/userRegistration.ts b/frontend/src/api/generated/public/models/userRegistration.ts index 52db518..739416b 100644 --- a/frontend/src/api/generated/public/models/userRegistration.ts +++ b/frontend/src/api/generated/public/models/userRegistration.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/vATRate.ts b/frontend/src/api/generated/public/models/vATRate.ts new file mode 100644 index 0000000..6e107da --- /dev/null +++ b/frontend/src/api/generated/public/models/vATRate.ts @@ -0,0 +1,31 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * VAT Rate serializer - admin fields only visible to admins + */ +export interface VATRate { + readonly id: number; + /** + * E.g. 'German Standard', 'German Reduced', 'Czech Standard' + * @maxLength 100 + */ + name: string; + /** + * VAT rate as percentage (e.g. 19.00 for 19%) + * @pattern ^-?\d{0,1}(?:\.\d{0,4})?$ + */ + rate: string; + /** VAT rate as decimal (e.g., 0.19 for 19%) */ + readonly rate_decimal: string; + /** Optional description: 'Standard rate for most products', 'Books and food', etc. */ + description?: string; + /** Whether this VAT rate is active and available for use */ + is_active?: boolean; + /** Default rate for new products */ + is_default?: boolean; + readonly created_at: Date; +} diff --git a/frontend/src/api/generated/public/models/videoInfo.ts b/frontend/src/api/generated/public/models/videoInfo.ts index ee6811d..4f25392 100644 --- a/frontend/src/api/generated/public/models/videoInfo.ts +++ b/frontend/src/api/generated/public/models/videoInfo.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/videoInfoResponse.ts b/frontend/src/api/generated/public/models/videoInfoResponse.ts index a47d833..b189c22 100644 --- a/frontend/src/api/generated/public/models/videoInfoResponse.ts +++ b/frontend/src/api/generated/public/models/videoInfoResponse.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/models/voteEnum.ts b/frontend/src/api/generated/public/models/voteEnum.ts new file mode 100644 index 0000000..16a0340 --- /dev/null +++ b/frontend/src/api/generated/public/models/voteEnum.ts @@ -0,0 +1,16 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ + +/** + * * `1` - Upvote + * `-1` - Downvote + */ +export type VoteEnum = (typeof VoteEnum)[keyof typeof VoteEnum]; + +export const VoteEnum = { + NUMBER_1: 1, + NUMBER_MINUS_1: -1, +} as const; diff --git a/frontend/src/api/generated/public/models/wishlist.ts b/frontend/src/api/generated/public/models/wishlist.ts new file mode 100644 index 0000000..f8da1cc --- /dev/null +++ b/frontend/src/api/generated/public/models/wishlist.ts @@ -0,0 +1,15 @@ +/** + * Generated by orval v8.8.0 🍺 + * Do not edit manually. + * OpenAPI spec version: 0.0.0 + */ +import type { ProductMiniForWishlist } from "./productMiniForWishlist"; + +export interface Wishlist { + readonly id: number; + readonly user: number; + readonly products: readonly ProductMiniForWishlist[]; + readonly products_count: string; + readonly created_at: Date; + readonly updated_at: Date; +} diff --git a/frontend/src/api/generated/public/models/zasilkovnaPacket.ts b/frontend/src/api/generated/public/models/zasilkovnaPacket.ts index 3164441..20abadc 100644 --- a/frontend/src/api/generated/public/models/zasilkovnaPacket.ts +++ b/frontend/src/api/generated/public/models/zasilkovnaPacket.ts @@ -1,10 +1,9 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StateE15Enum } from "./stateE15Enum"; -import type { ZasilkovnaPacketReturnRouting } from "./zasilkovnaPacketReturnRouting"; +import type { StateCdfEnum } from "./stateCdfEnum"; export interface ZasilkovnaPacket { readonly id: number; @@ -21,12 +20,9 @@ export interface ZasilkovnaPacket { * @nullable */ readonly barcode: string | null; - readonly state: StateE15Enum; + readonly state: StateCdfEnum; /** Hmotnost zásilky v gramech */ readonly weight: number; - /** - * Seznam 2 routing stringů pro vrácení zásilky - * @nullable - */ - readonly return_routing: ZasilkovnaPacketReturnRouting; + /** Seznam 2 routing stringů pro vrácení zásilky */ + readonly return_routing: unknown | null; } diff --git a/frontend/src/api/generated/public/models/zasilkovnaPacketRead.ts b/frontend/src/api/generated/public/models/zasilkovnaPacketRead.ts index a99eb56..e05ebd7 100644 --- a/frontend/src/api/generated/public/models/zasilkovnaPacketRead.ts +++ b/frontend/src/api/generated/public/models/zasilkovnaPacketRead.ts @@ -1,10 +1,9 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ -import type { StateE15Enum } from "./stateE15Enum"; -import type { ZasilkovnaPacketReadReturnRouting } from "./zasilkovnaPacketReadReturnRouting"; +import type { StateCdfEnum } from "./stateCdfEnum"; export interface ZasilkovnaPacketRead { readonly id: number; @@ -21,12 +20,9 @@ export interface ZasilkovnaPacketRead { * @nullable */ readonly barcode: string | null; - readonly state: StateE15Enum; + readonly state: StateCdfEnum; /** Hmotnost zásilky v gramech */ readonly weight: number; - /** - * Seznam 2 routing stringů pro vrácení zásilky - * @nullable - */ - readonly return_routing: ZasilkovnaPacketReadReturnRouting; + /** Seznam 2 routing stringů pro vrácení zásilky */ + readonly return_routing: unknown | null; } diff --git a/frontend/src/api/generated/public/models/zasilkovnaPacketReadReturnRouting.ts b/frontend/src/api/generated/public/models/zasilkovnaPacketReadReturnRouting.ts deleted file mode 100644 index cfcb819..0000000 --- a/frontend/src/api/generated/public/models/zasilkovnaPacketReadReturnRouting.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * Seznam 2 routing stringů pro vrácení zásilky - * @nullable - */ -export type ZasilkovnaPacketReadReturnRouting = unknown | null; diff --git a/frontend/src/api/generated/public/models/zasilkovnaPacketReturnRouting.ts b/frontend/src/api/generated/public/models/zasilkovnaPacketReturnRouting.ts deleted file mode 100644 index 0cf56d3..0000000 --- a/frontend/src/api/generated/public/models/zasilkovnaPacketReturnRouting.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Generated by orval v7.17.0 🍺 - * Do not edit manually. - * OpenAPI spec version: 0.0.0 - */ - -/** - * Seznam 2 routing stringů pro vrácení zásilky - * @nullable - */ -export type ZasilkovnaPacketReturnRouting = unknown | null; diff --git a/frontend/src/api/generated/public/models/zasilkovnaShipment.ts b/frontend/src/api/generated/public/models/zasilkovnaShipment.ts index 7929af0..29e3163 100644 --- a/frontend/src/api/generated/public/models/zasilkovnaShipment.ts +++ b/frontend/src/api/generated/public/models/zasilkovnaShipment.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ diff --git a/frontend/src/api/generated/public/public.ts b/frontend/src/api/generated/public/public.ts index 476377a..2053bb3 100644 --- a/frontend/src/api/generated/public/public.ts +++ b/frontend/src/api/generated/public/public.ts @@ -1,5 +1,5 @@ /** - * Generated by orval v7.17.0 🍺 + * Generated by orval v8.8.0 🍺 * Do not edit manually. * OpenAPI spec version: 0.0.0 */ @@ -173,7 +173,5 @@ export function useApiChoicesRetrieve< TError > & { queryKey: DataTag }; - query.queryKey = queryOptions.queryKey; - - return query; + return { ...query, queryKey: queryOptions.queryKey }; } diff --git a/frontend/src/components/common/Modal.tsx b/frontend/src/components/common/Modal.tsx deleted file mode 100644 index 8b71e56..0000000 --- a/frontend/src/components/common/Modal.tsx +++ /dev/null @@ -1,33 +0,0 @@ -import { useEffect } from "react"; -import type { ReactNode } from "react"; - -type Props = { - open: boolean; - onClose: () => void; - title?: string; - children: ReactNode; -}; - -export default function Modal({ open, onClose, title, children }: Props) { - useEffect(() => { - const onKey = (e: KeyboardEvent) => { if (e.key === 'Escape') onClose(); }; - if (open) document.addEventListener('keydown', onKey); - return () => document.removeEventListener('keydown', onKey); - }, [open, onClose]); - - if (!open) return null; - return ( -
-
-
-
-
-

{title}

- -
-
{children}
-
-
-
- ); -} \ No newline at end of file diff --git a/frontend/src/components/auth/LoginForm.tsx b/frontend/src/components/downloader/Ad.tsx similarity index 100% rename from frontend/src/components/auth/LoginForm.tsx rename to frontend/src/components/downloader/Ad.tsx diff --git a/frontend/src/pages/Chat/ChatPage.tsx b/frontend/src/components/downloader/Piechart.tsx similarity index 100% rename from frontend/src/pages/Chat/ChatPage.tsx rename to frontend/src/components/downloader/Piechart.tsx diff --git a/frontend/src/components/downloader/Statistics.tsx b/frontend/src/components/downloader/Statistics.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/components/Forms/ContactMe/ContactMeForm.tsx b/frontend/src/components/home/ContactMe/ContactMeForm.tsx similarity index 100% rename from frontend/src/components/Forms/ContactMe/ContactMeForm.tsx rename to frontend/src/components/home/ContactMe/ContactMeForm.tsx diff --git a/frontend/src/components/Forms/ContactMe/contact-me.module.css b/frontend/src/components/home/ContactMe/contact-me.module.css similarity index 100% rename from frontend/src/components/Forms/ContactMe/contact-me.module.css rename to frontend/src/components/home/ContactMe/contact-me.module.css diff --git a/frontend/src/components/Forms/ContactMe/readme.png b/frontend/src/components/home/ContactMe/readme.png similarity index 100% rename from frontend/src/components/Forms/ContactMe/readme.png rename to frontend/src/components/home/ContactMe/readme.png diff --git a/frontend/src/components/Footer/footer.module.css b/frontend/src/components/home/Footer/footer.module.css similarity index 100% rename from frontend/src/components/Footer/footer.module.css rename to frontend/src/components/home/Footer/footer.module.css diff --git a/frontend/src/components/Footer/footer.tsx b/frontend/src/components/home/Footer/footer.tsx similarity index 100% rename from frontend/src/components/Footer/footer.tsx rename to frontend/src/components/home/Footer/footer.tsx diff --git a/frontend/src/components/ads/Drone/Drone.tsx b/frontend/src/components/home/ads/Drone/Drone.tsx similarity index 100% rename from frontend/src/components/ads/Drone/Drone.tsx rename to frontend/src/components/home/ads/Drone/Drone.tsx diff --git a/frontend/src/components/ads/Drone/drone.module.css b/frontend/src/components/home/ads/Drone/drone.module.css similarity index 100% rename from frontend/src/components/ads/Drone/drone.module.css rename to frontend/src/components/home/ads/Drone/drone.module.css diff --git a/frontend/src/components/ads/Drone/readme.png b/frontend/src/components/home/ads/Drone/readme.png similarity index 100% rename from frontend/src/components/ads/Drone/readme.png rename to frontend/src/components/home/ads/Drone/readme.png diff --git a/frontend/src/components/ads/Portfolio/Portfolio.module.css b/frontend/src/components/home/ads/Portfolio/Portfolio.module.css similarity index 100% rename from frontend/src/components/ads/Portfolio/Portfolio.module.css rename to frontend/src/components/home/ads/Portfolio/Portfolio.module.css diff --git a/frontend/src/components/ads/Portfolio/Portfolio.tsx b/frontend/src/components/home/ads/Portfolio/Portfolio.tsx similarity index 100% rename from frontend/src/components/ads/Portfolio/Portfolio.tsx rename to frontend/src/components/home/ads/Portfolio/Portfolio.tsx diff --git a/frontend/src/components/ads/Portfolio/readme.png b/frontend/src/components/home/ads/Portfolio/readme.png similarity index 100% rename from frontend/src/components/ads/Portfolio/readme.png rename to frontend/src/components/home/ads/Portfolio/readme.png diff --git a/frontend/src/components/hero/HeroCarousel.tsx b/frontend/src/components/home/hero/HeroCarousel.tsx similarity index 100% rename from frontend/src/components/hero/HeroCarousel.tsx rename to frontend/src/components/home/hero/HeroCarousel.tsx diff --git a/frontend/src/components/navbar/SiteNav.tsx b/frontend/src/components/home/navbar/SiteNav.tsx similarity index 100% rename from frontend/src/components/navbar/SiteNav.tsx rename to frontend/src/components/home/navbar/SiteNav.tsx diff --git a/frontend/src/components/navbar/navbar.module.css b/frontend/src/components/home/navbar/navbar.module.css similarity index 100% rename from frontend/src/components/navbar/navbar.module.css rename to frontend/src/components/home/navbar/navbar.module.css diff --git a/frontend/src/components/services/Services.tsx b/frontend/src/components/home/services/Services.tsx similarity index 100% rename from frontend/src/components/services/Services.tsx rename to frontend/src/components/home/services/Services.tsx diff --git a/frontend/src/components/services/services.module.css b/frontend/src/components/home/services/services.module.css similarity index 100% rename from frontend/src/components/services/services.module.css rename to frontend/src/components/home/services/services.module.css diff --git a/frontend/src/components/social/chat/Message.tsx b/frontend/src/components/social/chat/Message.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/components/social/hub/Header.tsx b/frontend/src/components/social/hub/Header.tsx new file mode 100644 index 0000000..d502f48 --- /dev/null +++ b/frontend/src/components/social/hub/Header.tsx @@ -0,0 +1 @@ +/* HEADER container when arrived on the page */ \ No newline at end of file diff --git a/frontend/src/components/social/hub/Tags.tsx b/frontend/src/components/social/hub/Tags.tsx new file mode 100644 index 0000000..0debb65 --- /dev/null +++ b/frontend/src/components/social/hub/Tags.tsx @@ -0,0 +1 @@ +/* TAGS created inside hub */ \ No newline at end of file diff --git a/frontend/src/components/social/posts/Post.tsx b/frontend/src/components/social/posts/Post.tsx new file mode 100644 index 0000000..bfc298f --- /dev/null +++ b/frontend/src/components/social/posts/Post.tsx @@ -0,0 +1 @@ +/* POST container */ \ No newline at end of file diff --git a/frontend/src/layouts/AuthLayout.tsx b/frontend/src/layouts/AuthLayout.tsx deleted file mode 100644 index 3f278cf..0000000 --- a/frontend/src/layouts/AuthLayout.tsx +++ /dev/null @@ -1,15 +0,0 @@ -import Footer from "../components/Footer/footer"; -import { Outlet } from "react-router"; -import SiteNav from "../components/navbar/SiteNav"; - -import styles from "./HomeLayout.module.css"; - -export default function AuthLayout(){ - return( -
- - -
-
- ) -} \ No newline at end of file diff --git a/frontend/src/layouts/ChatLayout.tsx b/frontend/src/layouts/ChatLayout.tsx deleted file mode 100644 index 1b140a1..0000000 --- a/frontend/src/layouts/ChatLayout.tsx +++ /dev/null @@ -1,14 +0,0 @@ -import Footer from "../components/Footer/footer"; -import { Outlet } from "react-router"; -import SiteNav from "../components/navbar/SiteNav"; - -import styles from "./HomeLayout.module.css"; - -export default function ChatLayout(){ - return( -
- - -
- ) -} \ No newline at end of file diff --git a/frontend/src/layouts/HomeLayout.tsx b/frontend/src/layouts/HomeLayout.tsx index 338a60b..496b5dc 100644 --- a/frontend/src/layouts/HomeLayout.tsx +++ b/frontend/src/layouts/HomeLayout.tsx @@ -1,6 +1,6 @@ -import Footer from "../components/Footer/footer"; +import Footer from "../components/home/Footer/footer"; import { Outlet } from "react-router"; -import SiteNav from "../components/navbar/SiteNav"; +import SiteNav from "../components/home/navbar/SiteNav"; import styles from "./HomeLayout.module.css"; diff --git a/frontend/src/layouts/social/Chat.tsx b/frontend/src/layouts/social/Chat.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/layouts/social/Feed.tsx b/frontend/src/layouts/social/Feed.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/layouts/social/Hub.tsx b/frontend/src/layouts/social/Hub.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/pages/contact/ContactPage.tsx b/frontend/src/pages/contact/ContactPage.tsx index 2cf7976..93e61ed 100644 --- a/frontend/src/pages/contact/ContactPage.tsx +++ b/frontend/src/pages/contact/ContactPage.tsx @@ -1,4 +1,4 @@ -import ContactMeForm from "../../components/Forms/ContactMe/ContactMeForm"; +import ContactMeForm from "../../components/home/ContactMe/ContactMeForm"; export default function ContactPage(){ return ( diff --git a/frontend/src/pages/home/home.tsx b/frontend/src/pages/home/home.tsx index 5282a08..338e3af 100644 --- a/frontend/src/pages/home/home.tsx +++ b/frontend/src/pages/home/home.tsx @@ -2,8 +2,8 @@ import { useEffect } from "react"; import PortfolioGrid from "./components/Services/Services"; import TradingGraph from "./components/Services/TradingGraph"; import DonationShop from "./components/donate/DonationShop"; -import ContactMeForm from "../../components/Forms/ContactMe/ContactMeForm"; -import Services from "../../components/services/Services"; +import ContactMeForm from "../../components/home/ContactMe/ContactMeForm"; +import Services from "../../components/home/services/Services"; export default function Home() { diff --git a/frontend/src/pages/site/Configuration/Configuration.module.css b/frontend/src/pages/site/Configuration/Configuration.module.css new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/pages/site/Configuration/Configuration.tsx b/frontend/src/pages/site/Configuration/Configuration.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/pages/account/AccountSettings.tsx b/frontend/src/pages/social/account/AccountSettings.tsx similarity index 100% rename from frontend/src/pages/account/AccountSettings.tsx rename to frontend/src/pages/social/account/AccountSettings.tsx diff --git a/frontend/src/pages/account/Login.tsx b/frontend/src/pages/social/account/Login.tsx similarity index 100% rename from frontend/src/pages/account/Login.tsx rename to frontend/src/pages/social/account/Login.tsx diff --git a/frontend/src/pages/account/Logout.tsx b/frontend/src/pages/social/account/Logout.tsx similarity index 100% rename from frontend/src/pages/account/Logout.tsx rename to frontend/src/pages/social/account/Logout.tsx diff --git a/frontend/src/pages/account/Register.tsx b/frontend/src/pages/social/account/Register.tsx similarity index 100% rename from frontend/src/pages/account/Register.tsx rename to frontend/src/pages/social/account/Register.tsx diff --git a/frontend/src/pages/social/chat/ChatPage.tsx b/frontend/src/pages/social/chat/ChatPage.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/pages/social/hub/Create.tsx b/frontend/src/pages/social/hub/Create.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/pages/social/hub/Delete.tsx b/frontend/src/pages/social/hub/Delete.tsx new file mode 100644 index 0000000..e69de29 diff --git a/frontend/src/pages/social/hub/Settings.tsx b/frontend/src/pages/social/hub/Settings.tsx new file mode 100644 index 0000000..e69de29