From 540a2031bf5c221cb9be897e38aea6b204c3c415 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Fri, 13 Oct 2023 13:03:26 +0200 Subject: [PATCH 01/15] Remove the commonground bundle --- api/.gitignore | 6 - api/.php-cs-fixer.dist.php | 14 - api/Dockerfile | 2 +- api/config/bundles.php | 36 +- api/config/packages/doctrine.yaml | 2 +- api/config/packages/messenger.yaml | 2 - api/config/packages/prod/messenger.yaml | 2 - api/config/packages/ramsey_uuid_doctrine.yaml | 4 + api/config/packages/translation.yaml | 13 - api/src/Controller/LoginController.php | 11 +- api/src/Controller/UserController.php | 148 +- api/src/DataFixtures/AppFixtures.php | 2 +- api/src/Message/NotificationMessage.php | 27 - api/src/Message/PromiseMessage.php | 27 - api/src/Message/SyncPageMessage.php | 47 - .../NotificationMessageHandler.php | 32 - .../MessageHandler/PromiseMessageHandler.php | 89 - .../MessageHandler/SyncPageMessageHandler.php | 150 -- api/src/Security/ApiKeyAuthenticator.php | 72 +- .../Security/User/AuthenticationProvider.php | 9 - api/src/Service/AuthenticationService.php | 133 +- api/src/Service/AuthorizationService.php | 5 - api/src/Service/DocumentService.php | 8 +- api/src/Service/EavDocumentationService.php | 5 +- api/src/Service/EavService.php | 1141 +--------- api/src/Service/FunctionService.php | 160 +- api/src/Service/GatewayService.php | 81 +- api/src/Service/HandlerService.php | 438 ---- api/src/Service/ObjectEntityService.php | 1981 +---------------- api/src/Service/ResponseService.php | 849 ------- api/src/Service/SynchronizationService.php | 36 +- api/src/Service/UserService.php | 89 - api/symfony.lock | 129 +- api/translations/.gitignore | 0 34 files changed, 94 insertions(+), 5656 deletions(-) delete mode 100644 api/.php-cs-fixer.dist.php create mode 100644 api/config/packages/ramsey_uuid_doctrine.yaml delete mode 100644 api/config/packages/translation.yaml delete mode 100644 api/src/Message/NotificationMessage.php delete mode 100644 api/src/Message/PromiseMessage.php delete mode 100644 api/src/Message/SyncPageMessage.php delete mode 100644 api/src/MessageHandler/NotificationMessageHandler.php delete mode 100644 api/src/MessageHandler/PromiseMessageHandler.php delete mode 100644 api/src/MessageHandler/SyncPageMessageHandler.php delete mode 100644 api/src/Service/ResponseService.php delete mode 100644 api/src/Service/UserService.php delete mode 100644 api/translations/.gitignore diff --git a/api/.gitignore b/api/.gitignore index c78c3c1a7..cb0b62499 100644 --- a/api/.gitignore +++ b/api/.gitignore @@ -6,12 +6,6 @@ /.env.*.local /vendor/ ###< symfony/framework-bundle ### - -###> friendsofphp/php-cs-fixer ### -/.php_cs -/.php_cs.cache -###< friendsofphp/php-cs-fixer ### - ###> phpunit/phpunit ### /phpunit.xml .phpunit.result.cache diff --git a/api/.php-cs-fixer.dist.php b/api/.php-cs-fixer.dist.php deleted file mode 100644 index e63611e6a..000000000 --- a/api/.php-cs-fixer.dist.php +++ /dev/null @@ -1,14 +0,0 @@ -in(__DIR__) - ->exclude('var') -; - -return (new PhpCsFixer\Config()) - ->setRules([ - '@Symfony' => true, - ]) - ->setFinder($finder) - ->setCacheFile('.php-cs-fixer.cache') // forward compatibility with 3.x line -; diff --git a/api/Dockerfile b/api/Dockerfile index ea5f04b18..a243fe718 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,4 +1,4 @@ -FROM php:7.4-fpm-alpine AS api_platform_php +FROM php:8.1-fpm-alpine AS api_platform_php # Create a user RUN addgroup -S -g 101 commonground-gateway && adduser -S -D -u 101 commonground-gateway diff --git a/api/config/bundles.php b/api/config/bundles.php index b03f4530d..e3ff55319 100644 --- a/api/config/bundles.php +++ b/api/config/bundles.php @@ -1,24 +1,22 @@ ['all' => true], - Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], - Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], - Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], - Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], - Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], - ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], - Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], - Knp\Bundle\MarkdownBundle\KnpMarkdownBundle::class => ['all' => true], - Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], - Conduction\CommonGroundBundle\CommonGroundBundle::class => ['all' => true], - Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['all' => true], + Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], + Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], + Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], + Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], + ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], + Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['all' => true], Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle::class => ['all' => true], - Hautelook\AliceBundle\HautelookAliceBundle::class => ['all' => true], - Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['all' => true], - Setono\CronExpressionBundle\SetonoCronExpressionBundle::class => ['all' => true], - CommonGateway\CoreBundle\CoreBundle::class => ['all' => true], - Endroid\QrCodeBundle\EndroidQrCodeBundle::class => ['all' => true], - Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], - League\FlysystemBundle\FlysystemBundle::class => ['all' => true], + Hautelook\AliceBundle\HautelookAliceBundle::class => ['all' => true], + Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['all' => true], + Setono\CronExpressionBundle\SetonoCronExpressionBundle::class => ['all' => true], + CommonGateway\CoreBundle\CoreBundle::class => ['all' => true], + Endroid\QrCodeBundle\EndroidQrCodeBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + League\FlysystemBundle\FlysystemBundle::class => ['all' => true], + Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], + Knp\Bundle\MarkdownBundle\KnpMarkdownBundle::class => ['all' => true], ]; diff --git a/api/config/packages/doctrine.yaml b/api/config/packages/doctrine.yaml index 4a17d0314..605bd6b64 100644 --- a/api/config/packages/doctrine.yaml +++ b/api/config/packages/doctrine.yaml @@ -6,7 +6,7 @@ doctrine: url: '%env(resolve:DATABASE_URL)%' types: uuid: Ramsey\Uuid\Doctrine\UuidType - datetime: Conduction\CommonGroundBundle\Types\UTCDateTimeType #We override the default doctrine datetime with a UTC based version +# datetime: Conduction\CommonGroundBundle\Types\UTCDateTimeType #We override the default doctrine datetime with a UTC based version orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware diff --git a/api/config/packages/messenger.yaml b/api/config/packages/messenger.yaml index 275f9164d..944c8b384 100755 --- a/api/config/packages/messenger.yaml +++ b/api/config/packages/messenger.yaml @@ -27,5 +27,3 @@ framework: routing: # Route your messages to the transports 'App\Message\ActionMessage': async - 'App\Message\NotificationMessage': async - 'App\Message\SyncPageMessage': async diff --git a/api/config/packages/prod/messenger.yaml b/api/config/packages/prod/messenger.yaml index 24641e04e..09236c02c 100644 --- a/api/config/packages/prod/messenger.yaml +++ b/api/config/packages/prod/messenger.yaml @@ -27,7 +27,5 @@ framework: routing: # Route your messages to the transports 'App\Message\ActionMessage': async - 'App\Message\NotificationMessage': async - 'App\Message\SyncPageMessage': async 'CommonGateway\CoreBundle\Message\CacheMessage': async 'CommonGateway\CoreBundle\Message\ValueMessage': async diff --git a/api/config/packages/ramsey_uuid_doctrine.yaml b/api/config/packages/ramsey_uuid_doctrine.yaml new file mode 100644 index 000000000..cfc3036f9 --- /dev/null +++ b/api/config/packages/ramsey_uuid_doctrine.yaml @@ -0,0 +1,4 @@ +doctrine: + dbal: + types: + uuid: 'Ramsey\Uuid\Doctrine\UuidType' diff --git a/api/config/packages/translation.yaml b/api/config/packages/translation.yaml deleted file mode 100644 index abb76aae8..000000000 --- a/api/config/packages/translation.yaml +++ /dev/null @@ -1,13 +0,0 @@ -framework: - default_locale: en - translator: - default_path: '%kernel.project_dir%/translations' - fallbacks: - - en -# providers: -# crowdin: -# dsn: '%env(CROWDIN_DSN)%' -# loco: -# dsn: '%env(LOCO_DSN)%' -# lokalise: -# dsn: '%env(LOKALISE_DSN)%' diff --git a/api/src/Controller/LoginController.php b/api/src/Controller/LoginController.php index 6df1818aa..70e6aa1cb 100644 --- a/api/src/Controller/LoginController.php +++ b/api/src/Controller/LoginController.php @@ -4,9 +4,6 @@ namespace App\Controller; -use App\Service\ObjectEntityService; -use App\Service\UserService; -use Conduction\CommonGroundBundle\Service\CommonGroundService; use Doctrine\ORM\EntityManagerInterface; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Cache\Adapter\AdapterInterface as CacheInterface; @@ -40,9 +37,8 @@ public function __construct(CacheInterface $cache, EntityManagerInterface $entit * @Route("/me") * @Route("api/users/me", methods={"get"}) */ - public function MeAction(Request $request, CommonGroundService $commonGroundService, ObjectEntityService $objectEntityService) + public function MeAction(Request $request) { - $userService = new UserService($commonGroundService, $objectEntityService); if ($this->getUser()) { $result = [ 'id' => $this->getUser()->getUserIdentifier(), @@ -52,9 +48,6 @@ public function MeAction(Request $request, CommonGroundService $commonGroundServ 'last_name' => $this->getUser()->getLastName(), 'name' => $this->getUser()->getName(), 'email' => $this->getUser()->getEmail(), - // TODO: if we have no person connected to this user create one? with $this->createPersonForUser() - 'person' => $userService->getPersonForUser($this->getUser()), - 'organization' => $userService->getOrganizationForUser($this->getUser()), ]; $result = json_encode($result); } else { @@ -74,7 +67,7 @@ public function MeAction(Request $request, CommonGroundService $commonGroundServ * * @return array */ - private function createPersonForUser(CommonGroundService $commonGroundService): array + private function createPersonForUser(): array { $person = [ 'givenName' => $this->getUser()->getFirstName(), diff --git a/api/src/Controller/UserController.php b/api/src/Controller/UserController.php index a4393d862..71cdc0eb4 100644 --- a/api/src/Controller/UserController.php +++ b/api/src/Controller/UserController.php @@ -267,142 +267,10 @@ private function cleanupLoginResponse(array $userArray): array return $userArray; } - private function getActiveOrganization(array $user, array $organizations): ?string - { - if ($user['organization']) { - return $user['organization']; - } - // If user has no organization, we default activeOrganization to an organization of a userGroup this user has - if (count($organizations) > 0) { - return $organizations[0]; - } - // If we still have no organization, get the organization from the application - if ($this->session->get('application')) { - $application = $this->entityManager->getRepository('App:Application')->findOneBy(['id' => $this->session->get('application')]); - if (!empty($application) && $application->getOrganization()) { - return $application->getOrganization(); - } - } - - return null; - } - - /** - * Get all the child organizations for an organization. - * - * @param array $organizations - * @param string $organization - * @param CommonGroundService $commonGroundService - * @param FunctionService $functionService - * - * @throws \Psr\Cache\CacheException - * @throws \Psr\Cache\InvalidArgumentException - * - * @return array - */ - private function getSubOrganizations(array $organizations, string $organization, CommonGroundService $commonGroundService, FunctionService $functionService): array - { - if ($organization = $functionService->getOrganizationFromCache($organization)) { - if (!empty($organization['subOrganizations']) && count($organization['subOrganizations']) > 0) { - foreach ($organization['subOrganizations'] as $subOrganization) { - if (!in_array($subOrganization['@id'], $organizations)) { - $organizations[] = $subOrganization['@id']; - $this->getSubOrganizations($organizations, $subOrganization['@id'], $commonGroundService, $functionService); - } - } - } - } - - return $organizations; - } - - /** - * Get al the parent organizations for an organization. - * - * @param array $organizations - * @param string $organization - * @param CommonGroundService $commonGroundService - * @param FunctionService $functionService - * - * @throws \Psr\Cache\CacheException - * @throws \Psr\Cache\InvalidArgumentException - * - * @return array - */ - private function getParentOrganizations(array $organizations, string $organization, CommonGroundService $commonGroundService, FunctionService $functionService): array - { - if ($organization = $functionService->getOrganizationFromCache($organization)) { - if (array_key_exists('parentOrganization', $organization) && $organization['parentOrganization'] != null - && !in_array($organization['parentOrganization']['@id'], $organizations)) { - $organizations[] = $organization['parentOrganization']['@id']; - $organizations = $this->getParentOrganizations($organizations, $organization['parentOrganization']['@id'], $commonGroundService, $functionService); - } - } - - return $organizations; - } - - /** - * @Route("users/request_password_reset", methods={"POST"}) - * @Route("api/users/request_password_reset", methods={"POST"}) - */ - public function requestResetAction(Request $request, CommonGroundService $commonGroundService) - { - $data = json_decode($request->getContent(), true); - $users = $commonGroundService->getResourceList(['component' => 'uc', 'type' => 'users'], ['username' => urlencode($data['username'])])['hydra:member']; - if (count($users) > 0) { - $user = $users[0]; - } else { - return new Response(json_encode(['username' =>$data['username']]), 200, ['Content-type' => 'application/json']); - } - $this->authenticationService->sendTokenMail($user, 'Je wachtwoord herstellen', $request->headers->get('Referer', $request->headers->get('referer'))); - - return new Response(json_encode(['username' =>$data['username']]), 200, ['Content-type' => 'application/json']); - } - - /** - * @Route("users/reset_password", methods={"POST"}) - * @Route("api/users/reset_password", methods={"POST"}) - */ - public function resetAction(Request $request, CommonGroundService $commonGroundService) - { - $data = json_decode($request->getContent(), true); - if (!isset($data['username']) || !isset($data['password']) || !isset($data['token'])) { - $status = 400; - $user = [ - 'message' => 'Data missing', - 'type' => 'error', - 'path' => 'users/reset_password', - 'data' => [], - ]; - isset($data['username']) ?? $user['data']['username'] = null; - isset($data['password']) ?? $user['data']['password'] = null; - isset($data['token']) ?? $user['data']['token'] = null; - - return new Response(json_encode($user), $status, ['Content-type' => 'application/json']); - } - - try { - $user = $commonGroundService->createResource(['username' => $data['username'], 'password' => $data['password'], 'token' => $data['token']], ['component' => 'uc', 'type' => 'users/token']); - $status = 200; - $user['username'] = $data['username']; - } catch (ClientException $exception) { - $status = 400; - $user = [ - 'message' => 'Invalid token, username or password', - 'type' => 'error', - 'path' => 'users/reset_password', - 'data' => ['username' => $data['username'], 'password' => $data['password'], 'token'=>$data['token']], - ]; - } - - return new Response(json_encode($user), $status, ['Content-type' => 'application/json']); - } - /** * @Route("api/users/logout", methods={"POST", "GET"}) */ - public function ApiLogoutAction(Request $request, CommonGroundService $commonGroundService) + public function ApiLogoutAction(Request $request) { $request->getSession()->clear(); $request->getSession()->invalidate(); @@ -425,7 +293,7 @@ public function ApiLogoutAction(Request $request, CommonGroundService $commonGro return $response; } - public function ApiMeAction(Request $request, CommonGroundService $commonGroundService) + public function ApiMeAction(Request $request) { $token = substr($request->headers->get('Authorization'), strlen('Bearer ')); if (!$token) { @@ -465,18 +333,6 @@ public function ApiMeAction(Request $request, CommonGroundService $commonGroundS return new Response(json_encode($user), $status, ['Content-type' => 'application/json']); } - /** - * @Route("login/digispoof") - */ - public function DigispoofAction(Request $request, CommonGroundService $commonGroundService) - { - $redirect = $commonGroundService->cleanUrl(['component' => 'ds']); - - $responseUrl = $request->getSchemeAndHttpHost().$this->generateUrl('app_user_digispoof'); - - return $this->redirect($redirect.'?responseUrl='.$responseUrl.'&backUrl='.$request->headers->get('referer')); - } - /** * @Route("login/{method}/{identifier}") */ diff --git a/api/src/DataFixtures/AppFixtures.php b/api/src/DataFixtures/AppFixtures.php index 6c20526f4..987f6fe95 100644 --- a/api/src/DataFixtures/AppFixtures.php +++ b/api/src/DataFixtures/AppFixtures.php @@ -7,7 +7,7 @@ class AppFixtures extends Fixture { - public function load(ObjectManager $manager) + public function load(ObjectManager $manager): void { // $product = new Product(); // $manager->persist($product); diff --git a/api/src/Message/NotificationMessage.php b/api/src/Message/NotificationMessage.php deleted file mode 100644 index b6cad4d0a..000000000 --- a/api/src/Message/NotificationMessage.php +++ /dev/null @@ -1,27 +0,0 @@ -objectEntityId = $objectEntityId; - $this->method = $method; - } - - public function getObjectEntityId(): UuidInterface - { - return $this->objectEntityId; - } - - public function getMethod(): string - { - return $this->method; - } -} diff --git a/api/src/Message/PromiseMessage.php b/api/src/Message/PromiseMessage.php deleted file mode 100644 index 0dd50f3ab..000000000 --- a/api/src/Message/PromiseMessage.php +++ /dev/null @@ -1,27 +0,0 @@ -objectEntityId = $objectEntityId; - $this->method = $method; - } - - public function getObjectEntityId(): UuidInterface - { - return $this->objectEntityId; - } - - public function getMethod(): string - { - return $this->method; - } -} diff --git a/api/src/Message/SyncPageMessage.php b/api/src/Message/SyncPageMessage.php deleted file mode 100644 index 9ae361688..000000000 --- a/api/src/Message/SyncPageMessage.php +++ /dev/null @@ -1,47 +0,0 @@ -callServiceData = $callServiceData; - $this->page = $page; - $this->entityId = $entityId; - $this->sessionData = $sessionData; - } - - public function getCallServiceData(): array - { - return $this->callServiceData; - } - - public function getPage(): int - { - return $this->page; - } - - public function getEntityId(): string - { - return $this->entityId; - } - - public function getSessionData(): array - { - return $this->sessionData; - } -} diff --git a/api/src/MessageHandler/NotificationMessageHandler.php b/api/src/MessageHandler/NotificationMessageHandler.php deleted file mode 100644 index 32966cdb3..000000000 --- a/api/src/MessageHandler/NotificationMessageHandler.php +++ /dev/null @@ -1,32 +0,0 @@ -objectEntityService = $objectEntityService; - $this->repository = $repository; - } - - public function __invoke(NotificationMessage $message): void - { - $object = $this->repository->find($message->getObjectEntityId()); - if ($object instanceof ObjectEntity) { -// var_dump('DispatchNotification: '.$object->getEntity()->getName().' - '.$message->getObjectEntityId()->toString().' - '.$object->getExternalId().' - '.$message->getMethod()); - $this->objectEntityService->notify($object, $message->getMethod()); - } else { -// var_dump('No ObjectEntity found with id: '.$message->getObjectEntityId()->toString()); - } - } -} diff --git a/api/src/MessageHandler/PromiseMessageHandler.php b/api/src/MessageHandler/PromiseMessageHandler.php deleted file mode 100644 index 30fc45173..000000000 --- a/api/src/MessageHandler/PromiseMessageHandler.php +++ /dev/null @@ -1,89 +0,0 @@ -objectEntityRepository = $objectEntityRepository; - $this->objectEntityService = $objectEntityService; - $this->entityManager = $entityManager; - $this->messageBus = $messageBus; - } - - public function __invoke(PromiseMessage $promiseMessage): void - { - $this->objectEntityService->notifications = []; // Make sure we reset notifications array. - $object = $this->objectEntityRepository->find($promiseMessage->getObjectEntityId()); - $this->objectEntityService->functionService->removeResultFromCache = []; - $promises = $this->getPromises($object, [], $promiseMessage->getMethod()); - if (!empty($promises)) { - Utils::settle($promises)->wait(); - - foreach ($promises as $promise) { - echo $promise->wait(); - } - } - $this->entityManager->persist($object); - $this->entityManager->flush(); - - foreach ($this->objectEntityService->notifications as $notification) { - $this->messageBus->dispatch(new NotificationMessage($notification['id'], $notification['method'])); - } - } - - public function getPromises(ObjectEntity $objectEntity, array $parentObjects, string $method, int $level = 0): array - { - $promises = []; - if (in_array($objectEntity, $parentObjects) || $level > 3) { - return $promises; - } - $parentObjects[] = $objectEntity; - foreach ($objectEntity->getSubresources() as $subresource) { - $promises = array_merge($promises, $this->getPromises($subresource, $parentObjects, $method, $level + 1)); - } - if ($objectEntity->getEntity()->getSource()) { - // createPromise will add a notification if promise is successful - $promise = $this->objectEntityService->createPromise($objectEntity, $method); - $promises[] = $promise; - $objectEntity->addPromise($promise); - } else { - // todo: very hacky code - // The code below makes sure that if we do not create a promise^, the method of the notification won't ... - // ... be POST when the ObjectEntity already exists for more than 5 minutes. In this case we want a ... - // ... notification with method = PUT not POST. - $now = new DateTime(); - $interval = $objectEntity->getDateCreated()->diff($now); - $compareDate = new DateTime(); - $compareDate->add($interval); - $now->add(new DateInterval('PT5M')); - if ($compareDate > $now) { - $method = 'PUT'; - } - - // Create Notification -// var_dump('NOTIFICATION: '.$objectEntity->getEntity()->getName().' - '.$objectEntity->getId()->toString().' - '.$objectEntity->getExternalId().' - '.$method); - $this->objectEntityService->notifications[] = ['id' => $objectEntity->getId(), 'method' => $method]; - } - - return $promises; - } -} diff --git a/api/src/MessageHandler/SyncPageMessageHandler.php b/api/src/MessageHandler/SyncPageMessageHandler.php deleted file mode 100644 index 1c519f57a..000000000 --- a/api/src/MessageHandler/SyncPageMessageHandler.php +++ /dev/null @@ -1,150 +0,0 @@ -commonGroundService = $commonGroundService; - $this->objectEntityRepository = $objectEntityRepository; - $this->entityRepository = $entityRepository; - } - - /** - * Handles a SyncPageMessage message. - * - * @param SyncPageMessage $message - * - * @throws Exception - * - * @return void - */ - public function __invoke(SyncPageMessage $message): void - { - $callServiceData = $message->getCallServiceData(); - $requiredKeys = ['component', 'url', 'query', 'headers']; - if (count(array_intersect_key($callServiceData, array_flip($requiredKeys))) !== count($requiredKeys)) { - throw new Exception('CallServiceData is missing one of the following keys: '.implode(', ', $requiredKeys)); - } - $entity = $this->entityRepository->find($message->getEntityId()); - - // Get objects from extern api - $externObjects = $this->getExternObjects($message, $entity); - - // Loop through all extern objects and update or create an ObjectEntity for it in the gateway. - $newGatewayObjects = $this->saveObjects($externObjects, ['message' => $message, 'entity' => $entity]); - - // Dump so we can see what's happening in the worker pod online. - var_dump('Entity: '.$entity->getName().' - Page: '.$message->getPage().' - New / changed gateway objects = '.count($newGatewayObjects)); - } - - /** - * Uses callService with info from the SyncPageMessage to get all objects from an extern api for one specific page. - * - * @param SyncPageMessage $message - * @param Entity $entity - * - * @return array - */ - private function getExternObjects(SyncPageMessage $message, Entity $entity): array - { - $callServiceData = $message->getCallServiceData(); - - $response = $this->commonGroundService->callService( - $callServiceData['component'], - $callServiceData['url'], - '', - array_merge($callServiceData['query'], $message->getPage() !== 1 ? ['page' => $message->getPage()] : []), - $callServiceData['headers'], - false, - 'GET' - ); - if (is_array($response)) { - var_dump('callService error: '.$response); //Throw error? //todo? - } - $response = json_decode($response->getBody()->getContents(), true); - - // Now get response from the correct place in the response - $collectionConfigResults = explode('.', $entity->getCollectionConfig()['results']); - foreach ($collectionConfigResults as $item) { - $response = $response[$item]; - } - - return $response; - } - - /** - * Loop through all extern objects and update or create an ObjectEntity for it in the gateway. - * - * @param array $externObjects - * @param array $messageData Must contain key 'message' (SyncPageMessage) and key 'entity' (Entity) - * - * @return ArrayCollection - */ - private function saveObjects(array $externObjects, array $messageData): ArrayCollection - { - $newGatewayObjects = new ArrayCollection(); - $collectionConfigEnvelope = []; - if (array_key_exists('envelope', $messageData['entity']->getCollectionConfig())) { - $collectionConfigEnvelope = explode('.', $messageData['entity']->getCollectionConfig()['envelope']); - } - $collectionConfigId = []; - if (array_key_exists('id', $messageData['entity']->getCollectionConfig())) { - $collectionConfigId = explode('.', $messageData['entity']->getCollectionConfig()['id']); - } - foreach ($externObjects as $externObject) { - $object = $this->saveObject( - $externObject, - [ - 'collectionConfigEnvelope' => $collectionConfigEnvelope, - 'collectionConfigId' => $collectionConfigId, - ], - $messageData - ); - - if ($object instanceof ObjectEntity) { - $newGatewayObjects->add($object); - } - } - - return $newGatewayObjects; - } - - private function saveObject(array $externObject, array $config, array $messageData): ?ObjectEntity - { - $id = $config['collectionConfigId'] !== [] ? $externObject : null; - // Make sure to get this item from the correct place in $externObject - foreach ($config['collectionConfigEnvelope'] as $item) { - $externObject = $externObject[$item]; - } - // Make sure to get id of this item from the correct place in $externObject - if ($id !== null) { - foreach ($config['collectionConfigId'] as $item) { - $id = $id[$item]; - } - } - - // We want to update all objects, unless specified not to, needs config option: -// if (!$this->objectEntityRepository->findOneBy(['entity' => $messageData['entity'], 'externalId' => $id])) { - // Convert this object to a gateway object - // todo: We could use the handleOwner function here to set the owner of this object, but should we set the owner to the person/user that uses the /sync api-call? -// } - - return $object ?? null; - } -} diff --git a/api/src/Security/ApiKeyAuthenticator.php b/api/src/Security/ApiKeyAuthenticator.php index d9c19f97e..9bb517b62 100644 --- a/api/src/Security/ApiKeyAuthenticator.php +++ b/api/src/Security/ApiKeyAuthenticator.php @@ -3,10 +3,7 @@ namespace App\Security; use App\Entity\User; -use App\Service\FunctionService; -use Conduction\CommonGroundBundle\Service\AuthenticationService; -use Conduction\CommonGroundBundle\Service\CommonGroundService; -use Conduction\SamlBundle\Security\User\AuthenticationUser; +use App\Security\User\AuthenticationUser; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\HttpFoundation\JsonResponse; @@ -23,26 +20,14 @@ class ApiKeyAuthenticator extends \Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator { - private CommonGroundService $commonGroundService; - private ParameterBagInterface $parameterBag; - private AuthenticationService $authenticationService; private SessionInterface $session; - private FunctionService $functionService; private EntityManagerInterface $entityManager; public function __construct( - CommonGroundService $commonGroundService, - AuthenticationService $authenticationService, - ParameterBagInterface $parameterBag, SessionInterface $session, - FunctionService $functionService, EntityManagerInterface $entityManager ) { - $this->commonGroundService = $commonGroundService; - $this->parameterBag = $parameterBag; - $this->authenticationService = $authenticationService; $this->session = $session; - $this->functionService = $functionService; $this->entityManager = $entityManager; } @@ -55,61 +40,6 @@ public function supports(Request $request): ?bool strpos($request->headers->get('Authorization'), 'Bearer') === false; } - /** - * Get all the child organizations for an organization. - * - * @param array $organizations - * @param string $organization - * @param CommonGroundService $commonGroundService - * @param FunctionService $functionService - * - * @throws \Psr\Cache\CacheException - * @throws \Psr\Cache\InvalidArgumentException - * - * @return array - */ - private function getSubOrganizations(array $organizations, string $organization, CommonGroundService $commonGroundService, FunctionService $functionService): array - { - if ($organization = $functionService->getOrganizationFromCache($organization)) { - if (!empty($organization['subOrganizations']) && count($organization['subOrganizations']) > 0) { - foreach ($organization['subOrganizations'] as $subOrganization) { - if (!in_array($subOrganization['@id'], $organizations)) { - $organizations[] = $subOrganization['@id']; - $this->getSubOrganizations($organizations, $subOrganization['@id'], $commonGroundService, $functionService); - } - } - } - } - - return $organizations; - } - - /** - * Get al the parent organizations for an organization. - * - * @param array $organizations - * @param string $organization - * @param CommonGroundService $commonGroundService - * @param FunctionService $functionService - * - * @throws \Psr\Cache\CacheException - * @throws \Psr\Cache\InvalidArgumentException - * - * @return array - */ - private function getParentOrganizations(array $organizations, string $organization, CommonGroundService $commonGroundService, FunctionService $functionService): array - { - if ($organization = $functionService->getOrganizationFromCache($organization)) { - if (array_key_exists('parentOrganization', $organization) && $organization['parentOrganization'] != null - && !in_array($organization['parentOrganization']['@id'], $organizations)) { - $organizations[] = $organization['parentOrganization']['@id']; - $organizations = $this->getParentOrganizations($organizations, $organization['parentOrganization']['@id'], $commonGroundService, $functionService); - } - } - - return $organizations; - } - private function prefixRoles(array $roles): array { foreach ($roles as $key => $value) { diff --git a/api/src/Security/User/AuthenticationProvider.php b/api/src/Security/User/AuthenticationProvider.php index bb8dea505..2af7d7e89 100644 --- a/api/src/Security/User/AuthenticationProvider.php +++ b/api/src/Security/User/AuthenticationProvider.php @@ -15,15 +15,6 @@ */ class AuthenticationProvider implements UserProviderInterface { - private $params; - private $commonGroundService; - - public function __construct(ParameterBagInterface $params, CommonGroundService $commonGroundService) - { - $this->params = $params; - $this->commonGroundService = $commonGroundService; - } - public function loadUserByUsername($username) { return $this->fetchUser($username); diff --git a/api/src/Service/AuthenticationService.php b/api/src/Service/AuthenticationService.php index 4d6da8a09..8868e5133 100644 --- a/api/src/Service/AuthenticationService.php +++ b/api/src/Service/AuthenticationService.php @@ -33,102 +33,19 @@ class AuthenticationService private EntityManagerInterface $entityManager; private Client $client; private Security $security; - private CommonGroundService $commonGroundService; private Environment $twig; private ParameterBagInterface $parameterBag; - public function __construct(SessionInterface $session, EntityManagerInterface $entityManager, Security $security, CommonGroundService $commonGroundService, Environment $twig, ParameterBagInterface $parameterBag) + public function __construct(SessionInterface $session, EntityManagerInterface $entityManager, Security $security, Environment $twig, ParameterBagInterface $parameterBag) { $this->session = $session; $this->entityManager = $entityManager; $this->client = new Client(); $this->security = $security; - $this->commonGroundService = $commonGroundService; $this->twig = $twig; $this->parameterBag = $parameterBag; } - public function generateJwt() - { - $user = $this->retrieveCurrentUser(); - - $array = [ - 'username' => $user->getUsername(), - 'password' => $user->getPassword(), - ]; - - $user = $this->commonGroundService->createResource($array, ['component' => 'uc', 'type' => 'login']); - - return $user['jwtToken']; - } - - /** - * Validates a JWT token with the public key stored in the component. - * - * @param string $jws The signed JWT token to validate - * @param string $publicKey - * - * @throws Exception Thrown when the JWT token could not be verified - * - * @return bool Whether the jwt is valid - */ - public function validateJWTAndGetPayload(string $jws, string $publicKey): bool - { - try { - $serializer = new CompactSerializer(); - $jwt = $serializer->unserialize($jws); - $algorithmManager = new AlgorithmManager([new RS512()]); - $pem = $this->writeFile($publicKey, 'pem'); - $public = JWKFactory::createFromKeyFile($pem); - $this->removeFiles([$pem]); - - $jwsVerifier = new JWSVerifier($algorithmManager); - - if ($jwsVerifier->verifyWithKey($jwt, $public, 0)) { - return true; - } - - return false; - } catch (\Throwable $e) { - return false; - } - } - - public function checkJWTExpiration($token): bool - { - $data = $this->retrieveJWTContents($token); - - if (!is_array($token) || !array_key_exists('exp', $token) || strtotime('now') >= $data['exp']) { - return false; - } - - return true; - } - - public function retrieveJWTUser($token): bool - { - $data = $this->retrieveJWTContents($token); - - try { - $user = $this->commonGroundService->getResource(['component' => 'uc', 'type' => 'users', 'id' => $data['userId']]); - } catch (\Throwable $e) { - return false; - } - - return true; - } - - public function retrieveJWTContents($token): array - { - try { - $json = base64_decode(explode('.', $token))[1]; - - return json_decode($json, true); - } catch (\Exception $exception) { - return []; - } - } - /** * Writes a temporary file in the component file system. * @@ -157,17 +74,6 @@ public function removeFiles(array $files): void } } - public function retrieveCurrentUser() - { - $user = $this->security->getUser(); - - if ($user) { - return $user; - } - - throw new AccessDeniedException('Unable to find logged in user'); - } - public function authenticate(string $method, string $identifier, string $code): array { if (!$method || !$identifier) { @@ -188,12 +94,12 @@ public function retrieveData(string $method, string $code, Authentication $authe case 'oidc': case 'adfs': return $this->retrieveAdfsData($code, $authentication, $redirectUrl); - break; case 'digid': break; default: throw new BadRequestException('Authentication method not supported'); } + return []; } public function refreshAccessToken(string $refreshToken, string $authenticator): array @@ -253,12 +159,13 @@ public function buildRedirectUrl(string $method, string $redirectUrl, Authentica return $this->handleOidcRedirectUrl($redirectUrl, $authentication); case 'adfs': return $this->handleAdfsRedirectUrl($redirectUrl, $authentication); - break; case 'digid': break; default: throw new BadRequestException('Authentication method not supported'); } + + return null; } public function handleOidcRedirectUrl(string $redirectUrl, Authentication $authentication): string @@ -288,36 +195,4 @@ public function retrieveAuthentication(string $identifier): Authentication return $authentications[0]; } - - public function sendTokenMail(array $user, string $subject, string $frontend): bool - { - $response = $this->commonGroundService->getResourceList(['component' => 'uc', 'type' => 'users', 'id' => "{$user['id']}/token"], ['type' => 'SET_PASSWORD']); - $person = $this->commonGroundService->isResource($user['person']); - - $service = $this->commonGroundService->getResourceList(['component' => 'bs', 'type' => 'services'])['hydra:member'][0]; - $parameters = [ - 'fullname' => $person['name'] ?? $user['username'], - 'base64_encoded_email' => base64_encode($user['username']), - 'base64_encoded_token' => base64_encode($response['token']), - 'app_base_url' => rtrim($frontend, '/'), - 'subject' => $subject, - ]; - - $content = $this->twig->render('password-forgot-e-mail.html.twig', $parameters); - - $message = $this->commonGroundService->createResource( - [ - 'reciever' => $user['username'], - 'sender' => 'taalhuizen@biscutrecht.nl', - 'content' => $content, - 'type' => 'email', - 'status' => 'queued', - 'service' => '/services/'.$service['id'], - 'subject' => $subject, - ], - ['component' => 'bs', 'type' => 'messages'] - ); - - return true; - } } diff --git a/api/src/Service/AuthorizationService.php b/api/src/Service/AuthorizationService.php index 8f9bd00b0..9f4158cdd 100644 --- a/api/src/Service/AuthorizationService.php +++ b/api/src/Service/AuthorizationService.php @@ -4,8 +4,6 @@ use App\Entity\Attribute; use App\Entity\Entity; -use Conduction\CommonGroundBundle\Service\CommonGroundService; -use Conduction\CommonGroundBundle\Service\SerializerService; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\ORM\EntityManagerInterface; use Psr\Cache\CacheException; @@ -29,7 +27,6 @@ class AuthorizationService { private ParameterBagInterface $parameterBag; - private CommonGroundService $commonGroundService; private Security $security; private SessionInterface $session; private CacheInterface $cache; @@ -37,14 +34,12 @@ class AuthorizationService public function __construct( ParameterBagInterface $parameterBag, - CommonGroundService $commonGroundService, Security $security, SessionInterface $session, CacheInterface $cache, EntityManagerInterface $entityManager ) { $this->parameterBag = $parameterBag; - $this->commonGroundService = $commonGroundService; $this->security = $security; $this->session = $session; $this->cache = $cache; diff --git a/api/src/Service/DocumentService.php b/api/src/Service/DocumentService.php index 4e8258b97..bf8f2cc3e 100644 --- a/api/src/Service/DocumentService.php +++ b/api/src/Service/DocumentService.php @@ -18,22 +18,16 @@ */ class DocumentService { - private CommonGroundService $commonGroundService; private EavService $eavService; - private ResponseService $responseService; private GatewayService $gatewayService; - private SerializerInterface $serializer; private ParameterBagInterface $parameterBag; private TranslationService $translationService; private TemplateService $templateService; - public function __construct(EavService $eavService, ResponseService $responseService, CommonGroundService $commonGroundService, GatewayService $gatewayService, SerializerInterface $serializer, ParameterBagInterface $parameterBag, TranslationService $translationService, TemplateService $templateService) + public function __construct(EavService $eavService, GatewayService $gatewayService, ParameterBagInterface $parameterBag, TranslationService $translationService, TemplateService $templateService) { $this->eavService = $eavService; - $this->responseService = $responseService; - $this->commonGroundService = $commonGroundService; $this->gatewayService = $gatewayService; - $this->serializer = $serializer; $this->parameterBag = $parameterBag; $this->translationService = $translationService; $this->templateService = $templateService; diff --git a/api/src/Service/EavDocumentationService.php b/api/src/Service/EavDocumentationService.php index e56829191..2edfd7565 100644 --- a/api/src/Service/EavDocumentationService.php +++ b/api/src/Service/EavDocumentationService.php @@ -4,7 +4,6 @@ use App\Entity\Attribute; use App\Entity\Entity; -use Conduction\CommonGroundBundle\Service\CommonGroundService; use Doctrine\ORM\EntityManagerInterface; use Symfony\Component\Filesystem\Filesystem; use Symfony\Component\Yaml\Yaml; @@ -19,13 +18,11 @@ class EavDocumentationService { private EntityManagerInterface $em; - private CommonGroundService $commonGroundService; private array $supportedValidators; - public function __construct(EntityManagerInterface $em, CommonGroundService $commonGroundService) + public function __construct(EntityManagerInterface $em) { $this->em = $em; - $this->commonGroundService = $commonGroundService; // Lets define the validator that we support for docummentation right now $this->supportedValidators = $this->supportedValidators(); diff --git a/api/src/Service/EavService.php b/api/src/Service/EavService.php index 29a8b63db..78c51f228 100644 --- a/api/src/Service/EavService.php +++ b/api/src/Service/EavService.php @@ -41,47 +41,21 @@ class EavService { private EntityManagerInterface $em; - private CommonGroundService $commonGroundService; - private SerializerService $serializerService; - private SerializerInterface $serializer; - private AuthorizationService $authorizationService; private SessionInterface $session; - private ObjectEntityService $objectEntityService; - private ResponseService $responseService; - private ParameterBagInterface $parameterBag; - private TranslationService $translationService; - private FunctionService $functionService; - private CacheInterface $cache; private Stopwatch $stopwatch; + private FunctionService $functionService; public function __construct( EntityManagerInterface $em, - CommonGroundService $commonGroundService, - SerializerService $serializerService, - SerializerInterface $serializer, AuthorizationService $authorizationService, SessionInterface $session, - ObjectEntityService $objectEntityService, - ResponseService $responseService, - ParameterBagInterface $parameterBag, - TranslationService $translationService, - FunctionService $functionService, - CacheInterface $cache, - Stopwatch $stopwatch + Stopwatch $stopwatch, + FunctionService $functionService ) { $this->em = $em; - $this->commonGroundService = $commonGroundService; - $this->serializerService = $serializerService; - $this->serializer = $serializer; - $this->authorizationService = $authorizationService; $this->session = $session; - $this->objectEntityService = $objectEntityService; - $this->responseService = $responseService; - $this->parameterBag = $parameterBag; - $this->translationService = $translationService; - $this->functionService = $functionService; - $this->cache = $cache; $this->stopwatch = $stopwatch; + $this->functionService = $functionService; } /** @@ -185,1043 +159,6 @@ public function getObject(?string $id, string $method, Entity $entity) return null; } - /** - * Handles an api request. - * - * @param Request $request - * - * @throws Exception - * - * @return Response - * @deprecated - */ - public function handleRequest(Request $request): Response - { - $this->cache->invalidateTags(['grantedScopes']); - - // Lets get our base stuff - $requestBase = $this->getRequestBase($request); - $contentType = $this->getRequestContentType($request, $requestBase['extension']); - $entity = $this->getEntity($requestBase['path']); - $body = []; // Lets default - - // What if we canot find an entity? - if (is_array($entity)) { - $resultConfig['responseType'] = Response::HTTP_BAD_REQUEST; - $resultConfig['result'] = $entity; - $entity = null; - } - - // Get a body - if ($request->getContent()) { - //@todo support xml messages - $body = json_decode($request->getContent(), true); - $body = filter_var_array($body, FILTER_SANITIZE_ENCODED); - } - // // If we have no body but are using form-data with a POST or PUT call instead: //TODO find a better way to deal with form-data? - // elseif ($request->getMethod() == 'POST' || $request->getMethod() == 'PUT') { - // // get other input values from form-data and put it in $body ($request->get('name')) - // $body = $this->handleFormDataBody($request, $entity); - // - // $formDataResult = $this->handleFormDataFiles($request, $entity, $object); - // if (array_key_exists('result', $formDataResult)) { - // $result = $formDataResult['result']; - // $responseType = Response::HTTP_BAD_REQUEST; - // } else { - // $object = $formDataResult; - // } - // } - - if (!isset($resultConfig['result'])) { - $resultConfig = $this->generateResult($request, $entity, $requestBase, $body); - } - - $options = []; - switch ($contentType) { - case 'text/csv': - $options = [ - CsvEncoder::ENCLOSURE_KEY => '"', - CsvEncoder::ESCAPE_CHAR_KEY => '+', - ]; - - // Lets allow _mapping tot take place - /* @todo remove the old fields support */ - /* @todo make this universal */ - if ($mapping = $request->query->get('_mapping')) { - foreach ($resultConfig['result'] as $key => $result) { - $resultConfig['result'][$key] = $this->translationService->dotHydrator([], $result, $mapping); - } - } - } - - // Lets seriliaze the shizle - $result = $this->serializerService->serialize(new ArrayCollection($resultConfig['result']), $requestBase['renderType'], $options); - - // Afther that we transale the shizle out of it - - /*@todo this is an ugly catch to make sure it only applies to bisc */ - /*@todo this should DEFINTLY be configuration */ - if ($contentType === 'text/csv') { - $translationVariables = [ - 'OTHER' => 'Anders', - 'YES_OTHER' => '"Ja, Anders"', - ]; - - $result = $this->translationService->parse($result, true, $translationVariables); - } else { - $translationVariables = []; - } - - /* - if ($contentType === 'text/csv') { - $replacements = [ - '/student\.person.givenName/' => 'Voornaam', - '/student\.person.additionalName/' => 'Tussenvoegsel', - '/student\.person.familyName/' => 'Achternaam', - '/student\.person.emails\..\.email/' => 'E-mail adres', - '/student.person.telephones\..\.telephone/' => 'Telefoonnummer', - '/student\.intake\.dutchNTLevel/' => 'NT1/NT2', - '/participations\.provider\.id/' => 'ID aanbieder', - '/participations\.provider\.name/' => 'Aanbieder', - '/participations/' => 'Deelnames', - '/learningResults\..\.id/' => 'ID leervraag', - '/learningResults\..\.verb/' => 'Werkwoord', - '/learningResults\..\.subjectOther/' => 'Onderwerp (anders)', - '/learningResults\..\.subject/' => 'Onderwerp', - '/learningResults\..\.applicationOther/' => 'Toepasing (anders)', - '/learningResults\..\.application/' => 'Toepassing', - '/learningResults\..\.levelOther/' => 'Niveau (anders)', - '/learningResults\..\.level/' => 'Niveau', - '/learningResults\..\.participation/' => 'Deelname', - '/learningResults\..\.testResult/' => 'Test Resultaat', - '/agreements/' => 'Overeenkomsten', - '/desiredOffer/' => 'Gewenst aanbod', - '/advisedOffer/' => 'Geadviseerd aanbod', - '/offerDifference/' => 'Aanbod verschil', - '/person\.givenName/' => 'Voornaam', - '/person\.additionalName/' => 'Tussenvoegsel', - '/person\.familyName/' => 'Achternaam', - '/person\.emails\..\.email/' => 'E-mail adres', - '/person.telephones\..\.telephone/' => 'Telefoonnummer', - '/intake\.date/' => 'Aanmaakdatum', - '/intake\.referringOrganizationEmail/' => 'Verwijzer Email', - '/intake\.referringOrganizationOther/' => 'Verwijzer Telefoon', - '/intake\.referringOrganization/' => 'Verwijzer', - '/intake\.foundViaOther/' => 'Via (anders)', - '/intake\.foundVia/' => 'Via', - '/roles/' => 'Rollen', - '/student\.id/' => 'ID deelnemer', - '/description/' => 'Beschrijving', - '/motivation/' => 'Leervraag', - '/languageHouse\.name/' => 'Naam taalhuis', - ]; - - foreach ($replacements as $key => $value) { - $result = preg_replace($key, $value, $result); - } - } - */ - - // Let return the shizle - $response = new Response( - $result, - $resultConfig['responseType'], - ['content-type' => $contentType] - ); - - // Let intervene if it is a known file extension - $supportedExtensions = ['json', 'jsonld', 'jsonhal', 'xml', 'csv', 'yaml']; - if ($entity && in_array($requestBase['extension'], $supportedExtensions)) { - $date = new \DateTime(); - $date = $date->format('Ymd_His'); - $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, "{$entity->getName()}_{$date}.{$requestBase['extension']}"); - $response->headers->set('Content-Disposition', $disposition); - } - - return $response; - } - - /** - * Handles an api request. - * - * @param Request $request - * - * @throws Exception - * - * @return Response - * @deprecated - */ - public function generateResult(Request $request, Entity $entity, array $requestBase, ?array $body = []): array - { - // Lets get our base stuff - $result = $requestBase['result']; - - // Set default responseType - $responseType = Response::HTTP_OK; - - // Get the application by searching for an application with a domain that matches the host of this request - $host = $request->headers->get('host'); - // TODO: use a sql query instead of array_filter for finding the correct application - // $application = $this->em->getRepository('App:Application')->findByDomain($host); - // if (!empty($application)) { - // $this->session->set('application', $application->getId()->toString()); - // } - $applications = $this->em->getRepository('App:Application')->findAll(); - $applications = array_values(array_filter($applications, function (Application $application) use ($host) { - return in_array($host, $application->getDomains()); - })); - if (count($applications) > 0) { - $this->session->set('application', $applications[0]->getId()->toString()); - } elseif ($this->session->get('apiKeyApplication')) { - // If an api-key is used for authentication we already know which application is used - $this->session->set('application', $this->session->get('apiKeyApplication')); - } else { - // var_dump('no application found'); - if ($host == 'localhost') { - $localhostApplication = new Application(); - $localhostApplication->setName('localhost'); - $localhostApplication->setDescription('localhost application'); - $localhostApplication->setDomains(['localhost']); - $localhostApplication->setPublic(''); - $localhostApplication->setSecret(''); - $localhostApplication->setOrganization('localhostOrganization'); - $this->em->persist($localhostApplication); - $this->em->flush(); - $this->session->set('application', $localhostApplication->getId()->toString()); - // var_dump('Created Localhost Application'); - } else { - $this->session->set('application', null); - $responseType = Response::HTTP_FORBIDDEN; - $result = [ - 'message' => 'No application found with domain '.$host, - 'type' => 'Forbidden', - 'path' => $host, - 'data' => ['host' => $host], - ]; - } - } - - if (!$this->session->get('activeOrganization') && $this->session->get('application')) { - $application = $this->em->getRepository('App:Application')->findOneBy(['id' => $this->session->get('application')]); - $this->session->set('activeOrganization', !empty($application) ? $application->getOrganization() : null); - } - if (!$this->session->get('organizations') && $this->session->get('activeOrganization')) { - $this->session->set('organizations', [$this->session->get('activeOrganization')]); - } - if (!$this->session->get('parentOrganizations')) { - $this->session->set('parentOrganizations', []); - } - - // Lets create an object - if (($requestBase['id'] || $request->getMethod() == 'POST') && $responseType == Response::HTTP_OK) { - $object = $this->getObject($requestBase['id'], $request->getMethod(), $entity); - if (array_key_exists('type', $object) && $object['type'] == 'Bad Request') { - $responseType = Response::HTTP_BAD_REQUEST; - $result = $object; - $object = null; - } // Lets check if the user is allowed to view/edit this resource. - elseif (!$this->objectEntityService->checkOwner($object)) { - // TODO: do we want to throw a different error if there are nog organizations in the session? (because of logging out for example) - if ($object->getOrganization() && !in_array($object->getOrganization(), $this->session->get('organizations') ?? [])) { - $object = null; // Needed so we return the error and not the object! - $responseType = Response::HTTP_FORBIDDEN; - $result = [ - 'message' => 'You are forbidden to view or edit this resource.', - 'type' => 'Forbidden', - 'path' => $entity->getName(), - 'data' => ['id' => $requestBase['id']], - ]; - } - } - } - - // Check for scopes, if forbidden to view/edit overwrite result so far to this forbidden error - if ((!isset($object) || !$object->getUri()) || !$this->objectEntityService->checkOwner($object)) { - try { - //TODO what to do if we do a get collection and want to show objects this user is the owner of, but not any other objects? - $this->authorizationService->checkAuthorization([ - 'method' => $request->getMethod(), - 'entity' => $entity, - 'object' => $object ?? null, - ]); - } catch (AccessDeniedException $e) { - $result = [ - 'message' => $e->getMessage(), - 'type' => 'Forbidden', - 'path' => $entity->getName(), - 'data' => [], - ]; - - return [ - 'result' => $result, - 'responseType' => Response::HTTP_FORBIDDEN, - 'object' => $object ?? null, - ]; - } - } - - // Lets allow for filtering specific fields - $fields = $this->getRequestFields($request); - - // Lets setup a switchy kinda thingy to handle the input (in handle functions) - // Its a enity endpoint - if ($requestBase['id'] && isset($object) && $object instanceof ObjectEntity) { - // Lets handle all different type of endpoints - $endpointResult = $this->handleEntityEndpoint($request, [ - 'object' => $object ?? null, 'body' => $body ?? null, 'fields' => $fields, 'path' => $requestBase['path'], - ]); - } - // its an collection endpoind - elseif ($responseType == Response::HTTP_OK) { - $endpointResult = $this->handleCollectionEndpoint($request, [ - 'object' => $object ?? null, 'body' => $body ?? null, 'fields' => $fields, 'path' => $requestBase['path'], - 'entity' => $entity, 'extension' => $requestBase['extension'], - ]); - } - if (isset($endpointResult)) { - $result = $endpointResult['result']; - $responseType = $endpointResult['responseType']; - } - - // If we have an error we want to set the responce type to error - if (isset($result) && array_key_exists('type', $result) && $result['type'] == 'error') { - $responseType = Response::HTTP_BAD_REQUEST; - } - - return [ - 'result' => $result, - 'responseType' => $responseType, - 'object' => $object ?? null, - ]; - } - - /** - * Gets the path, id, extension & renderType from the Request. - * - * @param Request $request - * - * @return array - * @deprecated - */ - private function getRequestBase(Request $request): array - { - // Lets get our base stuff - $path = $request->attributes->get('entity'); - $id = $request->attributes->get('id'); - - $extension = false; - - // Lets pull a render type form the extension if we have any - if (strpos($path, '.') && $renderType = explode('.', $path)) { - $path = $renderType[0]; - $renderType = end($renderType); - $extension = $renderType; - } elseif (strpos($id, '.') && $renderType = explode('.', $id)) { - $id = $renderType[0]; - $renderType = end($renderType); - $extension = $renderType; - } else { - $renderType = 'json'; - } - - return [ - 'path' => $path, - 'id' => $id, - 'extension' => $extension, - 'renderType' => $renderType, - 'result' => $this->checkAllowedRenderTypes($renderType, $path), - ]; - } - - /** - * Let do a backup to default to an allowed render type. - * - * @param string $renderType - * @param string $path - * - * @return array|null - * @deprecated - */ - private function checkAllowedRenderTypes(string $renderType, string $path): ?array - { - // Let do a backup to defeault to an allowed render type - $renderTypes = ['json', 'jsonld', 'jsonhal', 'xml', 'csv', 'yaml']; - if ($renderType && !in_array($renderType, $renderTypes)) { - return [ - 'message' => 'The rendering of this type is not suported, suported types are '.implode(',', $renderTypes), - 'type' => 'Bad Request', - 'path' => $path, - 'data' => ['rendertype' => $renderType], - ]; - } - - return null; - } - - /** - * @param Request $request - * @param string $extension - * - * @return string - * @deprecated - */ - private function getRequestContentType(Request $request, string $extension): string - { - // This should be moved to the commonground service and callded true $this->serializerService->getRenderType($contentType); - $acceptHeaderToSerialiazation = [ - 'application/json' => 'json', - 'application/ld+json' => 'jsonld', - 'application/json+ld' => 'jsonld', - 'application/hal+json' => 'jsonhal', - 'application/json+hal' => 'jsonhal', - 'application/xml' => 'xml', - 'text/csv' => 'csv', - 'text/yaml' => 'yaml', - ]; - - $contentType = $request->headers->get('accept'); - // If we overrule the content type then we must adjust the return header acordingly - if ($extension) { - $contentType = array_search($extension, $acceptHeaderToSerialiazation); - } elseif (!array_key_exists($contentType, $acceptHeaderToSerialiazation)) { - $contentType = 'application/json'; - } - - return $contentType; - } - - /** - * Creates a body array from the given key+values when using form-data for an POST or PUT (excl. attribute of type file). - * - * @param Request $request - * @param Entity $entity - * - * @return array - * @deprecated - */ - private function handleFormDataBody(Request $request, Entity $entity): array - { - // get other input values from form-data and put it in $body ($request->get('name')) - // TODO: Maybe use $request->request->all() and filter out attributes with type = file after that? ... - // todo... (so that we can check for input key+values that are not allowed and throw an error/warning instead of just ignoring them) - $body = []; - foreach ($entity->getAttributes() as $attribute) { - if ($attribute->getType() != 'file' && $request->get($attribute->getName())) { - $body[$attribute->getName()] = $request->get($attribute->getName()); - } - } - - return $body; - } - - /** - * Handles file validation and mutations for form-data. - * - * @param Request $request - * @param Entity $entity - * @param ObjectEntity $objectEntity - * - * @throws Exception - * @deprecated - */ - private function handleFormDataFiles(Request $request, Entity $entity, ObjectEntity $objectEntity) - { - if (count($request->files) > 0) { - // Check if this entity has an attribute with type file - $criteria = Criteria::create()->andWhere(Criteria::expr()->eq('type', 'file'))->setMaxResults(1); - $attributes = $entity->getAttributes()->matching($criteria); - - // If no attribute with type file found, throw an error - if ($attributes->isEmpty()) { - $result = [ - 'message' => 'No attribute with type file found for this entity', - 'type' => 'Bad Request', - 'path' => $entity->getName(), - 'data' => [], - ]; - - return ['result' => $result]; - } else { - // Else set attribute to the attribute with type = file - $attribute = $attributes->first(); - // Get the value (file(s)) for this attribute - $value = $request->files->get($attribute->getName()); - - if ($attribute->getMultiple()) { - // When using form-data with multiple=true for files the form-data key should have [] after the name (to make it an array, example key: files[], and support multiple file uploads with one key+multiple files in a single value) - if (!is_array($value)) { - $objectEntity->addError($attribute->getName(), 'Multiple is set for this attribute. Expecting an array of files. (Use array in form-data with the following key: '.$attribute->getName().'[])'); - } else { - // Loop through all files, validate them and store them in the files ArrayCollection - foreach ($value as $file) { - } - } - } else { - // Validate (and create/update) this file - } - - return $objectEntity; - } - } - } - - /** - * Gets fields from the request to use for filtering specific fields. - * - * @param Request $request - * - * @return array - * @deprecated - */ - public function getRequestFields(Request $request): ?array - { - $fields = $request->query->has('fields') ? $request->query->get('fields') : $request->query->get('_fields'); - - if ($fields) { - // Lets deal with a comma seperated list - if (!is_array($fields)) { - $fields = explode(',', $fields); - } - - $dot = new Dot(); - // Lets turn the from dor attat into an propper array - foreach ($fields as $key => $value) { - $dot->add($value, true); - } - - $fields = $dot->all(); - } - - return $fields; - } - - /** - * Gets extend from the request to use for extending. - * - * @param Request $request - * - * @return array - * @deprecated - */ - public function getRequestExtend(Request $request): ?array - { - $extend = $request->query->has('extend') ? $request->query->get('extend') : $request->query->get('_extend'); - - if ($extend) { - // Lets deal with a comma seperated list - if (!is_array($extend)) { - $extend = explode(',', $extend); - } - - $dot = new Dot(); - // Lets turn the from dor attat into an propper array - foreach ($extend as $key => $value) { - $dot->add($value, true); - } - - $extend = $dot->all(); - } - - return $extend; - } - - /** - * Handles entity endpoints. - * - * @param Request $request - * @param array $info Array with some required info, must contain the following keys: object, body, fields & path. - * - * @throws Exception - * - * @return array - * @deprecated - */ - public function handleEntityEndpoint(Request $request, array $info): array - { - // Lets setup a switchy kinda thingy to handle the input - // Its an enity endpoint - switch ($request->getMethod()) { - case 'GET': - $result = $this->handleGet($info['object'], $info['fields'], null); - $responseType = Response::HTTP_OK; - break; - case 'PUT': - // Transfer the variable to the service - $result = $this->handleMutation($info['object'], $info['body'], $info['fields'], $request); - $responseType = Response::HTTP_OK; - if (isset($result) && array_key_exists('type', $result) && $result['type'] == 'Forbidden') { - $responseType = Response::HTTP_FORBIDDEN; - } - break; - case 'DELETE': - $result = $this->handleDelete($info['object']); - $responseType = Response::HTTP_NO_CONTENT; - if (isset($result) && array_key_exists('type', $result) && $result['type'] == 'Forbidden') { - $responseType = Response::HTTP_FORBIDDEN; - } - break; - default: - $result = [ - 'message' => 'This method is not allowed on this endpoint, allowed methods are GET, PUT and DELETE', - 'type' => 'Bad Request', - 'path' => $info['path'], - 'data' => ['method' => $request->getMethod()], - ]; - $responseType = Response::HTTP_BAD_REQUEST; - break; - } - - return [ - 'result' => $result ?? null, - 'responseType' => $responseType, - ]; - } - - /** - * Handles collection endpoints. - * - * @param Request $request - * @param array $info Array with some required info, must contain the following keys: object, body, fields, path, entity & extension. - * - * @throws Exception - * - * @return array - * @deprecated - */ - public function handleCollectionEndpoint(Request $request, array $info): array - { - // its a collection endpoint - switch ($request->getMethod()) { - case 'GET': - $result = $this->handleSearch($info['entity'], $request, $info['fields'], null, $info['extension']); - $responseType = Response::HTTP_OK; - break; - case 'POST': - // Transfer the variable to the service - $result = $this->handleMutation($info['object'], $info['body'], $info['fields'], $request); - $responseType = Response::HTTP_CREATED; - if (isset($result) && array_key_exists('type', $result) && $result['type'] == 'Forbidden') { - $responseType = Response::HTTP_FORBIDDEN; - } - break; - default: - $result = [ - 'message' => 'This method is not allowed on this endpoint, allowed methods are GET and POST', - 'type' => 'Bad Request', - 'path' => $info['path'], - 'data' => ['method' => $request->getMethod()], - ]; - $responseType = Response::HTTP_BAD_REQUEST; - break; - } - - return [ - 'result' => $result ?? null, - 'responseType' => $responseType, - ]; - } - - /** - * This function handles data mutations on EAV Objects. - * - * @param ObjectEntity $object - * @param array $body - * @param $fields - * - * @throws Exception - * - * @return array - * @deprecated - */ - public function handleMutation(ObjectEntity $object, array $body, $fields, Request $request): array - { - // Check if session contains an activeOrganization, so we can't do calls without it. So we do not create objects with no organization! - if ($this->parameterBag->get('app_auth') && empty($this->session->get('activeOrganization'))) { - return [ - 'message' => 'An active organization is required in the session, please login to create a new session.', - 'type' => 'Forbidden', - 'path' => $object->getEntity()->getName(), - 'data' => ['activeOrganization' => null], - ]; - } - - // Check if @owner is present in the body and if so unset it. - // note: $owner is allowed to be null! - $owner = 'owner'; - if (array_key_exists('@owner', $body)) { - $owner = $body['@owner']; - unset($body['@owner']); - } - - // Check optional conditional logic - $object->checkConditionlLogic(); // Old way of checking condition logic - - // Saving the data - $this->em->persist($object); - if ($request->getMethod() == 'POST' && $object->getEntity()->getFunction() === 'organization' && !array_key_exists('@organization', $body)) { - $object = $this->functionService->createOrganization($object, $object->getUri(), $body['type']); - } - $this->objectEntityService->handleOwner($object, $owner); // note: $owner is allowed to be null! - $this->em->persist($object); - $this->em->flush(); - - return $this->responseService->renderResult($object, $fields, null); - } - - /** - * Handles a get item api call. - * - * @param ObjectEntity $object - * @param array|null $fields - * @param array|null $extend - * @param string $acceptType - * - * @throws CacheException|InvalidArgumentException - * - * @return array - * @deprecated - */ - public function handleGet(ObjectEntity $object, ?array $fields, ?array $extend, string $acceptType = 'json'): array - { - return $this->responseService->renderResult($object, $fields, $extend, $acceptType); - } - - /** - * A function to replace Request->query->all() because Request->query->all() will replace some characters with an underscore. - * This function will not. - * - * @param string $method The method of the Request - * - * @return array An array with all query parameters. - * @deprecated (see CoreBundle RequestService->realRequestQueryAll()!) - */ - public function realRequestQueryAll(string $method = 'get'): array - { - $vars = []; - if (strtolower($method) === 'get' && empty($_SERVER['QUERY_STRING'])) { - return $vars; - } - $pairs = explode('&', $_SERVER['QUERY_STRING']); - foreach ($pairs as $pair) { - $nv = explode('=', $pair); - $name = urldecode($nv[0]); - $value = ''; - if (count($nv) == 2) { - $value = urldecode($nv[1]); - } - - $this->recursiveRequestQueryKey($vars, $name, explode('[', $name)[0], $value); - } - - return $vars; - } - - /** - * This function adds a single query param to the given $vars array. ?$name=$value - * Will check if request query $name has [...] inside the parameter, like this: ?queryParam[$nameKey]=$value. - * Works recursive, so in case we have ?queryParam[$nameKey][$anotherNameKey][etc][etc]=$value. - * Also checks for queryParams ending on [] like: ?queryParam[$nameKey][] (or just ?queryParam[]), if this is the case - * this function will add given value to an array of [queryParam][$nameKey][] = $value or [queryParam][] = $value. - * If none of the above this function will just add [queryParam] = $value to $vars. - * - * @param array $vars The vars array we are going to store the query parameter in - * @param string $name The full $name of the query param, like this: ?$name=$value - * @param string $nameKey The full $name of the query param, unless it contains [] like: ?queryParam[$nameKey]=$value - * @param string $value The full $value of the query param, like this: ?$name=$value - * - * @return void - * @deprecated - */ - private function recursiveRequestQueryKey(array &$vars, string $name, string $nameKey, string $value) - { - $matchesCount = preg_match('/(\[[^[\]]*])/', $name, $matches); - if ($matchesCount > 0) { - $key = $matches[0]; - $name = str_replace($key, '', $name); - $key = trim($key, '[]'); - if (!empty($key)) { - $vars[$nameKey] = $vars[$nameKey] ?? []; - $this->recursiveRequestQueryKey($vars[$nameKey], $name, $key, $value); - } else { - $vars[$nameKey][] = $value; - } - } else { - $vars[$nameKey] = $value; - } - } - - /** - * Handles a search (collection) api call. - * - * @param Entity $entity - * @param Request $request - * @param array|null $fields - * @param array|null $extend - * @param $extension - * @param null $filters - * @param string $acceptType - * @param array|null $query - * - * @throws CacheException - * @throws InvalidArgumentException - * - * @return array|array[] - * @deprecated - */ - public function handleSearch(Entity $entity, Request $request, ?array $fields, ?array $extend, $extension, $filters = null, string $acceptType = 'json', ?array $query = null): array - { - $query = $query ?? $this->realRequestQueryAll($request->getMethod()); - unset($query['limit']); - unset($query['page']); - unset($query['start']); - $limit = (int) ($request->query->get('limit') ?? 25); // These type casts are not redundant! - $page = (int) ($request->query->get('page') ?? 1); - $start = (int) ($request->query->get('start') ?? 1); - - if ($start > 1) { - $offset = $start - 1; - } else { - $offset = ($page - 1) * $limit; - } - - // Allowed order by - $this->stopwatch->start('orderParametersCheck', 'handleSearch'); - $orderCheck = $this->em->getRepository('App:ObjectEntity')->getOrderParameters($entity); - // todo: ^^^ add something to ObjectEntities just like bool searchable, use that to check for fields allowed to be used for ordering. - // todo: sortable? - - $order = []; - if (array_key_exists('order', $query)) { - $order = $query['order']; - unset($query['order']); - if (!is_array($order)) { - $orderCheckStr = implode(', ', $orderCheck); - $message = 'Please give an attribute to order on. Like this: ?order[attributeName]=desc/asc. Supported order query parameters: '.$orderCheckStr; - } - if (is_array($order) && count($order) > 1) { - $message = 'Only one order query param at the time is allowed.'; - } - if (is_array($order) && !in_array(strtoupper(array_values($order)[0]), ['DESC', 'ASC'])) { - $message = 'Please use desc or asc as value for your order query param, not: '.array_values($order)[0]; - } - if (is_array($order) && !in_array(array_keys($order)[0], $orderCheck)) { - $orderCheckStr = implode(', ', $orderCheck); - $message = 'Unsupported order query parameters ('.array_keys($order)[0].'). Supported order query parameters: '.$orderCheckStr; - } - if (isset($message)) { - return [ - 'message' => $message, - 'type' => 'error', - 'path' => is_array($order) ? $entity->getName().'?order['.array_keys($order)[0].']='.array_values($order)[0] : $entity->getName().'?order='.$order, - 'data' => ['order' => $order], - ]; - } - } - $this->stopwatch->stop('orderParametersCheck'); - - // Allowed filters - $this->stopwatch->start('filterParametersCheck', 'handleSearch'); - $filterCheck = $this->em->getRepository('App:ObjectEntity')->getFilterParameters($entity); - - // Lets add generic filters - $filterCheck = array_merge($filterCheck, ['fields', '_fields', 'extend', '_extend']); - if (!empty($entity->getSearchPartial())) { - $filterCheck = array_merge($filterCheck, ['search', '_search']); - } - - foreach ($query as $param => $value) { - if (!in_array($param, $filterCheck)) { - $filterCheckStr = implode(', ', $filterCheck); - - if (is_array($value)) { - $value = end($value); - } - - return [ - 'message' => 'Unsupported queryParameter ('.$param.'). Supported queryParameters: '.$filterCheckStr, - 'type' => 'error', - 'path' => $entity->getName().'?'.$param.'='.$value, - 'data' => ['queryParameter' => $param], - ]; - } - } - - if ($filters) { - $query = array_merge($query, $filters); - } - $this->stopwatch->stop('filterParametersCheck'); - - $this->stopwatch->start('valueScopesToFilters', 'handleSearch'); - $query = array_merge($query, $this->authorizationService->valueScopesToFilters($entity)); - $this->stopwatch->stop('valueScopesToFilters'); - - $this->stopwatch->start('findAndCountByEntity', 'handleSearch'); - $repositoryResult = $this->em->getRepository('App:ObjectEntity')->findAndCountByEntity($entity, $query, $order, $offset, $limit); - $this->stopwatch->stop('findAndCountByEntity'); - - // Lets see if we need to flatten te responce (for example csv use) - // todo: $flat and $acceptType = 'json' should have the same result, so remove $flat? - $flat = false; - if (in_array($request->headers->get('accept'), ['text/csv']) || in_array($extension, ['csv'])) { - $flat = true; - } - - $results = []; - $this->stopwatch->start('renderResults', 'handleSearch'); - foreach ($repositoryResult['objects'] as $object) { - // If orderBy is used on an attribute we needed to add the value of that attribute to the select of the query... - // In this^ case $object will be an array containing the object and this specific value we are ordering on. - if (is_array($object)) { - $object = $object[0]; - // $object['stringValue'] contains the value we are ordering on. - } - // todo: remove the following function - // This is a quick fix for a problem where filtering would return to many result if we are filtering on a value... - // ...that is also present in a subobject of the main $object we are filtering on. - if (!$this->checkIfFilteredCorrectly($query, $object)) { - continue; - } - $result = $this->responseService->renderResult($object, $fields, $extend, $acceptType, false, $flat); - $results[] = $result; - $this->stopwatch->lap('renderResults'); - } - $this->stopwatch->stop('renderResults'); - - // If we need a flattend responce we are al done - // todo: $flat and $acceptType = 'json' should have the same result, so remove $flat? - if ($flat) { - return $results; - } - - // If not lets make it pretty - return $this->handlePagination($acceptType, $entity, $results, $repositoryResult['total'], $limit, $offset); - } - - /** - * This is a quick fix for a problem where filtering would return to many result if we are filtering on a value - * that is also present in a subobject of the main $object we are filtering on. - * todo: remove this function. - * - * @param array $query The query/filters we need to check. - * @param ObjectEntity $object The object to check. - * - * @return bool true by default, false if filtering wasn't done correctly and this object should not be shown in the results. - * @deprecated - */ - private function checkIfFilteredCorrectly(array $query, ObjectEntity $object): bool - { - unset( - $query['search'], $query['_search'], - $query['fields'], $query['_fields'], - $query['extend'], $query['_extend'] - ); - if (!empty($query)) { - $resultDot = new Dot($object->toArray()); - foreach ($query as $filter => $value) { - $filter = str_replace('|valueScopeFilter', '', $filter); - $resultFilter = $resultDot->get($filter); - $resultFilter = $resultFilter === true ? 'true' : ($resultFilter === false ? 'false' : $resultDot->get($filter)); - if (!is_array($value) && $resultDot->get($filter) !== null && $resultFilter != $value && - (is_string($value) && !str_contains($value, 'NULL')) && !str_contains($value, '%')) { - return false; - } - } - } - - return true; - } - - /** - * Returns a response array including pagination for handleSearch function. This response is different depending on the acceptType. - * - * @param string $acceptType - * @param Entity $entity - * @param array $results - * @param int $total - * @param int $limit - * @param int $offset - * - * @return array[] - * @deprecated - */ - private function handlePagination(string $acceptType, Entity $entity, array $results, int $total, int $limit, int $offset): array - { - $pages = ceil($total / $limit); - $pages = $pages == 0 ? 1 : $pages; - $page = floor($offset / $limit) + 1; - - switch ($acceptType) { - case 'jsonhal': - $paginationResult = $this->handleJsonHal($entity, [ - 'results' => $results, 'limit' => $limit, 'total' => $total, - 'offset' => $offset, 'page' => $page, 'pages' => $pages, - ]); - break; - case 'jsonld': - // todo: try and match api-platform ? https://api-platform.com/docs/core/pagination/ - case 'json': - default: - $paginationResult = ['results' => $results]; - $paginationResult = $this->handleDefaultPagination($paginationResult, [ - 'results' => $results, 'limit' => $limit, 'total' => $total, - 'offset' => $offset, 'page' => $page, 'pages' => $pages, - ]); - break; - } - - return $paginationResult; - } - - /** - * @param Entity $entity - * @param array $data - * - * @return array - * @deprecated - */ - private function handleJsonHal(Entity $entity, array $data): array - { - $path = $entity->getName(); - if ($this->session->get('endpoint')) { - $endpoint = $this->em->getRepository('App:Endpoint')->findOneBy(['id' => $this->session->get('endpoint')]); - $path = implode('/', $endpoint->getPath()); - } - $paginationResult['_links'] = [ - 'self' => ['href' => '/api/'.$path.($data['page'] == 1 ? '' : '?page='.$data['page'])], - 'first' => ['href' => '/api/'.$path], - ]; - if ($data['page'] > 1) { - $paginationResult['_links']['prev']['href'] = '/api/'.$path.($data['page'] == 2 ? '' : '?page='.($data['page'] - 1)); - } - if ($data['page'] < $data['pages']) { - $paginationResult['_links']['next']['href'] = '/api/'.$path.'?page='.($data['page'] + 1); - } - $paginationResult['_links']['last']['href'] = '/api/'.$path.($data['pages'] == 1 ? '' : '?page='.$data['pages']); - $paginationResult = $this->handleDefaultPagination($paginationResult, $data); - $paginationResult['_embedded'] = [$path => $data['results']]; //todo replace $path with $entity->getName() ? - - return $paginationResult; - } - - /** - * @param array $paginationResult - * @param array $data - * - * @return array - * @deprecated - */ - private function handleDefaultPagination(array $paginationResult, array $data): array - { - $paginationResult['count'] = count($data['results']); - $paginationResult['limit'] = $data['limit']; - $paginationResult['total'] = $data['total']; - $paginationResult['start'] = $data['offset'] + 1; - $paginationResult['page'] = $data['page']; - $paginationResult['pages'] = $data['pages']; - - return $paginationResult; - } - /** * Handles a delete api call. * @@ -1304,74 +241,4 @@ public function handleDelete(ObjectEntity $object, ArrayCollection $maxDepth = n return []; } - - /** - * @param ObjectEntity $createdObject - * @param ObjectEntity|null $motherObject - * - * @return void - * @deprecated - */ - private function handleDeleteObjectOnError(ObjectEntity $createdObject) - { - $this->em->clear(); - //TODO: test and make sure extern objects are not created after an error, and if they are, maybe add this; - // var_dump($createdObject->getUri()); - // if ($createdObject->getEntity()->getSource() && $createdObject->getEntity()->getSource()->getLocation() && $createdObject->getEntity()->getEndpoint() && $createdObject->getExternalId()) { - // try { - // $resource = $this->commonGroundService->getResource($createdObject->getUri(), [], false); - // var_dump('Delete extern object for: '.$createdObject->getEntity()->getName()); - // $this->commonGroundService->deleteResource(null, $createdObject->getUri()); // could use $resource instead? - // } catch (\Throwable $e) { - // $resource = null; - // } - // } - // var_dump('Delete: '.$createdObject->getEntity()->getName()); - // var_dump('Values on this^ object '.count($createdObject->getObjectValues())); - foreach ($createdObject->getObjectValues() as $value) { - if ($value->getAttribute()->getType() == 'object') { - foreach ($value->getObjects() as $object) { - $object->removeSubresourceOf($value); - } - } - - try { - $this->em->remove($value); - $this->em->flush(); - // var_dump($value->getAttribute()->getEntity()->getName().' -> '.$value->getAttribute()->getName()); - } catch (Exception $exception) { - // var_dump($exception->getMessage()); - // var_dump($value->getId()->toString()); - // var_dump($value->getValue()); - // var_dump($value->getAttribute()->getEntity()->getName().' -> '.$value->getAttribute()->getName().' GAAT MIS'); - continue; - } - } - - try { - $this->em->remove($createdObject); - $this->em->flush(); - // var_dump('Deleted: '.$createdObject->getEntity()->getName()); - } catch (Exception $exception) { - // var_dump($createdObject->getEntity()->getName().' GAAT MIS'); - } - } - - /** - * Builds the error response for an objectEntity that contains errors. - * - * @param ObjectEntity $objectEntity - * - * @return array - * @deprecated - */ - public function returnErrors(ObjectEntity $objectEntity): array - { - return [ - 'message' => 'The where errors', - 'type' => 'error', - 'path' => $objectEntity->getEntity()->getName(), - 'data' => $objectEntity->getAllErrors(), - ]; - } } diff --git a/api/src/Service/FunctionService.php b/api/src/Service/FunctionService.php index 4ac569b10..5bd2a0d2f 100644 --- a/api/src/Service/FunctionService.php +++ b/api/src/Service/FunctionService.php @@ -3,7 +3,6 @@ namespace App\Service; use App\Entity\ObjectEntity; -use Conduction\CommonGroundBundle\Service\CommonGroundService; use Doctrine\Common\Collections\ArrayCollection; use Psr\Cache\InvalidArgumentException; use Symfony\Component\Cache\Adapter\AdapterInterface as CacheInterface; @@ -20,171 +19,14 @@ class FunctionService { private CacheInterface $cache; - private CommonGroundService $commonGroundService; - private ObjectEntityService $objectEntityService; public array $removeResultFromCache; - public function __construct(CacheInterface $cache, CommonGroundService $commonGroundService, ObjectEntityService $objectEntityService) + public function __construct(CacheInterface $cache) { $this->cache = $cache; - $this->commonGroundService = $commonGroundService; - $this->objectEntityService = $objectEntityService; $this->removeResultFromCache = []; } - /** - * Handles the function of an Entity, this can be done in very different situations. That is why the data array should always contains a few specific keys! - * - * @param ObjectEntity $objectEntity - * @param string $function - * @param array $data Should at least contain the following key: method - * - * @return ObjectEntity - */ - public function handleFunction(ObjectEntity $objectEntity, string $function, array $data): ObjectEntity - { - switch ($function) { - case 'organization': - if ($data['method'] == 'POST') { - if (array_key_exists('organizationType', $data) && $data['organizationType']) { - $organizationType = $data['organizationType']; - } else { - $organizationType = $objectEntity->getValue('type'); - } - $objectEntity = $this->createOrganization($objectEntity, $data['uri'], $organizationType); - } - break; - case 'userGroup': - if ($data['method'] == 'PUT') { - if (array_key_exists('userGroupName', $data) && $data['userGroupName']) { - $userGroupName = $data['userGroupName']; - } else { - $userGroupName = $objectEntity->getValue('name'); - } - $objectEntity = $this->updateUserGroup($objectEntity, $userGroupName); - } - break; - default: - break; - } - - return $objectEntity; - } - - //todo: note: this createOrganization function is also used in different places than only the handleFunction function above^ - /** - * Performs the organization function. This is called when a new ObjectEntity is created for an Entity with function = 'organization'. - * - * @param ObjectEntity $objectEntity - * @param string $uri - * @param string|null $organizationType This is nullable so that it won't trigger 500's when no organization type is given, but a nice and correct error (if organization type is configured to be required, as it should) - * - * @return ObjectEntity - */ - public function createOrganization(ObjectEntity $objectEntity, string $uri, ?string $organizationType): ObjectEntity - { - if ($organizationType == 'taalhuis') { - $objectEntity->setOrganization($uri); - - $id = substr($uri, strrpos($uri, '/') + 1); - if (!$organization = $this->isResource($uri)) { - if (!$organization = $this->objectEntityService->getObjectByUri($uri)) { - $organization = $this->objectEntityService->getOrganizationObject($id); - } - } - // Invalidate all changed & related organizations from cache - if (!empty($organization)) { - $tags = ['organization_'.base64_encode($uri)]; - if (array_key_exists('subOrganizations', $organization) && count($organization['subOrganizations']) > 0) { - foreach ($organization['subOrganizations'] as $subOrganization) { - $tags[] = 'organization_'.base64_encode($subOrganization['@id']); - } - } - if (array_key_exists('parentOrganization', $organization) && $organization['parentOrganization'] != null) { - $tags[] = 'organization_'.base64_encode($organization['parentOrganization']['@id']); - } - $this->cache->invalidateTags($tags); - } - } - - return $objectEntity; - } - - /** - * Performs the userGroup function. - * - * @param ObjectEntity $objectEntity - * @param string|null $userGroupName This is nullable so that it won't trigger 500's when no group name is given - * - * @return ObjectEntity - */ - public function updateUserGroup(ObjectEntity $objectEntity, ?string $userGroupName): ObjectEntity - { - if ($userGroupName == 'ANONYMOUS') { - $this->cache->invalidateTags(['anonymousScopes']); - } - - return $objectEntity; - } - - /** - * Gets an organization for an url from cache or url, depending on cache. - * - * @TODO: move this elsewhere. - * - * @param $url - * - * @throws \Psr\Cache\CacheException - * @throws InvalidArgumentException - * - * @return array - */ - public function getOrganizationFromCache($url): array - { - return []; - // todo: stop using this code... deprecated - - $item = $this->cache->getItem('organizations_'.base64_encode("$url")); - if ($item->isHit()) { - return $item->get(); - } - - $id = substr($url, strrpos($url, '/') + 1); - if (!$organization = $this->isResource($url)) { - if (!$organization = $this->objectEntityService->getObjectByUri($url)) { - $organization = $this->objectEntityService->getOrganizationObject($id); - } - } - if (!empty($organization)) { - $item->set($organization); - $item->tag('organization_'.base64_encode("$url")); - - $this->cache->save($item); - - return $organization; - } - - return []; - } - - /** - * IsResource function from commongroundService without caching. - * - * @TODO: Make cache settable in CGB and remove. - * - * @param $url - * - * @return array|false|mixed|string|null - */ - public function isResource($url) - { - try { - return $this->commonGroundService->getResource($url, [], false); - } catch (\Throwable $e) { - return false; - } - } - /** * Removes all responses saved for the given ObjectEntity from the cache. Also does the same for all parent objects of the given object. * Always use $this->functionService->removeResultFromCache = []; before using this function to reset the list of objects that already got removed from cache. diff --git a/api/src/Service/GatewayService.php b/api/src/Service/GatewayService.php index 4e88f9b96..518b23e01 100644 --- a/api/src/Service/GatewayService.php +++ b/api/src/Service/GatewayService.php @@ -23,98 +23,19 @@ */ class GatewayService { - private CommonGroundService $commonGroundService; private EntityManagerInterface $entityManager; private Security $security; - private AuthenticationService $authenticationService; private RequestStack $requestStack; private TranslationService $translationService; - public function __construct(CommonGroundService $commonGroundService, EntityManagerInterface $entityManager, Security $security, AuthenticationService $authenticationService, RequestStack $requestStack, TranslationService $translationService) + public function __construct(EntityManagerInterface $entityManager, Security $security, AuthenticationService $authenticationService, RequestStack $requestStack, TranslationService $translationService) { - $this->commonGroundService = $commonGroundService; $this->entityManager = $entityManager; $this->security = $security; - $this->authenticationService = $authenticationService; $this->requestStack = $requestStack; $this->translationService = $translationService; } - /** - * Processes the call to the Source and returns the response. - * - * @param string $name Name of the Source. - * @param string $endpoint Endpoint of the Source to send the request to. - * @param string $method Method to use against the Source. - * @param string $content Content to send to the Source. - * @param array $query Query parameters to send to the Source. - * - * @return Response Created response received from Source or error received from Source. - */ - public function processSource(string $name, string $endpoint, string $method, string $content, array $query, array $headers): Response - { -// $this->checkAuthentication(); - $source = $this->retrieveSource($name); - if (!$source->getIsEnabled()) { - return new Response( - json_encode(['Message' => "This Source is not enabled: {$name}"]), - Response::HTTP_OK, - ['content-type' => 'application/json'] - ); - } - $this->checkSource($source); - $component = $this->sourceToArray($source); - $url = $source->getLocation().'/'.$endpoint; - - $newHeaders = $source->getHeaders(); - $newHeaders['accept'] = $headers['accept'][0]; - - //update query params - if (array_key_exists('query', $source->getTranslationConfig())) { - $query = array_merge($query, $source->getTranslationConfig()['query']); - } - - //translate query params - foreach ($query as $key => &$value) { - if (!is_array($value)) { - $value = $this->translationService->parse($value); - } - } - - $result = $this->commonGroundService->callService($component, $url, $content, $query, $newHeaders, false, $method); - - if (is_array($result)) { - $result['error'] = json_decode($result['error'], true); - - return new Response( - json_encode($result), - Response::HTTP_OK, - ['content-type' => 'application/json'] - ); - } - - return $this->createResponse($result); - } - - public function checkAuthentication(): void - { - $request = $this->requestStack->getCurrentRequest(); - $authorized = true; - $user = $this->security->getUser(); - - $token = str_replace('Bearer ', '', $request->headers->get('Authorization')); - - if (!$user) { - $authorized = $this->authenticationService->validateJWTAndGetPayload($token, $this->commonGroundService->getResourceList(['component' => 'uc', 'type' => 'public_key'])); - $authorized = $this->authenticationService->checkJWTExpiration($token); - $authorized = $this->authenticationService->retrieveJWTUser($token); - } - - if (!$authorized) { - throw new AccessDeniedHttpException('Access denied.'); - } - } - /** * Creates Response object based on the guzzle response. * diff --git a/api/src/Service/HandlerService.php b/api/src/Service/HandlerService.php index bc1219d9a..2e119d0db 100644 --- a/api/src/Service/HandlerService.php +++ b/api/src/Service/HandlerService.php @@ -41,7 +41,6 @@ class HandlerService private LogService $logService; private ProcessingLogService $processingLogService; private TemplateService $templateService; - private ObjectEntityService $objectEntityService; private CacheInterface $cache; private GatewayService $gatewayService; private Stopwatch $stopwatch; @@ -78,7 +77,6 @@ public function __construct( ProcessingLogService $processingLogService, Environment $twig, TemplateService $templateService, - ObjectEntityService $objectEntityService, CacheInterface $cache, GatewayService $gatewayService, Stopwatch $stopwatch, @@ -94,7 +92,6 @@ public function __construct( $this->processingLogService = $processingLogService; $this->templating = $twig; $this->templateService = $templateService; - $this->objectEntityService = $objectEntityService->addServices($eavService); // todo: temp fix untill we no longer need these services here $this->cache = $cache; $this->gatewayService = $gatewayService; $this->stopwatch = $stopwatch; @@ -102,227 +99,7 @@ public function __construct( $this->requestService = $requestService; } - /** - * This function sets the endpoint in the session and executes handleHandler with its found Handler. - */ - public function handleEndpoint(Endpoint $endpoint, array $parameters): Response - { - $this->stopwatch->start('invalidateTags-grantedScopes', 'handleEndpoint'); - $this->cache->invalidateTags(['grantedScopes']); - $this->stopwatch->stop('invalidateTags-grantedScopes'); - - $event = new ActionEvent('commongateway.handler.pre', ['request' => $this->getDataFromRequest(), 'response' => []]); - $this->stopwatch->start('newSession', 'handleEndpoint'); - $session = new Session(); - $this->stopwatch->stop('newSession'); - - $this->stopwatch->start('saveEndpointInSession', 'handleEndpoint'); - $session->set('endpoint', $endpoint->getId()->toString()); - $this->stopwatch->stop('saveEndpointInSession'); - - $this->stopwatch->start('saveParametersInSession', 'handleEndpoint'); - $session->set('parameters', $parameters); - $this->stopwatch->stop('saveParametersInSession'); - $this->eventDispatcher->dispatch($event, 'commongateway.handler.pre'); - - // @todo creat logicdata, generalvaribales uit de translationservice - - $this->stopwatch->start('handleHandlers', 'handleEndpoint'); - foreach ($endpoint->getHandlers() as $handler) { - // Check if handler should be used for this method - if ($handler->getMethods() !== null) { - $methods = array_map('strtoupper', $handler->getMethods()); - } - if (!in_array('*', $methods) && !in_array($this->request->getMethod(), $methods)) { - $this->stopwatch->lap('handleHandlers'); - continue; - } - if ($handler->getConditions() === '{}' || JsonLogic::apply(json_decode($handler->getConditions(), true), $this->getDataFromRequest())) { - $this->stopwatch->start('saveHandlerInSession', 'handleEndpoint'); - $session->set('handler', $handler->getId()); - $this->stopwatch->stop('saveHandlerInSession'); - - $this->stopwatch->start('handleHandler', 'handleEndpoint'); - $result = $this->handleHandler($handler, $endpoint, $event->getData()['request'] ?: []); - $this->stopwatch->stop('handleHandler'); - $this->stopwatch->stop('handleHandlers'); - - $event = new ActionEvent('commongateway.handler.post', array_merge($event->getData(), ['result' => $result])); - $this->eventDispatcher->dispatch($event, 'commongateway.handler.post'); - - return $result; - } - } - - // If no handlers are found check if endpoint throws events - // Throw event if set - if ($endpoint->getThrows() !== null || !empty($endpoint->getThrows())) { - if (count($endpoint->getThrows()) == 0) { - return $this->requestService->requestHandler($parameters, []); - } - - // Will use the first throw in array - foreach ($endpoint->getThrows() as $throw) { - if ($this->request->getMethod() == 'POST' || $this->request->getMethod() == 'PUT') { - $response = json_decode($this->requestService->requestHandler($parameters, [])->getContent(), true); - $event = new ActionEvent('commongateway.action.event', ['request' => $this->getDataFromRequest(), 'response' => $response, 'parameters' => $this->request], $throw); - $this->eventDispatcher->dispatch($event, 'commongateway.action.event'); - } else { - $event = new ActionEvent('commongateway.action.event', ['request' => $this->getDataFromRequest(), 'response' => [], 'parameters' => $this->request], $throw); - $this->eventDispatcher->dispatch($event, 'commongateway.action.event'); - - return $this->requestService->requestHandler($parameters, []); - } - } - - return $this->createResponse($event->getData()['response'], $endpoint); - } - - // Let default - return $this->requestService->requestHandler($parameters, []); - - // - //throw new GatewayException('No handler found for endpoint: '.$endpoint->getName().' and method: '.$this->request->getMethod(), null, null, ['data' => ['id' => $endpoint->getId()], 'path' => null, 'responseType' => Response::HTTP_NOT_FOUND]); - } - - public function cutPath(array $pathParams): string - { - $path = parse_url($this->request->getUri())['path']; - - return substr($path, strlen('/api/'.$pathParams[0])); - } - - public function proxy(Handler $handler, Endpoint $endpoint, string $method): Response - { - $path = $this->cutPath($endpoint->getPath()); - - return $this->gatewayService->processSource($handler->getProxyGateway(), $path, $method, $this->request->getContent(), $this->request->query->all(), $this->request->headers->all()); - } - - public function getMethodOverrides(string &$method, ?string &$operationType, Handler $handler) - { - $overrides = $handler->getMethodOverrides(); - if (!isset($overrides[$this->request->getMethod()])) { - return; - } - $content = new \Adbar\Dot($this->getDataFromRequest()); - - foreach ($overrides[$this->request->getMethod()] as $override) { - if (key_exists($method, $overrides) && (!array_key_exists('condition', $override) || $content->has($override['condition']))) { - $method = array_key_exists('method', $override) ? $override['method'] : $method; - $operationType = array_key_exists('operationType', $override) ? $override['operationType'] : $operationType; - $parameters = $this->request->getSession()->get('parameters'); - if (isset($override['pathValues'])) { - foreach ($override['pathValues'] as $key => $value) { - $parameters['path'][$key] = $content->get($value); - } - } - if (isset($override['queryParameters'])) { - foreach ($override['queryParameters'] as $key => $value) { - if ($key == 'fields' || $key == '_fields') { - $this->request->query->set('fields', $value); - } else { - $this->request->query->set($key, $content->get($value)); - } - } - } - $this->request->getSession()->set('parameters', $parameters); - } elseif (key_exists($method, $overrides) && (!array_key_exists('condition', $override) || $this->request->query->has($override['condition']))) { - $method = array_key_exists('method', $override) ? $override['method'] : $method; - $operationType = array_key_exists('operationType', $override) ? $override['operationType'] : $operationType; - $parameters = $this->request->getSession()->get('parameters'); - foreach ($override['pathValues'] as $key => $value) { - $parameters['path'][$key] = $this->request->query->get($value); - } - - $this->request->getSession()->set('parameters', $parameters); - } - } - } - - /** - * This function walks through the $handler with $data from the request to perform mapping, translating and fetching/saving from/to the eav. - * - * @todo remove old eav code if new way is finished and working - * @todo better check if $data is a document/template line 199 - */ - public function handleHandler(Handler $handler = null, Endpoint $endpoint, array $data = []): Response - { - $originalData = $data; - $method = $this->request->getMethod(); - $operationType = $endpoint->getOperationType(); - - if ($handler->getProxyGateway()) { - return $this->proxy($handler, $endpoint, $method); - } - - $this->getMethodOverrides($method, $operationType, $handler); - - // Form.io components array - // if ($method === 'GET' && $this->getRequestType('accept') === 'form.io' && $handler->getEntity() && $handler->getEntity()->getAttributes()) { - // return new Response( - // $this->serializer->serialize($this->formIOService->createFormIOArray($handler->getEntity()), 'json'), - // Response::HTTP_OK, - // ['content-type' => 'json'] - // ); - // } - - // To start it al off we need the data from the incomming request - if (in_array($method, ['POST', 'PUT', 'PATCH']) && ($data == null || empty($data))) { - throw new GatewayException('Faulty body or no body given', null, null, ['data' => null, 'path' => 'Request body', 'responseType' => Response::HTTP_NOT_FOUND]); - } - - // Update current Log - isset($data) ? $this->logService->saveLog($this->request, null, 0, json_encode($data)) : $this->logService->saveLog($this->request, null, 0, null); - - // Only do mapping and translation -in for calls with body - in_array($method, ['POST', 'PUT', 'PATCH']) && $handler && $data = $this->handleDataBeforeEAV($data, $handler); - - // eav new way - // dont get collection if accept type is formio - if (($this->getRequestType('accept') === 'form.io' && ($method === 'GET' && $operationType === 'item')) || $this->getRequestType('accept') !== 'form.io') { - $handler->getEntity() !== null && $data = $this->objectEntityService->handleObject($handler, $endpoint, $data ?? null, $method, $this->getRequestType('accept')); - } - - // Form.io components array - if ($method === 'GET' && $this->getRequestType('accept') === 'form.io' && $handler->getEntity() && $handler->getEntity()->getAttributes()) { - return new Response( - $this->serializer->serialize($this->formIOService->createFormIOArray($handler->getEntity(), $data ?? null), 'json'), - Response::HTTP_OK, - ['content-type' => 'json'] - ); - } - - // @todo remove this when eav part works and catch this->objectEntityService->handleObject instead - if (!isset($data)) { - throw new GatewayException('Could not fetch object(s) on endpoint: /'.implode('/'.$endpoint->getPath()), null, null, ['data' => null, 'path' => null, 'responseType' => Response::HTTP_NOT_FOUND]); - } - - // If data contains error dont execute following code and create response - if (!(isset($data['type']) && isset($data['message']))) { - // Update current Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 2, json_encode($data)); - $event = new ActionEvent('commongateway.response.pre', ['entity' => $handler->getEntity()->getReference() ?? $handler->getEntity()->getReference(), 'httpRequest' => $this->request, 'request' => $originalData, 'response' => $data, 'queryParameters' => $this->request->query->all()]); - $this->eventDispatcher->dispatch($event, 'commongateway.response.pre'); - $data = $event->getData()['response']; - - $handler && $data = $this->handleDataAfterEAV($data, $handler); - } - - // Update current Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 3, json_encode($data)); - - // An lastly we want to create a response - $response = $this->createResponse($data, $endpoint); - - // Final update Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, $response, 4, null, true); - - $this->processingLogService->saveProcessingLog(); - - return $response; - } /** * Checks content type and decodes that if needed. @@ -364,112 +141,6 @@ public function getDataFromRequest() } } - /** - * This function creates and prepares the response. - * - * @todo throw error if $data is not string when creating pdf - */ - public function createResponse(array $data, ?Endpoint $endpoint = null): Response - { - // We only end up here if there are no errors, so we only suply best case senario's - switch ($this->request->getMethod()) { - case 'GET': - $status = Response::HTTP_OK; - break; - case 'POST': - $status = Response::HTTP_CREATED; - break; - case 'PUT': - $status = Response::HTTP_OK; - break; - case 'UPDATE': - $status = Response::HTTP_OK; - break; - case 'DELETE': - $status = Response::HTTP_NO_CONTENT; - break; - default: - $status = Response::HTTP_OK; - } - - $this->stopwatch->start('getRequestType', 'createResponse'); - $acceptType = $this->getRequestType('accept', $endpoint); - $this->stopwatch->stop('getRequestType'); - - // Lets fill in some options - $options = []; - $this->stopwatch->start('switchAcceptType', 'createResponse'); - switch ($acceptType) { - case 'text/csv': - // @todo do something with options? - $options = [ - CsvEncoder::ENCLOSURE_KEY => '"', - CsvEncoder::ESCAPE_CHAR_KEY => '+', - ]; - $data = $this->serializer->encode($data, 'csv'); - - break; - case 'pdf': - $document = new Document(); - // @todo find better name for document - $document->setName('pdf'); - $document->setDocumentType($acceptType); - $document->setType('pdf'); - // If data is not a template json_encode it - if (isset($data) && !is_string($data)) { - $data = json_encode($data); - } - $document->setContent($data); - $result = $this->templateService->renderPdf($document); - break; - case 'xml': - $options['xml_root_node_name'] = array_keys($data)[0]; - $options['xml_encoding'] = 'utf-8'; - $data = $data[array_keys($data)[0]]; - break; - } - $this->stopwatch->stop('switchAcceptType'); - - // Lets seriliaze the shizle (if no document and we have a result) - $this->stopwatch->start('serialize', 'createResponse'); - - try { - !isset($document) && $result = $this->serializer->serialize($data, $acceptType, $options); - } catch (NotEncodableValueException $e) { - !isset($document) && $result = $this->serializer->serialize($data, 'json', $options); - // throw new GatewayException($e->getMessage(), null, null, ['data' => null, 'path' => null, 'responseType' => Response::HTTP_UNSUPPORTED_MEDIA_TYPE]); - } - $this->stopwatch->stop('serialize'); - - // Lets create the actual response - $this->stopwatch->start('newResponse', 'createResponse'); - $response = new Response( - $result, - $status, -// ['content-type' => $this->acceptHeaderToSerialiazation[array_search($acceptType, $this->acceptHeaderToSerialiazation)]] - //todo: should be ^ for taalhuizen we need accept = application/json to result in content-type = application/json - ['content-type' => array_search($acceptType, $this->acceptHeaderToSerialiazation)] - ); - $this->stopwatch->stop('newResponse'); - - // Lets handle file responses - $this->stopwatch->start('routeParameters', 'createResponse'); - $routeParameters = $this->request->attributes->get('_route_params'); - if (array_key_exists('extension', $routeParameters) && $extension = $routeParameters['extension']) { - $date = new \DateTime(); - $date = $date->format('Ymd_His'); - $disposition = $response->headers->makeDisposition(ResponseHeaderBag::DISPOSITION_ATTACHMENT, "{$routeParameters['route']}_{$date}.{$acceptType}"); - $response->headers->set('Content-Disposition', $disposition); - } - $this->stopwatch->stop('routeParameters'); - - $this->stopwatch->start('prepareResponse', 'createResponse'); - $response->prepare($this->request); - $this->stopwatch->stop('prepareResponse'); - - return $response; - } - /** * Validates content or accept type from request. * @@ -510,115 +181,6 @@ public function getRequestType(string $type, ?Endpoint $endpoint = null): string throw new GatewayException('Unsupported content type', null, null, ['data' => $this->request->getAcceptableContentTypes(), 'path' => null, 'responseType' => Response::HTTP_UNSUPPORTED_MEDIA_TYPE]); } - /** - * Checks template type on handler and creates template. - * - * @todo Add global variables - */ - private function renderTemplate(Handler $handler, array $data): string - { - /* @todo add global variables */ - $variables = $data; - - // We only end up here if there are no errors, so we only suply best case senario's - switch (strtoupper($handler->getTemplateType())) { - case 'TWIG': - $document = $this->templating->createTemplate($handler->getTemplate()); - - return $document->render($variables); - break; - case 'MD': - return $handler->getTemplate(); - break; - case 'RST': - return $handler->getTemplate(); - break; - case 'HTML': - return $handler->getTemplate(); - break; - default: - throw new GatewayException('Unsupported template type', null, null, ['data' => $this->request->getAcceptableContentTypes(), 'path' => null, 'responseType' => Response::HTTP_UNSUPPORTED_MEDIA_TYPE]); - } - } - - private function handleDataBeforeEAV(array $data, Handler $handler): array - { - // Then we want to do the mapping in the incomming request - $skeleton = $handler->getSkeletonIn(); - if (!$skeleton || empty($skeleton)) { - $skeleton = $data; - } - - $data = $this->translationService->dotHydrator($skeleton, $data, $handler->getMappingIn()); - - // Update current Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 5, json_encode($data)); - - if (!empty($handler->getTranslationsIn())) { - // Then we want to do translations on the incomming request - $transRepo = $this->entityManager->getRepository('App:Translation'); - - $translations = $transRepo->getTranslations($handler->getTranslationsIn()); - - if (!empty($translations)) { - $data = $this->translationService->parse($data, true, $translations); - } - } - // Update current Log - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 6, json_encode($data)); - - return $data; - } - - private function handleDataAfterEAV(array $data, Handler $handler): array - { - $data = $this->translationService->addPrefix($data, $handler->getPrefix()); - - // Then we want to do to mapping on the outgoing response - $skeleton = $handler->getSkeletonOut(); - if (!$skeleton || empty($skeleton)) { - $skeleton = $data; - } - $this->stopwatch->start('dotHydrator2', 'handleDataAfterEAV'); - $data = $this->translationService->dotHydrator($skeleton, $data, $handler->getMappingOut()); - - $this->stopwatch->stop('dotHydrator2'); - - // Update current Log - $this->stopwatch->start('saveLog7', 'handleDataAfterEAV'); - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 7, json_encode($data)); - $this->stopwatch->stop('saveLog7'); - - if (!empty($handler->getTranslationsOut())) { - // Then we want to do translations on the outgoing response - $transRepo = $this->entityManager->getRepository('App:Translation'); - - $this->stopwatch->start('getTranslations2', 'handleDataAfterEAV'); - $translations = $transRepo->getTranslations($handler->getTranslationsOut()); - $this->stopwatch->stop('getTranslations2'); - - if (!empty($translations)) { - $this->stopwatch->start('parse2', 'handleDataAfterEAV'); - $data = $this->translationService->parse($data, true, $translations); - $this->stopwatch->stop('parse2'); - } - } - - // Update current Log - $this->stopwatch->start('saveLog8', 'handleDataAfterEAV'); - $this->request->getMethod() !== 'DELETE' && $this->logService->saveLog($this->request, null, 8, json_encode($data)); - $this->stopwatch->stop('saveLog8'); - - // Lets see if we need te use a template - if ($handler->getTemplatetype() && $handler->getTemplate()) { - $this->stopwatch->start('renderTemplate', 'handleDataAfterEAV'); - $data = $this->renderTemplate($handler, $data); - $this->stopwatch->stop('renderTemplate'); - } - - return $data; - } - /** * Gets a handler for an endpoint method combination. * diff --git a/api/src/Service/ObjectEntityService.php b/api/src/Service/ObjectEntityService.php index 4b4be82b8..416afec53 100644 --- a/api/src/Service/ObjectEntityService.php +++ b/api/src/Service/ObjectEntityService.php @@ -52,60 +52,23 @@ class ObjectEntityService { private Security $security; - private Request $request; - private AuthorizationService $authorizationService; - private ApplicationService $applicationService; -// private ValidatorService $validatorService; private SessionInterface $session; - private ?EavService $eavService; private EntityManagerInterface $entityManager; - private CommonGroundService $commonGroundService; - private ResponseService $responseService; - public FunctionService $functionService; - private MessageBusInterface $messageBus; - private GatewayService $gatewayService; - private LogService $logService; private EventDispatcherInterface $eventDispatcher; public array $notifications; - private Environment $twig; private SymfonyStyle $io; - private TranslationService $translationService; public function __construct( Security $security, - RequestStack $requestStack, - AuthorizationService $authorizationService, - ApplicationService $applicationService, -// ValidatorService $validatorService, SessionInterface $session, EntityManagerInterface $entityManager, - CommonGroundService $commonGroundService, - ResponseService $responseService, - CacheInterface $cache, - MessageBusInterface $messageBus, - GatewayService $gatewayService, - TranslationService $translationService, - LogService $logService, - EventDispatcherInterface $eventDispatcher, - Environment $twig + EventDispatcherInterface $eventDispatcher ) { $this->security = $security; - $this->request = $requestStack->getCurrentRequest() ?: new Request(); - $this->authorizationService = $authorizationService; - $this->applicationService = $applicationService; -// $this->validatorService = $validatorService; $this->session = $session; $this->entityManager = $entityManager; - $this->commonGroundService = $commonGroundService; - $this->responseService = $responseService; - $this->functionService = new FunctionService($cache, $commonGroundService, $this); - $this->messageBus = $messageBus; - $this->gatewayService = $gatewayService; - $this->translationService = $translationService; - $this->logService = $logService; $this->notifications = []; $this->eventDispatcher = $eventDispatcher; - $this->twig = $twig; } /** @@ -216,64 +179,6 @@ private function dispatchTriggerParentEvents(ObjectEntity $object, ArrayCollecti } } - /** - * Add services for using the handleObject function todo: temp fix untill we no longer use these services here. - * - * @param EavService $eavService - * - * @return $this - * @deprecated - */ - public function addServices(EavService $eavService): ObjectEntityService - { - // EavService uses the ObjectEntityService for the handleOwner and checkOwner function. - // The only reason we need this service in this ObjectEntityService is for the handleObject function, - // because we use an 'old' way to create, update and get ObjectEntities there. - $this->eavService = $eavService; - - return $this; - } - - /** - * A function we want to call when doing a post or put, to set the owner of an ObjectEntity, if it hasn't one already. - * - * @param ObjectEntity $result The object entity - * @param string|null $owner The owner of the object - defaulted to owner - * - * @return ObjectEntity|array - * @deprecated - */ - public function handleOwner(ObjectEntity $result, ?string $owner = 'owner') - { - $user = $this->security->getUser(); - - if ($user && !$result->getOwner()) { - if ($owner == 'owner') { - $result->setOwner($user->getUserIdentifier()); - } else { - // $owner is allowed to be null or a valid uuid of a UC user - if ($owner !== null) { - if (!Uuid::isValid($owner)) { - $errorMessage = '@owner ('.$owner.') is not a valid uuid.'; - } elseif (!$this->commonGroundService->isResource($this->commonGroundService->cleanUrl(['component' => 'uc', 'type' => 'users', 'id' => $owner]))) { - $errorMessage = '@owner ('.$owner.') is not an existing user uuid.'; - } - if (isset($errorMessage)) { - return [ - 'message' => $errorMessage, - 'type' => 'Bad Request', - 'path' => $result->getEntity()->getName(), - 'data' => ['@owner' => $owner], - ]; - } - } - $result->setOwner($owner); - } - } - - return $result; - } - /** * This function checks the owner of the object. * @@ -293,1888 +198,4 @@ public function checkOwner(ObjectEntity $result): bool return false; } - - /** - * This function gets the object by its uri. - * - * @param string $uri The uri of the object - * @param array|null $fields The fields array that can be filtered on - * @param array|null $extend The extend array that can be extended - * - * @throws CacheException|InvalidArgumentException - * - * @return array - * @deprecated - */ - public function getObjectByUri(string $uri, ?array $fields = null, ?array $extend = null): array - { - $object = $this->entityManager->getRepository('App:ObjectEntity')->findOneBy(['uri' => $uri]); - if ($object instanceof ObjectEntity) { - return $this->responseService->renderResult($object, $fields, $extend, 'jsonld', true); - } - - return []; - } - - /** - * This function gets the object with its id and the related entity. - * - * @param Entity $entity The entity the object relates to - * @param string $id The id of the object entity - * @param array|null $fields The fields array that can be filtered on - * @param array|null $extend The extend array that can be extended - * - * @throws CacheException|InvalidArgumentException - * - * @return array - * @deprecated - */ - public function getObject(Entity $entity, string $id, ?array $fields = null, ?array $extend = null): array - { - $object = $this->entityManager->getRepository('App:ObjectEntity')->findOneBy(['entity' => $entity, 'id' => $id]); - if ($object instanceof ObjectEntity) { - return $this->responseService->renderResult($object, $fields, $extend, 'jsonld', true); - } - - return []; - } - - /** - * This function gets an object with the function set to person. - * - * @param string $id The id of the object entity - * @param array|null $fields The fields array that can be filtered on - * @param array|null $extend The extend array that can be extended - * - * @throws CacheException|InvalidArgumentException - * - * @return array - */ - public function getPersonObject(string $id, ?array $fields = null, ?array $extend = null): array - { - $entity = $this->entityManager->getRepository('App:Entity')->findOneBy(['function' => 'person']); - if ($entity instanceof Entity) { - return $this->getObject($entity, $id, $fields, $extend); - } - - return []; - } - - /** - * This function gets an object with the function set to organization. - * - * @param string $id The id of the object entity - * @param array|null $fields The fields array that can be filtered on - * @param array|null $extend The extend array that can be extended - * - * @throws CacheException|InvalidArgumentException - * - * @return array - */ - public function getOrganizationObject(string $id, ?array $fields = null, ?array $extend = null): array - { - $entity = $this->entityManager->getRepository('App:Entity')->findOneBy(['function' => 'organization']); //todo cache this!? - if ($entity instanceof Entity) { - return $this->getObject($entity, $id, $fields, $extend); - } - - return []; - } - - /** - * @TODO - * - * @param string $username The username of the person - * @param array|null $fields The fields array that can be filtered on - * @param array|null $extend The extend array that can be extended - * - * @throws CacheException|InvalidArgumentException - * - * @return array - */ - public function getUserObjectEntity(string $username, ?array $fields = null, ?array $extend = null): array - { - // Because inversedBy wil not set the UC->user->person when creating a person with a user in the gateway. - // We need to do this in order to find the person of this user: - $entity = $this->entityManager->getRepository('App:Entity')->findOneBy(['name' => 'users']); - - if ($entity == null) { - return []; - } - - $objects = $this->entityManager->getRepository('App:ObjectEntity')->findByEntity($entity, ['username' => $username]); - if (count($objects) == 1) { - $user = $this->responseService->renderResult($objects[0], $fields, $extend, 'jsonld', true); - // This: will be false if a user has no rights to do get on a person object - if (isset($user['person'])) { - return $user['person']; - } - } - - return []; - } - - /** - * This function get the filters array from the parameters. - * - * @return array - * @deprecated - */ - private function getFilterFromParameters(): array - { - if ($parameters = $this->session->get('parameters')) { - if (array_key_exists('path', $parameters)) { - foreach ($parameters['path'] as $key => $part) { - if ($key[0] === '{' && $key[strlen($key) - 1] === '}' && $part !== null) { - $key = substr($key, 1, -1); - $filters[$key] = $part; - - return $filters; - } else { - // @todo - } - } - } - } - - return []; - } - - /** - * This function handles the check for an object. - * - * @param string|null $id The id of the object - * @param string|null $method Method from request if there is a request - * @param Entity $entity The entity of the object - * - * @throws GatewayException - * - * @return ObjectEntity|array|mixed|null - * @deprecated - */ - public function checkGetObject(?string $id, string $method, Entity $entity) - { - // todo: re-used old code for getting an objectEntity - $object = $this->eavService->getObject($method === 'POST' ? null : $id, $method, $entity); - - if (is_array($object) && array_key_exists('type', $object) && $object['type'] == 'Bad Request') { - throw new GatewayException($object['message'], null, null, ['data' => $object['data'], 'path' => $object['path'], 'responseType' => Response::HTTP_BAD_REQUEST]); - } // Let's check if the user is allowed to view/edit this resource. - - if (!$method == 'POST' && !$this->checkOwner($object)) { - // TODO: do we want to throw a different error if there are no organizations in the session? (because of logging out for example) - if ($object->getOrganization() && !in_array($object->getOrganization(), $this->session->get('organizations') ?? [])) { - throw new GatewayException('You are forbidden to view or edit this resource.', null, null, ['data' => ['id' => $id ?? null], 'path' => $entity->getName(), 'responseType' => Response::HTTP_FORBIDDEN]); - } - } - - if ($object instanceof ObjectEntity && $object->getId() !== null) { - $this->session->set('object', $object->getId()->toString()); - } - - // Check for scopes, if forbidden to view/edit this, throw forbidden error - if (!isset($object) || is_array($object) || !$object->getUri() || !$this->checkOwner($object)) { - try { - //TODO what to do if we do a get collection and want to show objects this user is the owner of, but not any other objects? - $this->authorizationService->checkAuthorization([ - 'method' => $method, - 'entity' => $entity, - 'object' => $object ?? null, - ]); - } catch (AccessDeniedException $e) { - throw new GatewayException($e->getMessage(), null, null, ['data' => null, 'path' => $entity->getName(), 'responseType' => Response::HTTP_FORBIDDEN]); - } - } - - return $object; - } - - /** - * This function handles the check on operation types exceptions. - * - * @param Endpoint $endpoint The endpoint of the object - * @param Entity $entity The entity of the object - * @param array $data Data to be set into the eav - * - * @throws GatewayException - * - * @return ObjectEntity|string[]|void - * @deprecated - */ - public function checkGetOperationTypeExceptions(Endpoint $endpoint, Entity $entity, array &$data) - { - $operationType = $endpoint->getOperationType(); - if (((isset($operationType) && $operationType === 'item') || $endpoint->getOperationType() === 'item') && array_key_exists('results', $data) && count($data['results']) == 1) { // todo: $data['total'] == 1 - $data = $data['results'][0]; - isset($data['id']) && Uuid::isValid($data['id']) ?? $this->session->set('object', $data['id']); - } elseif ((isset($operationType) && $operationType === 'item') || $endpoint->getOperationType() === 'item') { - throw new GatewayException('No object found with these filters', null, null, ['data' => $filters ?? null, 'path' => $entity->getName(), 'responseType' => Response::HTTP_BAD_REQUEST]); - } - - return $data; - } - - /** - * This function handles the object entity exceptions. - * - * - * @param array|null $data Data to be set into the eav - * @param ObjectEntity|null $object The objects that is being checked on exceptions - * @param array|null $fields The fields array that can be filtered on - * @param array|null $extend The extend array that can be extended - * @param string $acceptType The acceptType of the call - defaulted to jsonld - * - * @throws CacheException - * @throws InvalidArgumentException - * - * @return string[] - * @deprecated - */ - public function checkGetObjectExceptions(?array &$data, ?ObjectEntity $object, ?array $fields, ?array $extend, string $acceptType): array - { - if ($object instanceof ObjectEntity) { - !$object->getSelf() ?? $object->setSelf($this->createSelf($object)); - if (isset($extend['x-commongateway-metadata']['dateRead']) - || isset($extend['x-commongateway-metadata']['all'])) { - $extend['x-commongateway-metadata']['dateRead'] = 'getItem'; - } - $data = $this->eavService->handleGet($object, $fields, $extend, $acceptType); - } else { - $data['error'] = $object; - } - - return $data; - } - - /** - * Gets fields and extend from the query params used in the request. - * - * @return array An array containing 2 keys: 'fields' & 'extend'. - * @deprecated - */ - private function getRequestQueryParams(): array - { - $fields = $this->eavService->getRequestFields($this->request); - - // Let's allow for extending - $extend = $this->eavService->getRequestExtend($this->request); - if (isset($extend['x-commongateway-metadata']) && $extend['x-commongateway-metadata'] === true) { - $extend['x-commongateway-metadata'] = []; - $extend['x-commongateway-metadata']['all'] = true; - } - - return [ - 'fields' => $fields, - 'extend' => $extend, - ]; - } - - /** - * This function handles the get case of an object entity. - * - * @param string|null $id The id of the object - * @param array|null $data Data to be set into the eav - * @param string $method The method of the call - * @param Entity $entity The entity of the object - * @param Endpoint|null $endpoint The endpoint of the object - * @param string $acceptType The acceptType of the call - defaulted to jsonld - * - * @throws CacheException - * @throws GatewayException - * @throws InvalidArgumentException - * - * @return array - * @deprecated - */ - public function getCase(?string $id, ?array &$data, string $method, Entity $entity, ?Endpoint $endpoint, string $acceptType): array - { - $queryParamData = $this->getRequestQueryParams(); - - if (isset($id)) { - $object = $this->checkGetObject($id, $method, $entity); - $data = $this->checkGetObjectExceptions($data, $object, $queryParamData['fields'], $queryParamData['extend'], $acceptType); - } else { - $data = $this->eavService->handleSearch( - $entity, - $this->request, - $queryParamData['fields'], - $queryParamData['extend'], - false, - $filters ?? [], - $acceptType - ); - - if (isset($endpoint)) { - $this->session->get('endpoint') ?? $data = $this->checkGetOperationTypeExceptions($endpoint, $entity, $data); - } - } - - return $data; - } - - /** - * This function checks and unsets the owner of the body of the call. - * - * @param array $data Data to be set into the eav - * - * @return string|null - * @deprecated - */ - public function checkAndUnsetOwner(array &$data): ?string - { - // todo: what about @organization? (See saveObject function, test it first, look at and compare with old code!) - // Check if @owner is present in the body and if so unset it. - // note: $owner is allowed to be null! - $owner = 'owner'; - if (array_key_exists('@owner', $data)) { - $owner = $data['@owner']; - unset($data['@owner']); - } - - return $owner; - } - - /** - * This function handles creating, updating and patching the object. - * - * @param array $data Data to be set into the eav - * @param ObjectEntity $object The objects that needs to be created/updated - * @param string $owner The owner of the object - * @param string $method The method of the call - * @param string $acceptType The acceptType of the call - defaulted to jsonld - * - * @throws CacheException - * @throws InvalidArgumentException - * - * @return string[] - * @deprecated - */ - public function createOrUpdateCase(array &$data, ObjectEntity $object, string $owner, string $method, string $acceptType): array - { - $queryParamData = $this->getRequestQueryParams(); - - // Save the object (this will remove this object result from the cache) - $this->functionService->removeResultFromCache = []; - $object = $this->saveObject($object, $data); - - // Handle Entity Function (note that this might be overwritten when handling the promise later!) - $object = $this->functionService->handleFunction($object, $object->getEntity()->getFunction(), [ - 'method' => $method, - 'uri' => $object->getUri(), - 'organizationType' => array_key_exists('type', $data) ? $data['type'] : null, - 'userGroupName' => array_key_exists('name', $data) ? $data['name'] : null, - ]); - - $this->handleOwner($object, $owner); // note: $owner is allowed to be null! - $object->setDateModified(new DateTime()); - - $this->entityManager->persist($object); - $this->entityManager->flush(); - - $data = $this->responseService->renderResult($object, $queryParamData['fields'], $queryParamData['extend'], $acceptType); - - return $data; - } - - /** - * This function handles deleting the object. - * - * @param string $id the id of the object - * @param array|null $data Data to be set into the eav - * @param string $method The method of the call - * @param Entity $entity The entity of the object - * - * @throws GatewayException - * @throws InvalidArgumentException - * - * @return string[] - * @deprecated - */ - public function deleteCase(string $id, ?array &$data, string $method, Entity $entity): array - { - $object = $this->checkGetObject($id, $method, $entity); - //todo: use PromiseMessage for delete promise and notification (re-use / replace code from eavService->handleDelete - - //todo: -start- old code... - //TODO: old code for deleting an ObjectEntity - - // delete object (this will remove this object result from the cache) - $this->functionService->removeResultFromCache = []; - $data = $this->eavService->handleDelete($object); - if (array_key_exists('type', $data) && $data['type'] == 'Forbidden') { - throw new GatewayException($data['message'], null, null, ['data' => $data['data'], 'path' => $data['path'], 'responseType' => Response::HTTP_FORBIDDEN]); - } - //todo: -end- old code... - - return $data; - } - - /** - * Saves an ObjectEntity in the DB using the $post array. NOTE: validation is and should only be done by the validatorService->validateData() function this saveObject() function only saves the object in the DB. - * - * @param array|null $data Data to be set into the eav - * @param Endpoint|null $endpoint The endpoint of the object - * @param Entity $entity The entity of the object - * @param string|null $id The id of the object - * @param string $method The method of the call - * @param string $acceptType The acceptType of the call - defaulted to jsonld - * - * @throws CacheException - * @throws ComponentException - * @throws GatewayException - * @throws InvalidArgumentException - * - * @return string[]|void - * @deprecated - */ - public function switchMethod(?array &$data, ?Endpoint $endpoint, Entity $entity, string $id = null, string $method = 'GET', string $acceptType = 'json') - { - // Get filters from query parameters - $filters = $this->getFilterFromParameters(); - - array_key_exists('id', $filters) && $id = $filters['id']; - !isset($id) && array_key_exists('uuid', $filters) && $id = $filters['uuid']; - - $validationErrors = null; - switch ($method) { - case 'GET': - $data = $this->getCase($id, $data, $method, $entity, $endpoint, $acceptType); - // todo: this dispatch should probably be moved to the getCase function!? - $this->dispatchEvent('commongateway.object.read', ['response' => $data, 'entity' => $entity->getId()->toString()]); - break; - case 'POST': - case 'PUT': - case 'PATCH': - $object = $this->checkGetObject($id, $method, $entity); - $owner = $this->checkAndUnsetOwner($data); - - // validate -// if ($validationErrors = $this->validatorService->validateData($data, $entity, $method)) { -// return $validationErrors; -// } - - $data = $this->createOrUpdateCase($data, $object, $owner, $method, $acceptType); - // todo: this dispatch should probably be moved to the createOrUpdateCase function!? - $this->dispatchEvent($method == 'POST' ? 'commongateway.object.create' : 'commongateway.object.update', ['response' => $data, 'entity' => $entity->getId()->toString()]); - break; - case 'DELETE': - $data = $this->deleteCase($id, $data, $method, $entity); - // todo: this dispatch should probably be moved to the deleteCase function!? - $this->dispatchEvent('commongateway.object.delete', ['response' => $data, 'entity' => $entity->getId()->toString()]); - break; - default: - throw new GatewayException('This method is not allowed', null, null, ['data' => ['method' => $method], 'path' => $entity->getName(), 'responseType' => Response::HTTP_FORBIDDEN]); - } - - return $validationErrors; - } - - /** - * A function to handle calls to eav. - * - * @param Handler $handler The handler the object relates to - * @param Endpoint $endpoint The endpoint of the object - * @param array|null $data Data to be set into the eav - * @param string|null $method Method from request if there is a request - * @param string $acceptType The acceptType of the call - defaulted to jsonld - * - * @throws GatewayException|CacheException|InvalidArgumentException|ComponentException|Exception - * - * @return array $data - * @deprecated - */ - public function handleObject(Handler $handler, Endpoint $endpoint, ?array $data = null, string $method = null, string $acceptType = 'json'): array - { - // Set application in the session or create new application for localhost if we need it. - $this->applicationService->getApplication(); - - // set session with sessionInfo - $sessionInfo = [ - 'entity' => $handler->getEntity()->getId()->toString(), - 'source' => $handler->getEntity()->getSource() ? $handler->getEntity()->getSource()->getId()->toString() : null, - ]; - $this->session->set('entitySource', $sessionInfo); - - $validationErrors = $this->switchMethod($data, $endpoint, $handler->getEntity(), null, $method, $acceptType); - if (isset($validationErrors)) { - throw new GatewayException('Validation errors', null, null, ['data' => $validationErrors, 'path' => $handler->getEntity()->getName(), 'responseType' => Response::HTTP_BAD_REQUEST]); - } - - // use events - return $data; - } - - /** - * Saves an ObjectEntity in the DB using the $post array. NOTE: validation is and should only be done by the validatorService->validateData() function this saveObject() function only saves the object in the DB. - * - * @param ObjectEntity $objectEntity - * @param array $post - * - * @throws Exception|InvalidArgumentException - * - * @return ObjectEntity - * @deprecated - */ - public function saveObject(ObjectEntity $objectEntity, array $post): ObjectEntity - { - $entity = $objectEntity->getEntity(); - - foreach ($entity->getAttributes() as $attribute) { - // Check attribute function - if ($attribute->getFunction() !== 'noFunction') { - $objectEntity = $this->handleAttributeFunction($objectEntity, $attribute); - continue; // Do not save this attribute(/value) in any other way! - } - - // Check if we have a value ( a value is given in the post body for this attribute, can be null) - // If no value is present in the post body for this attribute check for defaultValue and nullable. - if (key_exists($attribute->getName(), $post)) { - $objectEntity = $this->saveAttribute($objectEntity, $attribute, $post[$attribute->getName()]); - } elseif ($this->request->getMethod() == 'POST') { - if ($attribute->getDefaultValue()) { - // todo: defaultValue should maybe be a Value object, so that defaultValue can be something else than a string - // DefaultValue can be a uuid string to connect an object... - $objectEntity = $this->saveAttribute($objectEntity, $attribute, $this->twig->createTemplate($attribute->getDefaultValue())->render()); - } else { - // If no value is given when creating a new object, make sure we set a value to null for this attribute. - $objectEntity->setValue($attribute, null); - } - } - } - - if (!$objectEntity->getUri()) { - // Lets make sure we always set the uri - $objectEntity->setUri($this->createUri($objectEntity)); - } - if (!$objectEntity->getSelf()) { - // Lets make sure we always set the self (@id) - $objectEntity->setSelf($this->createSelf($objectEntity)); - } - - if (array_key_exists('@organization', $post) && $objectEntity->getOrganization() != $post['@organization']) { - $objectEntity->setOrganization($post['@organization']); - } - - // Only do this if we are changing an object, not when creating one. - if ($this->request->getMethod() != 'POST') { - // Handle setting an object as unread. - if (array_key_exists('@dateRead', $post) && $post['@dateRead'] == false) { - $this->setUnread($objectEntity); - } - - // If we change an ObjectEntity we should remove it from the result cache - $this->functionService->removeResultFromCache($objectEntity); - } - - return $objectEntity; - } - - /** - * Checks if there exists an unread object for the given ObjectEntity + current UserId. If not, creation one. - * - * @param ObjectEntity $objectEntity - * - * @return void - * @deprecated moved this function to CoreBundle->ReadUnreadService->setUnread() - */ - public function setUnread(ObjectEntity $objectEntity) - { - // First, check if there is an Unread object for this Object+User. If so, do nothing. - $user = $this->security->getUser(); - if ($user !== null) { - $unreads = $this->entityManager->getRepository('App:Unread')->findBy(['object' => $objectEntity, 'userId' => $user->getUserIdentifier()]); - if (empty($unreads)) { - $unread = new Unread(); - $unread->setObject($objectEntity); - $unread->setUserId($user->getUserIdentifier()); - $this->entityManager->persist($unread); - // Do not flush, will always be done after the api-call that triggers this function, if that api-call doesn't throw an exception. - } - } - } - - /** - * @return string - * @deprecated - */ - private function getUserName(): string - { - $user = $this->security->getUser(); - - if ($user instanceof AuthenticationUser) { - return $user->getName(); - } - - return ''; - } - - /** - * Handles saving the value for an Attribute when the Attribute has a function set. A function makes it 'function' (/behave) differently. - * - * @param ObjectEntity $objectEntity - * @param Attribute $attribute - * - * @throws Exception - * - * @return ObjectEntity - * @deprecated - */ - private function handleAttributeFunction(ObjectEntity $objectEntity, Attribute $attribute): ObjectEntity - { - switch ($attribute->getFunction()) { - case 'id': - $objectEntity->setValue($attribute, $objectEntity->getId()->toString()); - // Note: attributes with function = id should also be readOnly and type=string - break; - case 'self': - $self = $objectEntity->getSelf() ?? $objectEntity->setSelf($this->createSelf($objectEntity))->getSelf(); - $objectEntity->setValue($attribute, $self); - // Note: attributes with function = self should also be readOnly and type=string - break; - case 'uri': - $uri = $objectEntity->getUri() ?? $objectEntity->setUri($this->createUri($objectEntity))->getUri(); - $objectEntity->setValue($attribute, $uri); - // Note: attributes with function = uri should also be readOnly and type=string - break; - case 'externalId': - $objectEntity->setValue($attribute, $objectEntity->getExternalId()); - // Note: attributes with function = externalId should also be readOnly and type=string - break; - case 'dateCreated': - $objectEntity->setValue($attribute, $objectEntity->getDateCreated()->format("Y-m-d\TH:i:sP")); - // Note: attributes with function = dateCreated should also be readOnly and type=string||date||datetime - break; - case 'dateModified': - $objectEntity->setValue($attribute, $objectEntity->getDateModified()->format("Y-m-d\TH:i:sP")); - // Note: attributes with function = dateModified should also be readOnly and type=string||date||datetime - break; - case 'userName': - $objectEntity->getValueObject($attribute)->getValue() ?? $objectEntity->setValue($attribute, $this->getUserName()); - break; - } - - return $objectEntity; - } - - /** - * Saves a Value for an Attribute (of the Entity) of an ObjectEntity. - * - * @param ObjectEntity $objectEntity - * @param Attribute $attribute - * @param $value - * - * @throws Exception|InvalidArgumentException - * - * @return ObjectEntity - * @deprecated - */ - private function saveAttribute(ObjectEntity $objectEntity, Attribute $attribute, $value): ObjectEntity - { - //todo: check owner? -// try { -// if (!$this->checkOwner($objectEntity)) { -// $this->authorizationService->checkAuthorization([ -// 'method' => $this->request->getMethod(), -// 'attribute' => $attribute, -// 'value' => $value, -// ]); -// } -// } catch (AccessDeniedException $e) { -// throw new GatewayException('message', null, null, ['data' => ['info' => 'info'], 'path' => 'somePath', 'responseType' => Response::HTTP_FORBIDDEN]); -// } - - $valueObject = $objectEntity->getValueObject($attribute); - - // If the value given by the user is empty... - if (empty($value) && !(in_array($attribute->getType(), ['bool', 'boolean']) && $value === false)) { - if ($attribute->getMultiple() && $value === []) { - if ($attribute->getType() == 'object' && ($this->request->getMethod() == 'PUT' || $this->request->getMethod() == 'PATCH')) { - foreach ($valueObject->getObjects() as $object) { - // If we are not re-adding this object... - $object->removeSubresourceOf($valueObject); - if (count($object->getSubresourceOf()) == 0) { - $this->eavService->handleDelete($object); - } - } - $valueObject->getObjects()->clear(); - } else { - $valueObject->setValue([]); - } - } else { - $valueObject->setValue(null); - } - - return $objectEntity; - } - - // Save the actual value, unless type is object or file, we save those differently. - if (!in_array($attribute->getType(), ['object', 'file'])) { - $valueObject->setValue($value); - } elseif ($attribute->getMultiple()) { - // If multiple, this is an array, loop through $value and save as array of $attribute->getType() - $objectEntity = $this->saveAttributeMultiple($objectEntity, $attribute, $valueObject, $value); - } else { - $objectEntity = $this->saveAttributeType($objectEntity, $attribute, $valueObject, $value); - } - - return $objectEntity; - } - - /** - * Saves a subObject using saveObject. Will also set the owner, uri, organization and application. And check for a Entity function. - * - * @param ObjectEntity $subObject - * @param $object - * - * @throws InvalidArgumentException - * - * @return ObjectEntity - * @deprecated - */ - private function saveSubObject(ObjectEntity $subObject, $object): ObjectEntity - { - $subObject = $this->saveObject($subObject, $object); - $this->handleOwner($subObject); // Do this after all CheckAuthorization function calls - - // We need to set uri here in case we need it in $this->functionService->handleFunction later! - $subObject->setUri($this->createUri($subObject)); - - // todo remove if no longer needed, see value.php setValue() where we set owner, organization and application for subobjects - // Set organization for this object - if (count($subObject->getSubresourceOf()) > 0 && !empty($subObject->getSubresourceOf()->first()->getObjectEntity()->getOrganization())) { - $subObject->setOrganization($subObject->getSubresourceOf()->first()->getObjectEntity()->getOrganization()); - $subObject->setApplication($subObject->getSubresourceOf()->first()->getObjectEntity()->getApplication()); - } else { - $subObject->setOrganization($this->session->get('activeOrganization')); - $application = $this->entityManager->getRepository('App:Application')->findOneBy(['id' => $this->session->get('application')]); - $subObject->setApplication(!empty($application) ? $application : null); - } - - return $this->functionService->handleFunction($subObject, $subObject->getEntity()->getFunction(), [ - 'method' => $this->request->getMethod(), - 'uri' => $subObject->getUri(), - 'organizationType' => is_array($object) && array_key_exists('type', $object) ? $object['type'] : null, - 'userGroupName' => is_array($object) && array_key_exists('name', $object) ? $object['name'] : null, - ]); - } - - /** - * @TODO - * - * @param ObjectEntity $objectEntity - * @param Attribute $attribute - * @param Value $valueObject - * @param $value - * - * @throws InvalidArgumentException - * - * @return ObjectEntity - * @deprecated - */ - private function saveAttributeMultiple(ObjectEntity $objectEntity, Attribute $attribute, Value $valueObject, $value): ObjectEntity - { - switch ($attribute->getType()) { - case 'object': - $subObjectIds = []; - $saveSubObjects = new ArrayCollection(); // collection to store all new subobjects in before we actually connect them to the value - foreach ($value as $key => $object) { - // If we are not cascading and value is a string, then value should be an id. - if (is_string($object)) { - if (Uuid::isValid($object) == false) { - // We should also allow commonground Uri's like: https://taalhuizen-bisc.commonground.nu/api/v1/wrc/organizations/008750e5-0424-440e-aea0-443f7875fbfe - // TODO: support /$attribute->getObject()->getEndpoint()/uuid? - if ($object == $attribute->getObject()->getSource()->getLocation().'/'.$attribute->getObject()->getEndpoint().'/'.$this->commonGroundService->getUuidFromUrl($object)) { - $object = $this->commonGroundService->getUuidFromUrl($object); - } else { -// var_dump('The given value ('.$object.') is not a valid object, a valid uuid or a valid uri ('.$attribute->getObject()->getSource()->getLocation().'/'.$attribute->getObject()->getEndpoint().'/uuid).'); - continue; - } - } - - // Look for object in the gateway with this id (for ObjectEntity id and for ObjectEntity externalId) - // todo make one sql query for finding an ObjectEntity by id or externalId - if (!$subObject = $this->entityManager->getRepository('App:ObjectEntity')->findOneBy(['entity' => $attribute->getObject(), 'id' => $object])) { - if (!$subObject = $this->entityManager->getRepository('App:ObjectEntity')->findOneBy(['entity' => $attribute->getObject(), 'externalId' => $object])) { - // If gateway->location and endpoint are set on the attribute(->getObject) Entity look outside the gateway for an existing object. - if (!$subObject) { - // todo: throw error? -// var_dump('Could not find an object with id '.$object.' of type '.$attribute->getObject()->getName()); - continue; - } - } - } - // object toevoegen - $saveSubObjects->add($subObject); - continue; - } - - // If we are doing a PUT with a subObject that contains an id, find the object with this id and update it. - if (($this->request->getMethod() == 'PUT' || $this->request->getMethod() == 'PATCH') && array_key_exists('id', $object)) { - if (!is_string($object['id']) || Uuid::isValid($object['id']) == false) { -// var_dump('The given value ('.$object['id'].') is not a valid uuid.'); - continue; - } - $subObject = $valueObject->getObjects()->filter(function (ObjectEntity $item) use ($object) { - return $item->getId() == $object['id'] || $item->getExternalId() == $object['id']; - }); - if (count($subObject) == 0) { - // look outside the gateway - - if (!$subObject) { - // todo: throw error? -// var_dump('Could not find an object with id '.$object['id'].' of type '.$attribute->getObject()->getName()); - continue; - } - - // object toevoegen - $saveSubObjects->add($subObject); - continue; - } elseif (count($subObject) > 1) { -// var_dump('Found more than 1 object with id '.$object['id'].' of type '.$attribute->getObject()->getName()); - continue; - } else { - $subObject = $subObject->first(); - } - } elseif (($this->request->getMethod() == 'PUT' || $this->request->getMethod() == 'PATCH') - && count($value) == 1 - && count($valueObject->getObjects()) == 1) { - // If we are doing a PUT with a single subObject (and it contains no id) and the existing mainObject only has a single subObject, use the existing subObject and update that. - $subObject = $valueObject->getObjects()->first(); - $object['id'] = $subObject->getExternalId(); - } else { - //Lets do a cascade check here. - if (!$attribute->getCascade() && !is_string($object)) { - continue; - } - - // Create a new subObject (ObjectEntity) - $subObject = new ObjectEntity(); - $subObject->setEntity($attribute->getObject()); - $subObject->addSubresourceOf($valueObject); - } - - $subObject->setSubresourceIndex($key); - - $subObject = $this->saveSubObject($subObject, $object); - - // object toevoegen - $saveSubObjects->add($subObject); - $subObjectIds[] = $subObject->getId()->toString(); - } - $valueObject->setArrayValue($subObjectIds); - - // If we are doing a put, we want to actually clear (or remove) objects connected to this valueObject we no longer need - if ($this->request->getMethod() == 'PUT' || $this->request->getMethod() == 'PATCH') { - foreach ($valueObject->getObjects() as $object) { - // If we are not re-adding this object... allow delete on PUT - if (!$saveSubObjects->contains($object)) { - $object->removeSubresourceOf($valueObject); - if (count($object->getSubresourceOf()) == 0) { - $this->eavService->handleDelete($object); - } - } - } - $valueObject->getObjects()->clear(); - } - // Actually add the objects to the valueObject - foreach ($saveSubObjects as $saveSubObject) { - // Make sure we never connect the value of a multiple=false attribute to more than one object! Checks inversedBy - $this->disconnectNotMultipleObjects($objectEntity, $attribute, $saveSubObject); - - $valueObject->addObject($saveSubObject); - } - break; - case 'file': - foreach ($value as $file) { - $objectEntity = $this->saveFile($objectEntity, $valueObject, $this->base64ToFileArray($file)); - } - break; - default: - // do nothing - break; - } - - return $objectEntity; - } - - /** - * @TODO - * - * @param ObjectEntity $objectEntity - * @param Attribute $attribute - * @param Value $valueObject - * @param $value - * - * @throws Exception - * - * @return ObjectEntity - * @deprecated - */ - private function saveAttributeType(ObjectEntity $objectEntity, Attribute $attribute, Value $valueObject, $value): ObjectEntity - { - switch ($attribute->getType()) { - case 'object': - // Check for cascading (should already be done by validatorService... - if (!$attribute->getCascade() && !is_string($value)) { - break; - } - - // If we are not cascading and value is a string, then value should be an id. - if (is_string($value)) { - if (Uuid::isValid($value) == false) { - // We should also allow commonground Uri's like: https://taalhuizen-bisc.commonground.nu/api/v1/wrc/organizations/008750e5-0424-440e-aea0-443f7875fbfe - // TODO: support /$attribute->getObject()->getEndpoint()/uuid? -// if ($value == $attribute->getObject()->getSource()->getLocation().'/'.$attribute->getObject()->getEndpoint().'/'.$this->commonGroundService->getUuidFromUrl($value)) { -// $value = $this->commonGroundService->getUuidFromUrl($value); -// } else { - //// var_dump('The given value ('.$value.') is not a valid object, a valid uuid or a valid uri ('.$attribute->getObject()->getSource()->getLocation().'/'.$attribute->getObject()->getEndpoint().'/uuid).'); -// break; -// } - } - - // Look for object in the gateway with this id (for ObjectEntity id and for ObjectEntity externalId) - // todo make one sql query for finding an ObjectEntity by id or externalId - if (!$subObject = $this->entityManager->getRepository('App:ObjectEntity')->findOneBy(['entity' => $attribute->getObject(), 'id' => $value])) { - if (!$subObject = $this->entityManager->getRepository('App:ObjectEntity')->findOneBy(['entity' => $attribute->getObject(), 'externalId' => $value])) { - // If gateway->location and endpoint are set on the attribute(->getObject) Entity look outside the gateway for an existing object. - if (!$subObject) { - // todo: throw error? -// var_dump('Could not find an object with id '.$value.' of type '.$attribute->getObject()->getName()); - break; - } - } - } - - // Make sure we never connect the value of a multiple=false attribute to more than one object! Checks inversedBy. - $this->disconnectNotMultipleObjects($objectEntity, $attribute, $subObject); - - // Object toevoegen - $valueObject->getObjects()->clear(); // We start with a default object - $valueObject->addObject($subObject); - break; - } - - if (!$valueObject->getValue()) { - // Cascading... - $subObject = new ObjectEntity(); - $subObject->setEntity($attribute->getObject()); - $subObject->addSubresourceOf($valueObject); - } else { - // Put... - $subObject = $valueObject->getValue(); - } - - $subObject = $this->saveSubObject($subObject, $value); - - $this->entityManager->persist($subObject); - - $valueObject->setValue($subObject); - - break; - case 'file': - $objectEntity = $this->saveFile($objectEntity, $valueObject, $this->base64ToFileArray($value)); - break; - default: - // do nothing - break; - } - - return $objectEntity; - } - - /** - * This function will check if an attribute has inversedBy, if so, get the inversedBy value and check if this value does not already have given $objectEntity as a relation. - * If inversedBy value does not have the $objectEntity as relation and the attribute of this inversedBy value is multiple=false this inversedBy value should only contain one object. - * So, if the inversedBy value has already one or more other objects connected to it, disconnect all these objects, so we can add $objectEntity as the only relation after using this function. - * - * @param ObjectEntity $objectEntity The 'parent' objectEntity of $attribute we might want to add as a inversedBy relation to $subObject. - * @param Attribute $attribute The attribute we are going to check inversedBy on and get its value if it has a inversedBy attribute/value. - * @param ObjectEntity $subObject The 'child' objectEntity we want to add to the Value of the $attribute of $objectEntity. - * - * @return void - */ - private function disconnectNotMultipleObjects(ObjectEntity $objectEntity, Attribute $attribute, ObjectEntity $subObject) - { - // Make sure we never connect the value of a multiple=false attribute to more than one object! - if ($attribute->getInversedBy()) { - // If we have inversedBy on this attribute - $inversedByValue = $subObject->getValueObject($attribute->getInversedBy()); - if (!$inversedByValue->getObjects()->contains($objectEntity)) { // $valueObject->getObjectEntity() = $objectEntity - // If inversedBy attribute is not multiple it should only have one object connected to it - if (!$attribute->getInversedBy()->getMultiple() and count($inversedByValue->getObjects()) > 0) { - // Disconnect old objects - foreach ($inversedByValue->getObjects() as $object) { - // Clear any objects and there parent relations (subresourceOf) to make sure we only can have one object connected. - $object->removeSubresourceOf($inversedByValue); - } - } - } - } - } - - /** - * @TODO - * - * @param ObjectEntity $objectEntity - * @param Value $valueObject - * @param array $fileArray - * - * @return ObjectEntity - */ - private function saveFile(ObjectEntity $objectEntity, Value $valueObject, array $fileArray): ObjectEntity - { - if ($fileArray['name']) { - // Find file by filename (this can be the uuid of the file object) - $fileObject = $valueObject->getFiles()->filter(function (File $item) use ($fileArray) { - return $item->getName() == $fileArray['name']; - }); - if (count($fileObject) > 1) { -// var_dump($attribute->getName().'.name More than 1 file found with this name: '.$fileArray['name']); - // todo: throw error? - } - } - - if (isset($fileObject) && count($fileObject) == 1) { - // Update existing file if we found one using the given file name - $fileObject = $fileObject->first(); - } else { - // Create a new file - $fileObject = new File(); - } - $this->entityManager->persist($fileObject); // For getting the id if no name is given - $fileObject->setName($fileArray['name'] ?? $fileObject->getId()); - $fileObject->setExtension($fileArray['extension']); - $fileObject->setMimeType($fileArray['mimeType']); - $fileObject->setSize($fileArray['size']); - $fileObject->setBase64($fileArray['base64']); - - $valueObject->addFile($fileObject); - - return $objectEntity; - } - - /** - * Converts a mime type to an extension (or find all mime_types with an extension). - * - * @param $mime - * @param null $ext - * - * @return array|false|string - */ - private function mimeToExt($mime, $ext = null) - { - // todo: move this to a dedicated file and get it from there? - $mime_map = [ - 'video/3gpp2' => '3g2', - 'video/3gp' => '3gp', - 'video/3gpp' => '3gp', - 'application/x-compressed' => '7zip', - 'audio/x-acc' => 'aac', - 'audio/ac3' => 'ac3', - 'application/postscript' => 'ai', - 'audio/x-aiff' => 'aif', - 'audio/aiff' => 'aif', - 'audio/x-au' => 'au', - 'video/x-msvideo' => 'avi', - 'video/msvideo' => 'avi', - 'video/avi' => 'avi', - 'application/x-troff-msvideo' => 'avi', - 'application/macbinary' => 'bin', - 'application/mac-binary' => 'bin', - 'application/x-binary' => 'bin', - 'application/x-macbinary' => 'bin', - 'image/bmp' => 'bmp', - 'image/x-bmp' => 'bmp', - 'image/x-bitmap' => 'bmp', - 'image/x-xbitmap' => 'bmp', - 'image/x-win-bitmap' => 'bmp', - 'image/x-windows-bmp' => 'bmp', - 'image/ms-bmp' => 'bmp', - 'image/x-ms-bmp' => 'bmp', - 'application/bmp' => 'bmp', - 'application/x-bmp' => 'bmp', - 'application/x-win-bitmap' => 'bmp', - 'application/cdr' => 'cdr', - 'application/coreldraw' => 'cdr', - 'application/x-cdr' => 'cdr', - 'application/x-coreldraw' => 'cdr', - 'image/cdr' => 'cdr', - 'image/x-cdr' => 'cdr', - 'zz-application/zz-winassoc-cdr' => 'cdr', - 'application/mac-compactpro' => 'cpt', - 'application/pkix-crl' => 'crl', - 'application/pkcs-crl' => 'crl', - 'application/x-x509-ca-cert' => 'crt', - 'application/pkix-cert' => 'crt', - 'text/css' => 'css', - 'text/x-comma-separated-values' => 'csv', - 'text/comma-separated-values' => 'csv', - 'application/vnd.msexcel' => 'csv', - 'application/x-director' => 'dcr', - 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'docx', - 'application/x-dvi' => 'dvi', - 'message/rfc822' => 'eml', - 'application/x-msdownload' => 'exe', - 'video/x-f4v' => 'f4v', - 'audio/x-flac' => 'flac', - 'video/x-flv' => 'flv', - 'image/gif' => 'gif', - 'application/gpg-keys' => 'gpg', - 'application/x-gtar' => 'gtar', - 'application/x-gzip' => 'gzip', - 'application/mac-binhex40' => 'hqx', - 'application/mac-binhex' => 'hqx', - 'application/x-binhex40' => 'hqx', - 'application/x-mac-binhex40' => 'hqx', - 'text/html' => 'html', - 'image/x-icon' => 'ico', - 'image/x-ico' => 'ico', - 'image/vnd.microsoft.icon' => 'ico', - 'text/calendar' => 'ics', - 'application/java-archive' => 'jar', - 'application/x-java-application' => 'jar', - 'application/x-jar' => 'jar', - 'image/jp2' => 'jp2', - 'video/mj2' => 'jp2', - 'image/jpx' => 'jp2', - 'image/jpm' => 'jp2', - 'image/jpeg' => 'jpeg', - 'image/pjpeg' => 'jpeg', - 'application/x-javascript' => 'js', - 'application/json' => 'json', - 'text/json' => 'json', - 'application/vnd.google-earth.kml+xml' => 'kml', - 'application/vnd.google-earth.kmz' => 'kmz', - 'text/x-log' => 'log', - 'audio/x-m4a' => 'm4a', - 'audio/mp4' => 'm4a', - 'application/vnd.mpegurl' => 'm4u', - 'audio/midi' => 'mid', - 'application/vnd.mif' => 'mif', - 'video/quicktime' => 'mov', - 'video/x-sgi-movie' => 'movie', - 'audio/mpeg' => 'mp3', - 'audio/mpg' => 'mp3', - 'audio/mpeg3' => 'mp3', - 'audio/mp3' => 'mp3', - 'video/mp4' => 'mp4', - 'video/mpeg' => 'mpeg', - 'application/oda' => 'oda', - 'audio/ogg' => 'ogg', - 'video/ogg' => 'ogg', - 'application/ogg' => 'ogg', - 'font/otf' => 'otf', - 'application/x-pkcs10' => 'p10', - 'application/pkcs10' => 'p10', - 'application/x-pkcs12' => 'p12', - 'application/x-pkcs7-signature' => 'p7a', - 'application/pkcs7-mime' => 'p7c', - 'application/x-pkcs7-mime' => 'p7c', - 'application/x-pkcs7-certreqresp' => 'p7r', - 'application/pkcs7-signature' => 'p7s', - 'application/pdf' => 'pdf', - 'application/octet-stream' => 'pdf', - 'application/x-x509-user-cert' => 'pem', - 'application/x-pem-file' => 'pem', - 'application/pgp' => 'pgp', - 'application/x-httpd-php' => 'php', - 'application/php' => 'php', - 'application/x-php' => 'php', - 'text/php' => 'php', - 'text/x-php' => 'php', - 'application/x-httpd-php-source' => 'php', - 'image/png' => 'png', - 'image/x-png' => 'png', - 'application/powerpoint' => 'ppt', - 'application/vnd.ms-powerpoint' => 'ppt', - 'application/vnd.ms-office' => 'ppt', - 'application/msword' => 'doc', - 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'pptx', - 'application/x-photoshop' => 'psd', - 'image/vnd.adobe.photoshop' => 'psd', - 'audio/x-realaudio' => 'ra', - 'audio/x-pn-realaudio' => 'ram', - 'application/x-rar' => 'rar', - 'application/rar' => 'rar', - 'application/x-rar-compressed' => 'rar', - 'audio/x-pn-realaudio-plugin' => 'rpm', - 'application/x-pkcs7' => 'rsa', - 'text/rtf' => 'rtf', - 'text/richtext' => 'rtx', - 'video/vnd.rn-realvideo' => 'rv', - 'application/x-stuffit' => 'sit', - 'application/smil' => 'smil', - 'text/srt' => 'srt', - 'image/svg+xml' => 'svg', - 'application/x-shockwave-flash' => 'swf', - 'application/x-tar' => 'tar', - 'application/x-gzip-compressed' => 'tgz', - 'image/tiff' => 'tiff', - 'font/ttf' => 'ttf', - 'text/plain' => 'txt', - 'text/x-vcard' => 'vcf', - 'application/videolan' => 'vlc', - 'text/vtt' => 'vtt', - 'audio/x-wav' => 'wav', - 'audio/wave' => 'wav', - 'audio/wav' => 'wav', - 'application/wbxml' => 'wbxml', - 'video/webm' => 'webm', - 'image/webp' => 'webp', - 'audio/x-ms-wma' => 'wma', - 'application/wmlc' => 'wmlc', - 'video/x-ms-wmv' => 'wmv', - 'video/x-ms-asf' => 'wmv', - 'font/woff' => 'woff', - 'font/woff2' => 'woff2', - 'application/xhtml+xml' => 'xhtml', - 'application/excel' => 'xl', - 'application/msexcel' => 'xls', - 'application/x-msexcel' => 'xls', - 'application/x-ms-excel' => 'xls', - 'application/x-excel' => 'xls', - 'application/x-dos_ms_excel' => 'xls', - 'application/xls' => 'xls', - 'application/x-xls' => 'xls', - 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'xlsx', - 'application/vnd.ms-excel' => 'xlsx', - 'application/xml' => 'xml', - 'text/xml' => 'xml', - 'text/xsl' => 'xsl', - 'application/xspf+xml' => 'xspf', - 'application/x-compress' => 'z', - 'application/x-zip' => 'zip', - 'application/zip' => 'zip', - 'application/x-zip-compressed' => 'zip', - 'application/s-compressed' => 'zip', - 'multipart/x-zip' => 'zip', - 'text/x-scriptzsh' => 'zsh', - ]; - - if ($ext) { - $mime_types = []; - foreach ($mime_map as $mime_type => $extension) { - if ($extension == $ext) { - $mime_types[] = $mime_type; - } - } - - return $mime_types; - } - - return $mime_map[$mime] ?? false; - } - - /** - * Create a file array (matching the Entity File) from an array containing at least a base64 string and maybe a filename (not required). - * - * @param array $file - * - * @return array - */ - private function base64ToFileArray(array $file): array - { - // Get mime_type from base64 - $explode_base64 = explode(',', $file['base64']); - $imgdata = base64_decode(end($explode_base64)); - $f = finfo_open(); - $mime_type = finfo_buffer($f, $imgdata, FILEINFO_MIME_TYPE); - finfo_close($f); - - // Create file data - return [ - 'name' => array_key_exists('filename', $file) ? $file['filename'] : null, - // Get extension from filename, and else from the mime_type - 'extension' => array_key_exists('filename', $file) ? pathinfo($file['filename'], PATHINFO_EXTENSION) : $this->mimeToExt($mime_type), - 'mimeType' => $mime_type, - 'size' => $this->getBase64Size($file['base64']), - 'base64' => $file['base64'], - ]; - } - - /** - * Gets the memory size of a base64 file. - * - * @param $base64 - * - * @return Exception|float|int - */ - private function getBase64Size($base64) - { //return memory size in B, KB, MB - try { - $size_in_bytes = (int) (strlen(rtrim($base64, '=')) * 3 / 4); - $size_in_kb = $size_in_bytes / 1024; - $size_in_mb = $size_in_kb / 1024; - - return $size_in_bytes; - } catch (Exception $e) { - return $e; - } - } - - /** - * Create a file array (matching the Entity File) from an UploadedFile object. - * - * @param UploadedFile $file - * @param string|null $key - * - * @return array - */ - public function uploadedFileToFileArray(UploadedFile $file, string $key = null): array - { - return [ - 'name' => $file->getClientOriginalName() ?? null, - 'extension' => $file->getClientOriginalExtension() ?? $file->getClientMimeType() ? $this->mimeToExt($file->getClientMimeType()) : null, - 'mimeType' => $file->getClientMimeType() ?? null, - 'size' => $file->getSize() ?? null, - 'base64' => $this->uploadToBase64($file), - 'key' => $key, // Pass this through for showing correct error messages with multiple files - ]; - } - - /** - * Create a base64 string from an UploadedFile object. - * - * @param UploadedFile $file - * - * @return string - */ - private function uploadToBase64(UploadedFile $file): string - { - $content = base64_encode($file->openFile()->fread($file->getSize())); - $mimeType = $file->getClientMimeType(); - - return 'data:'.$mimeType.';base64,'.$content; - } - - /** - * @TODO - * - * @param ObjectEntity $objectEntity - * - * @return string - * @deprecated - */ - public function createUri(ObjectEntity $objectEntity): string - { - // We need to persist if this is a new ObjectEntity in order to set and getId to generate the uri... - $this->entityManager->persist($objectEntity); - if ($objectEntity->getEntity()->getSource() && $objectEntity->getEntity()->getSource()->getLocation() && $objectEntity->getExternalId()) { - return $objectEntity->getEntity()->getSource()->getLocation().'/'.$objectEntity->getEntity()->getEndpoint().'/'.$objectEntity->getExternalId(); - } - - $uri = isset($_SERVER['HTTP_HOST']) && $_SERVER['HTTP_HOST'] !== 'localhost' ? 'https://'.$_SERVER['HTTP_HOST'] : 'http://localhost'; - - if ($objectEntity->getEntity()->getRoute()) { - return $uri.'/api'.$objectEntity->getEntity()->getRoute().'/'.$objectEntity->getId(); - } - - return $uri.'/admin/object_entities/'.$objectEntity->getId(); - } - - /** - * Returns the string used for {at sign}id or self->href for the given objectEntity. This function will use the ObjectEntity->Entity - * to first look for the get item endpoint and else use the Entity route or name to generate the correct string. - * - * @param ObjectEntity $objectEntity - * - * @return string - * @deprecated - */ - public function createSelf(ObjectEntity $objectEntity): string - { - // We need to persist if this is a new ObjectEntity in order to set and getId to generate the self... - $this->entityManager->persist($objectEntity); - $endpoints = $this->entityManager->getRepository('App:Endpoint')->findGetItemByEntity($objectEntity->getEntity()); - if (count($endpoints) > 0 && $endpoints[0] instanceof Endpoint) { - $pathArray = $endpoints[0]->getPath(); - $foundId = in_array('{id}', $pathArray) ? $pathArray[array_search('{id}', $pathArray)] = $objectEntity->getId() : - (in_array('{uuid}', $pathArray) ? $pathArray[array_search('{uuid}', $pathArray)] = $objectEntity->getId() : false); - if ($foundId !== false) { - $path = implode('/', $pathArray); - - return '/api/'.$path; - } - } - - return '/api'.($objectEntity->getEntity()->getRoute() ?? $objectEntity->getEntity()->getName()).'/'.$objectEntity->getId(); - } - - /** - * Create a NRC notification for the given ObjectEntity. - * - * @param ObjectEntity $objectEntity - * @param string $method - * @deprecated - */ - public function notify(ObjectEntity $objectEntity, string $method) - { - if (!$this->commonGroundService->getComponent('nrc')) { - return; - } - // TODO: move this function to a notificationService? - $topic = $objectEntity->getEntity()->getName(); - switch ($method) { - case 'POST': - $action = 'Create'; - break; - case 'PUT': - case 'PATCH': - $action = 'Update'; - break; - case 'DELETE': - $action = 'Delete'; - break; - } - if (isset($action)) { - $notification = [ - 'topic' => $topic, - 'action' => $action, - 'resource' => $objectEntity->getUri(), - 'id' => $objectEntity->getExternalId(), - ]; - if (!$objectEntity->getUri()) { - // var_dump('Couldn\'t notifiy for object, because it has no uri!'); - // var_dump('Id: '.$objectEntity->getId()); - // var_dump('ExternalId: '.$objectEntity->getExternalId() ?? null); - // var_dump($notification); - return; - } - $this->commonGroundService->createResource($notification, ['component' => 'nrc', 'type' => 'notifications'], false, true, false); - } - } - - /** - * When rendering a single attribute value for the post body of the api-call/promise to update an object in a source outside the gateway, - * and when the type of this attribute is object and cascading on this attribute is not allowed, - * try and render/use the entire object for all subresources of this attribute. - * - * @param Collection $objects - * @param Attribute $attribute - * - * @return array|mixed|null - * @deprecated - */ - public function renderSubObjects(Collection $objects, Attribute $attribute) - { - $results = []; - foreach ($objects as $object) { - // We allow cascading on promises, but only if the gateway of the parent entity and subresource match. - $results[] = - $object->getEntity()->getSource() == $attribute->getEntity()->getSource() ? - $this->renderPostBody($object) : - $object->getUri(); - } - if (!$attribute->getMultiple()) { - if (count($results) == 1) { - return $results[0]; - } else { - return null; - } - } else { - return $results; - } - } - - /** - * When rendering a single attribute value for the post body of the api-call/promise to update an object in a source outside the gateway, - * and when the type of this attribute is object and cascading on this attribute is not allowed, - * only render/use the uri for all subresources of this attribute. - * - * @param Collection $objects - * @param Attribute $attribute - * - * @return array|mixed|string|null - * @deprecated - */ - public function getSubObjectIris(Collection $objects, Attribute $attribute) - { - $results = []; - foreach ($objects as $object) { - $results[] = - $object->getEntity()->getSource() == $attribute->getEntity()->getSource() ? - "/{$object->getEntity()->getEndpoint()}/{$object->getExternalId()}" : - $object->getUri(); - } - if (!$attribute->getMultiple()) { - if (count($results) == 1) { - return $results[0]; - } else { - return null; - } - } else { - return $results; - } - } - - /** - * Render a single attribute value for the post body of the api-call/promise to update an object in a source outside the gateway (before doing the api-call). - * - * @param Value $value - * @param Attribute $attribute - * - * @return File[]|Value[]|array|bool|Collection|float|int|mixed|string|void|null - * @deprecated - */ - public function renderValue(Value $value, Attribute $attribute) - { - $rendered = ''; - switch ($attribute->getType()) { - case 'object': - // We allow cascading on promises, but only if the gateway of the parent entity and subresource match. - if ($attribute->getCascade()) { - $rendered = $this->renderSubObjects($value->getObjects(), $attribute); - } else { - $rendered = $this->getSubObjectIris($value->getObjects(), $attribute); - } - break; - default: - $rendered = $value->getValue(); - } - - return $rendered; - } - - /** - * Render the post body, with all attributes to update/send with the api-call/promise to update an object in a source outside the gateway (before doing the api-call). - * - * @param ObjectEntity $objectEntity - * - * @return array - * @deprecated - */ - public function renderPostBody(ObjectEntity $objectEntity): array - { - $body = []; - foreach ($objectEntity->getEntity()->getAttributes() as $attribute) { - // todo: With this ===null check we can never set a value to null with a promise. - // todo: Maybe we should add a new bool to attribute that determines it shouldn't be added if value===null? - if (!$attribute->getPersistToGateway() || (!$attribute->getRequired() && $objectEntity->getValue($attribute) === null)) { - continue; - } - $body[$attribute->getName()] = $this->renderValue($objectEntity->getValueObject($attribute), $attribute); - } - - return $body; - } - - /** - * Encode body for the api-call/promise to update an object in a source outside the gateway, before doing the api-call. - * - * @param ObjectEntity $objectEntity - * @param array $body - * @param array $headers - * - * @throws Exception - * - * @return string - * @deprecated - */ - public function encodeBody(ObjectEntity $objectEntity, array $body, array &$headers): string - { - switch ($objectEntity->getEntity()->getSource()->getType()) { - case 'json': - $body = json_encode($body); - break; - case 'soap': - $xmlEncoder = new XmlEncoder(['xml_root_node_name' => 'S:Envelope']); - $body = $this->translationService->parse($xmlEncoder->encode($this->translationService->dotHydrator( - $objectEntity->getEntity()->getToSoap()->getRequest() ? $xmlEncoder->decode($objectEntity->getEntity()->getToSoap()->getRequest(), 'xml') : [], - $objectEntity->toArray(), - $objectEntity->getEntity()->getToSoap()->getRequestHydration() - ), 'xml', ['xml_encoding' => 'utf-8', 'remove_empty_tags' => true]), false); - $headers['Content-Type'] = 'application/xml;charset=UTF-8'; - break; - default: - throw new Exception('Encoding type not supported'); - } - - return $body; - } - - /** - * If there is special translation config for the api-calls/promises to update an object in a source outside the gateway, before doing the api-call. - * - * @param ObjectEntity $objectEntity - * @param string $method - * @param array $headers - * @param array $query - * @param string $url - * - * @return void - */ - public function getTranslationConfig(ObjectEntity $objectEntity, string &$method, array &$headers, array &$query, string &$url): void - { - $oldMethod = $method; - $config = $objectEntity->getEntity()->getTranslationConfig(); - if ($config && array_key_exists($method, $config)) { - !array_key_exists('method', $config[$oldMethod]) ?: $method = $config[$oldMethod]['method']; - !array_key_exists('headers', $config[$oldMethod]) ?: $headers = array_merge($headers, $config[$oldMethod]['headers']); - !array_key_exists('query', $config[$oldMethod]) ?: $headers = array_merge($query, $config[$oldMethod]['headers']); - !array_key_exists('endpoint', $config[$oldMethod]) ?: $url = $objectEntity->getEntity()->getSource()->getLocation().'/'.str_replace('{id}', $objectEntity->getExternalId(), $config[$oldMethod]['endpoint']); - } - } - - /** - * Decide what method and url to use for a promise to update an object in a source outside the gateway. - * - * @param ObjectEntity $objectEntity - * @param string $url - * @param string $method - * - * @return void - */ - public function decideMethodAndUrl(ObjectEntity $objectEntity, string &$url, string &$method): void - { - if ($method == 'POST' && $objectEntity->getUri() != $objectEntity->getEntity()->getSource()->getLocation().'/'.$objectEntity->getEntity()->getEndpoint().'/'.$objectEntity->getExternalId()) { - $url = $objectEntity->getEntity()->getSource()->getLocation().'/'.$objectEntity->getEntity()->getEndpoint(); - } elseif ($objectEntity->getUri()) { - $method = 'PUT'; - $url = $objectEntity->getUri(); - } elseif ($objectEntity->getExternalId()) { - $method = 'PUT'; - $url = $objectEntity->getEntity()->getSource()->getLocation().'/'.$objectEntity->getEntity()->getEndpoint().'/'.$objectEntity->getExternalId(); - } - } - - /** - * Makes sure if an ObjectEntity has any subresources these wil also result in promises to update those objects in a source outside the gateway. - * - * @param ObjectEntity $objectEntity - * - * @return void - */ - private function settleSubPromises(ObjectEntity $objectEntity): void - { - foreach ($objectEntity->getSubresources() as $sub) { - $promises = $sub->getPromises(); - } - - if (!empty($promises)) { - Utils::settle($promises)->wait(); - } - } - - /** - * Decodes the response of a successful promise to update an object in a source outside the gateway. - * - * @param $response - * @param ObjectEntity $objectEntity - * - * @throws Exception - * - * @return array - */ - private function decodeResponse($response, ObjectEntity $objectEntity): array - { - switch ($objectEntity->getEntity()->getSource()->getType()) { - case 'json': - $result = json_decode($response->getBody()->getContents(), true); - break; - case 'xml': - $xmlEncoder = new XmlEncoder(); - $result = $xmlEncoder->decode($response->getBody()->getContents(), 'xml'); - break; - case 'soap': - $xmlEncoder = new XmlEncoder(['xml_root_node_name' => 'soap:Envelope']); - $result = $response->getBody()->getContents(); - // $result = $this->translationService->parse($result); - $result = $xmlEncoder->decode($result, 'xml'); - $result = $this->translationService->dotHydrator([], $result, $objectEntity->getEntity()->getToSoap()->getResponseHydration()); - break; - default: - throw new Exception('Unsupported type'); - } - - return $result; - } - - /** - * Set externalId of an ObjectEntity after a successful promise to update an object in a source outside the gateway. - * - * @param ObjectEntity $objectEntity - * @param array $result - * @param string $url - * @param string $method - * - * @return ObjectEntity - */ - private function setExternalId(ObjectEntity $objectEntity, array $result, string $url, string $method): ObjectEntity - { - if (array_key_exists('id', $result) && !strpos($url, $result['id'])) { - $objectEntity->setUri($url.'/'.$result['id']); - $objectEntity->setExternalId($result['id']); - } else { - $objectEntity->setUri($url); - $objectEntity->setExternalId($this->commonGroundService->getUuidFromUrl($url)); - } - -// var_dump('GetUri: '.$objectEntity->getUri()); - - // Handle Function todo: what if @organization is used in the post body? than we shouldn't handle function organization here: - return $this->functionService->handleFunction($objectEntity, $objectEntity->getEntity()->getFunction(), [ - 'method' => $method, - 'uri' => $objectEntity->getUri(), - ]); - } - - /** - * Set externalResult of an ObjectEntity after a successful promise to update an object in a source outside the gateway. - * - * @param ObjectEntity $objectEntity - * @param array $result - * - * @return ObjectEntity - */ - private function setExternalResult(ObjectEntity $objectEntity, array $result): ObjectEntity - { - if (!is_null($objectEntity->getEntity()->getAvailableProperties())) { - $availableProperties = $objectEntity->getEntity()->getAvailableProperties(); - $result = array_filter($result, function ($key) use ($availableProperties) { - return in_array($key, $availableProperties); - }, ARRAY_FILTER_USE_KEY); - } - - return $objectEntity->setExternalResult($result); - } - - /** - * Handle successful/ok response of a promise to update an object in a source outside the gateway. - * Includes updating the Gateway ObjectEntity, Gateway Cache and sending an async notification. - * - * @param $response - * @param ObjectEntity $objectEntity - * @param string $url - * @param string $method - * - * @throws InvalidArgumentException - * - * @return ObjectEntity - */ - private function onFulfilled($response, ObjectEntity $objectEntity, string $url, string $method) - { - $result = $this->decodeResponse($response, $objectEntity); - $objectEntity = $this->setExternalId($objectEntity, $result, $url, $method); - - // Lets reset cache - $this->functionService->removeResultFromCache($objectEntity); -// $this->responseService->renderResult($objectEntity, null); // pre-load/re-load cache - - // Create Notification -// var_dump('NOTIFICATION: '.$objectEntity->getEntity()->getName().' - '.$objectEntity->getId()->toString().' - '.$objectEntity->getExternalId().' - '.$method); - $this->notifications[] = ['id' => $objectEntity->getId(), 'method' => $method]; - - // log -// $responseLog = new Response(json_encode($result), 201, []); -// $this->logService->saveLog($this->logService->makeRequest(), $responseLog, 13, json_encode($result), null, 'out'); - - return $this->setExternalResult($objectEntity, $result); - } - - /** - * Handle error response of a promise to update an object in a source outside the gateway. - * - * @param $error - * @param ObjectEntity $objectEntity - * - * @return void - */ - private function onError($error, ObjectEntity $objectEntity) - { - /* @todo lelijke code */ - if ($error->getResponse()) { - $errorBody = json_decode((string) $error->getResponse()->getBody(), true); - if ($errorBody && array_key_exists('message', $errorBody)) { - $error_message = $errorBody['message']; - } elseif ($errorBody && array_key_exists('hydra:description', $errorBody)) { - $error_message = $errorBody['hydra:description']; - } else { - $error_message = (string) $error->getResponse()->getBody(); - } - } else { - $error_message = $error->getMessage(); - } -// var_dump($error_message); - -// // log -// if ($error->getResponse() instanceof Response) { -// $responseLog = $error->getResponse(); -// } else { -// $responseLog = new Response($error_message, $error->getResponse()->getStatusCode(), []); -// } -// $log = $this->logService->saveLog($this->logService->makeRequest(), $responseLog, 14, $error_message, null, 'out'); - /* @todo eigenlijk willen we links naar error reports al losse property mee geven op de json error message */ - $objectEntity->addError('gateway endpoint on '.$objectEntity->getEntity()->getName().' said', $error_message.'. (see /admin/logs/'./*$log->getId().*/ ') for a full error report'); - } - - /** - * Creates a promise to update an object in a source outside the gateway. - * - * @param ObjectEntity $objectEntity - * @param string $method - * - * @throws Exception - * - * @return PromiseInterface - */ - public function createPromise(ObjectEntity $objectEntity, string &$method): PromiseInterface - { - $component = $this->gatewayService->sourceToArray($objectEntity->getEntity()->getSource()); - $query = []; - $headers = []; - $url = ''; - $this->decideMethodAndUrl($objectEntity, $url, $method); - - $this->settleSubPromises($objectEntity); - - $body = $this->renderPostBody($objectEntity); - $body = $this->encodeBody($objectEntity, $body, $headers); - $this->getTranslationConfig($objectEntity, $method, $headers, $query, $url); - -// // log -// $this->logService->saveLog($this->logService->makeRequest(), null, 12, $body, null, 'out'); - -// var_dump('CallServiceUrl: '.$url); -// var_dump($body); - - return $this->commonGroundService->callService($component, $url, $body, $query, $headers, true, $method)->then( - function ($response) use ($objectEntity, $url, $method) { -// var_dump('succes'); - $this->onFulfilled($response, $objectEntity, $url, $method); - }, - function ($error) use ($objectEntity) { -// var_dump('error'); - $this->onError($error, $objectEntity); - } - ); - } - - /** - * Implodes a multidimensional array to a string. - * - * @param array $array - * @param string $separator - * @param string $keyValueSeparator - * - * @return string - * @deprecated - */ - public function implodeMultiArray(array $array, string $separator = ', ', string $keyValueSeparator = '='): string - { - $str = ''; - - foreach ($array as $key => $value) { - $currentSeparator = $separator; - if ($key === array_key_first($array)) { - $currentSeparator = ''; - } - if (is_array($value)) { - $str .= "$currentSeparator\"$key\"{$keyValueSeparator}[{$this->implodeMultiArray($value, $separator, $keyValueSeparator)}]"; - } else { - $str .= "$currentSeparator\"$key\"$keyValueSeparator\"$value\""; - } - } - - return $str; - } } diff --git a/api/src/Service/ResponseService.php b/api/src/Service/ResponseService.php deleted file mode 100644 index c088b6d51..000000000 --- a/api/src/Service/ResponseService.php +++ /dev/null @@ -1,849 +0,0 @@ - - * - * @license EUPL - * - * @category Service - * @deprecated - */ -class ResponseService -{ - private EntityManagerInterface $em; - private CommonGroundService $commonGroundService; - private AuthorizationService $authorizationService; - private SessionInterface $session; - private Security $security; - private CacheInterface $cache; - // todo: maybe start using one or more array properties to save data in, so we don't have to pass down all this... - // todo: ...data in RenderResult (and other function after that, untill we come back to RenderResult again, because of 'recursion') - // todo: other examples we could use this for when we cleanup this service: $fields, $extend, $acceptType, $skipAuthCheck - // todo: use this as example (checking for $level when setting this data only once is very important): - public array $xCommongatewayMetadata; - - public function __construct(EntityManagerInterface $em, CommonGroundService $commonGroundService, AuthorizationService $authorizationService, SessionInterface $session, Security $security, CacheInterface $cache) - { - $this->em = $em; - $this->commonGroundService = $commonGroundService; - $this->authorizationService = $authorizationService; - $this->session = $session; - $this->security = $security; - $this->cache = $cache; - } - - // todo remove responseService from the ObjectEntityService, so we can use the ObjectEntityService->createSelf() function here - /** - * Returns the string used for {at sign}id or self->href for the given objectEntity. This function will use the ObjectEntity->Entity - * to first look for the get item endpoint and else use the Entity route or name to generate the correct string. - * - * @param ObjectEntity $objectEntity - * - * @return string - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - public function createSelf(ObjectEntity $objectEntity): string - { - // We need to persist if this is a new ObjectEntity in order to set and getId to generate the self... - $this->em->persist($objectEntity); - $endpoints = $this->em->getRepository('App:Endpoint')->findGetItemByEntity($objectEntity->getEntity()); - if (count($endpoints) > 0 && $endpoints[0] instanceof Endpoint) { - $pathArray = $endpoints[0]->getPath(); - $foundId = in_array('{id}', $pathArray) ? $pathArray[array_search('{id}', $pathArray)] = $objectEntity->getId() : - (in_array('{uuid}', $pathArray) ? $pathArray[array_search('{uuid}', $pathArray)] = $objectEntity->getId() : false); - if ($foundId !== false) { - $path = implode('/', $pathArray); - - return '/api/'.$path; - } - } - - return '/api'.($objectEntity->getEntity()->getRoute() ?? $objectEntity->getEntity()->getName()).'/'.$objectEntity->getId(); - } - - /** - * Get the last date read for the given ObjectEntity, for the current user. (uses sql to search in logs). - * - * @param ObjectEntity $objectEntity - * - * @return DateTimeInterface|null - * @deprecated moved this function to CoreBundle->ReadUnreadService->getDateRead() - */ - private function getDateRead(ObjectEntity $objectEntity): ?DateTimeInterface - { - $user = $this->security->getUser(); - if ($user === null) { - return null; - } - - // First, check if there is an Unread object for this Object+User. If so, return null. - $unreads = $this->em->getRepository('App:Unread')->findBy(['object' => $objectEntity, 'userId' => $user->getUserIdentifier()]); - if (!empty($unreads)) { - return null; - } - - // Use sql to find last get item log of the current user for the given object. - $logs = $this->em->getRepository('App:Log')->findDateRead($objectEntity->getId()->toString(), $user->getUserIdentifier()); - - if (!empty($logs) and $logs[0] instanceof Log) { - return $logs[0]->getDateCreated(); - } - - return null; - } - - /** - * Filters fields that should not be displayed. - * - * @param array $response The full response - * @param ObjectEntity $result The objectEntity that contains the results - * @param bool $skipAuthCheck Whether the authorization should be checked - * - * @return array The resulting response - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - public function filterResult(array $response, ObjectEntity $result, bool $skipAuthCheck): array - { - return array_filter($response, function ($value, $key) use ($result) { - if (str_starts_with($key, '@') || $key == 'id') { - return true; - } - $attribute = $this->em->getRepository('App:Attribute')->findOneBy(['name' => $key, 'entity' => $result->getEntity()]); - // todo: this breaks SynchronizationService -// if (!$skipAuthCheck && !empty($attribute)) { -// try { -// if (!$this->checkOwner($result)) { -// $this->authorizationService->checkAuthorization(['attribute' => $attribute, 'value' => $value]); -// } -// } catch (AccessDeniedException $exception) { -// return false; -// } -// } - - return true; - }, ARRAY_FILTER_USE_BOTH); - } - - /** - * Renders the result for a ObjectEntity that will be used for the response after a successful api call. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param string $acceptType - * @param bool $skipAuthCheck - * @param bool $flat todo: $flat and $acceptType = 'json' should have the same result, so remove $flat? - * @param int $level - * - * @throws CacheException|InvalidArgumentException - * - * @return array|string[]|string Only returns a string if $level is higher than 3 and acceptType is not jsonld. - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - public function renderResult(ObjectEntity $result, ?array $fields, ?array $extend, string $acceptType = 'json', bool $skipAuthCheck = false, bool $flat = false, int $level = 0) - { - $response = []; - if ($level === 0) { - $this->xCommongatewayMetadata = []; - if (is_array($extend) && array_key_exists('x-commongateway-metadata', $extend)) { - $this->xCommongatewayMetadata = $extend['x-commongateway-metadata']; - unset($extend['x-commongateway-metadata']); - if (empty($extend)) { - $extend = null; - } - } - } - - if ( - $result->getEntity()->getSource() !== null && - ($result->getEntity()->getSource()->getType() == 'soap' || - $result->getEntity()->getSource()->getType() == 'xml' || - $result->getEntity()->getSource()->getAuth() == 'vrijbrp-jwt') - ) { - return $response; - } - - $user = $this->security->getUser(); - $userId = $user !== null ? $user->getUserIdentifier() : 'anonymous'; - $item = $this->cache->getItem( - 'object_' - .base64_encode( - $result->getId() - .'userId_'.$userId - .'acceptType_'.$acceptType - .'level_'.$level - .'fields_'.http_build_query($fields ?? [], '', ',') - .'extend_'.http_build_query($extend ?? [], '', ',') - .'xCommongatewayMetadata_'.http_build_query($this->xCommongatewayMetadata ?? [], '', ',') - ) - ); - // Todo: what to do with dateRead and caching... this works for now: - if ($item->isHit() && !isset($this->xCommongatewayMetadata['dateRead']) && !isset($this->xCommongatewayMetadata['all'])) { -// var_dump('FromCache: '.$result->getId().'userId_'.$userId.'acceptType_'.$acceptType.'level_'.$level.'fields_'.http_build_query($fields ?? [], '', ',').'extend_'.http_build_query($extend ?? [], '', ',').'xCommongatewayMetadata_'.http_build_query($this->xCommongatewayMetadata ?? [], '', ',')); - return $this->filterResult($item->get(), $result, $skipAuthCheck); - } - $item->tag('object_'.base64_encode($result->getId()->toString())); - $item->tag('object_userId_'.base64_encode($userId)); - - // Make sure to break infinite render loops! ('New' MaxDepth) - if ($level > 3) { - if ($acceptType === 'jsonld') { - return [ - '@id' => $result->getSelf() ?? '/api'.($result->getEntity()->getRoute() ?? $result->getEntity()->getName()).'/'.$result->getId(), - ]; - } - - return $result->getSelf() ?? '/api'.($result->getEntity()->getRoute() ?? $result->getEntity()->getName()).'/'.$result->getId(); - } - - // todo: do we still want to do this if we have BL for syncing objects? - // Lets start with the external result - if ($result->getEntity()->getSource() && $result->getEntity()->getEndpoint()) { - if (!empty($result->getExternalResult())) { - $response = array_merge($response, $result->getExternalResult()); - } elseif (!$result->getExternalResult() === [] && $this->commonGroundService->isResource($result->getExternalResult())) { - $response = array_merge($response, $this->commonGroundService->getResource($result->getExternalResult())); - } elseif ($this->commonGroundService->isResource($result->getUri())) { - $response = array_merge($response, $this->commonGroundService->getResource($result->getUri())); - } - - // Only render the attributes that are available for this Entity (filters out unwanted properties from external results) - if (!is_null($result->getEntity()->getAvailableProperties() || !empty($fields))) { - $response = array_filter($response, function ($propertyName) use ($result, $fields) { - $attTypeObject = false; - if ($attribute = $result->getAttributeObject($propertyName)) { - $attTypeObject = $attribute->getType() === 'object'; - } - - return - (empty($fields) || array_key_exists($propertyName, $fields)) && - (!$attTypeObject || $attribute->getExtend() || (!empty($extend) && (array_key_exists('all', $extend) || array_key_exists($propertyName, $extend)))) && - (empty($result->getEntity()->getAvailableProperties()) || in_array($propertyName, $result->getEntity()->getAvailableProperties())); - }, ARRAY_FILTER_USE_KEY); - } - } - - // Let overwrite the id with the gateway id - $response['id'] = $result->getId()->toString(); // todo: remove this line of code if $flat is removed - - // Let get the internal results - $renderValues = $this->renderValues($result, $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - $response = array_merge($response, $renderValues['renderValuesResponse']); - - // Lets sort the result alphabeticly - ksort($response); - - // Lets skip the pritty styff when dealing with a flat object - // todo: $flat and $acceptType = 'json' should have the same result, so remove $flat? - if ($flat) { - $item->set($response); - $this->cache->save($item); - - return $response; - } - - $response = $this->handleAcceptType($result, $fields, $extend, $acceptType, $level, $response, $renderValues['renderValuesEmbedded']); - - // Todo: what to do with dateRead and caching... this works for now: - if (!isset($this->xCommongatewayMetadata['dateRead']) && !isset($this->xCommongatewayMetadata['all'])) { - $item->set($response); - $this->cache->save($item); - } - - return $response; - } - - /** - * Returns a response array for renderResult function. This response is different depending on the acceptType. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param string $acceptType - * @param int $level - * @param array $response - * @param array $embedded - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function handleAcceptType(ObjectEntity $result, ?array $fields, ?array $extend, string $acceptType, int $level, array $response, array $embedded): array - { - $gatewayContext = []; - switch ($acceptType) { - case 'jsonld': - $jsonLd = $this->handleJsonLd($result, $fields, $extend, $level, $response, $embedded); - $gatewayContext = $jsonLd['gatewayContext']; - $embedded = $jsonLd['embedded']; - break; - case 'jsonhal': - $jsonHal = $this->handleJsonHal($result, $fields, $extend, $level, $response, $embedded); - $gatewayContext = $jsonHal['gatewayContext']; - $embedded = $jsonHal['embedded']; - break; - case 'json': - default: - if ($this->xCommongatewayMetadata !== []) { - $gatewayContext['x-commongateway-metadata'] = $this->handleXCommongatewayMetadata($result, $fields, $extend, $level, $response); - } - if (!empty($embedded)) { - $embedded['embedded'] = $embedded; - } - break; - } - - $gatewayContext['id'] = $result->getId(); - - return $gatewayContext + $response + $embedded; - } - - /** - * Returns a response array for renderResult function. This response conforms to the acceptType jsonLd. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param int $level - * @param array $response - * @param array $embedded - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function handleJsonLd(ObjectEntity $result, ?array $fields, ?array $extend, int $level, array $response, array $embedded): array - { - $gatewayContext['@id'] = $result->getSelf() ?? '/api'.($result->getEntity()->getRoute() ?? $result->getEntity()->getName()).'/'.$result->getId(); - $gatewayContext['@type'] = ucfirst($result->getEntity()->getName()); - $gatewayContext['@context'] = '/contexts/'.ucfirst($result->getEntity()->getName()); - $gatewayContext['@dateCreated'] = $result->getDateCreated(); - $gatewayContext['@dateModified'] = $result->getDateModified(); - if ($level === 0) { - $this->addToMetadata($gatewayContext, 'dateRead', $result, '@dateRead'); - } - $gatewayContext['@owner'] = $result->getOwner(); - $gatewayContext['@organization'] = $result->getOrganization(); - $gatewayContext['@application'] = $result->getApplication() !== null ? $result->getApplication()->getId() : null; - $gatewayContext['@uri'] = $result->getUri(); - $gatewayContext['@gateway/id'] = $result->getExternalId() ?? (array_key_exists('id', $response) ? $response['id'] : null); - if (array_key_exists('@type', $response)) { - $gatewayContext['@gateway/type'] = $response['@type']; - } - if (array_key_exists('@context', $response)) { - $gatewayContext['@gateway/context'] = $response['@context']; - } - $gatewayContext['@synchronizations'] = $result->getReadableSyncDataArray(); - if (is_array($extend)) { - $gatewayContext['@extend'] = $extend; - } - if (is_array($fields)) { - $gatewayContext['@fields'] = $fields; - } - $gatewayContext['@level'] = $level; - if (!empty($embedded)) { - $embedded['@embedded'] = $embedded; - } - - return [ - 'gatewayContext' => $gatewayContext, - 'embedded' => $embedded, - ]; - } - - /** - * Returns a response array for renderResult function. This response conforms to the acceptType jsonHal. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param int $level - * @param array $response - * @param array $embedded - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function handleJsonHal(ObjectEntity $result, ?array $fields, ?array $extend, int $level, array $response, array $embedded): array - { - $gatewayContext['_links']['self']['href'] = $result->getSelf() ?? '/api'.($result->getEntity()->getRoute() ?? $result->getEntity()->getName()).'/'.$result->getId(); - $gatewayContext['_metadata'] = [ - '_type' => ucfirst($result->getEntity()->getName()), - '_context' => '/contexts/'.ucfirst($result->getEntity()->getName()), - '_dateCreated' => $result->getDateCreated(), - '_dateModified' => $result->getDateModified(), - ]; - if ($level === 0) { - $this->addToMetadata($gatewayContext['_metadata'], 'dateRead', $result, '_dateRead'); - } - $gatewayContext['_metadata'] = array_merge($gatewayContext['_metadata'], [ - '_owner' => $result->getOwner(), - '_organization' => $result->getOrganization(), - '_application' => $result->getApplication() !== null ? $result->getApplication()->getId() : null, - '_uri' => $result->getUri(), - '_gateway/id' => $result->getExternalId() ?? (array_key_exists('id', $response) ? $response['id'] : null), - ]); - if (array_key_exists('@type', $response)) { - $gatewayContext['_metadata']['_gateway/type'] = $response['@type']; - } - if (array_key_exists('@context', $response)) { - $gatewayContext['_metadata']['_gateway/context'] = $response['@context']; - } - $gatewayContext['_metadata']['_synchronizations'] = $result->getReadableSyncDataArray(); - if (is_array($extend)) { - $gatewayContext['_metadata']['_extend'] = $extend; - } - if (is_array($fields)) { - $gatewayContext['_metadata']['_fields'] = $fields; - } - $gatewayContext['_metadata']['_level'] = $level; - if (!empty($embedded)) { - $embedded['_embedded'] = $embedded; - } - - return [ - 'gatewayContext' => $gatewayContext, - 'embedded' => $embedded, - ]; - } - - /** - * Returns a response array for renderResult function. - * This function is called and used to show metadata for AcceptTypes json or 'default' when the extend query param contains x-commongateway-metadata. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param int $level - * @param array $response - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function handleXCommongatewayMetadata(ObjectEntity $result, ?array $fields, ?array $extend, int $level, array $response): array - { - $metadata = []; - $this->addToMetadata( - $metadata, - 'self', - $result->getSelf() ?? $result->setSelf($this->createSelf($result))->getSelf() - ); - $this->addToMetadata($metadata, 'type', ucfirst($result->getEntity()->getName())); - $this->addToMetadata($metadata, 'context', '/contexts/'.ucfirst($result->getEntity()->getName())); - $this->addToMetadata($metadata, 'dateCreated', $result->getDateCreated()); - $this->addToMetadata($metadata, 'dateModified', $result->getDateModified()); - if ($level === 0) { - $this->addToMetadata($metadata, 'dateRead', $result); - } - $this->addToMetadata($metadata, 'owner', $result->getOwner()); - $this->addToMetadata($metadata, 'organization', $result->getOrganization()); - $this->addToMetadata( - $metadata, - 'application', - $result->getApplication() !== null ? $result->getApplication()->getId() : null - ); - $this->addToMetadata($metadata, 'uri', $result->getUri()); - $this->addToMetadata( - $metadata, - 'gateway/id', - $result->getExternalId() ?? (array_key_exists('id', $response) ? $response['id'] : null) - ); - if (array_key_exists('@type', $response)) { - $this->addToMetadata($metadata, 'gateway/type', $response['@type']); - } - if (array_key_exists('@context', $response)) { - $this->addToMetadata($metadata, 'gateway/context', $response['@context']); - } - $this->addToMetadata($metadata, 'synchronizations', $result->getReadableSyncDataArray()); - if (is_array($extend)) { - $this->addToMetadata($metadata, 'extend', $extend); - } - if (is_array($fields)) { - $this->addToMetadata($metadata, 'fields', $fields); - } - $this->addToMetadata($metadata, 'level', $level); - - return $metadata; - } - - /** - * Adds a key and value to the given $metadata array. But only if all or the $key is present in $this->xCommongatewayMetadata. - * If $key contains dateRead this will also trigger some specific BL we only want to do if specifically asked for. - * - * @param array $metadata - * @param string $key - * @param $value - * @param string|null $overwriteKey Default = null, if a string is given this will be used instead of $key, for the key to add to the $metadata array. - * - * @return void - * @deprecated moved this function for dateRead only to CoreBundle->ReadUnreadService->addDateRead() - */ - public function addToMetadata(array &$metadata, string $key, $value, ?string $overwriteKey = null) - { - if (array_key_exists('all', $this->xCommongatewayMetadata) || array_key_exists($key, $this->xCommongatewayMetadata)) { - // Make sure we only do getDateRead function when it is present in $this->xCommongatewayMetadata - if ($key === 'dateRead') { - // If the api-call is an getItem call show NOW instead! - $value = isset($this->xCommongatewayMetadata['dateRead']) && $this->xCommongatewayMetadata['dateRead'] === 'getItem' - ? new DateTime() : $this->getDateRead($value); - $value = $value == null ? $value : $value->format('c'); - } - $metadata[$overwriteKey ?? $key] = $value; - } - } - - /** - * Renders the values of an ObjectEntity for the renderResult function. - * - * @param ObjectEntity $result - * @param array|null $fields - * @param array|null $extend - * @param string $acceptType - * @param bool $skipAuthCheck - * @param bool $flat - * @param int $level - * - * @throws CacheException|InvalidArgumentException - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderValues(ObjectEntity $result, ?array $fields, ?array $extend, string $acceptType, bool $skipAuthCheck = false, bool $flat = false, int $level = 0): array - { - $response = []; - $embedded = []; - - // Lets keep track of how deep in the tree we are - $level++; - - $entity = $result->getEntity(); - foreach ($entity->getAttributes() as $attribute) { - // Only render the attributes that are used && don't render attributes that are writeOnly - if ((!is_null($entity->getUsedProperties()) && !in_array($attribute->getName(), $entity->getUsedProperties())) - || $attribute->getWriteOnly() - ) { - continue; - } - - // Lets deal with fields filtering - if (is_array($fields) and !array_key_exists($attribute->getName(), $fields)) { - continue; - } - - // Check if user is allowed to see this - // todo: this breaks SynchronizationService -// try { -// if (!$skipAuthCheck && !$this->checkOwner($result)) { -// $this->authorizationService->checkAuthorization(['attribute' => $attribute, 'object' => $result]); -// } -// } catch (AccessDeniedException $exception) { -// continue; -// } - - $valueObject = $result->getValueObject($attribute); - if ($attribute->getType() == 'object') { - // Lets deal with extending - if (!$this->checkExtendAttribute($response, $attribute, $valueObject, $extend, $acceptType)) { - continue; - } - - // Let's deal with subFields filtering - $subFields = null; - if (is_array($fields) && array_key_exists($attribute->getName(), $fields)) { - if (is_array($fields[$attribute->getName()])) { - $subFields = $fields[$attribute->getName()]; - } elseif ($fields[$attribute->getName()] == false) { - continue; - } - } - - // Let's deal with subExtend extending - $subExtend = is_array($extend) ? $this->attributeSubExtend($extend, $attribute) : null; - - $renderObjects = $this->renderObjects($result, $embedded, $valueObject, $subFields, $subExtend, $acceptType, $skipAuthCheck, $flat, $level); - $response[$attribute->getName()] = is_array($renderObjects) && array_key_exists('renderObjectsObjectsArray', $renderObjects) ? $renderObjects['renderObjectsObjectsArray'] : $renderObjects; - if (is_array($renderObjects) && array_key_exists('renderObjectsEmbedded', $renderObjects)) { - $embedded = $renderObjects['renderObjectsEmbedded']; - } - - continue; - } elseif ($attribute->getType() == 'file') { - $response[$attribute->getName()] = $this->renderFiles($valueObject); - continue; - } - $response[$attribute->getName()] = $valueObject->getValue(); - } - - return [ - 'renderValuesResponse' => $response, - 'renderValuesEmbedded' => isset($renderObjects) && is_array($renderObjects) && array_key_exists('renderObjectsEmbedded', $renderObjects) ? $renderObjects['renderObjectsEmbedded'] : [], - ]; - } - - /** - * Checks if a given attribute should be extended. Will return true if it should be extended and false if not. - * Will also add a reference to an object to the response if the attribute should not be extended. Or null if there is no value. - * - * @param array $response The response array we will be adding object references to, if needed. - * @param Attribute $attribute The attribute we are checking if it needs extending. - * @param Value $valueObject The value(Object) of the objectEntity for the attribute we are rendering. - * @param array|null $extend The extend array used in the api-call. - * @param string $acceptType The acceptType used in the api-call. - * - * @return bool Will return true if the attribute should be extended and false if not. - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function checkExtendAttribute(array &$response, Attribute $attribute, Value $valueObject, ?array $extend, string $acceptType): bool - { - if ($attribute->getExtend() !== true && - (!is_array($extend) || (!array_key_exists('all', $extend) && !array_key_exists($attribute->getName(), $extend))) - ) { - $attribute->getMultiple() ? - $this->renderObjectReferences($response, $attribute, $valueObject, $acceptType) : - $this->renderObjectReference($response, $attribute, $valueObject, $acceptType); - - return false; - } - - return true; - } - - /** - * For a multiple=false attribute, add a reference to a single object to the response if that attribute should not be extended. - * Or adds null instead if there is no value at all. - * - * @param array $response The response array we will be adding an object references (or null) to. - * @param Attribute $attribute The attribute that does not need to be extended for the current result we are rendering. - * @param Value $valueObject The value(Object) of the objectEntity for the attribute we are rendering. - * @param string $acceptType The acceptType used in the api-call. - * - * @return void - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderObjectReference(array &$response, Attribute $attribute, Value $valueObject, string $acceptType) - { - $object = $valueObject->getValue(); - if (!$object instanceof ObjectEntity) { - $response[$attribute->getName()] = null; - - return; - } - $response[$attribute->getName()] = $this->renderObjectSelf($object, $acceptType); - } - - /** - * For a multiple=true attribute, add one or more references to one or more objects to the response if that attribute should not be extended. - * Or adds null instead if there is no value at all. - * - * @param array $response The response array we will be adding one or more object references (or null) to. - * @param Attribute $attribute The attribute that does not need to be extended for the current result we are rendering. - * @param Value $valueObject The value(Object) of the objectEntity for the attribute we are rendering. - * @param string $acceptType The acceptType used in the api-call. - * - * @return void - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderObjectReferences(array &$response, Attribute $attribute, Value $valueObject, string $acceptType) - { - $objects = $valueObject->getValue(); - if (!is_countable($objects)) { - $response[$attribute->getName()] = []; - - return; - } - foreach ($objects as $object) { - $response[$attribute->getName()][] = $this->renderObjectSelf($object, $acceptType); - } - } - - /** - * Renders the 'self' of a given object, result will differ depending on the acceptType. - * - * @param ObjectEntity $object The object to render 'self' for. - * @param string $acceptType The acceptType that will influence the way this 'self' is rendered. - * - * @return string|string[] The 'self' string or array with this string in it, depending on acceptType. - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderObjectSelf(ObjectEntity $object, string $acceptType) - { - $objectSelf = $object->getSelf() ?? '/api'.($object->getEntity()->getRoute() ?? $object->getEntity()->getName()).'/'.$object->getId(); - // todo: if we add more different acceptTypes to this list, use a switch: - if ($acceptType === 'jsonld') { - return ['@id' => $objectSelf]; - } - - return $objectSelf; - } - - /** - * Checks if a given attribute is present in the extend array and the value/object for this attribute should be extended. - * This function will decide how the subExtend array for this attribute should look like. - * - * @param array $extend The extend array used in the api-call. - * @param Attribute $attribute The attribute we are checking if it needs extending. - * - * @return array|null Will return the subExtend array for rendering the subresources if they should be extended. Will return empty array if attribute should not be extended. - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function attributeSubExtend(array $extend, Attribute $attribute): ?array - { - if (array_key_exists('all', $extend)) { - return $extend; - } elseif (array_key_exists($attribute->getName(), $extend) && is_array($extend[$attribute->getName()])) { - return $extend[$attribute->getName()]; - } - - return null; - } - - /** - * Renders the objects of a value with attribute type 'object' for the renderValues function. If attribute is extended. - * - * @param ObjectEntity $result - * @param array $embedded - * @param Value $value - * @param array|null $fields - * @param array|null $extend - * @param string $acceptType - * @param bool $skipAuthCheck - * @param bool $flat - * @param int $level - * - * @throws CacheException - * @throws InvalidArgumentException - * - * @return string|array|null - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderObjects(ObjectEntity $result, array $embedded, Value $value, ?array $fields, ?array $extend, string $acceptType, bool $skipAuthCheck = false, bool $flat = false, int $level = 0) - { - $attribute = $value->getAttribute(); - - if ($value->getValue() == null) { - return [ - 'renderObjectsObjectsArray' => $attribute->getMultiple() ? [] : null, - 'renderObjectsEmbedded' => $embedded, - ]; - } - - // If we have only one Object (because multiple = false) - if (!$attribute->getMultiple()) { - try { - // todo: this breaks SynchronizationService -// // if you have permission to see the entire parent object, you are allowed to see it's attributes, but you might not have permission to see that property if it is an object -// if (!$skipAuthCheck && !$this->checkOwner($result)) { -// $this->authorizationService->checkAuthorization(['entity' => $attribute->getObject(), 'object' => $value->getValue()]); -// } - - if ($attribute->getInclude()) { - return $this->renderResult($value->getValue(), $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - } else { - $embedded[$attribute->getName()] = $this->renderResult($value->getValue(), $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - } - - $object = $value->getValue(); - - return [ - 'renderObjectsObjectsArray' => $this->renderObjectSelf($object, $acceptType), - 'renderObjectsEmbedded' => $embedded, - ]; - } catch (AccessDeniedException $exception) { - return null; - } - } - - // If we can have multiple Objects (because multiple = true) - $objects = $value->getValue(); - $objectsArray = []; - foreach ($objects as $object) { - try { - // todo: this breaks SynchronizationService -// // if you have permission to see the entire parent object, you are allowed to see it's attributes, but you might not have permission to see that property if it is an object -// if (!$skipAuthCheck && !$this->checkOwner($result)) { -// $this->authorizationService->checkAuthorization(['entity' => $attribute->getObject(), 'object' => $object]); -// } - if ($attribute->getInclude()) { - $objectsArray[] = $this->renderResult($object, $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - continue; - } else { - $embedded[$attribute->getName()][] = $this->renderResult($object, $fields, $extend, $acceptType, $skipAuthCheck, $flat, $level); - } - - $objectsArray[] = $this->renderObjectSelf($object, $acceptType); - } catch (AccessDeniedException $exception) { - continue; - } - } - - return [ - 'renderObjectsObjectsArray' => $objectsArray, - 'renderObjectsEmbedded' => $embedded, - ]; - } - - /** - * Renders the files of a value with attribute type 'file' for the renderValues function. - * - * @param Value $value - * - * @return array|null - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderFiles(Value $value): ?array - { - $attribute = $value->getAttribute(); - - if ($value->getValue() == null) { - return null; - } - if (!$attribute->getMultiple()) { - return $this->renderFileResult($value->getValue()); - } - $files = $value->getValue(); - $filesArray = []; - foreach ($files as $file) { - $filesArray[] = $this->renderFileResult($file); - } - - return $filesArray; - } - - /** - * Renders the result for a File that will be used (in renderFiles) for the response after a successful api call. - * - * @param File $file - * - * @return array - * @deprecated Make sure we do not lose any BL used here, we are just currently not using this function for rendering the result! - */ - private function renderFileResult(File $file): array - { - return [ - 'id' => $file->getId()->toString(), - 'name' => $file->getName(), - 'extension' => $file->getExtension(), - 'mimeType' => $file->getMimeType(), - 'size' => $file->getSize(), - 'base64' => $file->getBase64(), - ]; - } -} diff --git a/api/src/Service/SynchronizationService.php b/api/src/Service/SynchronizationService.php index cd48120b9..32d973444 100644 --- a/api/src/Service/SynchronizationService.php +++ b/api/src/Service/SynchronizationService.php @@ -76,7 +76,6 @@ class SynchronizationService * @param LogService $logService * @param MessageBusInterface $messageBus * @param TranslationService $translationService - * @param ObjectEntityService $objectEntityService * @param EavService $eavService * @param Environment $twig * @param EventDispatcherInterface $eventDispatcher @@ -92,7 +91,6 @@ public function __construct( LogService $logService, MessageBusInterface $messageBus, TranslationService $translationService, - ObjectEntityService $objectEntityService, EavService $eavService, Environment $twig, EventDispatcherInterface $eventDispatcher, @@ -107,8 +105,6 @@ public function __construct( $this->logService = $logService; $this->messageBus = $messageBus; $this->translationService = $translationService; - $this->objectEntityService = $objectEntityService; - $this->objectEntityService->addServices($eavService); $this->eavService = $eavService; $this->configuration = []; $this->data = []; @@ -156,6 +152,34 @@ public function synchronizationItemHandler(array $data, array $configuration): a return $data; } + /** + * Implodes a multidimensional array to a string. + * + * @param array $array + * @param string $separator + * @param string $keyValueSeparator + * + * @return string + */ + public function implodeMultiArray(array $array, string $separator = ', ', string $keyValueSeparator = '='): string + { + $str = ''; + + foreach ($array as $key => $value) { + $currentSeparator = $separator; + if ($key === array_key_first($array)) { + $currentSeparator = ''; + } + if (is_array($value)) { + $str .= "$currentSeparator\"$key\"{$keyValueSeparator}[{$this->implodeMultiArray($value, $separator, $keyValueSeparator)}]"; + } else { + $str .= "$currentSeparator\"$key\"$keyValueSeparator\"$value\""; + } + } + + return $str; + } + /** * Synchronises objects in the gateway to a source. * @@ -543,8 +567,8 @@ private function getObjectsFromSource(Source $source): array new TableSeparator(), ['Source' => "Source \"{$source->getName()}\" ({$source->getId()->toString()})"], ['Endpoint' => $callServiceConfig['endpoint']], - ['Query' => is_array($callServiceConfig['query']) ? "[{$this->objectEntityService->implodeMultiArray($callServiceConfig['query'])}]" : $callServiceConfig['query']], - ['Headers' => is_array($callServiceConfig['headers']) ? "[{$this->objectEntityService->implodeMultiArray($callServiceConfig['headers'])}]" : $callServiceConfig['headers']], + ['Query' => is_array($callServiceConfig['query']) ? "[{$this->implodeMultiArray($callServiceConfig['query'])}]" : $callServiceConfig['query']], + ['Headers' => is_array($callServiceConfig['headers']) ? "[{$this->implodeMultiArray($callServiceConfig['headers'])}]" : $callServiceConfig['headers']], ['Method' => $callServiceConfig['method'] ?? 'GET'], ); } diff --git a/api/src/Service/UserService.php b/api/src/Service/UserService.php deleted file mode 100644 index 0925445d0..000000000 --- a/api/src/Service/UserService.php +++ /dev/null @@ -1,89 +0,0 @@ -, Wilco Louwerse - * - * @license EUPL - * - * @category Service - */ -class UserService -{ - private CommonGroundService $commonGroundService; - private ObjectEntityService $objectEntityService; - - public function __construct(CommonGroundService $commonGroundService, ObjectEntityService $objectEntityService) - { - $this->commonGroundService = $commonGroundService; - $this->objectEntityService = $objectEntityService; - } - - public function getPersonForUser(UserInterface $user): array - { - if (!($user instanceof AuthenticationUser)) { - return []; - } - if ($user->getPerson() && $person = $this->objectEntityService->getObjectByUri($user->getPerson())) { - return $person; - } elseif ($user->getPerson()) { - try { - $id = substr($user->getPerson(), strrpos($user->getPerson(), '/') + 1); - - if (!$this->commonGroundService->getComponent('cc') || - !$person = $this->commonGroundService->getResource($user->getPerson())) { - $person = $this->objectEntityService->getPersonObject($id); - } - if (empty($person)) { - throw new Exception(); - } - } catch (Exception $exception) { - $person = $this->objectEntityService->getUserObjectEntity($user->getUsername()); - } - } else { - $person = $this->objectEntityService->getUserObjectEntity($user->getUsername()); - } - - return $person; - } - - public function getOrganizationForUser(UserInterface $user): array - { - if (!($user instanceof AuthenticationUser)) { - return []; - } - if (!$user->getOrganization()) { - return []; - } else { - $organizationFields = [ - 'name' => true, 'type' => true, 'addresses' => true, 'emails' => true, 'telephones' => true, - 'parentOrganization' => [ - 'name' => true, 'type' => true, 'addresses' => true, 'emails' => true, 'telephones' => true, - ], - ]; - if (!($organization = $this->objectEntityService->getObjectByUri($user->getOrganization(), $organizationFields, $organizationFields))) { - try { - $id = substr($user->getOrganization(), strrpos($user->getOrganization(), '/') + 1); - - if (!$this->commonGroundService->getComponent('cc') || - !$organization = $this->commonGroundService->getResource($user->getOrganization())) { - $organization = $this->objectEntityService->getOrganizationObject($id); - } - if (empty($organization)) { - throw new Exception(); - } - } catch (Exception $exception) { - return []; - } - } - } - - return $organization; - } -} diff --git a/api/symfony.lock b/api/symfony.lock index 0664d2039..c09d89550 100644 --- a/api/symfony.lock +++ b/api/symfony.lock @@ -5,9 +5,6 @@ "alcaeus/mongo-php-adapter": { "version": "1.2.2" }, - "api-platform/api-pack": { - "version": "v1.3.0" - }, "api-platform/core": { "version": "2.5", "recipe": { @@ -22,9 +19,6 @@ "./src/Entity/.gitignore" ] }, - "api-platform/schema-generator": { - "version": "v3.0.0" - }, "bacon/bacon-qr-code": { "version": "2.0.7" }, @@ -32,7 +26,7 @@ "version": "v1.3.0" }, "behat/transliterator": { - "version": "v1.3.0" + "version": "v1.5.0" }, "brick/math": { "version": "0.9.3" @@ -44,7 +38,7 @@ "version": "dev-master" }, "composer/ca-bundle": { - "version": "1.2.10" + "version": "1.3.7" }, "composer/package-versions-deprecated": { "version": "1.11.99.3" @@ -53,19 +47,10 @@ "version": "1.0.1" }, "composer/semver": { - "version": "3.2.5" + "version": "3.4.0" }, "composer/xdebug-handler": { - "version": "2.0.2" - }, - "conduction/commongroundbundle": { - "version": "dev-feature-gateway" - }, - "conduction/digidbundle": { - "version": "dev-master" - }, - "conduction/samlbundle": { - "version": "dev-master" + "version": "3.0.3" }, "dasprid/enum": { "version": "1.0.3" @@ -117,12 +102,12 @@ ] }, "doctrine/doctrine-fixtures-bundle": { - "version": "3.0", + "version": "3.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "3.0", - "ref": "e5b542d4ef47d8a003c91beb35650c76907f7e53" + "ref": "1f5514cfa15b947298df4d771e694e578d4c204d" }, "files": [ "src/DataFixtures/AppFixtures.php" @@ -171,9 +156,6 @@ "dragonmantank/cron-expression": { "version": "v3.3.1" }, - "easyrdf/easyrdf": { - "version": "1.1.1" - }, "egulias/email-validator": { "version": "3.2.1" }, @@ -190,28 +172,16 @@ "version": "v1.15.0" }, "fgrosse/phpasn1": { - "version": "v2.3.0" + "version": "v2.5.0" }, "fig/link-util": { "version": "1.1.2" }, - "friendsofphp/php-cs-fixer": { - "version": "2.19", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "2.19", - "ref": "34d1a22f840953909c581b8f993093b14cc9491b" - }, - "files": [ - ".php-cs-fixer.dist.php" - ] - }, "friendsofphp/proxy-manager-lts": { "version": "v1.0.5" }, "gedmo/doctrine-extensions": { - "version": "v3.1.0" + "version": "v3.2.0" }, "guzzlehttp/guzzle": { "version": "6.5.5" @@ -246,7 +216,7 @@ "version": "1.0.6" }, "knplabs/knp-markdown-bundle": { - "version": "1.9.0" + "version": "1.10.0" }, "laminas/laminas-code": { "version": "4.4.2" @@ -274,7 +244,7 @@ "version": "2.4.2" }, "league/html-to-markdown": { - "version": "4.10.0" + "version": "5.1.1" }, "league/mime-type-detection": { "version": "1.11.0" @@ -283,10 +253,7 @@ "version": "2.7.5" }, "michelf/php-markdown": { - "version": "1.9.0" - }, - "mollie/mollie-api-php": { - "version": "v2.37.1" + "version": "1.9.1" }, "mongodb/mongodb": { "version": "1.15.0" @@ -328,12 +295,6 @@ "nikic/php-parser": { "version": "v4.12.0" }, - "onelogin/php-saml": { - "version": "4.0.0" - }, - "paragonie/random_compat": { - "version": "v9.99.100" - }, "phar-io/manifest": { "version": "2.0.3" }, @@ -346,9 +307,6 @@ "phenx/php-svg-lib": { "version": "0.3.4" }, - "php-cs-fixer/diff": { - "version": "v1.3.1" - }, "phpdocumentor/reflection-common": { "version": "2.2.0" }, @@ -420,17 +378,23 @@ "ralouphie/getallheaders": { "version": "3.0.3" }, + "ramsey/collection": { + "version": "1.3.0" + }, "ramsey/uuid": { - "version": "3.9.4" + "version": "4.2.3" }, "ramsey/uuid-doctrine": { - "version": "1.3", + "version": "2.0", "recipe": { "repo": "github.com/symfony/recipes-contrib", - "branch": "master", + "branch": "main", "version": "1.3", "ref": "471aed0fbf5620b8d7f92b7a5ebbbf6c0945c27a" - } + }, + "files": [ + "config/packages/ramsey_uuid_doctrine.yaml" + ] }, "respect/stringifier": { "version": "0.2.0" @@ -438,9 +402,6 @@ "respect/validation": { "version": "2.2.3" }, - "robrichards/xmlseclibs": { - "version": "3.1.1" - }, "sabberworm/php-css-parser": { "version": "8.4.0" }, @@ -501,18 +462,6 @@ "spomky-labs/base64url": { "version": "v2.0.4" }, - "stof/doctrine-extensions-bundle": { - "version": "1.2", - "recipe": { - "repo": "github.com/symfony/recipes-contrib", - "branch": "master", - "version": "1.2", - "ref": "6c1ceb662f8997085f739cd089bfbef67f245983" - } - }, - "sumup/sumup-ecom-php-sdk": { - "version": "1.0.2" - }, "symfony/amqp-messenger": { "version": "v5.3.14" }, @@ -640,15 +589,6 @@ "ref": "addcb559b32d9dbb4843826b063565e1b15a2a57" } }, - "symfony/maker-bundle": { - "version": "1.0", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "1.0", - "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" - } - }, "symfony/messenger": { "version": "5.3", "recipe": { @@ -682,9 +622,6 @@ "symfony/options-resolver": { "version": "v5.3.4" }, - "symfony/orm-pack": { - "version": "v2.1.0" - }, "symfony/password-hasher": { "version": "v5.3.4" }, @@ -718,9 +655,6 @@ "symfony/polyfill-mbstring": { "version": "v1.23.1" }, - "symfony/polyfill-php70": { - "version": "v1.20.0" - }, "symfony/polyfill-php73": { "version": "v1.23.0" }, @@ -730,9 +664,6 @@ "symfony/polyfill-php81": { "version": "v1.23.0" }, - "symfony/process": { - "version": "v5.3.4" - }, "symfony/property-access": { "version": "v5.3.4" }, @@ -788,28 +719,12 @@ "symfony/serializer": { "version": "v5.3.4" }, - "symfony/serializer-pack": { - "version": "v1.0.4" - }, "symfony/stopwatch": { "version": "v5.3.4" }, "symfony/string": { "version": "v5.3.3" }, - "symfony/translation": { - "version": "5.3", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "5.3", - "ref": "da64f5a2b6d96f5dc24914517c0350a5f91dee43" - }, - "files": [ - "config/packages/translation.yaml", - "translations/.gitignore" - ] - }, "symfony/twig-bridge": { "version": "v5.3.4" }, diff --git a/api/translations/.gitignore b/api/translations/.gitignore deleted file mode 100644 index e69de29bb..000000000 From d1f2e01ae8991c1f3581599988d644b4340cae9b Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Fri, 13 Oct 2023 15:58:40 +0200 Subject: [PATCH 02/15] Dependency updates --- api/Dockerfile | 4 +- api/composer.json | 24 +- api/composer.lock | 2174 ++++------------- api/config/bundles.php | 1 - .../conduction/conduction_white_on_blue.svg | 1 - .../condution_blue_on_transparant.svg | 1 - .../conduction/condution_blue_on_white.svg | 1 - .../condution_white_on_transparant.svg | 1 - .../images/municipalities/s-hertogenbosch.svg | 41 - .../images/municipalities/utrecht.svg | 335 --- api/symfony.lock | 9 +- 11 files changed, 505 insertions(+), 2087 deletions(-) delete mode 100644 api/public/bundles/commonground/images/conduction/conduction_white_on_blue.svg delete mode 100644 api/public/bundles/commonground/images/conduction/condution_blue_on_transparant.svg delete mode 100644 api/public/bundles/commonground/images/conduction/condution_blue_on_white.svg delete mode 100644 api/public/bundles/commonground/images/conduction/condution_white_on_transparant.svg delete mode 100644 api/public/bundles/commonground/images/municipalities/s-hertogenbosch.svg delete mode 100644 api/public/bundles/commonground/images/municipalities/utrecht.svg diff --git a/api/Dockerfile b/api/Dockerfile index a243fe718..a075b9ea6 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -1,4 +1,4 @@ -FROM php:8.1-fpm-alpine AS api_platform_php +FROM php:8.2-fpm-alpine AS api_platform_php # Create a user RUN addgroup -S -g 101 commonground-gateway && adduser -S -D -u 101 commonground-gateway @@ -18,7 +18,7 @@ RUN apk add --no-cache \ bash \ ; -ARG APCU_VERSION=5.1.17 +ARG APCU_VERSION=5.1.21 ARG SQLSRV_VERSION=5.10.1 RUN set -eux; \ diff --git a/api/composer.json b/api/composer.json index 29e506841..16b81286e 100644 --- a/api/composer.json +++ b/api/composer.json @@ -1,10 +1,10 @@ { "type": "project", "license": "proprietary", - "minimum-stability": "stable", + "minimum-stability": "dev", "prefer-stable": true, "require": { - "php": "^7.4.0", + "php": "^7.4.0 || ^8.1.0 || ^8.2.0", "ext-ctype": "*", "ext-fileinfo": "*", "ext-iconv": "*", @@ -13,29 +13,36 @@ "alcaeus/mongo-php-adapter": "^1.2", "api-platform/core": "^2.6", "beberlei/doctrineextensions": "^1.3", - "commongateway/corebundle": "^1.1.74", + "commongateway/corebundle": "dev-feature/MF-62/PHP-8.2", + "composer/ca-bundle": "*", "composer/package-versions-deprecated": "1.11.99.3", - "conduction/commongroundbundle": "dev-feature-gateway", - "conduction/digidbundle": "dev-master", - "conduction/samlbundle": "dev-master", + "composer/semver": "*", + "composer/xdebug-handler": "*", "doctrine/annotations": "^1.0", "doctrine/doctrine-bundle": "^2.4", + "doctrine/doctrine-fixtures-bundle": "*", "doctrine/doctrine-migrations-bundle": "^3.1", "doctrine/orm": "^2.9", "dompdf/dompdf": "^2", "endroid/qr-code-bundle": "3.4", + "friendsofphp/proxy-manager-lts": "*", + "gedmo/doctrine-extensions": "*", "guzzlehttp/guzzle": "6.5.8", "guzzlehttp/psr7": "1.9", "hautelook/alice-bundle": "^2.9.0", "jwadhams/json-logic-php": "^1.4", + "laminas/laminas-code": "*", + "laminas/laminas-escaper": "*", "league/flysystem-bundle": "^2.4", "league/flysystem-ftp": "^2.4", + "league/html-to-markdown": "*", "mongodb/mongodb": "^1.15", "monolog/monolog": "^2.8.0", "nelmio/cors-bundle": "^2.1", "phpdocumentor/reflection-docblock": "^5.2", "phpoffice/phpspreadsheet": "^1.29", "phpoffice/phpword": "^0.18.2", + "ramsey/uuid-doctrine": "*", "respect/validation": "^2.2", "setono/cron-expression-bundle": "^1.5", "symfony/asset": "5.3.*", @@ -49,6 +56,7 @@ "symfony/mailer": "5.3.*", "symfony/mailgun-mailer": "5.3.*", "symfony/messenger": "5.3.*", + "symfony/process": "5.3.*", "symfony/property-access": "5.3.*", "symfony/property-info": "5.3.*", "symfony/proxy-manager-bridge": "5.3.*", @@ -58,7 +66,9 @@ "symfony/twig-bundle": "5.3.*", "symfony/validator": "5.3.*", "symfony/web-profiler-bundle": "5.3.*", - "symfony/yaml": "5.3.*" + "symfony/yaml": "5.3.*", + "thecodingmachine/safe": "*", + "web-token/jwt-framework": "*" }, "config": { "optimize-autoloader": true, diff --git a/api/composer.lock b/api/composer.lock index ed73b85fd..3491c9121 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "26900a024cf0ecaf8966b2e29a938737", + "content-hash": "b06ff88d1873f12139f276bf48c7d1d1", "packages": [ { "name": "adbario/php-dot-notation", @@ -128,43 +128,6 @@ }, "time": "2022-01-11T15:05:50+00:00" }, - { - "name": "api-platform/api-pack", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/api-platform/api-pack.git", - "reference": "0fb12343362f565b65eb374d3c49bec580ffcf8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/api-platform/api-pack/zipball/0fb12343362f565b65eb374d3c49bec580ffcf8d", - "reference": "0fb12343362f565b65eb374d3c49bec580ffcf8d", - "shasum": "" - }, - "require": { - "api-platform/core": "*", - "nelmio/cors-bundle": "*", - "symfony/asset": "*", - "symfony/expression-language": "*", - "symfony/orm-pack": "*", - "symfony/security-bundle": "*", - "symfony/serializer-pack": "*", - "symfony/twig-bundle": "*", - "symfony/validator": "*" - }, - "type": "symfony-pack", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A pack for API Platform", - "support": { - "issues": "https://github.com/api-platform/api-pack/issues", - "source": "https://github.com/api-platform/api-pack/tree/v1.3.0" - }, - "time": "2020-08-28T20:27:34+00:00" - }, { "name": "api-platform/core", "version": "v2.6.5", @@ -320,81 +283,6 @@ ], "time": "2021-06-15T16:53:33+00:00" }, - { - "name": "api-platform/schema-generator", - "version": "v3.0.0", - "source": { - "type": "git", - "url": "https://github.com/api-platform/schema-generator.git", - "reference": "cf7aacaf5078e8110142131c5c66382a1fd83328" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/api-platform/schema-generator/zipball/cf7aacaf5078e8110142131c5c66382a1fd83328", - "reference": "cf7aacaf5078e8110142131c5c66382a1fd83328", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^1.4.3 || ^2.0", - "easyrdf/easyrdf": "^1.1", - "ext-json": "*", - "friendsofphp/php-cs-fixer": "^2.15", - "league/html-to-markdown": "^4.9", - "php": ">=7.4", - "psr/log": "^1.0", - "symfony/config": "^5.2", - "symfony/console": "^5.2", - "symfony/filesystem": "^5.2", - "symfony/yaml": "^5.2", - "twig/twig": "^3.0" - }, - "require-dev": { - "api-platform/core": "^2.5", - "doctrine/orm": "^2.7", - "myclabs/php-enum": "^1.7", - "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^0.12", - "symfony/doctrine-bridge": "^5.2", - "symfony/phpunit-bridge": "^5.2", - "symfony/serializer": "^5.2", - "symfony/validator": "^5.2" - }, - "bin": [ - "bin/schema" - ], - "type": "library", - "autoload": { - "psr-4": { - "ApiPlatform\\SchemaGenerator\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" - } - ], - "description": "Various tools to generate a data model based on Schema.org vocables", - "homepage": "https://api-platform.com/docs/schema-generator/", - "keywords": [ - "doctrine", - "entity", - "enum", - "model", - "schema.org", - "semantic", - "symfony" - ], - "support": { - "issues": "https://github.com/api-platform/schema-generator/issues", - "source": "https://github.com/api-platform/schema-generator/tree/v3.0.0" - }, - "time": "2021-01-20T21:39:48+00:00" - }, { "name": "bacon/bacon-qr-code", "version": "2.0.7", @@ -508,30 +396,30 @@ }, { "name": "behat/transliterator", - "version": "v1.3.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/Behat/Transliterator.git", - "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc" + "reference": "baac5873bac3749887d28ab68e2f74db3a4408af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", - "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc", + "url": "https://api.github.com/repos/Behat/Transliterator/zipball/baac5873bac3749887d28ab68e2f74db3a4408af", + "reference": "baac5873bac3749887d28ab68e2f74db3a4408af", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.2" }, "require-dev": { "chuyskywalker/rolling-curl": "^3.1", "php-yaoi/php-yaoi": "^1.0", - "phpunit/phpunit": "^4.8.36|^6.3" + "phpunit/phpunit": "^8.5.25 || ^9.5.19" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.x-dev" } }, "autoload": { @@ -551,9 +439,9 @@ ], "support": { "issues": "https://github.com/Behat/Transliterator/issues", - "source": "https://github.com/Behat/Transliterator/tree/v1.3.0" + "source": "https://github.com/Behat/Transliterator/tree/v1.5.0" }, - "time": "2020-01-14T16:39:13+00:00" + "time": "2022-03-30T09:27:43+00:00" }, { "name": "brick/math", @@ -660,16 +548,16 @@ }, { "name": "commongateway/corebundle", - "version": "1.1.74", + "version": "dev-feature/MF-62/PHP-8.2", "source": { "type": "git", "url": "https://github.com/CommonGateway/CoreBundle.git", - "reference": "7a4bd00b95f84e1a5ca5f787b64635941ad22a83" + "reference": "8349de2b20097e5fc4d7a29f283f949c01d870eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/7a4bd00b95f84e1a5ca5f787b64635941ad22a83", - "reference": "7a4bd00b95f84e1a5ca5f787b64635941ad22a83", + "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/8349de2b20097e5fc4d7a29f283f949c01d870eb", + "reference": "8349de2b20097e5fc4d7a29f283f949c01d870eb", "shasum": "" }, "require": { @@ -678,9 +566,6 @@ "api-platform/core": "^2.6", "beberlei/doctrineextensions": "^1.3", "composer/package-versions-deprecated": "1.11.99.3", - "conduction/commongroundbundle": "dev-feature-gateway", - "conduction/digidbundle": "dev-master", - "conduction/samlbundle": "dev-master", "doctrine/annotations": "^1.0", "doctrine/doctrine-bundle": "^2.4", "doctrine/doctrine-migrations-bundle": "^3.1", @@ -701,7 +586,7 @@ "mongodb/mongodb": "^1.15", "monolog/monolog": "^2.8.0", "nelmio/cors-bundle": "^2.1", - "php": "^7.4.0", + "php": "^7.4.0 || ^8.1.0 || ^8.2.0", "phpdocumentor/reflection-docblock": "^5.2", "phpoffice/phpspreadsheet": "^1.29", "phpoffice/phpword": "^0.18.2", @@ -783,20 +668,20 @@ "issues": "https://github.com/CommonGateway/CoreBundle/issues", "source": "https://github.com/CommonGateway/CoreBundle" }, - "time": "2023-08-16T09:52:03+00:00" + "time": "2023-10-13T10:59:01+00:00" }, { "name": "composer/ca-bundle", - "version": "1.2.10", + "version": "1.3.7", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "9fdb22c2e97a614657716178093cd1da90a64aa8" + "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/9fdb22c2e97a614657716178093cd1da90a64aa8", - "reference": "9fdb22c2e97a614657716178093cd1da90a64aa8", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", + "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", "shasum": "" }, "require": { @@ -808,7 +693,7 @@ "phpstan/phpstan": "^0.12.55", "psr/log": "^1.0", "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0" + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" }, "type": "library", "extra": { @@ -843,7 +728,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.2.10" + "source": "https://github.com/composer/ca-bundle/tree/1.3.7" }, "funding": [ { @@ -859,7 +744,7 @@ "type": "tidelift" } ], - "time": "2021-06-07T13:58:28+00:00" + "time": "2023-08-30T09:31:38+00:00" }, { "name": "composer/package-versions-deprecated", @@ -931,25 +816,26 @@ "time": "2021-08-17T13:49:14+00:00" }, { - "name": "composer/semver", - "version": "3.2.5", + "name": "composer/pcre", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9" + "url": "https://github.com/composer/pcre.git", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9", - "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.3", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { @@ -959,7 +845,7 @@ }, "autoload": { "psr-4": { - "Composer\\Semver\\": "src" + "Composer\\Pcre\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -967,33 +853,22 @@ "MIT" ], "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" } ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", "keywords": [ - "semantic", - "semver", - "validation", - "versioning" + "PCRE", + "preg", + "regex", + "regular expression" ], "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.5" + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -1009,34 +884,38 @@ "type": "tidelift" } ], - "time": "2021-05-24T12:41:47+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { - "name": "composer/xdebug-handler", - "version": "2.0.2", + "name": "composer/semver", + "version": "3.4.0", "source": { "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339" + "url": "https://github.com/composer/semver.git", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339", - "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1 || ^2 || ^3" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.55", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "Composer\\XdebugHandler\\": "src" + "Composer\\Semver\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1045,19 +924,32 @@ ], "authors": [ { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" } ], - "description": "Restarts a process without Xdebug.", + "description": "Semver library that offers utilities, version constraint parsing and validation.", "keywords": [ - "Xdebug", - "performance" + "semantic", + "semver", + "validation", + "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.2" + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -1073,138 +965,37 @@ "type": "tidelift" } ], - "time": "2021-07-31T17:03:58+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { - "name": "conduction/commongroundbundle", - "version": "dev-feature-gateway", + "name": "composer/xdebug-handler", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/ConductionNL/CommonGroundBundle.git", - "reference": "02d76a8ddda5cc2329f0e4ff326f427ac1eba3c0" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ConductionNL/CommonGroundBundle/zipball/02d76a8ddda5cc2329f0e4ff326f427ac1eba3c0", - "reference": "02d76a8ddda5cc2329f0e4ff326f427ac1eba3c0", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "api-platform/api-pack": "^1.2@stable", - "api-platform/core": "^2.4@stable", - "api-platform/schema-generator": "^3.0", - "doctrine/doctrine-bundle": "^1.6 || ^2.0 || ^2.4", - "doctrine/doctrine-fixtures-bundle": "^3.2", - "guzzlehttp/guzzle": "^6.3", - "knplabs/knp-markdown-bundle": "^1.8", - "mollie/mollie-api-php": "^2.0", - "php": "^7.4.0", - "ramsey/uuid": "^3.8", - "ramsey/uuid-doctrine": "^1.5", - "stof/doctrine-extensions-bundle": "^1.3", - "sumup/sumup-ecom-php-sdk": "^1.0", - "symfony/cache": "^5.0@stable", - "symfony/cache-contracts": "^2.4", - "symfony/console": "^5.0@stable", - "symfony/contracts": "^2.4", - "symfony/event-dispatcher": "^5.1", - "symfony/maker-bundle": "^1.11@stable", - "symfony/translation": "^5.0", - "symfony/var-exporter": "^5.0", - "twig/twig": "^3.3", - "web-token/jwt-framework": "^2.2" - }, - "conflict": { - "doctrine/dbal": "<2.5", - "symfony/dependency-injection": "<3.4", - "symfony/var-dumper": "<3.4" + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", + "psr/log": "^1 || ^2 || ^3" }, "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "~1.6", - "doctrine/dbal": "~2.5", - "predis/predis": "~1.1", - "symfony/config": "^5.1", - "symfony/dependency-injection": "~3.4|~4.1|~5.0", - "symfony/var-dumper": "^4.1.1|^5.1" + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^6.0" }, "type": "library", "autoload": { "psr-4": { - "Conduction\\CommonGroundBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ruben van der Linde", - "email": "ruben@conduction.nl" - }, - { - "name": "Conduction", - "homepage": "https://conduction.nl" + "Composer\\XdebugHandler\\": "src" } - ], - "description": "Symfony Bundle for dutch common ground functionality", - "homepage": "https://conduction.nl", - "keywords": [ - "Sofi", - "adres", - "brp", - "bsn", - "kadaster", - "kamer van koophandel", - "kvk", - "postcode", - "rsin" - ], - "support": { - "email": "ruben@conduction.nl", - "issues": "https://github.com/ConductionNL/ConductionCommonGroundBundle/issues", - "source": "https://github.com/ConductionNL/ConductionCommonGroundBundle" - }, - "time": "2022-09-13T14:22:16+00:00" - }, - { - "name": "conduction/digidbundle", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/ConductionNL/digid-bundle.git", - "reference": "19c921d51e10bf70b32190cccf7c375aa619ddf9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ConductionNL/digid-bundle/zipball/19c921d51e10bf70b32190cccf7c375aa619ddf9", - "reference": "19c921d51e10bf70b32190cccf7c375aa619ddf9", - "shasum": "" - }, - "require": { - "conduction/commongroundbundle": "v2.*-dev | dev-feature-gateway", - "conduction/samlbundle": "dev-master", - "guzzlehttp/guzzle": "^6.3", - "onelogin/php-saml": "^4.0", - "php": "^7.4.0", - "ramsey/uuid": "^3.8", - "symfony/cache": "^5.0@stable", - "symfony/console": "^5.0@stable", - "symfony/event-dispatcher": "^5.0" - }, - "default-branch": true, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Conduction\\DigidBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1212,84 +1003,35 @@ ], "authors": [ { - "name": "Robert Zondervan", - "email": "robert@conduction.nl" - }, - { - "name": "Conduction", - "homepage": "https://conduction.nl" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "Symfony Bundle for DigiD configuration", - "homepage": "https://conduction.nl", + "description": "Restarts a process without Xdebug.", "keywords": [ - "saml" + "Xdebug", + "performance" ], "support": { - "email": "ruben@conduction.nl", - "issues": "https://github.com/ConductionNL/digid-bundle/issues", - "source": "https://github.com/ConductionNL/digid-bundle" - }, - "time": "2021-12-14T13:16:02+00:00" - }, - { - "name": "conduction/samlbundle", - "version": "dev-master", - "source": { - "type": "git", - "url": "https://github.com/ConductionNL/saml-bundle.git", - "reference": "8d8eb8a4fa362b9b678fc288ead2880a43154714" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ConductionNL/saml-bundle/zipball/8d8eb8a4fa362b9b678fc288ead2880a43154714", - "reference": "8d8eb8a4fa362b9b678fc288ead2880a43154714", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^6.3", - "onelogin/php-saml": "^4.0", - "php": "^7.4.0", - "ramsey/uuid": "^3.8", - "symfony/cache": "^5.0@stable", - "symfony/console": "^5.0@stable", - "symfony/event-dispatcher": "^5.0" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, - "default-branch": true, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Conduction\\SamlBundle\\": "" + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ { - "name": "Robert Zondervan", - "email": "robert@conduction.nl" + "url": "https://github.com/composer", + "type": "github" }, { - "name": "Conduction", - "homepage": "https://conduction.nl" + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" } ], - "description": "Symfony Bundle for SAML configuration", - "homepage": "https://conduction.nl", - "keywords": [ - "saml" - ], - "support": { - "email": "ruben@conduction.nl", - "issues": "https://github.com/ConductionNL/ConductionCommonGroundBundle/issues", - "source": "https://github.com/ConductionNL/ConductionCommonGroundBundle" - }, - "time": "2021-12-13T18:14:43+00:00" + "time": "2022-02-25T21:32:43+00:00" }, { "name": "dasprid/enum", @@ -1987,34 +1729,36 @@ }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.0", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "870189619a7770f468ffb0b80925302e065a3b34" + "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/870189619a7770f468ffb0b80925302e065a3b34", - "reference": "870189619a7770f468ffb0b80925302e065a3b34", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", + "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", "shasum": "" }, "require": { "doctrine/data-fixtures": "^1.3", "doctrine/doctrine-bundle": "^1.11|^2.0", "doctrine/orm": "^2.6.0", - "doctrine/persistence": "^1.3.7|^2.0", + "doctrine/persistence": "^1.3.7|^2.0|^3.0", "php": "^7.1 || ^8.0", - "symfony/config": "^3.4|^4.3|^5.0", - "symfony/console": "^3.4|^4.3|^5.0", - "symfony/dependency-injection": "^3.4|^4.3|^5.0", - "symfony/doctrine-bridge": "^3.4|^4.1|^5.0", - "symfony/http-kernel": "^3.4|^4.3|^5.0" + "symfony/config": "^3.4|^4.3|^5.0|^6.0", + "symfony/console": "^3.4|^4.3|^5.0|^6.0", + "symfony/dependency-injection": "^3.4.47|^4.3|^5.0|^6.0", + "symfony/doctrine-bridge": "^3.4|^4.1|^5.0|^6.0", + "symfony/http-kernel": "^3.4|^4.3|^5.0|^6.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.4 || ^8.0 || ^9.2", - "symfony/phpunit-bridge": "^4.1|^5.0" + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "^1.4.10", + "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", + "symfony/phpunit-bridge": "^6.0.8", + "vimeo/psalm": "^4.22" }, "type": "symfony-bundle", "autoload": { @@ -2033,22 +1777,22 @@ }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org" + "homepage": "https://www.doctrine-project.org" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DoctrineFixturesBundle", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "Fixture", "persistence" ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.0" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.4" }, "funding": [ { @@ -2064,7 +1808,7 @@ "type": "tidelift" } ], - "time": "2020-11-14T09:36:49+00:00" + "time": "2023-05-02T15:12:16+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -2920,87 +2664,12 @@ "time": "2022-01-18T15:43:28+00:00" }, { - "name": "easyrdf/easyrdf", - "version": "1.1.1", + "name": "egulias/email-validator", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/easyrdf/easyrdf.git", - "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/easyrdf/easyrdf/zipball/c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", - "reference": "c7b0a9dbcb211eb7de03ee99ff5b52d17f2a8e64", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "ext-pcre": "*", - "ext-xmlreader": "*", - "lib-libxml": "*", - "php": ">=7.1.0" - }, - "require-dev": { - "code-lts/doctum": "^5", - "ml/json-ld": "~1.0", - "phpunit/phpunit": "^7", - "semsol/arc2": "^2.4", - "squizlabs/php_codesniffer": "3.*", - "zendframework/zend-http": "~2.3" - }, - "suggest": { - "ml/json-ld": "~1.0", - "semsol/arc2": "~2.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "EasyRdf\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nicholas Humfrey", - "email": "njh@aelius.com", - "homepage": "http://www.aelius.com/njh/", - "role": "Developer" - }, - { - "name": "Alexey Zakhlestin", - "email": "indeyets@gmail.com", - "homepage": "http://indeyets.ru/", - "role": "Developer" - } - ], - "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.", - "homepage": "http://www.easyrdf.org/", - "keywords": [ - "Linked Data", - "RDF", - "Semantic Web", - "Turtle", - "rdfa", - "sparql" - ], - "support": { - "forum": "http://groups.google.com/group/easyrdf/", - "issues": "http://github.com/easyrdf/easyrdf/issues", - "source": "https://github.com/easyrdf/easyrdf/tree/1.1.1" - }, - "time": "2020-12-02T08:47:31+00:00" - }, - { - "name": "egulias/email-validator", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/egulias/EmailValidator.git", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" }, "dist": { "type": "zip", @@ -3387,24 +3056,24 @@ }, { "name": "fgrosse/phpasn1", - "version": "v2.3.0", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/fgrosse/PHPASN1.git", - "reference": "20299033c35f4300eb656e7e8e88cf52d1d6694e" + "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/20299033c35f4300eb656e7e8e88cf52d1d6694e", - "reference": "20299033c35f4300eb656e7e8e88cf52d1d6694e", + "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/42060ed45344789fb9f21f9f1864fc47b9e3507b", + "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b", "shasum": "" }, "require": { - "php": ">=7.0.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "~6.3", - "satooshi/php-coveralls": "~2.0" + "php-coveralls/php-coveralls": "~2.0", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "suggest": { "ext-bcmath": "BCmath is the fallback extension for big integer calculations", @@ -3456,9 +3125,10 @@ ], "support": { "issues": "https://github.com/fgrosse/PHPASN1/issues", - "source": "https://github.com/fgrosse/PHPASN1/tree/v2.3.0" + "source": "https://github.com/fgrosse/PHPASN1/tree/v2.5.0" }, - "time": "2021-04-24T19:01:55+00:00" + "abandoned": true, + "time": "2022-12-19T11:08:26+00:00" }, { "name": "fig/link-util", @@ -3517,133 +3187,24 @@ ], "time": "2021-02-03T23:36:04+00:00" }, - { - "name": "friendsofphp/php-cs-fixer", - "version": "v2.19.2", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "d5c737c2e18ba502b75b44832b31fe627f82e307" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/d5c737c2e18ba502b75b44832b31fe627f82e307", - "reference": "d5c737c2e18ba502b75b44832b31fe627f82e307", - "shasum": "" - }, - "require": { - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.2 || ^2.0", - "doctrine/annotations": "^1.2", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^5.6 || ^7.0 || ^8.0", - "php-cs-fixer/diff": "^1.3", - "symfony/console": "^3.4.43 || ^4.1.6 || ^5.0", - "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0", - "symfony/filesystem": "^3.0 || ^4.0 || ^5.0", - "symfony/finder": "^3.0 || ^4.0 || ^5.0", - "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0", - "symfony/polyfill-php70": "^1.0", - "symfony/polyfill-php72": "^1.4", - "symfony/process": "^3.0 || ^4.0 || ^5.0", - "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0" - }, - "require-dev": { - "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.4", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.4.2", - "php-cs-fixer/accessible-object": "^1.0", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.13 || ^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "sanmai/phpunit-legacy-adapter": "^6.4 || ^8.2.1", - "symfony/phpunit-bridge": "^5.2.1", - "symfony/yaml": "^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters.", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", - "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." - }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", - "extra": { - "branch-alias": { - "dev-master": "2.19-dev" - } - }, - "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - }, - "classmap": [ - "tests/Test/AbstractFixerTestCase.php", - "tests/Test/AbstractIntegrationCaseFactory.php", - "tests/Test/AbstractIntegrationTestCase.php", - "tests/Test/Assert/AssertTokensTrait.php", - "tests/Test/IntegrationCase.php", - "tests/Test/IntegrationCaseFactory.php", - "tests/Test/IntegrationCaseFactoryInterface.php", - "tests/Test/InternalIntegrationCaseFactory.php", - "tests/Test/IsIdenticalConstraint.php", - "tests/Test/TokensWithObservedTransformers.php", - "tests/TestCase.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" - } - ], - "description": "A tool to automatically fix PHP code style", - "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.19.2" - }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" - } - ], - "time": "2021-08-18T19:55:46+00:00" - }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.5", + "version": "v1.0.16", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f" + "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/006aa5d32f887a4db4353b13b5b5095613e0611f", - "reference": "006aa5d32f887a4db4353b13b5b5095613e0611f", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c", + "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c", "shasum": "" }, "require": { "laminas/laminas-code": "~3.4.1|^4.0", "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" + "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" }, "conflict": { "laminas/laminas-stdlib": "<3.2.1", @@ -3654,7 +3215,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.2|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { @@ -3676,7 +3237,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.io/" + "homepage": "https://ocramius.github.io/" }, { "name": "Nicolas Grekas", @@ -3692,6 +3253,10 @@ "proxy pattern", "service proxies" ], + "support": { + "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16" + }, "funding": [ { "url": "https://github.com/Ocramius", @@ -3702,20 +3267,20 @@ "type": "tidelift" } ], - "time": "2021-05-22T16:11:15+00:00" + "time": "2023-05-24T07:17:17+00:00" }, { "name": "gedmo/doctrine-extensions", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "0803fa56b13cf858951599027f451738078c49f8" + "reference": "8c02cee09e3dd43799ec3b84b619b19982c47f43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/0803fa56b13cf858951599027f451738078c49f8", - "reference": "0803fa56b13cf858951599027f451738078c49f8", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/8c02cee09e3dd43799ec3b84b619b19982c47f43", + "reference": "8c02cee09e3dd43799ec3b84b619b19982c47f43", "shasum": "" }, "require": { @@ -3729,6 +3294,7 @@ "conflict": { "doctrine/mongodb": "<1.3", "doctrine/mongodb-odm": "<2.0", + "doctrine/orm": ">=2.10", "sebastian/comparator": "<2.0" }, "provide": { @@ -3737,10 +3303,11 @@ "require-dev": { "alcaeus/mongo-php-adapter": "^1.1", "doctrine/cache": "^1.11 || ^2.0", + "doctrine/dbal": "^2.13", "doctrine/doctrine-bundle": "^2.3", "doctrine/mongodb-odm": "^2.0", - "doctrine/orm": "^2.6.3", - "friendsofphp/php-cs-fixer": "^2.16", + "doctrine/orm": "^2.9.6", + "friendsofphp/php-cs-fixer": "^3.0", "phpunit/phpunit": "^8.5", "symfony/cache": "^4.4 || ^5.0", "symfony/yaml": "^4.1" @@ -3799,10 +3366,10 @@ "support": { "email": "gediminas.morkevicius@gmail.com", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.1.0", + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.2.0", "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" }, - "time": "2021-06-22T11:23:22+00:00" + "time": "2021-10-05T15:25:14+00:00" }, { "name": "guzzlehttp/guzzle", @@ -4320,106 +3887,35 @@ }, "time": "2022-06-29T09:25:13+00:00" }, - { - "name": "knplabs/knp-markdown-bundle", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/KnpLabs/KnpMarkdownBundle.git", - "reference": "843b3d0c9b741a3cf46296e9f326026b210e66c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMarkdownBundle/zipball/843b3d0c9b741a3cf46296e9f326026b210e66c1", - "reference": "843b3d0c9b741a3cf46296e9f326026b210e66c1", - "shasum": "" - }, - "require": { - "michelf/php-markdown": "~1.4", - "php": "^7.1.3|^8.0", - "symfony/dependency-injection": "~3.4|^4.0|^5.0", - "symfony/framework-bundle": "~3.4|^4.0|^5.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^4.4.0 || ^5.0", - "symfony/templating": "~3.4|^4.0|^5.0" - }, - "suggest": { - "ext-sundown": "to use optional support for php-sundown extension instead of php implementation", - "symfony/twig-bundle": "to use the Twig markdown filter" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.5.x-dev" - } - }, - "autoload": { - "psr-4": { - "Knp\\Bundle\\MarkdownBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "KnpLabs Team", - "homepage": "http://knplabs.com" - }, - { - "name": "Symfony Community", - "homepage": "http://github.com/KnpLabs/KnpMarkdownBundle/contributors" - } - ], - "description": "Knplabs markdown bundle transforms markdown into html", - "homepage": "http://github.com/KnpLabs/KnpMarkdownBundle", - "keywords": [ - "bundle", - "knp", - "knplabs", - "markdown" - ], - "support": { - "issues": "https://github.com/KnpLabs/KnpMarkdownBundle/issues", - "source": "https://github.com/KnpLabs/KnpMarkdownBundle/tree/1.9.0" - }, - "time": "2021-03-03T20:01:32+00:00" - }, { "name": "laminas/laminas-code", - "version": "4.4.2", + "version": "4.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b" + "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/54251ab2b16c41c6980387839496b235f5f6e10b", - "reference": "54251ab2b16c41c6980387839496b235f5f6e10b", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/36cbee228b427446419dd51944bdfb6bb8ddbcd0", + "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0", "shasum": "" }, "require": { - "php": "^7.4 || ~8.0.0" - }, - "conflict": { - "phpspec/prophecy": "<1.9.0" + "php": "~8.1.0 || ~8.2.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^2.0.0", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.1.4", - "laminas/laminas-stdlib": "^3.3.0", - "phpunit/phpunit": "^9.4.2", - "psalm/plugin-phpunit": "^0.14.0", - "vimeo/psalm": "^4.3.1" + "laminas/laminas-coding-standard": "^2.3.0", + "laminas/laminas-stdlib": "^3.6.1", + "phpunit/phpunit": "^10.0.9", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.7.1" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component", - "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework" + "laminas/laminas-stdlib": "Laminas\\Stdlib component" }, "type": "library", "autoload": { @@ -4438,43 +3934,51 @@ "laminas", "laminasframework" ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-code/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-code/issues", + "rss": "https://github.com/laminas/laminas-code/releases.atom", + "source": "https://github.com/laminas/laminas-code" + }, "funding": [ { "url": "https://funding.communitybridge.org/projects/laminas-project", "type": "community_bridge" } ], - "time": "2021-07-09T11:58:40+00:00" + "time": "2023-09-06T14:56:25+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.9.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f" + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/891ad70986729e20ed2e86355fcf93c9dc238a5f", - "reference": "891ad70986729e20ed2e86355fcf93c9dc238a5f", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "ext-ctype": "*", + "ext-mbstring": "*", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.12.2", - "vimeo/psalm": "^3.16" - }, - "suggest": { - "ext-iconv": "*", - "ext-mbstring": "*" + "infection/infection": "^0.26.6", + "laminas/laminas-coding-standard": "~2.4.0", + "maglnet/composer-require-checker": "^3.8.0", + "phpunit/phpunit": "^9.5.18", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.22.0" }, "type": "library", "autoload": { @@ -4506,7 +4010,7 @@ "type": "community_bridge" } ], - "time": "2021-09-02T17:10:53+00:00" + "time": "2022-10-10T10:11:09+00:00" }, { "name": "league/flysystem", @@ -4772,27 +4276,30 @@ }, { "name": "league/html-to-markdown", - "version": "4.10.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/thephpleague/html-to-markdown.git", - "reference": "0868ae7a552e809e5cd8f93ba022071640408e88" + "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/0868ae7a552e809e5cd8f93ba022071640408e88", - "reference": "0868ae7a552e809e5cd8f93ba022071640408e88", + "url": "https://api.github.com/repos/thephpleague/html-to-markdown/zipball/0b4066eede55c48f38bcee4fb8f0aa85654390fd", + "reference": "0b4066eede55c48f38bcee4fb8f0aa85654390fd", "shasum": "" }, "require": { "ext-dom": "*", "ext-xml": "*", - "php": ">=5.3.3" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "mikehaertl/php-shellcommand": "~1.1.0", - "phpunit/phpunit": "^4.8|^5.7", - "scrutinizer/ocular": "~1.1" + "mikehaertl/php-shellcommand": "^1.1.0", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^8.5 || ^9.2", + "scrutinizer/ocular": "^1.6", + "unleashedtech/php-coding-standard": "^2.7 || ^3.0", + "vimeo/psalm": "^4.22 || ^5.0" }, "bin": [ "bin/html-to-markdown" @@ -4800,7 +4307,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.10-dev" + "dev-master": "5.2-dev" } }, "autoload": { @@ -4834,7 +4341,7 @@ ], "support": { "issues": "https://github.com/thephpleague/html-to-markdown/issues", - "source": "https://github.com/thephpleague/html-to-markdown/tree/4.10.0" + "source": "https://github.com/thephpleague/html-to-markdown/tree/5.1.1" }, "funding": [ { @@ -4850,11 +4357,11 @@ "type": "github" }, { - "url": "https://www.patreon.com/colinodell", - "type": "patreon" + "url": "https://tidelift.com/funding/github/packagist/league/html-to-markdown", + "type": "tidelift" } ], - "time": "2020-07-01T00:34:03+00:00" + "time": "2023-07-12T21:21:09+00:00" }, { "name": "league/mime-type-detection", @@ -5166,150 +4673,6 @@ }, "time": "2021-07-01T14:25:37+00:00" }, - { - "name": "michelf/php-markdown", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/michelf/php-markdown.git", - "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/michelf/php-markdown/zipball/c83178d49e372ca967d1a8c77ae4e051b3a3c75c", - "reference": "c83178d49e372ca967d1a8c77ae4e051b3a3c75c", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": ">=4.3 <5.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Michelf\\": "Michelf/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Michel Fortin", - "email": "michel.fortin@michelf.ca", - "homepage": "https://michelf.ca/", - "role": "Developer" - }, - { - "name": "John Gruber", - "homepage": "https://daringfireball.net/" - } - ], - "description": "PHP Markdown", - "homepage": "https://michelf.ca/projects/php-markdown/", - "keywords": [ - "markdown" - ], - "support": { - "issues": "https://github.com/michelf/php-markdown/issues", - "source": "https://github.com/michelf/php-markdown/tree/1.9.0" - }, - "time": "2019-12-02T02:32:27+00:00" - }, - { - "name": "mollie/mollie-api-php", - "version": "v2.37.1", - "source": { - "type": "git", - "url": "https://github.com/mollie/mollie-api-php.git", - "reference": "260adf68db65edd82b6c11f8fa58622ff72b717c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/260adf68db65edd82b6c11f8fa58622ff72b717c", - "reference": "260adf68db65edd82b6c11f8fa58622ff72b717c", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.1", - "ext-curl": "*", - "ext-json": "*", - "ext-openssl": "*", - "php": ">=5.6" - }, - "require-dev": { - "eloquent/liberator": "^2.0", - "friendsofphp/php-cs-fixer": "^3.0", - "guzzlehttp/guzzle": "^6.3 || ^7.0", - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.1 || ^8.5" - }, - "suggest": { - "mollie/oauth2-mollie-php": "Use OAuth to authenticate with the Mollie API. This is needed for some endpoints. Visit https://docs.mollie.com/ for more information." - }, - "type": "library", - "autoload": { - "psr-4": { - "Mollie\\Api\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Mollie B.V.", - "email": "info@mollie.com" - } - ], - "description": "Mollie API client library for PHP. Mollie is a European Payment Service provider and offers international payment methods such as Mastercard, VISA, American Express and PayPal, and local payment methods such as iDEAL, Bancontact, SOFORT Banking, SEPA direct debit, Belfius Direct Net, KBC Payment Button and various gift cards such as Podiumcadeaukaart and fashioncheque.", - "homepage": "https://www.mollie.com/en/developers", - "keywords": [ - "Apple Pay", - "CBC", - "Przelewy24", - "api", - "bancontact", - "banktransfer", - "belfius", - "belfius direct net", - "charges", - "creditcard", - "direct debit", - "fashioncheque", - "gateway", - "gift cards", - "ideal", - "inghomepay", - "intersolve", - "kbc", - "klarna", - "mistercash", - "mollie", - "paylater", - "payment", - "payments", - "paypal", - "paysafecard", - "podiumcadeaukaart", - "recurring", - "refunds", - "sepa", - "service", - "sliceit", - "sofort", - "sofortbanking", - "subscriptions" - ], - "support": { - "issues": "https://github.com/mollie/mollie-api-php/issues", - "source": "https://github.com/mollie/mollie-api-php/tree/v2.37.1" - }, - "time": "2021-08-09T09:30:47+00:00" - }, { "name": "mongodb/mongodb", "version": "1.15.0", @@ -5750,168 +5113,6 @@ ], "time": "2021-04-20T08:27:05+00:00" }, - { - "name": "nikic/php-parser", - "version": "v4.12.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" - }, - "time": "2021-07-21T10:44:31+00:00" - }, - { - "name": "onelogin/php-saml", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/onelogin/php-saml.git", - "reference": "f30f5062f3653c4d2082892d207f4dc3e577d979" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/onelogin/php-saml/zipball/f30f5062f3653c4d2082892d207f4dc3e577d979", - "reference": "f30f5062f3653c4d2082892d207f4dc3e577d979", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "robrichards/xmlseclibs": ">=3.1.1" - }, - "require-dev": { - "pdepend/pdepend": "^2.8.0", - "php-coveralls/php-coveralls": "^2.0", - "phploc/phploc": "^4.0 || ^5.0 || ^6.0 || ^7.0", - "phpunit/phpunit": "^9.5", - "sebastian/phpcpd": "^4.0 || ^5.0 || ^6.0 ", - "squizlabs/php_codesniffer": "^3.5.8" - }, - "suggest": { - "ext-curl": "Install curl lib to be able to use the IdPMetadataParser for parsing remote XMLs", - "ext-dom": "Install xml lib", - "ext-openssl": "Install openssl lib in order to handle with x509 certs (require to support sign and encryption)", - "ext-zlib": "Install zlib" - }, - "type": "library", - "autoload": { - "psr-4": { - "OneLogin\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "OneLogin PHP SAML Toolkit", - "homepage": "https://developers.onelogin.com/saml/php", - "keywords": [ - "SAML2", - "onelogin", - "saml" - ], - "support": { - "email": "sixto.garcia@onelogin.com", - "issues": "https://github.com/onelogin/php-saml/issues", - "source": "https://github.com/onelogin/php-saml/" - }, - "time": "2021-03-02T10:19:19+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.100", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", - "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", - "shasum": "" - }, - "require": { - "php": ">= 7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/random_compat/issues", - "source": "https://github.com/paragonie/random_compat" - }, - "time": "2020-10-15T08:29:30+00:00" - }, { "name": "phenx/php-font-lib", "version": "0.5.4", @@ -6001,61 +5202,6 @@ }, "time": "2021-10-18T02:13:32+00:00" }, - { - "name": "php-cs-fixer/diff", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/dbd31aeb251639ac0b9e7e29405c1441907f5759", - "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", - "symfony/process": "^3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "SpacePossum" - } - ], - "description": "sebastian/diff v2 backport support for PHP5.6", - "homepage": "https://github.com/PHP-CS-Fixer", - "keywords": [ - "diff" - ], - "support": { - "issues": "https://github.com/PHP-CS-Fixer/diff/issues", - "source": "https://github.com/PHP-CS-Fixer/diff/tree/v1.3.1" - }, - "time": "2020-10-14T08:39:05+00:00" - }, { "name": "phpdocumentor/reflection-common", "version": "2.2.0", @@ -6899,9 +6045,80 @@ }, "type": "library", "autoload": { - "files": [ - "src/getallheaders.php" - ] + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "ramsey/collection", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/ad7475d1c9e70b190ecffc58f2d989416af339b4", + "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "symfony/polyfill-php81": "^1.23" + }, + "require-dev": { + "captainhook/plugin-composer": "^5.3", + "ergebnis/composer-normalize": "^2.28.3", + "fakerphp/faker": "^1.21", + "hamcrest/hamcrest-php": "^2.0", + "jangregor/phpstan-prophecy": "^1.0", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-rc1", + "phpspec/prophecy-phpunit": "^2.0", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6909,97 +6126,113 @@ ], "authors": [ { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" } ], - "description": "A polyfill for getallheaders.", + "description": "A PHP library for representing and manipulating collections.", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "issues": "https://github.com/ramsey/collection/issues", + "source": "https://github.com/ramsey/collection/tree/1.3.0" }, - "time": "2019-03-08T08:55:37+00:00" + "funding": [ + { + "url": "https://github.com/ramsey", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" + } + ], + "time": "2022-12-27T19:12:24+00:00" }, { "name": "ramsey/uuid", - "version": "3.9.4", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "be2451bef8147b7352a28fb4cddb08adc497ada3" + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/be2451bef8147b7352a28fb4cddb08adc497ada3", - "reference": "be2451bef8147b7352a28fb4cddb08adc497ada3", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", "shasum": "" }, "require": { + "brick/math": "^0.8 || ^0.9", "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | ^9.99.99", - "php": "^5.4 | ^7 | ^8", - "symfony/polyfill-ctype": "^1.8" + "php": "^7.2 || ^8.0", + "ramsey/collection": "^1.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php80": "^1.14" }, "replace": { "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9.11 | ^1", + "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", + "doctrine/annotations": "^1.8", + "ergebnis/composer-normalize": "^2.15", + "mockery/mockery": "^1.3", "moontoast/math": "^1.1", "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1", - "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", - "squizlabs/php_codesniffer": "^3.5" + "php-mock/php-mock": "^2.2", + "php-mock/php-mock-mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpbench/phpbench": "^1.0", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5 || ^9", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "^4.9" }, "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-main": "4.x-dev" + }, + "captainhook": { + "force-install": true } }, "autoload": { - "psr-4": { - "Ramsey\\Uuid\\": "src/" - }, "files": [ "src/functions.php" - ] + ], + "psr-4": { + "Ramsey\\Uuid\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", - "homepage": "https://github.com/ramsey/uuid", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "keywords": [ "guid", "identifier", @@ -7007,9 +6240,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "rss": "https://github.com/ramsey/uuid/releases.atom", - "source": "https://github.com/ramsey/uuid", - "wiki": "https://github.com/ramsey/uuid/wiki" + "source": "https://github.com/ramsey/uuid/tree/4.2.3" }, "funding": [ { @@ -7021,35 +6252,55 @@ "type": "tidelift" } ], - "time": "2021-08-06T20:32:15+00:00" + "time": "2021-09-25T23:10:38+00:00" }, { "name": "ramsey/uuid-doctrine", - "version": "1.7.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid-doctrine.git", - "reference": "b250b9d425d5e806cd56a3ab8c60a575a611d786" + "reference": "b002676be0e5e342d857c47f1b68e24de6841d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid-doctrine/zipball/b250b9d425d5e806cd56a3ab8c60a575a611d786", - "reference": "b250b9d425d5e806cd56a3ab8c60a575a611d786", + "url": "https://api.github.com/repos/ramsey/uuid-doctrine/zipball/b002676be0e5e342d857c47f1b68e24de6841d08", + "reference": "b002676be0e5e342d857c47f1b68e24de6841d08", "shasum": "" }, "require": { - "doctrine/dbal": "^2.5", - "php": "^5.4 || ^7 || ^8", - "ramsey/uuid": "^3.5 || ^4" + "doctrine/dbal": "^2.8 || ^3.0", + "php": "^7.4 || ^8.0", + "ramsey/uuid": "^3.9.7 || ^4.0" }, "require-dev": { + "captainhook/plugin-composer": "^5.3", "doctrine/orm": "^2.5", - "mockery/mockery": "^0.9.11 || ^1", - "php-parallel-lint/php-parallel-lint": "^1", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7 || ^8 || ^9", - "squizlabs/php_codesniffer": "^3.5" + "ergebnis/composer-normalize": "^2.28.3", + "mockery/mockery": "^1.5", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpcsstandards/phpcsutils": "^1.0.0-alpha4", + "phpstan/extension-installer": "^1.2", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18.4", + "ramsey/coding-standard": "^2.0.3", + "ramsey/conventional-commits": "^1.3", + "vimeo/psalm": "^5.4" }, "type": "library", + "extra": { + "captainhook": { + "force-install": true + }, + "ramsey/conventional-commits": { + "configFile": "conventional-commits.json" + } + }, "autoload": { "psr-4": { "Ramsey\\Uuid\\Doctrine\\": "src/" @@ -7076,7 +6327,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid-doctrine/issues", - "source": "https://github.com/ramsey/uuid-doctrine/tree/1.7.0" + "source": "https://github.com/ramsey/uuid-doctrine/tree/2.0.0" }, "funding": [ { @@ -7084,11 +6335,11 @@ "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", + "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid-doctrine", "type": "tidelift" } ], - "time": "2021-08-07T16:48:33+00:00" + "time": "2022-12-20T23:38:28+00:00" }, { "name": "respect/stringifier", @@ -7214,48 +6465,6 @@ }, "time": "2021-03-19T14:12:45+00:00" }, - { - "name": "robrichards/xmlseclibs", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/robrichards/xmlseclibs.git", - "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/f8f19e58f26cdb42c54b214ff8a820760292f8df", - "reference": "f8f19e58f26cdb42c54b214ff8a820760292f8df", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "php": ">= 5.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "RobRichards\\XMLSecLibs\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "A PHP library for XML Security", - "homepage": "https://github.com/robrichards/xmlseclibs", - "keywords": [ - "security", - "signature", - "xml", - "xmldsig" - ], - "support": { - "issues": "https://github.com/robrichards/xmlseclibs/issues", - "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.1" - }, - "time": "2020-09-05T13:00:25+00:00" - }, { "name": "sabberworm/php-css-parser", "version": "8.4.0", @@ -7780,133 +6989,6 @@ ], "time": "2020-11-03T09:10:25+00:00" }, - { - "name": "stof/doctrine-extensions-bundle", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/stof/StofDoctrineExtensionsBundle.git", - "reference": "ef469a9d3b8be23d4c746d558742cc1b3e2588cb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/stof/StofDoctrineExtensionsBundle/zipball/ef469a9d3b8be23d4c746d558742cc1b3e2588cb", - "reference": "ef469a9d3b8be23d4c746d558742cc1b3e2588cb", - "shasum": "" - }, - "require": { - "gedmo/doctrine-extensions": "^2.3.4 || ^3.0.0", - "php": "^7.1.3 || ^8.0", - "symfony/config": "^4.4 || ^5.2", - "symfony/dependency-injection": "^4.4 || ^5.2", - "symfony/event-dispatcher": "^4.4 || ^5.2", - "symfony/http-kernel": "^4.4 || ^5.2" - }, - "require-dev": { - "symfony/mime": "^4.4 || ^5.2", - "symfony/phpunit-bridge": "^v5.2.4", - "symfony/security-core": "^4.4 || ^5.2" - }, - "suggest": { - "doctrine/doctrine-bundle": "to use the ORM extensions", - "doctrine/mongodb-odm-bundle": "to use the MongoDB ODM extensions", - "symfony/mime": "To use the Mime component integration for Uploadable" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.6.x-dev" - } - }, - "autoload": { - "psr-4": { - "Stof\\DoctrineExtensionsBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - } - ], - "description": "Integration of the gedmo/doctrine-extensions with Symfony", - "homepage": "https://github.com/stof/StofDoctrineExtensionsBundle", - "keywords": [ - "behaviors", - "doctrine2", - "extensions", - "gedmo", - "loggable", - "nestedset", - "sluggable", - "sortable", - "timestampable", - "translatable", - "tree" - ], - "support": { - "issues": "https://github.com/stof/StofDoctrineExtensionsBundle/issues", - "source": "https://github.com/stof/StofDoctrineExtensionsBundle/tree/v1.6.0" - }, - "time": "2021-03-05T13:09:06+00:00" - }, - { - "name": "sumup/sumup-ecom-php-sdk", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/sumup/sumup-ecom-php-sdk.git", - "reference": "b294963b9861abaae53adb6db5ca209059fcf845" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sumup/sumup-ecom-php-sdk/zipball/b294963b9861abaae53adb6db5ca209059fcf845", - "reference": "b294963b9861abaae53adb6db5ca209059fcf845", - "shasum": "" - }, - "require": { - "php": "^5.6|^7.0" - }, - "suggest": { - "guzzlehttp/guzzle": "Allows for implementation of the Guzzle HTTP client" - }, - "type": "library", - "autoload": { - "psr-4": { - "SumUp\\": "src/SumUp/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "proprietary" - ], - "authors": [ - { - "name": "SumUp", - "email": "integration@sumup.com", - "homepage": "https://github.com/sumup" - } - ], - "description": "SumUp eCom SDK for PHP", - "homepage": "https://developer.sumup.com", - "keywords": [ - "checkout", - "ecommerce", - "payment", - "payment processing", - "sdk", - "sumup" - ], - "support": { - "issues": "https://github.com/sumup/sumup-ecom-php-sdk/issues", - "source": "https://github.com/sumup/sumup-ecom-php-sdk/tree/master" - }, - "time": "2019-08-28T14:48:03+00:00" - }, { "name": "symfony/amqp-messenger", "version": "v5.3.14", @@ -9841,94 +8923,6 @@ ], "time": "2022-01-02T09:51:59+00:00" }, - { - "name": "symfony/maker-bundle", - "version": "v1.36.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/maker-bundle.git", - "reference": "716eee9c8b10b33e682df1b7d80b9061887e9691" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/716eee9c8b10b33e682df1b7d80b9061887e9691", - "reference": "716eee9c8b10b33e682df1b7d80b9061887e9691", - "shasum": "" - }, - "require": { - "doctrine/inflector": "^1.2|^2.0", - "nikic/php-parser": "^4.11", - "php": ">=7.1.3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" - }, - "require-dev": { - "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^1.12.3|^2.0", - "doctrine/orm": "^2.3", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/phpunit-bridge": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.0|^3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-main": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Bundle\\MakerBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Maker helps you create empty commands, controllers, form classes, tests and more so you can forget about writing boilerplate code.", - "homepage": "https://symfony.com/doc/current/bundles/SymfonyMakerBundle/index.html", - "keywords": [ - "code generator", - "generator", - "scaffold", - "scaffolding" - ], - "support": { - "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.36.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-12-01T00:27:38+00:00" - }, { "name": "symfony/messenger", "version": "v5.3.14", @@ -10311,61 +9305,14 @@ } ], "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.3.7" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-08-04T21:20:46+00:00" - }, - { - "name": "symfony/orm-pack", - "version": "v2.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/orm-pack.git", - "reference": "357f6362067b1ebb94af321b79f8939fc9118751" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/orm-pack/zipball/357f6362067b1ebb94af321b79f8939fc9118751", - "reference": "357f6362067b1ebb94af321b79f8939fc9118751", - "shasum": "" - }, - "require": { - "composer/package-versions-deprecated": "*", - "doctrine/doctrine-bundle": "*", - "doctrine/doctrine-migrations-bundle": "*", - "doctrine/orm": "*", - "symfony/proxy-manager-bridge": "*" - }, - "type": "symfony-pack", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" + "homepage": "https://symfony.com", + "keywords": [ + "config", + "configuration", + "options" ], - "description": "A pack for the Doctrine ORM", "support": { - "issues": "https://github.com/symfony/orm-pack/issues", - "source": "https://github.com/symfony/orm-pack/tree/v2.1.0" + "source": "https://github.com/symfony/options-resolver/tree/v5.3.7" }, "funding": [ { @@ -10381,7 +9328,7 @@ "type": "tidelift" } ], - "time": "2020-12-22T16:33:52+00:00" + "time": "2021-08-04T21:20:46+00:00" }, { "name": "symfony/password-hasher", @@ -10878,74 +9825,6 @@ ], "time": "2022-11-03T14:55:06+00:00" }, - { - "name": "symfony/polyfill-php70", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T14:02:19+00:00" - }, { "name": "symfony/polyfill-php73", "version": "v1.27.0", @@ -11189,16 +10068,16 @@ }, { "name": "symfony/process", - "version": "v5.3.12", + "version": "v5.3.14", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "e498803a6e95ede78e9d5646ad32a2255c033a6a" + "reference": "8bbae08c19308b9493ad235386144cbefec83cb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/e498803a6e95ede78e9d5646ad32a2255c033a6a", - "reference": "e498803a6e95ede78e9d5646ad32a2255c033a6a", + "url": "https://api.github.com/repos/symfony/process/zipball/8bbae08c19308b9493ad235386144cbefec83cb0", + "reference": "8bbae08c19308b9493ad235386144cbefec83cb0", "shasum": "" }, "require": { @@ -11231,7 +10110,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.3.12" + "source": "https://github.com/symfony/process/tree/v5.3.14" }, "funding": [ { @@ -11247,7 +10126,7 @@ "type": "tidelift" } ], - "time": "2021-11-22T22:39:13+00:00" + "time": "2022-01-24T19:35:44+00:00" }, { "name": "symfony/property-access", @@ -12243,53 +11122,6 @@ ], "time": "2021-11-24T08:13:09+00:00" }, - { - "name": "symfony/serializer-pack", - "version": "v1.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/serializer-pack.git", - "reference": "61173947057d5e1bf1c79e2a6ab6a8430be0602e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer-pack/zipball/61173947057d5e1bf1c79e2a6ab6a8430be0602e", - "reference": "61173947057d5e1bf1c79e2a6ab6a8430be0602e", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0", - "phpdocumentor/reflection-docblock": "*", - "symfony/property-access": "*", - "symfony/property-info": "*", - "symfony/serializer": "*" - }, - "type": "symfony-pack", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A pack for the Symfony serializer", - "support": { - "issues": "https://github.com/symfony/serializer-pack/issues", - "source": "https://github.com/symfony/serializer-pack/tree/v1.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-19T08:52:16+00:00" - }, { "name": "symfony/stopwatch", "version": "v5.3.4", @@ -12435,101 +11267,6 @@ ], "time": "2021-10-27T18:21:46+00:00" }, - { - "name": "symfony/translation", - "version": "v5.3.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "17a965c8f3b1b348cf15d903ac53942984561f8a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/17a965c8f3b1b348cf15d903ac53942984561f8a", - "reference": "17a965c8f3b1b348cf15d903ac53942984561f8a", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^2.3" - }, - "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" - }, - "provide": { - "symfony/translation-implementation": "2.3" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^4.4|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/translation/tree/v5.3.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-04T16:37:19+00:00" - }, { "name": "symfony/twig-bridge", "version": "v5.3.11", @@ -13280,13 +12017,6 @@ } }, "autoload": { - "psr-4": { - "Safe\\": [ - "lib/", - "deprecated/", - "generated/" - ] - }, "files": [ "deprecated/apc.php", "deprecated/libevent.php", @@ -13377,7 +12107,14 @@ "generated/yaz.php", "generated/zip.php", "generated/zlib.php" - ] + ], + "psr-4": { + "Safe\\": [ + "lib/", + "deprecated/", + "generated/" + ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -13660,6 +12397,9 @@ "autoload": { "psr-4": { "Jose\\": "src/", + "Jose\\Component\\Core\\Util\\Ecc\\": [ + "src/Ecc" + ], "Jose\\Component\\Signature\\Algorithm\\": [ "src/SignatureAlgorithm/ECDSA", "src/SignatureAlgorithm/EdDSA", @@ -13668,9 +12408,6 @@ "src/SignatureAlgorithm/RSA", "src/SignatureAlgorithm/Experimental" ], - "Jose\\Component\\Core\\Util\\Ecc\\": [ - "src/Ecc" - ], "Jose\\Component\\Encryption\\Algorithm\\": [ "src/EncryptionAlgorithm/Experimental" ], @@ -13842,6 +12579,62 @@ } ], "packages-dev": [ + { + "name": "nikic/php-parser", + "version": "v4.12.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", + "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "php": ">=7.0" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + }, + "bin": [ + "bin/php-parse" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.9-dev" + } + }, + "autoload": { + "psr-4": { + "PhpParser\\": "lib/PhpParser" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov" + } + ], + "description": "A PHP parser written in PHP", + "keywords": [ + "parser", + "php" + ], + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" + }, + "time": "2021-07-21T10:44:31+00:00" + }, { "name": "phar-io/manifest", "version": "2.0.3", @@ -13955,27 +12748,28 @@ }, { "name": "phpspec/prophecy", - "version": "v1.15.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/15873c65b207b07765dbc3c95d20fdf4a320cbe2", + "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", + "doctrine/instantiator": "^1.2 || ^2.0", + "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", "phpdocumentor/reflection-docblock": "^5.2", "sebastian/comparator": "^3.0 || ^4.0", "sebastian/recursion-context": "^3.0 || ^4.0" }, "require-dev": { "phpspec/phpspec": "^6.0 || ^7.0", + "phpstan/phpstan": "^1.9", "phpunit/phpunit": "^8.0 || ^9.0" }, "type": "library", @@ -14016,9 +12810,9 @@ ], "support": { "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + "source": "https://github.com/phpspec/prophecy/tree/v1.17.0" }, - "time": "2021-12-08T12:19:24+00:00" + "time": "2023-02-02T15:41:36+00:00" }, { "name": "phpunit/php-code-coverage", @@ -15473,21 +14267,19 @@ } ], "aliases": [], - "minimum-stability": "stable", + "minimum-stability": "dev", "stability-flags": { - "conduction/commongroundbundle": 20, - "conduction/digidbundle": 20, - "conduction/samlbundle": 20 + "commongateway/corebundle": 20 }, "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.4.0", + "php": "^7.4.0 || ^8.1.0 || ^8.2.0", "ext-ctype": "*", "ext-fileinfo": "*", "ext-iconv": "*", "ext-json": "*" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/api/config/bundles.php b/api/config/bundles.php index e3ff55319..432377853 100644 --- a/api/config/bundles.php +++ b/api/config/bundles.php @@ -18,5 +18,4 @@ Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], League\FlysystemBundle\FlysystemBundle::class => ['all' => true], Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], - Knp\Bundle\MarkdownBundle\KnpMarkdownBundle::class => ['all' => true], ]; diff --git a/api/public/bundles/commonground/images/conduction/conduction_white_on_blue.svg b/api/public/bundles/commonground/images/conduction/conduction_white_on_blue.svg deleted file mode 100644 index 5652f3b72..000000000 --- a/api/public/bundles/commonground/images/conduction/conduction_white_on_blue.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/conduction/condution_blue_on_transparant.svg b/api/public/bundles/commonground/images/conduction/condution_blue_on_transparant.svg deleted file mode 100644 index 1603bca89..000000000 --- a/api/public/bundles/commonground/images/conduction/condution_blue_on_transparant.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/conduction/condution_blue_on_white.svg b/api/public/bundles/commonground/images/conduction/condution_blue_on_white.svg deleted file mode 100644 index f02ee545d..000000000 --- a/api/public/bundles/commonground/images/conduction/condution_blue_on_white.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/conduction/condution_white_on_transparant.svg b/api/public/bundles/commonground/images/conduction/condution_white_on_transparant.svg deleted file mode 100644 index 3bd4bcce3..000000000 --- a/api/public/bundles/commonground/images/conduction/condution_white_on_transparant.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/municipalities/s-hertogenbosch.svg b/api/public/bundles/commonground/images/municipalities/s-hertogenbosch.svg deleted file mode 100644 index 1c558d0c0..000000000 --- a/api/public/bundles/commonground/images/municipalities/s-hertogenbosch.svg +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/api/public/bundles/commonground/images/municipalities/utrecht.svg b/api/public/bundles/commonground/images/municipalities/utrecht.svg deleted file mode 100644 index 7ba03c2af..000000000 --- a/api/public/bundles/commonground/images/municipalities/utrecht.svg +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/api/symfony.lock b/api/symfony.lock index c09d89550..728077e7c 100644 --- a/api/symfony.lock +++ b/api/symfony.lock @@ -215,9 +215,6 @@ "khanamiryan/qrcode-detector-decoder": { "version": "1.0.6" }, - "knplabs/knp-markdown-bundle": { - "version": "1.10.0" - }, "laminas/laminas-code": { "version": "4.4.2" }, @@ -252,9 +249,6 @@ "masterminds/html5": { "version": "2.7.5" }, - "michelf/php-markdown": { - "version": "1.9.1" - }, "mongodb/mongodb": { "version": "1.15.0" }, @@ -664,6 +658,9 @@ "symfony/polyfill-php81": { "version": "v1.23.0" }, + "symfony/process": { + "version": "v5.3.14" + }, "symfony/property-access": { "version": "v5.3.4" }, From ea88f5ce014ef38ef3ca74002593e9d339b37a3e Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 30 Jan 2024 11:33:09 +0100 Subject: [PATCH 03/15] Require symfony sendinblue mailer and ext-ftp --- api/.env | 5 +++ api/Dockerfile | 1 + api/composer.json | 1 + api/composer.lock | 77 +++++++++++++++++++++++++++++++++++++++++++---- api/symfony.lock | 9 ++++++ 5 files changed, 87 insertions(+), 6 deletions(-) diff --git a/api/.env b/api/.env index 8caf27abc..06c02c64d 100644 --- a/api/.env +++ b/api/.env @@ -30,3 +30,8 @@ DATABASE_URL="postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVers ###> nelmio/cors-bundle ### CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' ###< nelmio/cors-bundle ### + +###> symfony/sendinblue-mailer ### +# MAILER_DSN=sendinblue+api://KEY@default +# MAILER_DSN=sendinblue+smtp://USERNAME:PASSWORD@default +###< symfony/sendinblue-mailer ### diff --git a/api/Dockerfile b/api/Dockerfile index a075b9ea6..e12296318 100644 --- a/api/Dockerfile +++ b/api/Dockerfile @@ -48,6 +48,7 @@ RUN set -eux; \ pcntl \ gd \ gmp \ + ftp \ ; \ pecl install \ apcu-${APCU_VERSION} \ diff --git a/api/composer.json b/api/composer.json index 16b81286e..0f25fc202 100644 --- a/api/composer.json +++ b/api/composer.json @@ -62,6 +62,7 @@ "symfony/proxy-manager-bridge": "5.3.*", "symfony/runtime": "5.3.*", "symfony/security-bundle": "5.3.*", + "symfony/sendinblue-mailer": "5.3.*", "symfony/serializer": "5.3.*", "symfony/twig-bundle": "5.3.*", "symfony/validator": "5.3.*", diff --git a/api/composer.lock b/api/composer.lock index 3491c9121..4c74785ae 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "b06ff88d1873f12139f276bf48c7d1d1", + "content-hash": "48e6767cf9de82cabd41909b54ab0163", "packages": [ { "name": "adbario/php-dot-notation", @@ -552,12 +552,12 @@ "source": { "type": "git", "url": "https://github.com/CommonGateway/CoreBundle.git", - "reference": "8349de2b20097e5fc4d7a29f283f949c01d870eb" + "reference": "081a03a639680a32db5d70bd5a44090caaffa113" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/8349de2b20097e5fc4d7a29f283f949c01d870eb", - "reference": "8349de2b20097e5fc4d7a29f283f949c01d870eb", + "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/081a03a639680a32db5d70bd5a44090caaffa113", + "reference": "081a03a639680a32db5d70bd5a44090caaffa113", "shasum": "" }, "require": { @@ -586,7 +586,7 @@ "mongodb/mongodb": "^1.15", "monolog/monolog": "^2.8.0", "nelmio/cors-bundle": "^2.1", - "php": "^7.4.0 || ^8.1.0 || ^8.2.0", + "php": "^7.4.0 || ^8.0.0 || ^8.1.0 || ^8.2.0", "phpdocumentor/reflection-docblock": "^5.2", "phpoffice/phpspreadsheet": "^1.29", "phpoffice/phpword": "^0.18.2", @@ -668,7 +668,7 @@ "issues": "https://github.com/CommonGateway/CoreBundle/issues", "source": "https://github.com/CommonGateway/CoreBundle" }, - "time": "2023-10-13T10:59:01+00:00" + "time": "2023-10-20T11:20:11+00:00" }, { "name": "composer/ca-bundle", @@ -11020,6 +11020,71 @@ ], "time": "2021-11-05T16:25:46+00:00" }, + { + "name": "symfony/sendinblue-mailer", + "version": "v5.3.14", + "source": { + "type": "git", + "url": "https://github.com/symfony/sendinblue-mailer.git", + "reference": "269383a0dac2ab4d5a1a0f0c042ba114d132cb24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/sendinblue-mailer/zipball/269383a0dac2ab4d5a1a0f0c042ba114d132cb24", + "reference": "269383a0dac2ab4d5a1a0f0c042ba114d132cb24", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/mailer": "^5.1" + }, + "require-dev": { + "symfony/http-client": "^4.4|^5.0" + }, + "type": "symfony-bridge", + "autoload": { + "psr-4": { + "Symfony\\Component\\Mailer\\Bridge\\Sendinblue\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Sendinblue Mailer Bridge", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/sendinblue-mailer/tree/v5.3.14" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-01-02T09:51:59+00:00" + }, { "name": "symfony/serializer", "version": "v5.3.12", diff --git a/api/symfony.lock b/api/symfony.lock index 728077e7c..685f5f154 100644 --- a/api/symfony.lock +++ b/api/symfony.lock @@ -713,6 +713,15 @@ "symfony/security-http": { "version": "v5.3.6" }, + "symfony/sendinblue-mailer": { + "version": "5.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.2", + "ref": "ae1cf494ce06b9a4578a8445c610402a1676ee8d" + } + }, "symfony/serializer": { "version": "v5.3.4" }, From a3193c7865768096aa106258eb43dd82f1388702 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 30 Jan 2024 14:32:57 +0100 Subject: [PATCH 04/15] Update doctrine to highest version before updating symfony --- api/composer.json | 19 +- api/composer.lock | 799 ++++++++++++++++++++++++---------------------- api/symfony.lock | 7 +- 3 files changed, 436 insertions(+), 389 deletions(-) diff --git a/api/composer.json b/api/composer.json index 0f25fc202..e560556ac 100644 --- a/api/composer.json +++ b/api/composer.json @@ -12,21 +12,23 @@ "adbario/php-dot-notation": "^3", "alcaeus/mongo-php-adapter": "^1.2", "api-platform/core": "^2.6", - "beberlei/doctrineextensions": "^1.3", - "commongateway/corebundle": "dev-feature/MF-62/PHP-8.2", + "commongateway/corebundle": "dev-feature/MF-62/doctrine", "composer/ca-bundle": "*", "composer/package-versions-deprecated": "1.11.99.3", "composer/semver": "*", "composer/xdebug-handler": "*", - "doctrine/annotations": "^1.0", - "doctrine/doctrine-bundle": "^2.4", - "doctrine/doctrine-fixtures-bundle": "*", + "doctrine/annotations": "^1.14", + "doctrine/doctrine-bundle": "^2.7", + "doctrine/doctrine-fixtures-bundle": "^3.2", "doctrine/doctrine-migrations-bundle": "^3.1", - "doctrine/orm": "^2.9", + "doctrine/event-manager": "^1.2", + "doctrine/lexer": "^2.0", + "doctrine/orm": "2.14", + "doctrine/persistence": "^2.4", "dompdf/dompdf": "^2", "endroid/qr-code-bundle": "3.4", "friendsofphp/proxy-manager-lts": "*", - "gedmo/doctrine-extensions": "*", + "gedmo/doctrine-extensions": "^3.5", "guzzlehttp/guzzle": "6.5.8", "guzzlehttp/psr7": "1.9", "hautelook/alice-bundle": "^2.9.0", @@ -42,7 +44,8 @@ "phpdocumentor/reflection-docblock": "^5.2", "phpoffice/phpspreadsheet": "^1.29", "phpoffice/phpword": "^0.18.2", - "ramsey/uuid-doctrine": "*", + "ramsey/uuid": "*", + "ramsey/uuid-doctrine": "^2.0", "respect/validation": "^2.2", "setono/cron-expression-bundle": "^1.5", "symfony/asset": "5.3.*", diff --git a/api/composer.lock b/api/composer.lock index 4c74785ae..f8869c88b 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "48e6767cf9de82cabd41909b54ab0163", + "content-hash": "9172b94c1940b3c315290de2051834c0", "packages": [ { "name": "adbario/php-dot-notation", @@ -337,63 +337,6 @@ }, "time": "2022-03-14T02:02:36+00:00" }, - { - "name": "beberlei/doctrineextensions", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/beberlei/DoctrineExtensions.git", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/008f162f191584a6c37c03a803f718802ba9dd9a", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a", - "shasum": "" - }, - "require": { - "doctrine/orm": "^2.7", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", - "nesbot/carbon": "*", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "symfony/yaml": "^4.2 || ^5.0", - "zf1/zend-date": "^1.12", - "zf1/zend-registry": "^1.12" - }, - "type": "library", - "autoload": { - "psr-4": { - "DoctrineExtensions\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Steve Lacey", - "email": "steve@steve.ly" - } - ], - "description": "A set of extensions to Doctrine 2 that add support for additional query functions available in MySQL, Oracle, PostgreSQL and SQLite.", - "keywords": [ - "database", - "doctrine", - "orm" - ], - "support": { - "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.3.0" - }, - "time": "2020-11-29T07:37:23+00:00" - }, { "name": "behat/transliterator", "version": "v1.5.0", @@ -548,28 +491,27 @@ }, { "name": "commongateway/corebundle", - "version": "dev-feature/MF-62/PHP-8.2", + "version": "dev-feature/MF-62/doctrine", "source": { "type": "git", "url": "https://github.com/CommonGateway/CoreBundle.git", - "reference": "081a03a639680a32db5d70bd5a44090caaffa113" + "reference": "5623500a4258c4eb02f9d5d8e93976db79be8088" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/081a03a639680a32db5d70bd5a44090caaffa113", - "reference": "081a03a639680a32db5d70bd5a44090caaffa113", + "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/5623500a4258c4eb02f9d5d8e93976db79be8088", + "reference": "5623500a4258c4eb02f9d5d8e93976db79be8088", "shasum": "" }, "require": { "adbario/php-dot-notation": "^3", "alcaeus/mongo-php-adapter": "^1.2", "api-platform/core": "^2.6", - "beberlei/doctrineextensions": "^1.3", "composer/package-versions-deprecated": "1.11.99.3", - "doctrine/annotations": "^1.0", - "doctrine/doctrine-bundle": "^2.4", + "doctrine/annotations": "^1.14 | ^2.0", + "doctrine/doctrine-bundle": "^2.7", "doctrine/doctrine-migrations-bundle": "^3.1", - "doctrine/orm": "^2.9", + "doctrine/orm": "^2.14", "dompdf/dompdf": "^2", "endroid/qr-code-bundle": "3.4", "ext-ctype": "*", @@ -668,7 +610,7 @@ "issues": "https://github.com/CommonGateway/CoreBundle/issues", "source": "https://github.com/CommonGateway/CoreBundle" }, - "time": "2023-10-20T11:20:11+00:00" + "time": "2024-01-30T13:09:04+00:00" }, { "name": "composer/ca-bundle", @@ -1082,30 +1024,34 @@ }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.14.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", "shasum": "" }, "require": { - "doctrine/lexer": "1.*", + "doctrine/lexer": "^1 || ^2", "ext-tokenizer": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3" }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6", + "vimeo/psalm": "^4.10" + }, + "suggest": { + "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" }, "type": "library", "autoload": { @@ -1146,20 +1092,24 @@ "docblock", "parser" ], - "time": "2021-08-05T19:00:23+00:00" + "support": { + "issues": "https://github.com/doctrine/annotations/issues", + "source": "https://github.com/doctrine/annotations/tree/1.14.3" + }, + "time": "2023-02-01T09:20:38+00:00" }, { "name": "doctrine/cache", - "version": "2.1.1", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce" + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce", - "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { @@ -1169,18 +1119,12 @@ "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", - "doctrine/coding-standard": "^8.0", - "mongodb/mongodb": "^1.1", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "predis/predis": "~1.0", + "doctrine/coding-standard": "^9", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev", - "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev" - }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" + "symfony/cache": "^4.4 || ^5.4 || ^6", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, "type": "library", "autoload": { @@ -1227,6 +1171,10 @@ "redis", "xcache" ], + "support": { + "issues": "https://github.com/doctrine/cache/issues", + "source": "https://github.com/doctrine/cache/tree/2.2.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -1241,30 +1189,31 @@ "type": "tidelift" } ], - "time": "2021-07-17T14:49:29+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { "name": "doctrine/collections", - "version": "1.6.8", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" + "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", + "url": "https://api.github.com/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e", + "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1.3 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^0.12", + "doctrine/coding-standard": "^9.0 || ^10.0", + "phpstan/phpstan": "^1.4.8", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.2.1" + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -1306,39 +1255,44 @@ "iterators", "php" ], - "time": "2021-08-10T18:51:53+00:00" + "support": { + "issues": "https://github.com/doctrine/collections/issues", + "source": "https://github.com/doctrine/collections/tree/1.8.0" + }, + "time": "2022-09-01T20:12:10+00:00" }, { "name": "doctrine/common", - "version": "3.1.2", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a" + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/a036d90c303f3163b5be8b8fde9b6755b2be4a3a", - "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a", + "url": "https://api.github.com/repos/doctrine/common/zipball/8b5e5650391f851ed58910b3e3d48a71062eeced", + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced", "shasum": "" }, "require": { - "doctrine/persistence": "^2.0", + "doctrine/persistence": "^2.0 || ^3.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", - "symfony/phpunit-bridge": "^4.0.5", + "symfony/phpunit-bridge": "^6.1", "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1378,6 +1332,10 @@ "doctrine", "php" ], + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/3.4.3" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -1392,37 +1350,44 @@ "type": "tidelift" } ], - "time": "2021-02-10T20:18:51+00:00" + "time": "2022-10-09T11:47:59+00:00" }, { "name": "doctrine/data-fixtures", - "version": "1.5.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "51d3d4880d28951fff42a635a2389f8c63baddc5" + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/51d3d4880d28951fff42a635a2389f8c63baddc5", - "reference": "51d3d4880d28951fff42a635a2389f8c63baddc5", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", "shasum": "" }, "require": { - "doctrine/common": "^2.13|^3.0", - "doctrine/persistence": "^1.3.3|^2.0", - "php": "^7.2 || ^8.0" + "doctrine/deprecations": "^0.5.3 || ^1.0", + "doctrine/persistence": "^2.0|^3.0", + "php": "^7.4 || ^8.0" }, "conflict": { + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^8.2", - "doctrine/dbal": "^2.5.4", + "doctrine/annotations": "^1.12 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", - "doctrine/orm": "^2.7.0", + "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", - "phpunit/phpunit": "^8.0" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6.13 || ^10.4.2", + "symfony/cache": "^5.4 || ^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6.3 || ^7", + "vimeo/psalm": "^5.9" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -1433,7 +1398,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" + "Doctrine\\Common\\DataFixtures\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1447,13 +1412,13 @@ } ], "description": "Data Fixtures for all Doctrine Object Managers", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org", "keywords": [ "database" ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.5.0" + "source": "https://github.com/doctrine/data-fixtures/tree/1.7.0" }, "funding": [ { @@ -1469,38 +1434,44 @@ "type": "tidelift" } ], - "time": "2021-01-23T10:20:43+00:00" + "time": "2023-11-24T11:18:31+00:00" }, { "name": "doctrine/dbal", - "version": "2.13.2", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4" + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4", - "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", + "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", "shasum": "" }, "require": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" + "composer-runtime-api": "^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/deprecations": "^0.5.3|^1", + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2020.2", - "phpstan/phpstan": "0.12.81", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.5", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.6.4" + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.56", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.15", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0", + "vimeo/psalm": "4.30.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -1511,7 +1482,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1554,11 +1525,14 @@ "queryobject", "sasql", "sql", - "sqlanywhere", "sqlite", "sqlserver", "sqlsrv" ], + "support": { + "issues": "https://github.com/doctrine/dbal/issues", + "source": "https://github.com/doctrine/dbal/tree/3.8.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -1573,29 +1547,33 @@ "type": "tidelift" } ], - "time": "2021-06-18T21:48:39+00:00" + "time": "2024-01-25T21:44:02+00:00" }, { "name": "doctrine/deprecations", - "version": "v0.5.3", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314", - "reference": "9504165960a1f83cc1480e2be1dd0a0478561314", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0|^7.0|^8.0", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "psr/log": "^1.0" + "doctrine/coding-standard": "^9", + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -1612,27 +1590,31 @@ ], "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", "homepage": "https://www.doctrine-project.org/", - "time": "2021-03-21T12:59:47+00:00" + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + }, + "time": "2023-09-27T20:04:15+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.5.7", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "1e0d1d7a5982eeebc37dcb4d77bb1a5c5961d96d" + "reference": "d2088fc50494e4e7441fecca54732245a613eeb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/1e0d1d7a5982eeebc37dcb4d77bb1a5c5961d96d", - "reference": "1e0d1d7a5982eeebc37dcb4d77bb1a5c5961d96d", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d2088fc50494e4e7441fecca54732245a613eeb6", + "reference": "d2088fc50494e4e7441fecca54732245a613eeb6", "shasum": "" }, "require": { "doctrine/annotations": "^1", "doctrine/cache": "^1.11 || ^2.0", "doctrine/dbal": "^2.13.1|^3.3.2", - "doctrine/persistence": "^2.2", + "doctrine/persistence": "^2.2|^3", "doctrine/sql-formatter": "^1.0.1", "php": "^7.1 || ^8.0", "symfony/cache": "^4.3.3|^5.0|^6.0", @@ -1645,16 +1627,17 @@ "symfony/service-contracts": "^1.1.1|^2.0|^3" }, "conflict": { - "doctrine/orm": "<2.9|>=3.0", + "doctrine/orm": "<2.10|>=3.0", "twig/twig": "<1.34|>=2.0,<2.4" }, "require-dev": { "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.9 || ^3.0", + "doctrine/orm": "^2.11 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0", "psalm/plugin-phpunit": "^0.16.1", "psalm/plugin-symfony": "^3", + "psr/log": "^1.1.4|^2.0|^3.0", "symfony/phpunit-bridge": "^5.2|^6.0", "symfony/property-info": "^4.3.3|^5.0|^6.0", "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", @@ -1709,7 +1692,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.5.7" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.7.0" }, "funding": [ { @@ -1725,20 +1708,20 @@ "type": "tidelift" } ], - "time": "2022-03-05T10:29:13+00:00" + "time": "2022-06-10T10:55:26+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.4", + "version": "3.4.5", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb" + "reference": "5988484f79362cd7d06564bd11be7ce622e08c87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", - "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/5988484f79362cd7d06564bd11be7ce622e08c87", + "reference": "5988484f79362cd7d06564bd11be7ce622e08c87", "shasum": "" }, "require": { @@ -1754,7 +1737,7 @@ "symfony/http-kernel": "^3.4|^4.3|^5.0|^6.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^12", "phpstan/phpstan": "^1.4.10", "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", "symfony/phpunit-bridge": "^6.0.8", @@ -1792,7 +1775,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.4" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.5" }, "funding": [ { @@ -1808,37 +1791,38 @@ "type": "tidelift" } ], - "time": "2023-05-02T15:12:16+00:00" + "time": "2023-10-29T18:36:06+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.1.1", + "version": "3.2.5", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5" + "reference": "90be4395597432a05ae9aad5e6fe490622226a77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/91f0a5e2356029575f3038432cc188b12f9d5da5", - "reference": "91f0a5e2356029575f3038432cc188b12f9d5da5", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/90be4395597432a05ae9aad5e6fe490622226a77", + "reference": "90be4395597432a05ae9aad5e6fe490622226a77", "shasum": "" }, "require": { "doctrine/doctrine-bundle": "~1.0|~2.0", - "doctrine/migrations": "^3.1", + "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0" + "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "doctrine/orm": "^2.6", "doctrine/persistence": "^1.3||^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0|^8.0|^9.0" + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5|^9.5", + "vimeo/psalm": "^4.22" }, "type": "symfony-bundle", "autoload": { @@ -1860,11 +1844,11 @@ }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org" + "homepage": "https://www.doctrine-project.org" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DoctrineMigrationsBundle", @@ -1874,6 +1858,10 @@ "migrations", "schema" ], + "support": { + "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.5" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -1888,41 +1876,39 @@ "type": "tidelift" } ], - "time": "2021-04-10T16:48:53+00:00" + "time": "2023-11-13T08:28:17+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.1", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/41370af6a30faa9dc0368c4a6814d596e81aba7f", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1 || ^8.0" }, "conflict": { - "doctrine/common": "<2.9@dev" + "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.8", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.24" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1964,6 +1950,10 @@ "event system", "events" ], + "support": { + "issues": "https://github.com/doctrine/event-manager/issues", + "source": "https://github.com/doctrine/event-manager/tree/1.2.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -1978,38 +1968,34 @@ "type": "tidelift" } ], - "time": "2020-05-29T18:28:51+00:00" + "time": "2022-10-12T20:51:15+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.3", + "version": "2.0.9", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", - "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^7.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-strict-rules": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" @@ -2055,6 +2041,10 @@ "uppercase", "words" ], + "support": { + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.0.9" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2069,33 +2059,34 @@ "type": "tidelift" } ], - "time": "2020-05-29T15:13:26+00:00" + "time": "2024-01-15T18:05:13+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -2120,6 +2111,10 @@ "constructor", "instantiate" ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2134,39 +2129,37 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "doctrine/deprecations": "^1.0", + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2196,6 +2189,10 @@ "parser", "php" ], + "support": { + "issues": "https://github.com/doctrine/lexer/issues", + "source": "https://github.com/doctrine/lexer/tree/2.1.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2210,49 +2207,49 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { "name": "doctrine/migrations", - "version": "3.2.1", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "818e31703b4fb353c0c23caa714273fc64efa675" + "reference": "362f07ff732a2b4498be919561536800cec29500" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/818e31703b4fb353c0c23caa714273fc64efa675", - "reference": "818e31703b4fb353c0c23caa714273fc64efa675", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/362f07ff732a2b4498be919561536800cec29500", + "reference": "362f07ff732a2b4498be919561536800cec29500", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/dbal": "^2.11", - "doctrine/deprecations": "^0.5.3", + "composer-runtime-api": "^2", + "doctrine/dbal": "^2.11 || ^3.0", + "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.0", "friendsofphp/proxy-manager-lts": "^1.0", "php": "^7.2 || ^8.0", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^3.4 || ^4.4.16 || ^5.0", - "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0" + "symfony/console": "^3.4 || ^4.4.16 || ^5.0 || ^6.0", + "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "doctrine/orm": "^2.6", "doctrine/persistence": "^1.3 || ^2.0", "doctrine/sql-formatter": "^1.0", "ergebnis/composer-normalize": "^2.9", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpstan/phpstan-symfony": "^0.12", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-deprecation-rules": "^1", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.1", "phpunit/phpunit": "^8.5 || ^9.4", - "symfony/cache": "^3.4 || ^4.0 || ^5.0", - "symfony/process": "^3.4 || ^4.0 || ^5.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0" + "symfony/cache": "^3.4.26 || ^4.2.12 || ^5.0 || ^6.0", + "symfony/process": "^3.4 || ^4.0 || ^5.0 || ^6.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -2298,6 +2295,10 @@ "dbal", "migrations" ], + "support": { + "issues": "https://github.com/doctrine/migrations/issues", + "source": "https://github.com/doctrine/migrations/tree/3.4.3" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -2312,52 +2313,59 @@ "type": "tidelift" } ], - "time": "2021-08-03T11:49:27+00:00" + "time": "2023-09-07T12:23:11+00:00" }, { "name": "doctrine/orm", - "version": "2.9.5", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "77cc86ed880e3f1f6c9c5819e131a8aaeeeee0da" + "reference": "f82485e651763fbd1b34879726f4d3b91c358bd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/77cc86ed880e3f1f6c9c5819e131a8aaeeeee0da", - "reference": "77cc86ed880e3f1f6c9c5819e131a8aaeeeee0da", + "url": "https://api.github.com/repos/doctrine/orm/zipball/f82485e651763fbd1b34879726f4d3b91c358bd9", + "reference": "f82485e651763fbd1b34879726f4d3b91c358bd9", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.13", + "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5", + "doctrine/collections": "^1.5 || ^2.0", "doctrine/common": "^3.0.3", - "doctrine/dbal": "^2.13.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.1", + "doctrine/dbal": "^2.13.1 || ^3.2", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^2.2", + "doctrine/lexer": "^1.2.3 || ^2", + "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", - "ext-pdo": "*", - "php": "^7.1 ||^8.0", + "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/console": "^4.2 || ^5.0 || ^6.0", + "symfony/polyfill-php72": "^1.23", + "symfony/polyfill-php80": "^1.16" + }, + "conflict": { + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/annotations": "^1.13 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^11.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "0.12.94", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", - "squizlabs/php_codesniffer": "3.6.0", - "symfony/cache": "^4.4 || ^5.2", + "phpstan/phpstan": "~1.4.10 || 1.9.4", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/log": "^1 || ^2 || ^3", + "squizlabs/php_codesniffer": "3.7.1", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.7.0" + "vimeo/psalm": "4.30.0 || 5.3.0" }, "suggest": { + "ext-dom": "Provides support for XSD validation for XML mapping files", "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0", "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" }, @@ -2402,48 +2410,53 @@ "database", "orm" ], - "time": "2021-08-23T10:20:22+00:00" + "support": { + "issues": "https://github.com/doctrine/orm/issues", + "source": "https://github.com/doctrine/orm/tree/2.14.0" + }, + "time": "2022-12-19T21:51:58+00:00" }, { "name": "doctrine/persistence", - "version": "2.2.2", + "version": "2.5.7", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "4ce4712e6dc84a156176a0fbbb11954a25c93103" + "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/4ce4712e6dc84a156176a0fbbb11954a25c93103", - "reference": "4ce4712e6dc84a156176a0fbbb11954a25c93103", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/e36f22765f4d10a7748228babbf73da5edfeed3c", + "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", "doctrine/cache": "^1.11 || ^2.0", "doctrine/collections": "^1.0", - "doctrine/deprecations": "^0.5.3", - "doctrine/event-manager": "^1.0", + "doctrine/deprecations": "^0.5.3 || ^1", + "doctrine/event-manager": "^1 || ^2", "php": "^7.1 || ^8.0", - "psr/cache": "^1.0|^2.0|^3.0" + "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/common": "<2.10@dev" + "doctrine/annotations": "<1.0 || >=3.0", + "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/coding-standard": "^6.0 || ^9.0", + "doctrine/annotations": "^1 || ^2", + "doctrine/coding-standard": "^9 || ^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "0.12.84", - "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0", - "symfony/cache": "^4.4|^5.0", - "vimeo/psalm": "4.7.0" + "phpstan/phpstan": "~1.4.10 || 1.9.4", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.5", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common", - "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" + "Doctrine\\Common\\": "src/Common", + "Doctrine\\Persistence\\": "src/Persistence" } }, "notification-url": "https://packagist.org/downloads/", @@ -2485,20 +2498,38 @@ "orm", "persistence" ], - "time": "2021-08-10T19:01:29+00:00" + "support": { + "issues": "https://github.com/doctrine/persistence/issues", + "source": "https://github.com/doctrine/persistence/tree/2.5.7" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fpersistence", + "type": "tidelift" + } + ], + "time": "2023-02-03T15:51:16+00:00" }, { "name": "doctrine/sql-formatter", - "version": "1.1.1", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "56070bebac6e77230ed7d306ad13528e60732871" + "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871", - "reference": "56070bebac6e77230ed7d306ad13528e60732871", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/25a06c7bf4c6b8218f47928654252863ffc890a5", + "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5", "shasum": "" }, "require": { @@ -2511,11 +2542,6 @@ "bin/sql-formatter" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\SqlFormatter\\": "src" @@ -2529,7 +2555,7 @@ { "name": "Jeremy Dorn", "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" + "homepage": "https://jeremydorn.com/" } ], "description": "a PHP SQL highlighting library", @@ -2538,7 +2564,11 @@ "highlight", "sql" ], - "time": "2020-07-30T16:57:33+00:00" + "support": { + "issues": "https://github.com/doctrine/sql-formatter/issues", + "source": "https://github.com/doctrine/sql-formatter/tree/1.1.3" + }, + "time": "2022-05-23T21:33:49+00:00" }, { "name": "dompdf/dompdf", @@ -2665,25 +2695,24 @@ }, { "name": "egulias/email-validator", - "version": "3.2.1", + "version": "3.2.6", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", - "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2", + "doctrine/lexer": "^1.2|^2", "php": ">=7.2", "symfony/polyfill-intl-idn": "^1.15" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", "phpunit/phpunit": "^8.5.8|^9.3.3", "vimeo/psalm": "^4" }, @@ -2721,7 +2750,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.1" + "source": "https://github.com/egulias/EmailValidator/tree/3.2.6" }, "funding": [ { @@ -2729,7 +2758,7 @@ "type": "github" } ], - "time": "2022-06-18T20:57:19+00:00" + "time": "2023-06-01T07:04:22+00:00" }, { "name": "endroid/installer", @@ -3271,56 +3300,61 @@ }, { "name": "gedmo/doctrine-extensions", - "version": "v3.2.0", + "version": "v3.13.0", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "8c02cee09e3dd43799ec3b84b619b19982c47f43" + "reference": "291d0c527d2dc9ee07b888c9a4e2a179893f08ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/8c02cee09e3dd43799ec3b84b619b19982c47f43", - "reference": "8c02cee09e3dd43799ec3b84b619b19982c47f43", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/291d0c527d2dc9ee07b888c9a4e2a179893f08ab", + "reference": "291d0c527d2dc9ee07b888c9a4e2a179893f08ab", "shasum": "" }, "require": { - "behat/transliterator": "~1.2", - "doctrine/annotations": "^1.13", - "doctrine/collections": "^1.0", + "behat/transliterator": "^1.2", + "doctrine/annotations": "^1.13 || ^2.0", + "doctrine/collections": "^1.2 || ^2.0", "doctrine/common": "^2.13 || ^3.0", - "doctrine/event-manager": "^1.0", - "php": "^7.2 || ^8.0" + "doctrine/event-manager": "^1.2 || ^2.0", + "doctrine/persistence": "^2.2 || ^3.0", + "php": "^7.2 || ^8.0", + "psr/cache": "^1 || ^2 || ^3", + "symfony/cache": "^4.4 || ^5.3 || ^6.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0" }, "conflict": { - "doctrine/mongodb": "<1.3", - "doctrine/mongodb-odm": "<2.0", - "doctrine/orm": ">=2.10", + "doctrine/dbal": "<2.13.1 || ^3.0 <3.2", + "doctrine/mongodb-odm": "<2.3", + "doctrine/orm": "<2.10.2 || 2.16.0 || 2.16.1", "sebastian/comparator": "<2.0" }, - "provide": { - "ext-mongo": "1.6.12" - }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13", + "doctrine/dbal": "^2.13.1 || ^3.2", "doctrine/doctrine-bundle": "^2.3", - "doctrine/mongodb-odm": "^2.0", - "doctrine/orm": "^2.9.6", - "friendsofphp/php-cs-fixer": "^3.0", - "phpunit/phpunit": "^8.5", - "symfony/cache": "^4.4 || ^5.0", - "symfony/yaml": "^4.1" + "doctrine/mongodb-odm": "^2.3", + "doctrine/orm": "^2.10.2", + "friendsofphp/php-cs-fixer": "^3.4.0 <3.10", + "nesbot/carbon": "^2.55", + "phpstan/phpstan": "^1.10.2", + "phpstan/phpstan-doctrine": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^8.5 || ^9.5", + "rector/rector": "^0.15.20", + "symfony/console": "^4.4 || ^5.3 || ^6.0", + "symfony/phpunit-bridge": "^6.0", + "symfony/yaml": "^4.4 || ^5.3 || ^6.0" }, "suggest": { "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", - "doctrine/orm": "to use the extensions with the ORM", - "symfony/cache": "to cache parsed annotations" + "doctrine/orm": "to use the extensions with the ORM" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.13-dev" } }, "autoload": { @@ -3346,16 +3380,18 @@ "email": "david@liip.ch" } ], - "description": "Doctrine2 behavioral extensions", + "description": "Doctrine behavioral extensions", "homepage": "http://gediminasm.org/", "keywords": [ "Blameable", "behaviors", - "doctrine2", + "doctrine", "extensions", "gedmo", "loggable", "nestedset", + "odm", + "orm", "sluggable", "sortable", "timestampable", @@ -3366,10 +3402,28 @@ "support": { "email": "gediminas.morkevicius@gmail.com", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.2.0", + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.13.0", "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" }, - "time": "2021-10-05T15:25:14+00:00" + "funding": [ + { + "url": "https://github.com/l3pp4rd", + "type": "github" + }, + { + "url": "https://github.com/mbabker", + "type": "github" + }, + { + "url": "https://github.com/phansys", + "type": "github" + }, + { + "url": "https://github.com/stof", + "type": "github" + } + ], + "time": "2023-09-06T13:16:12+00:00" }, { "name": "guzzlehttp/guzzle", @@ -6068,21 +6122,20 @@ }, { "name": "ramsey/collection", - "version": "1.3.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4" + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/ad7475d1c9e70b190ecffc58f2d989416af339b4", - "reference": "ad7475d1c9e70b190ecffc58f2d989416af339b4", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "symfony/polyfill-php81": "^1.23" + "php": "^8.1" }, "require-dev": { "captainhook/plugin-composer": "^5.3", @@ -6142,7 +6195,7 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.3.0" + "source": "https://github.com/ramsey/collection/tree/2.0.0" }, "funding": [ { @@ -6154,29 +6207,27 @@ "type": "tidelift" } ], - "time": "2022-12-27T19:12:24+00:00" + "time": "2022-12-31T21:50:55+00:00" }, { "name": "ramsey/uuid", - "version": "4.2.3", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", - "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { - "brick/math": "^0.8 || ^0.9", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", "ext-json": "*", - "php": "^7.2 || ^8.0", - "ramsey/collection": "^1.0", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php80": "^1.14" + "php": "^8.0", + "ramsey/collection": "^1.2 || ^2.0" }, "replace": { "rhumsaa/uuid": "self.version" @@ -6188,24 +6239,23 @@ "doctrine/annotations": "^1.8", "ergebnis/composer-normalize": "^2.15", "mockery/mockery": "^1.3", - "moontoast/math": "^1.1", "paragonie/random-lib": "^2", "php-mock/php-mock": "^2.2", "php-mock/php-mock-mockery": "^1.3", "php-parallel-lint/php-parallel-lint": "^1.1", "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-mockery": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-phpunit": "^1.1", "phpunit/phpunit": "^8.5 || ^9", - "slevomat/coding-standard": "^7.0", + "ramsey/composer-repl": "^1.4", + "slevomat/coding-standard": "^8.4", "squizlabs/php_codesniffer": "^3.5", "vimeo/psalm": "^4.9" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", - "ext-ctype": "Enables faster processing of character classification using ctype functions.", "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", @@ -6213,9 +6263,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "4.x-dev" - }, "captainhook": { "force-install": true } @@ -6240,7 +6287,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.2.3" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -6252,7 +6299,7 @@ "type": "tidelift" } ], - "time": "2021-09-25T23:10:38+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "ramsey/uuid-doctrine", diff --git a/api/symfony.lock b/api/symfony.lock index 685f5f154..446751279 100644 --- a/api/symfony.lock +++ b/api/symfony.lock @@ -22,9 +22,6 @@ "bacon/bacon-qr-code": { "version": "2.0.7" }, - "beberlei/doctrineextensions": { - "version": "v1.3.0" - }, "behat/transliterator": { "version": "v1.5.0" }, @@ -373,10 +370,10 @@ "version": "3.0.3" }, "ramsey/collection": { - "version": "1.3.0" + "version": "2.0.0" }, "ramsey/uuid": { - "version": "4.2.3" + "version": "4.7.5" }, "ramsey/uuid-doctrine": { "version": "2.0", From ea8dd48bc4e32444c7a59c4d843c6c835ced08a9 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 30 Jan 2024 14:40:26 +0100 Subject: [PATCH 05/15] update doctrine/orm --- api/composer.json | 2 +- api/composer.lock | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/api/composer.json b/api/composer.json index e560556ac..edc22315f 100644 --- a/api/composer.json +++ b/api/composer.json @@ -23,7 +23,7 @@ "doctrine/doctrine-migrations-bundle": "^3.1", "doctrine/event-manager": "^1.2", "doctrine/lexer": "^2.0", - "doctrine/orm": "2.14", + "doctrine/orm": "^2.14", "doctrine/persistence": "^2.4", "dompdf/dompdf": "^2", "endroid/qr-code-bundle": "3.4", diff --git a/api/composer.lock b/api/composer.lock index f8869c88b..f20988f42 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "9172b94c1940b3c315290de2051834c0", + "content-hash": "1a0148fcf7c84b2e64b78ba0d451a2b0", "packages": [ { "name": "adbario/php-dot-notation", @@ -2317,34 +2317,34 @@ }, { "name": "doctrine/orm", - "version": "2.14.0", + "version": "2.17.4", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "f82485e651763fbd1b34879726f4d3b91c358bd9" + "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/f82485e651763fbd1b34879726f4d3b91c358bd9", - "reference": "f82485e651763fbd1b34879726f4d3b91c358bd9", + "url": "https://api.github.com/repos/doctrine/orm/zipball/ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", + "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5 || ^2.0", + "doctrine/collections": "^1.5 || ^2.1", "doctrine/common": "^3.0.3", "doctrine/dbal": "^2.13.1 || ^3.2", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.2.3 || ^2", + "doctrine/instantiator": "^1.3 || ^2", + "doctrine/lexer": "^2", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^4.2 || ^5.0 || ^6.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.16" }, @@ -2353,16 +2353,16 @@ }, "require-dev": { "doctrine/annotations": "^1.13 || ^2", - "doctrine/coding-standard": "^9.0.2 || ^11.0", + "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.9.4", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpstan/phpstan": "~1.4.10 || 1.10.35", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.7.1", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.3.0" + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "vimeo/psalm": "4.30.0 || 5.16.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -2412,9 +2412,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.14.0" + "source": "https://github.com/doctrine/orm/tree/2.17.4" }, - "time": "2022-12-19T21:51:58+00:00" + "time": "2024-01-26T19:41:16+00:00" }, { "name": "doctrine/persistence", From 77a0112c7828df03e7bbfe93fe6088f64919b973 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 30 Jan 2024 14:57:09 +0100 Subject: [PATCH 06/15] update symfony/yaml and amqp-messenger --- api/composer.json | 52 +++++++++++------------ api/composer.lock | 102 +++++++++++++++++++++++----------------------- 2 files changed, 77 insertions(+), 77 deletions(-) diff --git a/api/composer.json b/api/composer.json index edc22315f..9efe9b200 100644 --- a/api/composer.json +++ b/api/composer.json @@ -12,7 +12,7 @@ "adbario/php-dot-notation": "^3", "alcaeus/mongo-php-adapter": "^1.2", "api-platform/core": "^2.6", - "commongateway/corebundle": "dev-feature/MF-62/doctrine", + "commongateway/corebundle": "dev-feature/GW-1596/Symfony54", "composer/ca-bundle": "*", "composer/package-versions-deprecated": "1.11.99.3", "composer/semver": "*", @@ -48,29 +48,29 @@ "ramsey/uuid-doctrine": "^2.0", "respect/validation": "^2.2", "setono/cron-expression-bundle": "^1.5", - "symfony/asset": "5.3.*", - "symfony/console": "5.3.*", + "symfony/asset": "5.3.* | ^5.4", + "symfony/console": "5.3.* | ^5.4", "symfony/contracts": "^2.4.0", - "symfony/dotenv": "5.3.*", - "symfony/expression-language": "5.3.*", + "symfony/dotenv": "5.3.* | ^5.4", + "symfony/expression-language": "5.3.* | ^5.4", "symfony/flex": "^1.3.1", - "symfony/framework-bundle": "5.3.*", - "symfony/http-client": "5.3.*", - "symfony/mailer": "5.3.*", - "symfony/mailgun-mailer": "5.3.*", - "symfony/messenger": "5.3.*", - "symfony/process": "5.3.*", - "symfony/property-access": "5.3.*", - "symfony/property-info": "5.3.*", - "symfony/proxy-manager-bridge": "5.3.*", - "symfony/runtime": "5.3.*", - "symfony/security-bundle": "5.3.*", - "symfony/sendinblue-mailer": "5.3.*", - "symfony/serializer": "5.3.*", - "symfony/twig-bundle": "5.3.*", - "symfony/validator": "5.3.*", - "symfony/web-profiler-bundle": "5.3.*", - "symfony/yaml": "5.3.*", + "symfony/framework-bundle": "5.3.* | ^5.4", + "symfony/http-client": "5.3.* | ^5.4", + "symfony/mailer": "5.3.* | ^5.4", + "symfony/mailgun-mailer": "5.3.* | ^5.4", + "symfony/messenger": "5.3.* | ^5.4", + "symfony/process": "5.3.* | ^5.4", + "symfony/property-access": "5.3.* | ^5.4", + "symfony/property-info": "5.3.* | ^5.4", + "symfony/proxy-manager-bridge": "5.3.* | ^5.4", + "symfony/runtime": "5.3.* | ^5.4", + "symfony/security-bundle": "5.3.* | ^5.4", + "symfony/sendinblue-mailer": "5.3.* | ^5.4", + "symfony/serializer": "5.3.* | ^5.4", + "symfony/twig-bundle": "5.3.* | ^5.4", + "symfony/validator": "5.3.* | ^5.4", + "symfony/web-profiler-bundle": "5.3.* | ^5.4", + "symfony/yaml": "^5.4", "thecodingmachine/safe": "*", "web-token/jwt-framework": "*" }, @@ -119,14 +119,14 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "5.3.*" + "require": "5.3.* | ^5.4 | ^5.4" } }, "require-dev": { "phpunit/phpunit": "^9.5", - "symfony/browser-kit": "5.3.*", - "symfony/css-selector": "5.3.*", + "symfony/browser-kit": "5.3.* | ^5.4", + "symfony/css-selector": "5.3.* | ^5.4", "symfony/phpunit-bridge": "^6.1", - "symfony/stopwatch": "5.3.*" + "symfony/stopwatch": "5.3.* | ^5.4" } } diff --git a/api/composer.lock b/api/composer.lock index f20988f42..829e166e1 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1a0148fcf7c84b2e64b78ba0d451a2b0", + "content-hash": "4e609766146f7cef36edc281b78de4b1", "packages": [ { "name": "adbario/php-dot-notation", @@ -491,16 +491,16 @@ }, { "name": "commongateway/corebundle", - "version": "dev-feature/MF-62/doctrine", + "version": "dev-feature/GW-1596/Symfony54", "source": { "type": "git", "url": "https://github.com/CommonGateway/CoreBundle.git", - "reference": "5623500a4258c4eb02f9d5d8e93976db79be8088" + "reference": "4b0e4f878fbd3651f978f2a2b5409a18a1466b82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/5623500a4258c4eb02f9d5d8e93976db79be8088", - "reference": "5623500a4258c4eb02f9d5d8e93976db79be8088", + "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/4b0e4f878fbd3651f978f2a2b5409a18a1466b82", + "reference": "4b0e4f878fbd3651f978f2a2b5409a18a1466b82", "shasum": "" }, "require": { @@ -534,28 +534,28 @@ "phpoffice/phpword": "^0.18.2", "respect/validation": "^2.2", "setono/cron-expression-bundle": "^1.5", - "symfony/asset": "5.3.*", - "symfony/console": "5.3.*", + "symfony/asset": "5.3.* | ^5.4", + "symfony/console": "5.3.* | ^5.4", "symfony/contracts": "^2.4.0", - "symfony/dotenv": "5.3.*", - "symfony/expression-language": "5.3.*", + "symfony/dotenv": "5.3.* | ^5.4", + "symfony/expression-language": "5.3.* | ^5.4", "symfony/flex": "^1.3.1", - "symfony/framework-bundle": "5.3.*", - "symfony/http-client": "5.3.*", - "symfony/mailer": "5.3.*", - "symfony/mailgun-mailer": "5.3.*", - "symfony/messenger": "5.3.*", + "symfony/framework-bundle": "5.3.* | ^5.4", + "symfony/http-client": "5.3.* | ^5.4", + "symfony/mailer": "5.3.* | ^5.4", + "symfony/mailgun-mailer": "5.3.* | ^5.4", + "symfony/messenger": "5.3.* | ^5.4", "symfony/monolog-bundle": "^3.8", - "symfony/property-access": "5.3.*", - "symfony/property-info": "5.3.*", - "symfony/proxy-manager-bridge": "5.3.*", - "symfony/runtime": "5.3.*", - "symfony/security-bundle": "5.3.*", - "symfony/serializer": "5.3.*", - "symfony/twig-bundle": "5.3.*", - "symfony/validator": "5.3.*", - "symfony/web-profiler-bundle": "5.3.*", - "symfony/yaml": "5.3.*" + "symfony/property-access": "5.3.* | ^5.4", + "symfony/property-info": "5.3.* | ^5.4", + "symfony/proxy-manager-bridge": "5.3.* | ^5.4", + "symfony/runtime": "5.3.* | ^5.4", + "symfony/security-bundle": "5.3.* | ^5.4", + "symfony/serializer": "5.3.* | ^5.4", + "symfony/twig-bundle": "5.3.* | ^5.4", + "symfony/validator": "5.3.* | ^5.4", + "symfony/web-profiler-bundle": "5.3.* | ^5.4", + "symfony/yaml": "5.3.* | ^5.4" }, "conflict": { "doctrine/dbal": "<2.5", @@ -568,12 +568,12 @@ "doctrine/dbal": "~2.5", "phpunit/phpunit": "^9.5", "predis/predis": "~1.1", - "symfony/browser-kit": "5.3.*", + "symfony/browser-kit": "5.3.* | ^5.4", "symfony/config": "^5.1", - "symfony/css-selector": "5.3.*", + "symfony/css-selector": "5.3.* | ^5.4", "symfony/dependency-injection": "~3.4|~4.1|~5.0", "symfony/phpunit-bridge": "^6.1", - "symfony/stopwatch": "5.3.*", + "symfony/stopwatch": "5.3.* | ^5.4", "symfony/var-dumper": "^4.1.1|^5.1" }, "type": "symfony-bundle", @@ -610,7 +610,7 @@ "issues": "https://github.com/CommonGateway/CoreBundle/issues", "source": "https://github.com/CommonGateway/CoreBundle" }, - "time": "2024-01-30T13:09:04+00:00" + "time": "2024-01-30T13:42:40+00:00" }, { "name": "composer/ca-bundle", @@ -7038,30 +7038,30 @@ }, { "name": "symfony/amqp-messenger", - "version": "v5.3.14", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/amqp-messenger.git", - "reference": "951969bd57b1087516fd8411e5ec2de122715351" + "reference": "8ba6a2c482d3fce9d450b702098ca033bbe42de4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/951969bd57b1087516fd8411e5ec2de122715351", - "reference": "951969bd57b1087516fd8411e5ec2de122715351", + "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/8ba6a2c482d3fce9d450b702098ca033bbe42de4", + "reference": "8ba6a2c482d3fce9d450b702098ca033bbe42de4", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/messenger": "^5.3" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/messenger": "^5.3|^6.0" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-messenger-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": "" @@ -7087,7 +7087,7 @@ "description": "Symfony AMQP extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/amqp-messenger/tree/v5.3.14" + "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.31" }, "funding": [ { @@ -7103,7 +7103,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:52:31+00:00" + "time": "2023-11-03T16:16:43+00:00" }, { "name": "symfony/asset", @@ -12027,28 +12027,28 @@ }, { "name": "symfony/yaml", - "version": "v5.3.11", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "226638aa877bc4104e619a15f27d8141cd6b4e4a" + "reference": "f387675d7f5fc4231f7554baa70681f222f73563" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/226638aa877bc4104e619a15f27d8141cd6b4e4a", - "reference": "226638aa877bc4104e619a15f27d8141cd6b4e4a", + "url": "https://api.github.com/repos/symfony/yaml/zipball/f387675d7f5fc4231f7554baa70681f222f73563", + "reference": "f387675d7f5fc4231f7554baa70681f222f73563", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/polyfill-ctype": "~1.8" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^4.4|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" @@ -12082,7 +12082,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.3.11" + "source": "https://github.com/symfony/yaml/tree/v5.4.31" }, "funding": [ { @@ -12098,7 +12098,7 @@ "type": "tidelift" } ], - "time": "2021-11-20T16:42:42+00:00" + "time": "2023-11-03T14:41:28+00:00" }, { "name": "thecodingmachine/safe", From e3401b3e7d5388c1d5a39b920f179385778cbae8 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 30 Jan 2024 15:29:54 +0100 Subject: [PATCH 07/15] Update symfony/sendinblue mailer and symfony finder --- api/composer.lock | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/api/composer.lock b/api/composer.lock index 829e166e1..3ebad3262 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -8180,20 +8180,21 @@ }, { "name": "symfony/finder", - "version": "v5.3.7", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93" + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/a10000ada1e600d109a6c7632e9ac42e8bf2fb93", - "reference": "a10000ada1e600d109a6c7632e9ac42e8bf2fb93", + "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -8222,7 +8223,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.3.7" + "source": "https://github.com/symfony/finder/tree/v5.4.27" }, "funding": [ { @@ -8238,7 +8239,7 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2023-07-31T08:02:31+00:00" }, { "name": "symfony/flex", @@ -11069,26 +11070,27 @@ }, { "name": "symfony/sendinblue-mailer", - "version": "v5.3.14", + "version": "v5.4.19", "source": { "type": "git", "url": "https://github.com/symfony/sendinblue-mailer.git", - "reference": "269383a0dac2ab4d5a1a0f0c042ba114d132cb24" + "reference": "8cd7f7c2e92073dd5af1642e8e8e5ea808a9a3ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/sendinblue-mailer/zipball/269383a0dac2ab4d5a1a0f0c042ba114d132cb24", - "reference": "269383a0dac2ab4d5a1a0f0c042ba114d132cb24", + "url": "https://api.github.com/repos/symfony/sendinblue-mailer/zipball/8cd7f7c2e92073dd5af1642e8e8e5ea808a9a3ff", + "reference": "8cd7f7c2e92073dd5af1642e8e8e5ea808a9a3ff", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/mailer": "^5.1" + "psr/event-dispatcher": "^1", + "symfony/mailer": "^5.1|^6.0" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-mailer-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Mailer\\Bridge\\Sendinblue\\": "" @@ -11114,7 +11116,7 @@ "description": "Symfony Sendinblue Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/sendinblue-mailer/tree/v5.3.14" + "source": "https://github.com/symfony/sendinblue-mailer/tree/v5.4.19" }, "funding": [ { @@ -11130,7 +11132,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-01-01T08:32:19+00:00" }, { "name": "symfony/serializer", From 9917f292bc42c1b8aa9756edbaa65276a4b21a8e Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 30 Jan 2024 15:50:54 +0100 Subject: [PATCH 08/15] Update symfony to 5.4 and remaining doctrine updates --- api/composer.lock | 1899 +++++++++++++++++++++++---------------------- 1 file changed, 973 insertions(+), 926 deletions(-) diff --git a/api/composer.lock b/api/composer.lock index 3ebad3262..357dcf785 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -1598,56 +1598,61 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.7.0", + "version": "2.11.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "d2088fc50494e4e7441fecca54732245a613eeb6" + "reference": "4089f1424b724786c062aea50aae5f773449b94b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d2088fc50494e4e7441fecca54732245a613eeb6", - "reference": "d2088fc50494e4e7441fecca54732245a613eeb6", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b", + "reference": "4089f1424b724786c062aea50aae5f773449b94b", "shasum": "" }, "require": { - "doctrine/annotations": "^1", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13.1|^3.3.2", - "doctrine/persistence": "^2.2|^3", + "doctrine/dbal": "^3.7.0 || ^4.0", + "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", - "php": "^7.1 || ^8.0", - "symfony/cache": "^4.3.3|^5.0|^6.0", - "symfony/config": "^4.4.3|^5.0|^6.0", - "symfony/console": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/dependency-injection": "^4.4.18|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/doctrine-bridge": "^4.4.22|^5.2.7|^6.0", - "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/service-contracts": "^1.1.1|^2.0|^3" + "php": "^7.4 || ^8.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { - "doctrine/orm": "<2.10|>=3.0", - "twig/twig": "<1.34|>=2.0,<2.4" + "doctrine/annotations": ">=3.0", + "doctrine/orm": "<2.14 || >=4.0", + "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.11 || ^3.0", + "doctrine/annotations": "^1 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/deprecations": "^1.0", + "doctrine/orm": "^2.14 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0", - "psalm/plugin-phpunit": "^0.16.1", - "psalm/plugin-symfony": "^3", - "psr/log": "^1.1.4|^2.0|^3.0", - "symfony/phpunit-bridge": "^5.2|^6.0", - "symfony/property-info": "^4.3.3|^5.0|^6.0", - "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/validator": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0|^6.0", - "symfony/yaml": "^3.4.30|^4.3.3|^5.0|^6.0", - "twig/twig": "^1.34|^2.12|^3.0", - "vimeo/psalm": "^4.7" + "phpunit/phpunit": "^9.5.26 || ^10.0", + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^4", + "psr/log": "^1.1.4 || ^2.0 || ^3.0", + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", + "twig/twig": "^1.34 || ^2.12 || ^3.0", + "vimeo/psalm": "^4.30" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -1692,7 +1697,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.7.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1" }, "funding": [ { @@ -1708,40 +1713,44 @@ "type": "tidelift" } ], - "time": "2022-06-10T10:55:26+00:00" + "time": "2023-11-15T20:01:50+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.5", + "version": "3.5.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "5988484f79362cd7d06564bd11be7ce622e08c87" + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/5988484f79362cd7d06564bd11be7ce622e08c87", - "reference": "5988484f79362cd7d06564bd11be7ce622e08c87", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/c808a0c85c38c8ee265cc8405b456c1d2b38567d", + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d", "shasum": "" }, "require": { "doctrine/data-fixtures": "^1.3", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.6.0", - "doctrine/persistence": "^1.3.7|^2.0|^3.0", - "php": "^7.1 || ^8.0", - "symfony/config": "^3.4|^4.3|^5.0|^6.0", - "symfony/console": "^3.4|^4.3|^5.0|^6.0", - "symfony/dependency-injection": "^3.4.47|^4.3|^5.0|^6.0", - "symfony/doctrine-bridge": "^3.4|^4.1|^5.0|^6.0", - "symfony/http-kernel": "^3.4|^4.3|^5.0|^6.0" + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4|^3.0", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-bridge": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" + }, + "conflict": { + "doctrine/dbal": "< 3" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "^1.4.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "symfony/phpunit-bridge": "^6.0.8", - "vimeo/psalm": "^4.22" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10.39", + "phpunit/phpunit": "^9.6.13", + "symfony/phpunit-bridge": "^6.3.6", + "vimeo/psalm": "^5.15" }, "type": "symfony-bundle", "autoload": { @@ -1775,7 +1784,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.5" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.5.1" }, "funding": [ { @@ -1791,38 +1800,44 @@ "type": "tidelift" } ], - "time": "2023-10-29T18:36:06+00:00" + "time": "2023-11-19T12:48:54+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.2.5", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "90be4395597432a05ae9aad5e6fe490622226a77" + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/90be4395597432a05ae9aad5e6fe490622226a77", - "reference": "90be4395597432a05ae9aad5e6fe490622226a77", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/doctrine-bundle": "^2.4", "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3 ", "phpstan/phpstan": "^1.4", "phpstan/phpstan-deprecation-rules": "^1", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.3", "phpunit/phpunit": "^8.5|^9.5", - "vimeo/psalm": "^4.22" + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^3 || ^5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7", + "vimeo/psalm": "^4.30 || ^5.15" }, "type": "symfony-bundle", "autoload": { @@ -1860,7 +1875,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.5" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" }, "funding": [ { @@ -1876,7 +1891,7 @@ "type": "tidelift" } ], - "time": "2023-11-13T08:28:17+00:00" + "time": "2023-11-13T19:44:41+00:00" }, { "name": "doctrine/event-manager", @@ -2211,45 +2226,47 @@ }, { "name": "doctrine/migrations", - "version": "3.4.3", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "362f07ff732a2b4498be919561536800cec29500" + "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/362f07ff732a2b4498be919561536800cec29500", - "reference": "362f07ff732a2b4498be919561536800cec29500", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/47af29eef49f29ebee545947e8b2a4b3be318c8a", + "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^2.11 || ^3.0", + "doctrine/dbal": "^3.5.1 || ^4", "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.2 || ^8.0", + "doctrine/event-manager": "^1.2 || ^2.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^3.4 || ^4.4.16 || ^5.0 || ^6.0", - "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" + }, + "conflict": { + "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3 || ^2.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", + "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", - "ergebnis/composer-normalize": "^2.9", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.1", - "phpunit/phpunit": "^8.5 || ^9.4", - "symfony/cache": "^3.4.26 || ^4.2.12 || ^5.0 || ^6.0", - "symfony/process": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0" + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^10.3", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -2259,12 +2276,6 @@ "bin/doctrine-migrations" ], "type": "library", - "extra": { - "composer-normalize": { - "indent-size": 4, - "indent-style": "space" - } - }, "autoload": { "psr-4": { "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" @@ -2297,7 +2308,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.4.3" + "source": "https://github.com/doctrine/migrations/tree/3.7.2" }, "funding": [ { @@ -2313,7 +2324,7 @@ "type": "tidelift" } ], - "time": "2023-09-07T12:23:11+00:00" + "time": "2023-12-05T11:35:05+00:00" }, { "name": "doctrine/orm", @@ -7107,30 +7118,30 @@ }, { "name": "symfony/asset", - "version": "v5.3.11", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "547d3d91c759bae8e302630e68f6c4d415715bc3" + "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/547d3d91c759bae8e302630e68f6c4d415715bc3", - "reference": "547d3d91c759bae8e302630e68f6c4d415715bc3", + "url": "https://api.github.com/repos/symfony/asset/zipball/edb2457a0ef615d420d2319851f679a4cc3b3635", + "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/http-foundation": "" @@ -7161,7 +7172,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v5.3.11" + "source": "https://github.com/symfony/asset/tree/v5.4.31" }, "funding": [ { @@ -7177,20 +7188,20 @@ "type": "tidelift" } ], - "time": "2021-11-05T16:25:46+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/cache", - "version": "v5.3.12", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "fe05bcb21c1287401d96d066ada7ed881418c6a1" + "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/fe05bcb21c1287401d96d066ada7ed881418c6a1", - "reference": "fe05bcb21c1287401d96d066ada7ed881418c6a1", + "url": "https://api.github.com/repos/symfony/cache/zipball/b17f28169f7a2f2c0cddf2b044d729f5b75efe5a", + "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a", "shasum": "" }, "require": { @@ -7198,14 +7209,14 @@ "psr/cache": "^1.0|^2.0", "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^1.1.7|^2", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "conflict": { - "doctrine/dbal": "<2.10", + "doctrine/dbal": "<2.13.1", "symfony/dependency-injection": "<4.4", "symfony/http-kernel": "<4.4", "symfony/var-dumper": "<4.4" @@ -7218,15 +7229,15 @@ "require-dev": { "cache/integration-tests": "dev-master", "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.10|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1", "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -7251,14 +7262,14 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", "keywords": [ "caching", "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.3.12" + "source": "https://github.com/symfony/cache/tree/v5.4.34" }, "funding": [ { @@ -7274,26 +7285,26 @@ "type": "tidelift" } ], - "time": "2021-11-23T18:33:50+00:00" + "time": "2023-12-18T14:56:06+00:00" }, { "name": "symfony/config", - "version": "v5.3.14", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "04695656c462fcadad350d5d82f5be81440fb4b2" + "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/04695656c462fcadad350d5d82f5be81440fb4b2", - "reference": "04695656c462fcadad350d5d82f5be81440fb4b2", + "url": "https://api.github.com/repos/symfony/config/zipball/dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", + "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/filesystem": "^4.4|^5.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^4.4|^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16", "symfony/polyfill-php81": "^1.22" @@ -7302,11 +7313,11 @@ "symfony/finder": "<4.4" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/yaml": "^4.4|^5.0" + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" @@ -7337,7 +7348,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.3.14" + "source": "https://github.com/symfony/config/tree/v5.4.31" }, "funding": [ { @@ -7353,32 +7364,33 @@ "type": "tidelift" } ], - "time": "2022-01-03T09:49:07+00:00" + "time": "2023-11-09T08:22:43+00:00" }, { "name": "symfony/console", - "version": "v5.3.11", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "3e7ab8f5905058984899b05a4648096f558bfeba" + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3e7ab8f5905058984899b05a4648096f558bfeba", - "reference": "3e7ab8f5905058984899b05a4648096f558bfeba", + "url": "https://api.github.com/repos/symfony/console/zipball/4b4d8cd118484aa604ec519062113dd87abde18c", + "reference": "4b4d8cd118484aa604ec519062113dd87abde18c", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2", - "symfony/string": "^5.1" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { + "psr/log": ">=3", "symfony/dependency-injection": "<4.4", "symfony/dotenv": "<5.1", "symfony/event-dispatcher": "<4.4", @@ -7390,12 +7402,12 @@ }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -7430,12 +7442,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.3.11" + "source": "https://github.com/symfony/console/tree/v5.4.34" }, "funding": [ { @@ -7451,7 +7463,7 @@ "type": "tidelift" } ], - "time": "2021-11-21T19:41:05+00:00" + "time": "2023-12-08T13:33:03+00:00" }, { "name": "symfony/contracts", @@ -7556,23 +7568,24 @@ }, { "name": "symfony/dependency-injection", - "version": "v5.3.14", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b9de28b341247a92fa576315022b850c315ef82a" + "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b9de28b341247a92fa576315022b850c315ef82a", - "reference": "b9de28b341247a92fa576315022b850c315ef82a", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/75d568165a65fa7d8124869ec7c3a90424352e6c", + "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { @@ -7580,16 +7593,16 @@ "symfony/config": "<5.3", "symfony/finder": "<4.4", "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4" + "symfony/yaml": "<4.4.26" }, "provide": { "psr/container-implementation": "1.0", "symfony/service-implementation": "1.0|2.0" }, "require-dev": { - "symfony/config": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4.26|^5.0|^6.0" }, "suggest": { "symfony/config": "", @@ -7624,7 +7637,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.3.14" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.34" }, "funding": [ { @@ -7640,69 +7653,71 @@ "type": "tidelift" } ], - "time": "2022-01-24T19:55:49+00:00" + "time": "2023-12-28T09:31:38+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v5.3.11", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "9b220ebc6fb4d5f15a8b74887c059b4d57ba85f8" + "reference": "0c5e5ad8b8249a0a86f415e16695180c3b61be76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/9b220ebc6fb4d5f15a8b74887c059b4d57ba85f8", - "reference": "9b220ebc6fb4d5f15a8b74887c059b4d57ba85f8", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/0c5e5ad8b8249a0a86f415e16695180c3b61be76", + "reference": "0c5e5ad8b8249a0a86f415e16695180c3b61be76", "shasum": "" }, "require": { "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^2", + "doctrine/persistence": "^2|^3", "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/dbal": "<2.10", - "doctrine/orm": "<2.7.3", - "phpunit/phpunit": "<5.4.3", + "doctrine/dbal": "<2.13.1", + "doctrine/lexer": "<1.1", + "doctrine/orm": "<2.7.4", + "symfony/cache": "<5.4", "symfony/dependency-injection": "<4.4", - "symfony/form": "<5.1", + "symfony/form": "<5.4.21|>=6,<6.2.7", "symfony/http-kernel": "<5", "symfony/messenger": "<4.4", "symfony/property-info": "<5", + "symfony/proxy-manager-bridge": "<4.4.19", "symfony/security-bundle": "<5", "symfony/security-core": "<5.3", - "symfony/validator": "<5.2" + "symfony/validator": "<5.4.25|>=6,<6.2.12|>=6.3,<6.3.1" }, "require-dev": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "^1.10.4", - "doctrine/collections": "~1.0", + "doctrine/annotations": "^1.10.4|^2", + "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.10|^3.0", - "doctrine/orm": "^2.7.3", - "symfony/cache": "^5.1", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/doctrine-messenger": "^5.1", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^5.1.3", - "symfony/http-kernel": "^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/property-info": "^5.0", - "symfony/proxy-manager-bridge": "^4.4|^5.0", - "symfony/security-core": "^5.3", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/uid": "^5.1", - "symfony/validator": "^5.2", - "symfony/var-dumper": "^4.4|^5.0" + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.7.4|^3", + "psr/log": "^1|^2|^3", + "symfony/cache": "^5.4|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/doctrine-messenger": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-kernel": "^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.0|^6.0", + "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.3|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^5.4.25|~6.2.12|^6.3.1", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "doctrine/data-fixtures": "", @@ -7738,7 +7753,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.3.11" + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.34" }, "funding": [ { @@ -7754,38 +7769,38 @@ "type": "tidelift" } ], - "time": "2021-11-12T11:38:27+00:00" + "time": "2023-12-14T14:38:10+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v5.3.14", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "cace447168f67c72dbdeb7545defac66d9d120fc" + "reference": "b7eb1454e806f94c1a4eac5225b3e9d116ad4d22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/cace447168f67c72dbdeb7545defac66d9d120fc", - "reference": "cace447168f67c72dbdeb7545defac66d9d120fc", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/b7eb1454e806f94c1a4eac5225b3e9d116ad4d22", + "reference": "b7eb1454e806f94c1a4eac5225b3e9d116ad4d22", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/messenger": "^5.1", - "symfony/service-contracts": "^1.1|^2" + "symfony/messenger": "^5.1|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/dbal": "<2.10", + "doctrine/dbal": "<2.13", "doctrine/persistence": "<1.3" }, "require-dev": { - "doctrine/dbal": "^2.10|^3.0", - "doctrine/persistence": "^1.3|^2", - "symfony/property-access": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "doctrine/dbal": "^2.13|^3|^4", + "doctrine/persistence": "^1.3|^2|^3", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-messenger-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Messenger\\Bridge\\Doctrine\\": "" @@ -7811,7 +7826,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v5.3.14" + "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.34" }, "funding": [ { @@ -7827,28 +7842,29 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:52:31+00:00" + "time": "2023-12-24T09:04:02+00:00" }, { "name": "symfony/dotenv", - "version": "v5.3.10", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "97ffd3846f8a782086e82c1b5fdefb3f3ad078db" + "reference": "07d75571cc7efc88f1aae96eddc5f671826c7327" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/97ffd3846f8a782086e82c1b5fdefb3f3ad078db", - "reference": "97ffd3846f8a782086e82c1b5fdefb3f3ad078db", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/07d75571cc7efc88f1aae96eddc5f671826c7327", + "reference": "07d75571cc7efc88f1aae96eddc5f671826c7327", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1" + "symfony/deprecation-contracts": "^2.1|^3" }, "require-dev": { - "symfony/process": "^4.4|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -7881,7 +7897,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.3.10" + "source": "https://github.com/symfony/dotenv/tree/v5.4.34" }, "funding": [ { @@ -7897,32 +7913,35 @@ "type": "tidelift" } ], - "time": "2021-10-28T21:34:29+00:00" + "time": "2023-12-28T12:17:46+00:00" }, { "name": "symfony/error-handler", - "version": "v5.3.14", + "version": "v5.4.29", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "8f93f4532c28cfe0488a9517bcd7f6169306ebb2" + "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8f93f4532c28cfe0488a9517bcd7f6169306ebb2", - "reference": "8f93f4532c28cfe0488a9517bcd7f6169306ebb2", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/328c6fcfd2f90b64c16efaf0ea67a311d672f078", + "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -7949,7 +7968,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.3.14" + "source": "https://github.com/symfony/error-handler/tree/v5.4.29" }, "funding": [ { @@ -7965,26 +7984,26 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-09-06T21:54:06+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.3.14", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "6dc2d5b31cdf84fa6344f44056c32f939fcb8c4a" + "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6dc2d5b31cdf84fa6344f44056c32f939fcb8c4a", - "reference": "6dc2d5b31cdf84fa6344f44056c32f939fcb8c4a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e3bca343efeb613f843c254e7718ef17c9bdf7a3", + "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -7996,13 +8015,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -8034,7 +8053,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.14" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.34" }, "funding": [ { @@ -8050,26 +8069,26 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-12-27T21:12:56+00:00" }, { "name": "symfony/expression-language", - "version": "v5.3.11", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "652b72882caddcbfa68754a31b7baf0e4a84cddd" + "reference": "501589522b844b8eecf012c133f0404f0eef77ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/652b72882caddcbfa68754a31b7baf0e4a84cddd", - "reference": "652b72882caddcbfa68754a31b7baf0e4a84cddd", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/501589522b844b8eecf012c133f0404f0eef77ac", + "reference": "501589522b844b8eecf012c133f0404f0eef77ac", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/cache": "^4.4|^5.0", - "symfony/service-contracts": "^1.1|^2" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "type": "library", "autoload": { @@ -8097,7 +8116,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.3.11" + "source": "https://github.com/symfony/expression-language/tree/v5.4.21" }, "funding": [ { @@ -8113,25 +8132,26 @@ "type": "tidelift" } ], - "time": "2021-11-17T12:16:12+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/filesystem", - "version": "v5.3.14", + "version": "v5.4.25", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "1c11c4846dff1b62c869a47d45fa5ed5e93faea2" + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/1c11c4846dff1b62c869a47d45fa5ed5e93faea2", - "reference": "1c11c4846dff1b62c869a47d45fa5ed5e93faea2", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -8160,7 +8180,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.3.14" + "source": "https://github.com/symfony/filesystem/tree/v5.4.25" }, "funding": [ { @@ -8176,7 +8196,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-05-31T13:04:02+00:00" }, { "name": "symfony/finder", @@ -8243,16 +8263,16 @@ }, { "name": "symfony/flex", - "version": "v1.17.6", + "version": "v1.21.4", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "7a79135e1dc66b30042b4d968ecba0908f9374bc" + "reference": "7b40eec950ded5de7054f807c209d3c612efe517" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/7a79135e1dc66b30042b4d968ecba0908f9374bc", - "reference": "7a79135e1dc66b30042b4d968ecba0908f9374bc", + "url": "https://api.github.com/repos/symfony/flex/zipball/7b40eec950ded5de7054f807c209d3c612efe517", + "reference": "7b40eec950ded5de7054f807c209d3c612efe517", "shasum": "" }, "require": { @@ -8288,7 +8308,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.17.6" + "source": "https://github.com/symfony/flex/tree/v1.21.4" }, "funding": [ { @@ -8304,60 +8324,60 @@ "type": "tidelift" } ], - "time": "2021-11-29T15:39:37+00:00" + "time": "2024-01-02T11:08:17+00:00" }, { "name": "symfony/form", - "version": "v5.3.14", + "version": "v5.4.33", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "bda43cb6c7a94a65266c0d74bdffb3e500aa2696" + "reference": "9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/bda43cb6c7a94a65266c0d74bdffb3e500aa2696", - "reference": "bda43cb6c7a94a65266c0d74bdffb3e500aa2696", + "url": "https://api.github.com/repos/symfony/form/zipball/9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec", + "reference": "9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/options-resolver": "^5.1", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/options-resolver": "^5.1|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^5.0.8", - "symfony/service-contracts": "^1.1|^2" + "symfony/polyfill-php81": "^1.23", + "symfony/property-access": "^5.0.8|^6.0", + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4", "symfony/dependency-injection": "<4.4", - "symfony/doctrine-bridge": "<4.4", + "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", "symfony/error-handler": "<4.4.5", "symfony/framework-bundle": "<4.4", "symfony/http-kernel": "<4.4", "symfony/translation": "<4.4", "symfony/translation-contracts": "<1.1.7", - "symfony/twig-bridge": "<4.4" - }, - "require-dev": { - "doctrine/collections": "~1.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/uid": "^5.1", - "symfony/validator": "^4.4.17|^5.1.9", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/twig-bridge": "<5.4.21|>=6,<6.2.7" + }, + "require-dev": { + "doctrine/collections": "^1.0|^2.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "symfony/validator": "^4.4.17|^5.1.9|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/security-csrf": "For protecting forms against CSRF attacks.", @@ -8390,7 +8410,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v5.3.14" + "source": "https://github.com/symfony/form/tree/v5.4.33" }, "funding": [ { @@ -8406,103 +8426,102 @@ "type": "tidelift" } ], - "time": "2022-01-26T16:22:30+00:00" + "time": "2023-11-30T10:45:54+00:00" }, { "name": "symfony/framework-bundle", - "version": "v5.3.11", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "f463eb8252f675a51330b1a28c982739cb9005f2" + "reference": "ee446bb6a89ec758ffc1614f54c003124c7d7a88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f463eb8252f675a51330b1a28c982739cb9005f2", - "reference": "f463eb8252f675a51330b1a28c982739cb9005f2", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ee446bb6a89ec758ffc1614f54c003124c7d7a88", + "reference": "ee446bb6a89ec758ffc1614f54c003124c7d7a88", "shasum": "" }, "require": { "ext-xml": "*", "php": ">=7.2.5", - "symfony/cache": "^5.2", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^5.3", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/event-dispatcher": "^5.1", - "symfony/filesystem": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", + "symfony/cache": "^5.2|^6.0", + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^5.4.5|^6.0.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.4.24|^6.2.11", + "symfony/http-kernel": "^5.4|^6.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^5.3" + "symfony/polyfill-php81": "^1.22", + "symfony/routing": "^5.3|^6.0" }, "conflict": { + "doctrine/annotations": "<1.13.1", + "doctrine/cache": "<1.11", "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "phpunit/phpunit": "<5.4.3", "symfony/asset": "<5.3", - "symfony/browser-kit": "<4.4", - "symfony/console": "<5.2.5", + "symfony/console": "<5.2.5|>=7.0", "symfony/dom-crawler": "<4.4", "symfony/dotenv": "<5.1", "symfony/form": "<5.2", "symfony/http-client": "<4.4", "symfony/lock": "<4.4", "symfony/mailer": "<5.2", - "symfony/messenger": "<4.4", + "symfony/messenger": "<5.4", "symfony/mime": "<4.4", "symfony/property-access": "<5.3", "symfony/property-info": "<4.4", - "symfony/security-core": "<5.3", "symfony/security-csrf": "<5.3", "symfony/serializer": "<5.2", + "symfony/service-contracts": ">=3.0", "symfony/stopwatch": "<4.4", "symfony/translation": "<5.3", "symfony/twig-bridge": "<4.4", "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.2", + "symfony/validator": "<5.3.11", "symfony/web-profiler-bundle": "<4.4", "symfony/workflow": "<5.2" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "doctrine/persistence": "^1.3|^2.0", - "paragonie/sodium_compat": "^1.8", + "doctrine/annotations": "^1.13.1|^2", + "doctrine/cache": "^1.11|^2.0", + "doctrine/persistence": "^1.3|^2|^3", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.3", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^5.2", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7", - "symfony/dotenv": "^5.1", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^5.2", - "symfony/http-client": "^4.4|^5.0", - "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^5.2", - "symfony/messenger": "^5.2", - "symfony/mime": "^4.4|^5.0", - "symfony/notifier": "^5.3", - "symfony/phpunit-bridge": "^5.3", + "symfony/asset": "^5.3|^6.0", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/console": "^5.4.9|^6.0.9", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", + "symfony/dotenv": "^5.1|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^5.2|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/mailer": "^5.2|^6.0", + "symfony/messenger": "^5.4|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/notifier": "^5.4|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0", - "symfony/property-info": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/security-bundle": "^5.3", - "symfony/serializer": "^5.2", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/string": "^5.0", - "symfony/translation": "^5.3", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^5.2", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^5.2", - "symfony/yaml": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-info": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/security-bundle": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/string": "^5.0|^6.0", + "symfony/translation": "^5.3|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.3.11|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/twig": "^2.10|^3.0" }, "suggest": { @@ -8541,7 +8560,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.3.11" + "source": "https://github.com/symfony/framework-bundle/tree/v5.4.34" }, "funding": [ { @@ -8557,30 +8576,30 @@ "type": "tidelift" } ], - "time": "2021-11-20T15:01:50+00:00" + "time": "2023-12-29T14:52:40+00:00" }, { "name": "symfony/http-client", - "version": "v5.3.14", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "692eace552581e33f05969180289c93c43911d8e" + "reference": "8fe833b758bc5b325e9d96a913376d6d57a90fb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/692eace552581e33f05969180289c93c43911d8e", - "reference": "692eace552581e33f05969180289c93c43911d8e", + "url": "https://api.github.com/repos/symfony/http-client/zipball/8fe833b758bc5b325e9d96a913376d6d57a90fb0", + "reference": "8fe833b758bc5b325e9d96a913376d6d57a90fb0", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/http-client-contracts": "^2.4", "symfony/polyfill-php73": "^1.11", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2" + "symfony/service-contracts": "^1.0|^2|^3" }, "provide": { "php-http/async-client-implementation": "*", @@ -8596,11 +8615,12 @@ "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", + "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4.13|^5.1.5", - "symfony/process": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -8627,8 +8647,11 @@ ], "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "keywords": [ + "http" + ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.3.14" + "source": "https://github.com/symfony/http-client/tree/v5.4.34" }, "funding": [ { @@ -8644,33 +8667,36 @@ "type": "tidelift" } ], - "time": "2022-01-22T06:52:49+00:00" + "time": "2023-12-02T08:41:43+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.3.14", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "f1ac8067e60bca740dc51160788c8e91fc9de75a" + "reference": "4da1713e88cf9c44bd4bf65f54772681222fcbec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f1ac8067e60bca740dc51160788c8e91fc9de75a", - "reference": "f1ac8067e60bca740dc51160788c8e91fc9de75a", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4da1713e88cf9c44bd4bf65f54772681222fcbec", + "reference": "4da1713e88cf9c44bd4bf65f54772681222fcbec", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "suggest": { "symfony/mime": "To use the file extension guesser" @@ -8701,7 +8727,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.3.14" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.34" }, "funding": [ { @@ -8717,36 +8743,35 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-12-27T11:45:35+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.3.16", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "a126e33084ed0ed2bf3251942911f26078b8c559" + "reference": "f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a126e33084ed0ed2bf3251942911f26078b8c559", - "reference": "a126e33084ed0ed2bf3251942911f26078b8c559", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b", + "reference": "f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1", - "symfony/error-handler": "^4.4|^5.0", - "symfony/event-dispatcher": "^5.0", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^5.3.7", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<4.4", + "symfony/browser-kit": "<5.4", "symfony/cache": "<5.0", "symfony/config": "<5.0", "symfony/console": "<4.4", @@ -8766,19 +8791,20 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/config": "^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/translation-contracts": "^1.1|^2", + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -8813,7 +8839,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.3.16" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.34" }, "funding": [ { @@ -8829,38 +8855,39 @@ "type": "tidelift" } ], - "time": "2022-03-01T08:28:00+00:00" + "time": "2023-12-30T13:02:02+00:00" }, { "name": "symfony/mailer", - "version": "v5.3.14", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "8ff0b648d030a7bd79cefe05104cc1d3853523d2" + "reference": "0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/8ff0b648d030a7bd79cefe05104cc1d3853523d2", - "reference": "8ff0b648d030a7bd79cefe05104cc1d3853523d2", + "url": "https://api.github.com/repos/symfony/mailer/zipball/0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5", + "reference": "0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5", "shasum": "" }, "require": { - "egulias/email-validator": "^2.1.10|^3", + "egulias/email-validator": "^2.1.10|^3|^4", "php": ">=7.2.5", + "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/mime": "^5.2.6", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2.6|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { "symfony/http-kernel": "<4.4" }, "require-dev": { - "symfony/http-client-contracts": "^1.1|^2", - "symfony/messenger": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -8888,7 +8915,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.3.14" + "source": "https://github.com/symfony/mailer/tree/v5.4.34" }, "funding": [ { @@ -8904,30 +8931,31 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-12-02T08:41:43+00:00" }, { "name": "symfony/mailgun-mailer", - "version": "v5.3.14", + "version": "v5.4.23", "source": { "type": "git", "url": "https://github.com/symfony/mailgun-mailer.git", - "reference": "cea8d288409064badeb1634935a16ebdaf14cdac" + "reference": "541405258a14d9cf14adfe63cf86fde1a6984752" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/cea8d288409064badeb1634935a16ebdaf14cdac", - "reference": "cea8d288409064badeb1634935a16ebdaf14cdac", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/541405258a14d9cf14adfe63cf86fde1a6984752", + "reference": "541405258a14d9cf14adfe63cf86fde1a6984752", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/mailer": "^5.2.6" + "psr/event-dispatcher": "^1", + "symfony/mailer": "^5.4.21|^6.2.7" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0" + "symfony/http-client": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-mailer-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Mailer\\Bridge\\Mailgun\\": "" @@ -8953,7 +8981,7 @@ "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailgun-mailer/tree/v5.3.14" + "source": "https://github.com/symfony/mailgun-mailer/tree/v5.4.23" }, "funding": [ { @@ -8969,30 +8997,30 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-04-10T16:27:27+00:00" }, { "name": "symfony/messenger", - "version": "v5.3.14", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "411ff54cb051a594d1e778a8bbd26905ba4efcb4" + "reference": "8f74256d181141d83649e9bee5caf34328feb3c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/411ff54cb051a594d1e778a8bbd26905ba4efcb4", - "reference": "411ff54cb051a594d1e778a8bbd26905ba4efcb4", + "url": "https://api.github.com/repos/symfony/messenger/zipball/8f74256d181141d83649e9bee5caf34328feb3c8", + "reference": "8f74256d181141d83649e9bee5caf34328feb3c8", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/amqp-messenger": "^5.1", - "symfony/deprecation-contracts": "^2.1", - "symfony/doctrine-messenger": "^5.1", + "symfony/amqp-messenger": "^5.1|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-messenger": "^5.1|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/redis-messenger": "^5.1" + "symfony/redis-messenger": "^5.1|^6.0" }, "conflict": { "symfony/event-dispatcher": "<4.4", @@ -9002,17 +9030,17 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/serializer": "^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0" + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/serializer": "^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0" }, "suggest": { "enqueue/messenger-adapter": "For using the php-enqueue library as a transport." @@ -9043,7 +9071,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v5.3.14" + "source": "https://github.com/symfony/messenger/tree/v5.4.31" }, "funding": [ { @@ -9059,25 +9087,25 @@ "type": "tidelift" } ], - "time": "2022-01-12T18:37:36+00:00" + "time": "2023-11-03T16:16:43+00:00" }, { "name": "symfony/mime", - "version": "v5.3.14", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "2769b338f999a7c53a88e3c124a3d69d7d3feb49" + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2769b338f999a7c53a88e3c124a3d69d7d3feb49", - "reference": "2769b338f999a7c53a88e3c124a3d69d7d3feb49", + "url": "https://api.github.com/repos/symfony/mime/zipball/2ea06dfeee20000a319d8407cea1d47533d5a9d2", + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16" @@ -9086,15 +9114,16 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.26|>=6,<6.2.13|>=6.3,<6.3.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.1", - "symfony/property-info": "^4.4|^5.1", - "symfony/serializer": "^5.2" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.1|^6.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/serializer": "^5.4.26|~6.2.13|^6.3.2" }, "type": "library", "autoload": { @@ -9126,7 +9155,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.3.14" + "source": "https://github.com/symfony/mime/tree/v5.4.26" }, "funding": [ { @@ -9142,42 +9171,42 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-07-27T06:29:31+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v5.3.14", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "b3cb93cf917abf826d45d85514fea3b07e629335" + "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/b3cb93cf917abf826d45d85514fea3b07e629335", - "reference": "b3cb93cf917abf826d45d85514fea3b07e629335", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/3e295d9b0a873476356cb6cff0ce39b3f528b387", + "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387", "shasum": "" }, "require": { "monolog/monolog": "^1.25.1|^2", "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-kernel": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3" }, "conflict": { "symfony/console": "<4.4", "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/console": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mailer": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", @@ -9210,7 +9239,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.3.14" + "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.31" }, "funding": [ { @@ -9226,34 +9255,34 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.8.0", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d" + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", "shasum": "" }, "require": { - "monolog/monolog": "^1.22 || ^2.0 || ^3.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", - "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", + "php": ">=7.2.5", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "symfony/console": "~4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.2 || ^6.0", - "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -9291,7 +9320,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.8.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" }, "funding": [ { @@ -9307,25 +9336,25 @@ "type": "tidelift" } ], - "time": "2022-05-10T14:24:36+00:00" + "time": "2023-11-06T17:08:13+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.3.7", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "4b78e55b179003a42523a362cc0e8327f7a69b5e" + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4b78e55b179003a42523a362cc0e8327f7a69b5e", - "reference": "4b78e55b179003a42523a362cc0e8327f7a69b5e", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16" }, @@ -9360,7 +9389,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.3.7" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" }, "funding": [ { @@ -9376,32 +9405,33 @@ "type": "tidelift" } ], - "time": "2021-08-04T21:20:46+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/password-hasher", - "version": "v5.3.8", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "4bdaa0cca1fb3521bc1825160f3b5490c130bbda" + "reference": "f1a07181f3442836b0aadfd4c65841804d4173c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/4bdaa0cca1fb3521bc1825160f3b5490c130bbda", - "reference": "4bdaa0cca1fb3521bc1825160f3b5490c130bbda", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/f1a07181f3442836b0aadfd4c65841804d4173c4", + "reference": "f1a07181f3442836b0aadfd4c65841804d4173c4", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.15" }, "conflict": { "symfony/security-core": "<5.3" }, "require-dev": { - "symfony/console": "^5", - "symfony/security-core": "^5.3" + "symfony/console": "^5.3|^6.0", + "symfony/security-core": "^5.3|^6.0" }, "type": "library", "autoload": { @@ -9433,7 +9463,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.3.8" + "source": "https://github.com/symfony/password-hasher/tree/v5.4.31" }, "funding": [ { @@ -9449,20 +9479,20 @@ "type": "tidelift" } ], - "time": "2021-09-03T12:22:16+00:00" + "time": "2023-11-02T10:18:11+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.23.1", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535", - "reference": "16880ba9c5ebe3642d1995ab866db29270b36535", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -9474,7 +9504,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9482,12 +9512,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9514,7 +9544,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -9530,20 +9560,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48" + "reference": "e46b4da57951a16053cd751f63f4a24292788157" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e407643d610e5f2c8a4b14189150f68934bf5e48", - "reference": "e407643d610e5f2c8a4b14189150f68934bf5e48", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157", + "reference": "e46b4da57951a16053cd751f63f4a24292788157", "shasum": "" }, "require": { @@ -9555,7 +9585,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9601,7 +9631,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0" }, "funding": [ { @@ -9617,20 +9647,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-03-21T17:27:24+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { @@ -9644,7 +9674,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9688,7 +9718,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -9704,20 +9734,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -9729,7 +9759,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9772,7 +9802,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -9788,20 +9818,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -9816,7 +9846,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9855,7 +9885,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -9871,20 +9901,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", - "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", "shasum": "" }, "require": { @@ -9893,7 +9923,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -9934,7 +9964,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" }, "funding": [ { @@ -9950,20 +9980,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -9972,7 +10002,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -10017,7 +10047,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -10033,20 +10063,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", + "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", "shasum": "" }, "require": { @@ -10055,7 +10085,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -10096,7 +10126,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" }, "funding": [ { @@ -10112,20 +10142,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/process", - "version": "v5.3.14", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8bbae08c19308b9493ad235386144cbefec83cb0" + "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8bbae08c19308b9493ad235386144cbefec83cb0", - "reference": "8bbae08c19308b9493ad235386144cbefec83cb0", + "url": "https://api.github.com/repos/symfony/process/zipball/8fa22178dfc368911dbd513b431cd9b06f9afe7a", + "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a", "shasum": "" }, "require": { @@ -10158,7 +10188,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.3.14" + "source": "https://github.com/symfony/process/tree/v5.4.34" }, "funding": [ { @@ -10174,30 +10204,30 @@ "type": "tidelift" } ], - "time": "2022-01-24T19:35:44+00:00" + "time": "2023-12-02T08:41:43+00:00" }, { "name": "symfony/property-access", - "version": "v5.3.8", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66" + "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66", - "reference": "2fbab5f95ddb6b8e85f38a6a8a04a17c0acc4d66", + "url": "https://api.github.com/repos/symfony/property-access/zipball/0249e46f69e92049a488f39fcf531cb42c50caaa", + "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2" + "symfony/property-info": "^5.2|^6.0" }, "require-dev": { - "symfony/cache": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0" }, "suggest": { "psr/cache-implementation": "To cache access methods." @@ -10235,11 +10265,11 @@ "injection", "object", "property", - "property path", + "property-path", "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.3.8" + "source": "https://github.com/symfony/property-access/tree/v5.4.26" }, "funding": [ { @@ -10255,27 +10285,27 @@ "type": "tidelift" } ], - "time": "2021-09-10T11:55:24+00:00" + "time": "2023-07-13T15:20:41+00:00" }, { "name": "symfony/property-info", - "version": "v5.3.8", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "39de5bed8c036f76ec0457ec52908e45d5497947" + "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/39de5bed8c036f76ec0457ec52908e45d5497947", - "reference": "39de5bed8c036f76ec0457ec52908e45d5497947", + "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1" + "symfony/string": "^5.1|^6.0" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", @@ -10283,11 +10313,12 @@ "symfony/dependency-injection": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, "suggest": { "phpdocumentor/reflection-docblock": "To use the PHPDoc", @@ -10329,7 +10360,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.3.8" + "source": "https://github.com/symfony/property-info/tree/v5.4.24" }, "funding": [ { @@ -10345,31 +10376,30 @@ "type": "tidelift" } ], - "time": "2021-09-07T07:41:40+00:00" + "time": "2023-05-15T20:11:03+00:00" }, { "name": "symfony/proxy-manager-bridge", - "version": "v5.3.11", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "c774a6a852fd702154414e76f8dcd4e96086c2a8" + "reference": "a4cf96f3acfa252503a216bea877478f9621c7c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/c774a6a852fd702154414e76f8dcd4e96086c2a8", - "reference": "c774a6a852fd702154414e76f8dcd4e96086c2a8", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/a4cf96f3acfa252503a216bea877478f9621c7c0", + "reference": "a4cf96f3acfa252503a216bea877478f9621c7c0", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", "friendsofphp/proxy-manager-lts": "^1.0.2", "php": ">=7.2.5", - "symfony/dependency-injection": "^5.0", + "symfony/dependency-injection": "^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/config": "^4.4|^5.0" + "symfony/config": "^4.4|^5.0|^6.0" }, "type": "symfony-bridge", "autoload": { @@ -10397,7 +10427,7 @@ "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.3.11" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.4.21" }, "funding": [ { @@ -10413,32 +10443,32 @@ "type": "tidelift" } ], - "time": "2021-11-17T12:16:12+00:00" + "time": "2023-02-16T09:33:00+00:00" }, { "name": "symfony/redis-messenger", - "version": "v5.3.14", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/redis-messenger.git", - "reference": "639c3679597fbe003fbc90036bef7202e879ad93" + "reference": "d1a86778fc6386203bc0321a8692622042eb6c6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/639c3679597fbe003fbc90036bef7202e879ad93", - "reference": "639c3679597fbe003fbc90036bef7202e879ad93", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/d1a86778fc6386203bc0321a8692622042eb6c6b", + "reference": "d1a86778fc6386203bc0321a8692622042eb6c6b", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/messenger": "^5.1" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/messenger": "^5.1|^6.0" }, "require-dev": { - "symfony/property-access": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, - "type": "symfony-bridge", + "type": "symfony-messenger-bridge", "autoload": { "psr-4": { "Symfony\\Component\\Messenger\\Bridge\\Redis\\": "" @@ -10464,7 +10494,7 @@ "description": "Symfony Redis extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/redis-messenger/tree/v5.3.14" + "source": "https://github.com/symfony/redis-messenger/tree/v5.4.34" }, "funding": [ { @@ -10480,25 +10510,25 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:52:31+00:00" + "time": "2023-12-11T13:52:49+00:00" }, { "name": "symfony/routing", - "version": "v5.3.11", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "fcbc2b81d55984f04bb704c2269755fa5aaf5cca" + "reference": "f1d08ed59d7718845bb70acd7480fa7da8966ec0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/fcbc2b81d55984f04bb704c2269755fa5aaf5cca", - "reference": "fcbc2b81d55984f04bb704c2269755fa5aaf5cca", + "url": "https://api.github.com/repos/symfony/routing/zipball/f1d08ed59d7718845bb70acd7480fa7da8966ec0", + "reference": "f1d08ed59d7718845bb70acd7480fa7da8966ec0", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { @@ -10508,13 +10538,13 @@ "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^5.3", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/config": "For using the all-in-one router or any loader", @@ -10554,7 +10584,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.3.11" + "source": "https://github.com/symfony/routing/tree/v5.4.34" }, "funding": [ { @@ -10570,20 +10600,20 @@ "type": "tidelift" } ], - "time": "2021-11-04T16:37:19+00:00" + "time": "2023-12-27T12:51:02+00:00" }, { "name": "symfony/runtime", - "version": "v5.3.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "0345ba5dbfc06a878bc48a7ec18ebc144cc60800" + "reference": "4659b552bc9f2380986e3f4b7e2bd4e512470e0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/0345ba5dbfc06a878bc48a7ec18ebc144cc60800", - "reference": "0345ba5dbfc06a878bc48a7ec18ebc144cc60800", + "url": "https://api.github.com/repos/symfony/runtime/zipball/4659b552bc9f2380986e3f4b7e2bd4e512470e0d", + "reference": "4659b552bc9f2380986e3f4b7e2bd4e512470e0d", "shasum": "" }, "require": { @@ -10596,10 +10626,10 @@ }, "require-dev": { "composer/composer": "^1.0.2|^2.0", - "symfony/console": "^4.4|^5", - "symfony/dotenv": "^5.1", - "symfony/http-foundation": "^4.4|^5", - "symfony/http-kernel": "^4.4|^5" + "symfony/console": "^4.4.30|^5.4.9|^6.0.9", + "symfony/dotenv": "^5.1|^6.0", + "symfony/http-foundation": "^4.4.30|^5.3.7|^6.0", + "symfony/http-kernel": "^4.4.30|^5.3.7|^6.0" }, "type": "composer-plugin", "extra": { @@ -10630,8 +10660,11 @@ ], "description": "Enables decoupling PHP applications from global state", "homepage": "https://symfony.com", + "keywords": [ + "runtime" + ], "support": { - "source": "https://github.com/symfony/runtime/tree/v5.3.11" + "source": "https://github.com/symfony/runtime/tree/v5.4.26" }, "funding": [ { @@ -10647,37 +10680,38 @@ "type": "tidelift" } ], - "time": "2021-11-05T14:24:28+00:00" + "time": "2023-07-16T16:48:57+00:00" }, { "name": "symfony/security-bundle", - "version": "v5.3.12", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "be52715f4a7fd490937e4f881dc00ff5c0dcfeb3" + "reference": "6477c31e36dfa25b07befea20bc8326f4ba11d75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/be52715f4a7fd490937e4f881dc00ff5c0dcfeb3", - "reference": "be52715f4a7fd490937e4f881dc00ff5c0dcfeb3", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6477c31e36dfa25b07befea20bc8326f4ba11d75", + "reference": "6477c31e36dfa25b07befea20bc8326f4ba11d75", "shasum": "" }, "require": { "ext-xml": "*", "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher": "^5.1", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", - "symfony/password-hasher": "^5.3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher": "^5.1|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^5.3", - "symfony/security-csrf": "^4.4|^5.0", + "symfony/security-core": "^5.4|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", "symfony/security-guard": "^5.3", - "symfony/security-http": "^5.3.2" + "symfony/security-http": "^5.4.30|^6.3.6", + "symfony/service-contracts": "^1.10|^2|^3" }, "conflict": { "symfony/browser-kit": "<4.4", @@ -10687,24 +10721,24 @@ "symfony/twig-bundle": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "symfony/asset": "^4.4|^5.0", - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/dom-crawler": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/framework-bundle": "^5.3", - "symfony/ldap": "^5.3", - "symfony/process": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/serializer": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/twig-bridge": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0", + "doctrine/annotations": "^1.10.4|^2", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0", + "symfony/ldap": "^5.3|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/twig-bridge": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/twig": "^2.13|^3.0.4" }, "type": "symfony-bundle", @@ -10733,7 +10767,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v5.3.12" + "source": "https://github.com/symfony/security-bundle/tree/v5.4.34" }, "funding": [ { @@ -10749,29 +10783,29 @@ "type": "tidelift" } ], - "time": "2021-11-24T08:15:08+00:00" + "time": "2023-12-19T08:26:08+00:00" }, { "name": "symfony/security-core", - "version": "v5.3.11", + "version": "v5.4.30", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "48c8ed9f4789439427917f0023f86895d64b73a7" + "reference": "3908c54da30dd68c2fe31915d82a1c81809d1928" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/48c8ed9f4789439427917f0023f86895d64b73a7", - "reference": "48c8ed9f4789439427917f0023f86895d64b73a7", + "url": "https://api.github.com/repos/symfony/security-core/zipball/3908c54da30dd68c2fe31915d82a1c81809d1928", + "reference": "3908c54da30dd68c2fe31915d82a1c81809d1928", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/event-dispatcher-contracts": "^1.1|^2", - "symfony/password-hasher": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^1.1|^2|^3", + "symfony/password-hasher": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2" + "symfony/service-contracts": "^1.1.6|^2|^3" }, "conflict": { "symfony/event-dispatcher": "<4.4", @@ -10784,13 +10818,13 @@ "psr/cache": "^1.0|^2.0|^3.0", "psr/container": "^1.0|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/http-foundation": "^5.3", - "symfony/ldap": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0", - "symfony/validator": "^5.2" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/ldap": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/validator": "^5.2|^6.0" }, "suggest": { "psr/container-implementation": "To instantiate the Security class", @@ -10826,7 +10860,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v5.3.11" + "source": "https://github.com/symfony/security-core/tree/v5.4.30" }, "funding": [ { @@ -10842,32 +10876,33 @@ "type": "tidelift" } ], - "time": "2021-11-17T12:16:12+00:00" + "time": "2023-10-27T07:38:28+00:00" }, { "name": "symfony/security-csrf", - "version": "v5.3.4", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "94b533195cf7fb21f3fae8ce349861c6401d969e" + "reference": "995fcfcc5a3be09df157b4960668f61cceb86611" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/94b533195cf7fb21f3fae8ce349861c6401d969e", - "reference": "94b533195cf7fb21f3fae8ce349861c6401d969e", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/995fcfcc5a3be09df157b4960668f61cceb86611", + "reference": "995fcfcc5a3be09df157b4960668f61cceb86611", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4|^5.0" + "symfony/security-core": "^4.4|^5.0|^6.0" }, "conflict": { "symfony/http-foundation": "<5.3" }, "require-dev": { - "symfony/http-foundation": "^5.3" + "symfony/http-foundation": "^5.3|^6.0" }, "suggest": { "symfony/http-foundation": "For using the class SessionTokenStorage." @@ -10898,7 +10933,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.3.4" + "source": "https://github.com/symfony/security-csrf/tree/v5.4.27" }, "funding": [ { @@ -10914,24 +10949,25 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2023-07-28T14:44:35+00:00" }, { "name": "symfony/security-guard", - "version": "v5.3.7", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", - "reference": "25f8d2a206505514a0ff14b16c4fb4e17a10cf18" + "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/25f8d2a206505514a0ff14b16c4fb4e17a10cf18", - "reference": "25f8d2a206505514a0ff14b16c4fb4e17a10cf18", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/72c53142533462fc6fda4a429c2a21c2b944a8cc", + "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc", "shasum": "" }, "require": { "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.15", "symfony/security-core": "^5.0", "symfony/security-http": "^5.3" @@ -10965,7 +11001,7 @@ "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.3.7" + "source": "https://github.com/symfony/security-guard/tree/v5.4.27" }, "funding": [ { @@ -10981,31 +11017,32 @@ "type": "tidelift" } ], - "time": "2021-08-13T15:54:02+00:00" + "time": "2023-07-28T14:44:35+00:00" }, { "name": "symfony/security-http", - "version": "v5.3.11", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "c25090783bd4209a42f9c43a235280fd23315a62" + "reference": "6d3cd5a4deee9697738db8d24258890ca4140ae9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/c25090783bd4209a42f9c43a235280fd23315a62", - "reference": "c25090783bd4209a42f9c43a235280fd23315a62", + "url": "https://api.github.com/repos/symfony/security-http/zipball/6d3cd5a4deee9697738db8d24258890ca4140ae9", + "reference": "6d3cd5a4deee9697738db8d24258890ca4140ae9", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^5.3", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^4.4|^5.0", - "symfony/security-core": "^5.3" + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5", + "symfony/service-contracts": "^1.10|^2|^3" }, "conflict": { "symfony/event-dispatcher": "<4.3", @@ -11014,11 +11051,11 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/rate-limiter": "^5.2", - "symfony/routing": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/translation": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", @@ -11050,7 +11087,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v5.3.11" + "source": "https://github.com/symfony/security-http/tree/v5.4.31" }, "funding": [ { @@ -11066,26 +11103,26 @@ "type": "tidelift" } ], - "time": "2021-11-05T16:25:46+00:00" + "time": "2023-11-03T16:13:08+00:00" }, { "name": "symfony/sendinblue-mailer", - "version": "v5.4.19", + "version": "v5.4.30", "source": { "type": "git", "url": "https://github.com/symfony/sendinblue-mailer.git", - "reference": "8cd7f7c2e92073dd5af1642e8e8e5ea808a9a3ff" + "reference": "0ee7cf3f1ad1a8049e0a4a52a7b927761a68babc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/sendinblue-mailer/zipball/8cd7f7c2e92073dd5af1642e8e8e5ea808a9a3ff", - "reference": "8cd7f7c2e92073dd5af1642e8e8e5ea808a9a3ff", + "url": "https://api.github.com/repos/symfony/sendinblue-mailer/zipball/0ee7cf3f1ad1a8049e0a4a52a7b927761a68babc", + "reference": "0ee7cf3f1ad1a8049e0a4a52a7b927761a68babc", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/event-dispatcher": "^1", - "symfony/mailer": "^5.1|^6.0" + "symfony/mailer": "^5.4.21|^6.2.7" }, "require-dev": { "symfony/http-client": "^4.4|^5.0|^6.0" @@ -11116,7 +11153,7 @@ "description": "Symfony Sendinblue Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/sendinblue-mailer/tree/v5.4.19" + "source": "https://github.com/symfony/sendinblue-mailer/tree/v5.4.30" }, "funding": [ { @@ -11132,25 +11169,25 @@ "type": "tidelift" } ], - "time": "2023-01-01T08:32:19+00:00" + "time": "2023-10-24T12:09:39+00:00" }, { "name": "symfony/serializer", - "version": "v5.3.12", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "bf570839e289e0bdde69c9fa867d3a42f5e8fde1" + "reference": "b8353e4208e9161f34d22c4631c63404b26ba929" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/bf570839e289e0bdde69c9fa867d3a42f5e8fde1", - "reference": "bf570839e289e0bdde69c9fa867d3a42f5e8fde1", + "url": "https://api.github.com/repos/symfony/serializer/zipball/b8353e4208e9161f34d22c4631c63404b26ba929", + "reference": "b8353e4208e9161f34d22c4631c63404b26ba929", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16" }, @@ -11159,29 +11196,30 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/dependency-injection": "<4.4", - "symfony/property-access": "<4.4", - "symfony/property-info": "<5.3", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", + "symfony/uid": "<5.3", "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/filesystem": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4.9|^5.0.9", - "symfony/property-info": "^5.3", - "symfony/uid": "^5.1", - "symfony/validator": "^4.4|^5.0", - "symfony/var-dumper": "^4.4|^5.0", - "symfony/var-exporter": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.4.24|^6.2.11", + "symfony/uid": "^5.3|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "psr/cache-implementation": "For using the metadata cache.", @@ -11218,7 +11256,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v5.3.12" + "source": "https://github.com/symfony/serializer/tree/v5.4.34" }, "funding": [ { @@ -11234,25 +11272,25 @@ "type": "tidelift" } ], - "time": "2021-11-24T08:13:09+00:00" + "time": "2023-12-27T08:53:17+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.3.4", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "b24c6a92c6db316fee69e38c80591e080e41536c" + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b24c6a92c6db316fee69e38c80591e080e41536c", - "reference": "b24c6a92c6db316fee69e38c80591e080e41536c", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", + "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/service-contracts": "^1.0|^2" + "symfony/service-contracts": "^1|^2|^3" }, "type": "library", "autoload": { @@ -11280,7 +11318,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.3.4" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" }, "funding": [ { @@ -11296,20 +11334,20 @@ "type": "tidelift" } ], - "time": "2021-07-10T08:58:57+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/string", - "version": "v5.3.10", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c" + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", - "reference": "d70c35bb20bbca71fc4ab7921e3c6bda1a82a60c", + "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061", + "reference": "e3f98bfc7885c957488f443df82d97814a3ce061", "shasum": "" }, "require": { @@ -11320,20 +11358,23 @@ "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "~1.15" }, + "conflict": { + "symfony/translation-contracts": ">=3.0" + }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0" + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -11363,7 +11404,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.3.10" + "source": "https://github.com/symfony/string/tree/v5.4.34" }, "funding": [ { @@ -11379,65 +11420,65 @@ "type": "tidelift" } ], - "time": "2021-10-27T18:21:46+00:00" + "time": "2023-12-09T13:20:28+00:00" }, { "name": "symfony/twig-bridge", - "version": "v5.3.11", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "90e2f25b2a5b1a6d626c26cafcb00da9583fcd66" + "reference": "4ced0e91705d689b77763678367bd522d79f9f9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/90e2f25b2a5b1a6d626c26cafcb00da9583fcd66", - "reference": "90e2f25b2a5b1a6d626c26cafcb00da9583fcd66", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/4ced0e91705d689b77763678367bd522d79f9f9a", + "reference": "4ced0e91705d689b77763678367bd522d79f9f9a", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2", + "symfony/translation-contracts": "^1.1|^2|^3", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<4.4", - "symfony/form": "<5.3", + "symfony/console": "<5.3", + "symfony/form": "<5.4.21|>=6,<6.2.7", "symfony/http-foundation": "<5.3", "symfony/http-kernel": "<4.4", "symfony/translation": "<5.2", "symfony/workflow": "<5.2" }, "require-dev": { - "doctrine/annotations": "^1.12", - "egulias/email-validator": "^2.1.10|^3", + "doctrine/annotations": "^1.12|^2", + "egulias/email-validator": "^2.1.10|^3|^4", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/form": "^5.3", - "symfony/http-foundation": "^5.3", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^5.2", + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/console": "^5.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^5.4.21|^6.2.7", + "symfony/http-foundation": "^5.3|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^5.2|^6.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^4.4|^5.1", - "symfony/routing": "^4.4|^5.0", + "symfony/property-info": "^4.4|^5.1|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/security-csrf": "^4.4|^5.0", - "symfony/security-http": "^4.4|^5.0", - "symfony/serializer": "^5.2", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^5.2", - "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^5.2", - "symfony/yaml": "^4.4|^5.0", + "symfony/security-core": "^4.4|^5.0|^6.0", + "symfony/security-csrf": "^4.4|^5.0|^6.0", + "symfony/security-http": "^4.4|^5.0|^6.0", + "symfony/serializer": "^5.2|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.2|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/workflow": "^5.2|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0", "twig/cssinliner-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" @@ -11484,7 +11525,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.3.11" + "source": "https://github.com/symfony/twig-bridge/tree/v5.4.34" }, "funding": [ { @@ -11500,51 +11541,53 @@ "type": "tidelift" } ], - "time": "2021-11-20T16:42:42+00:00" + "time": "2023-12-15T11:59:38+00:00" }, { "name": "symfony/twig-bundle", - "version": "v5.3.10", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "70157db4357eadf33f38e4e7efa5da4b294e17de" + "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/70157db4357eadf33f38e4e7efa5da4b294e17de", - "reference": "70157db4357eadf33f38e4e7efa5da4b294e17de", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/62e3505a62f482a577f55ba08747dc6a3b7463b3", + "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^5.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.0|^6.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^5.3", + "symfony/twig-bridge": "^5.3|^6.0", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "symfony/dependency-injection": "<5.3", "symfony/framework-bundle": "<5.0", + "symfony/service-contracts": ">=3.0", "symfony/translation": "<5.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^4.4|^5.0", - "symfony/dependency-injection": "^5.3", - "symfony/expression-language": "^4.4|^5.0", - "symfony/finder": "^4.4|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/framework-bundle": "^5.0", - "symfony/routing": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0", - "symfony/translation": "^5.0", - "symfony/web-link": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/asset": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.0|^6.0", + "symfony/web-link": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -11572,7 +11615,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.3.10" + "source": "https://github.com/symfony/twig-bundle/tree/v5.4.31" }, "funding": [ { @@ -11588,34 +11631,36 @@ "type": "tidelift" } ], - "time": "2021-10-28T13:28:41+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/validator", - "version": "v5.3.12", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "379ca8939ebcab78d835e188673396a9f8d6eee8" + "reference": "0700751f19b5e8dcfadb6614662216a93f37e2dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/379ca8939ebcab78d835e188673396a9f8d6eee8", - "reference": "379ca8939ebcab78d835e188673396a9f8d6eee8", + "url": "https://api.github.com/repos/symfony/validator/zipball/0700751f19b5e8dcfadb6614662216a93f37e2dd", + "reference": "0700751f19b5e8dcfadb6614662216a93f37e2dd", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2" + "symfony/polyfill-php81": "^1.22", + "symfony/translation-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/lexer": "<1.0.2", - "phpunit/phpunit": "<5.4.3", + "doctrine/annotations": "<1.13", + "doctrine/cache": "<1.11", + "doctrine/lexer": "<1.1", "symfony/dependency-injection": "<4.4", "symfony/expression-language": "<5.1", "symfony/http-kernel": "<4.4", @@ -11625,24 +11670,24 @@ "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", - "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/expression-language": "^5.1", - "symfony/finder": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/intl": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/property-info": "^5.3", - "symfony/translation": "^4.4|^5.0", - "symfony/yaml": "^4.4|^5.0" + "doctrine/annotations": "^1.13|^2", + "doctrine/cache": "^1.11|^2.0", + "egulias/email-validator": "^2.1.10|^3|^4", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^5.1|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.3|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "egulias/email-validator": "Strict (RFC compliant) email validation", @@ -11682,7 +11727,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v5.3.12" + "source": "https://github.com/symfony/validator/tree/v5.4.34" }, "funding": [ { @@ -11698,20 +11743,20 @@ "type": "tidelift" } ], - "time": "2021-11-22T22:24:25+00:00" + "time": "2023-12-29T15:57:36+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.3.14", + "version": "v5.4.29", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "daf799d0fbad76a40f2d4691d732641793103700" + "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/daf799d0fbad76a40f2d4691d732641793103700", - "reference": "daf799d0fbad76a40f2d4691d732641793103700", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6172e4ae3534d25ee9e07eb487c20be7760fcc65", + "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65", "shasum": "" }, "require": { @@ -11720,13 +11765,14 @@ "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", "twig/twig": "^2.13|^3.0.4" }, "suggest": { @@ -11770,7 +11816,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.3.14" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.29" }, "funding": [ { @@ -11786,28 +11832,28 @@ "type": "tidelift" } ], - "time": "2022-01-17T16:28:15+00:00" + "time": "2023-09-12T10:09:58+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.3.14", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "1ca85c38c0c70201c599264923b86e588ddf8878" + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1ca85c38c0c70201c599264923b86e588ddf8878", - "reference": "1ca85c38c0c70201c599264923b86e588ddf8878", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5fe9a0021b8d35e67d914716ec8de50716a68e7e", + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -11840,10 +11886,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.3.14" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.2" }, "funding": [ { @@ -11859,20 +11907,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-12-27T08:18:35+00:00" }, { "name": "symfony/web-link", - "version": "v5.3.4", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "0075c9949c30a61d9b9e7483686d72d261480ef1" + "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/0075c9949c30a61d9b9e7483686d72d261480ef1", - "reference": "0075c9949c30a61d9b9e7483686d72d261480ef1", + "url": "https://api.github.com/repos/symfony/web-link/zipball/57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", + "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", "shasum": "" }, "require": { @@ -11887,7 +11935,7 @@ "psr/link-implementation": "1.0" }, "require-dev": { - "symfony/http-kernel": "^5.3" + "symfony/http-kernel": "^5.3|^6.0" }, "suggest": { "symfony/http-kernel": "" @@ -11930,7 +11978,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v5.3.4" + "source": "https://github.com/symfony/web-link/tree/v5.4.21" }, "funding": [ { @@ -11946,42 +11994,43 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:40:44+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v5.3.8", + "version": "v5.4.34", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "9ba1e05fdc7a46979047ba6c8949bd35e3a386a5" + "reference": "8b3344d0d7faeb6c52e60d4a3657405c5c68625f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/9ba1e05fdc7a46979047ba6c8949bd35e3a386a5", - "reference": "9ba1e05fdc7a46979047ba6c8949bd35e3a386a5", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8b3344d0d7faeb6c52e60d4a3657405c5c68625f", + "reference": "8b3344d0d7faeb6c52e60d4a3657405c5c68625f", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/framework-bundle": "^5.3", - "symfony/http-kernel": "^5.3", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/framework-bundle": "^5.3|^6.0,<6.4", + "symfony/http-kernel": "^5.3|^6.0", "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4|^5.0", - "symfony/twig-bundle": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/twig-bundle": "^4.4|^5.0|^6.0", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "symfony/dependency-injection": "<5.2", "symfony/form": "<4.4", + "symfony/mailer": "<5.4", "symfony/messenger": "<4.4" }, "require-dev": { - "symfony/browser-kit": "^4.4|^5.0", - "symfony/console": "^4.4|^5.0", - "symfony/css-selector": "^4.4|^5.0", - "symfony/stopwatch": "^4.4|^5.0" + "symfony/browser-kit": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "symfony-bundle", "autoload": { @@ -12009,7 +12058,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.3.8" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.34" }, "funding": [ { @@ -12025,7 +12074,7 @@ "type": "tidelift" } ], - "time": "2021-09-17T08:55:39+00:00" + "time": "2023-12-20T14:42:24+00:00" }, { "name": "symfony/yaml", @@ -14035,28 +14084,28 @@ }, { "name": "symfony/browser-kit", - "version": "v5.3.14", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "84d0dc472df8dc05b0fa92e39272255fe42fc5d0" + "reference": "0ed1f634a36606f2065eec221b3975e05016cbbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/84d0dc472df8dc05b0fa92e39272255fe42fc5d0", - "reference": "84d0dc472df8dc05b0fa92e39272255fe42fc5d0", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/0ed1f634a36606f2065eec221b3975e05016cbbe", + "reference": "0ed1f634a36606f2065eec221b3975e05016cbbe", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/dom-crawler": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "^4.4|^5.0", - "symfony/http-client": "^4.4|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/process": "^4.4|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/process": "" @@ -14087,7 +14136,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.3.14" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.31" }, "funding": [ { @@ -14103,20 +14152,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-10-31T07:58:33+00:00" }, { "name": "symfony/css-selector", - "version": "v5.3.14", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "9e3a9e99095fd55fb68c0ffe2f7e10ae13ac66ee" + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/9e3a9e99095fd55fb68c0ffe2f7e10ae13ac66ee", - "reference": "9e3a9e99095fd55fb68c0ffe2f7e10ae13ac66ee", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", "shasum": "" }, "require": { @@ -14153,7 +14202,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.3.14" + "source": "https://github.com/symfony/css-selector/tree/v5.4.26" }, "funding": [ { @@ -14169,25 +14218,25 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-07-07T06:10:25+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.3.14", + "version": "v5.4.32", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "076dd4b4de41d060b1397319dfbed8cd56a6a484" + "reference": "728f1fc136252a626ba5a69c02bd66a3697ff201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/076dd4b4de41d060b1397319dfbed8cd56a6a484", - "reference": "076dd4b4de41d060b1397319dfbed8cd56a6a484", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/728f1fc136252a626ba5a69c02bd66a3697ff201", + "reference": "728f1fc136252a626ba5a69c02bd66a3697ff201", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" @@ -14197,7 +14246,7 @@ }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/css-selector": "" @@ -14228,7 +14277,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.3.14" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.32" }, "funding": [ { @@ -14244,20 +14293,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:51:59+00:00" + "time": "2023-11-17T20:43:48+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v6.1.2", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "899fdec151add3dc339cf394a15100a1acc177ad" + "reference": "bd0455b7888e4adac29cf175d819c51f88fed942" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/899fdec151add3dc339cf394a15100a1acc177ad", - "reference": "899fdec151add3dc339cf394a15100a1acc177ad", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bd0455b7888e4adac29cf175d819c51f88fed942", + "reference": "bd0455b7888e4adac29cf175d819c51f88fed942", "shasum": "" }, "require": { @@ -14267,11 +14316,9 @@ "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3.0", - "symfony/error-handler": "^5.4|^6.0" - }, - "suggest": { - "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/polyfill-php81": "^1.27" }, "bin": [ "bin/simple-phpunit" @@ -14311,7 +14358,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.1.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.2" }, "funding": [ { @@ -14327,7 +14374,7 @@ "type": "tidelift" } ], - "time": "2022-06-20T12:01:07+00:00" + "time": "2023-12-19T09:12:31+00:00" }, { "name": "theseer/tokenizer", From bb90cf9b0e2cf80ad7e900bf8045e2e0844da937 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Tue, 30 Jan 2024 16:45:37 +0100 Subject: [PATCH 09/15] Update JWT framework --- api/composer.json | 3 + api/composer.lock | 812 +++++++++++------- api/config/bundles.php | 1 + .../apiplatform/fonts/open-sans/400.css | 19 +- .../apiplatform/fonts/open-sans/700.css | 19 +- .../files/open-sans-cyrillic-400-normal.woff2 | Bin 9400 -> 10652 bytes .../files/open-sans-cyrillic-700-normal.woff2 | Bin 9560 -> 10440 bytes .../open-sans-cyrillic-ext-400-normal.woff2 | Bin 16688 -> 17504 bytes .../open-sans-cyrillic-ext-700-normal.woff2 | Bin 17596 -> 16920 bytes .../files/open-sans-greek-400-normal.woff2 | Bin 7704 -> 8952 bytes .../files/open-sans-greek-700-normal.woff2 | Bin 8104 -> 8816 bytes api/symfony.lock | 12 +- 12 files changed, 556 insertions(+), 310 deletions(-) diff --git a/api/composer.json b/api/composer.json index 9efe9b200..9306f0f33 100644 --- a/api/composer.json +++ b/api/composer.json @@ -12,6 +12,8 @@ "adbario/php-dot-notation": "^3", "alcaeus/mongo-php-adapter": "^1.2", "api-platform/core": "^2.6", + "beberlei/doctrineextensions": "^1.3", + "common-gateway/woo-bundle": "dev-feature/GW-1596/test-symfony54", "commongateway/corebundle": "dev-feature/GW-1596/Symfony54", "composer/ca-bundle": "*", "composer/package-versions-deprecated": "1.11.99.3", @@ -44,6 +46,7 @@ "phpdocumentor/reflection-docblock": "^5.2", "phpoffice/phpspreadsheet": "^1.29", "phpoffice/phpword": "^0.18.2", + "phpstan/phpdoc-parser": "^1.25", "ramsey/uuid": "*", "ramsey/uuid-doctrine": "^2.0", "respect/validation": "^2.2", diff --git a/api/composer.lock b/api/composer.lock index 357dcf785..a9eb10c38 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4e609766146f7cef36edc281b78de4b1", + "content-hash": "bbeb6343c63d16ac02b98c99a771f12d", "packages": [ { "name": "adbario/php-dot-notation", @@ -130,100 +130,105 @@ }, { "name": "api-platform/core", - "version": "v2.6.5", + "version": "v2.7.16", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "4e22a289e474db454480020ff37d20472668c11c" + "reference": "e6f77e20b4ed9cb3e44c7398d6cda971d32190b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/4e22a289e474db454480020ff37d20472668c11c", - "reference": "4e22a289e474db454480020ff37d20472668c11c", + "url": "https://api.github.com/repos/api-platform/core/zipball/e6f77e20b4ed9cb3e44c7398d6cda971d32190b0", + "reference": "e6f77e20b4ed9cb3e44c7398d6cda971d32190b0", "shasum": "" }, "require": { "doctrine/inflector": "^1.0 || ^2.0", - "fig/link-util": "^1.0", "php": ">=7.1", "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/container": "^1.0", - "symfony/http-foundation": "^4.4 || ^5.1", - "symfony/http-kernel": "^4.4 || ^5.1", - "symfony/property-access": "^3.4.19 || ^4.4 || ^5.1", - "symfony/property-info": "^3.4 || ^4.4 || ^5.2.1", - "symfony/serializer": "^4.4 || ^5.1", - "symfony/web-link": "^4.4 || ^5.1", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.1 || ^3.0", + "symfony/http-foundation": "^4.4 || ^5.1 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.1 || ^6.0", + "symfony/property-access": "^3.4.19 || ^4.4 || ^5.1 || ^6.0", + "symfony/property-info": "^3.4 || ^4.4 || ^5.2.1 || ^6.0", + "symfony/serializer": "^4.4 || ^5.1 || ^6.0", + "symfony/web-link": "^4.4 || ^5.1 || ^6.0", "willdurand/negotiation": "^2.0.3 || ^3.0" }, "conflict": { "doctrine/common": "<2.7", + "doctrine/dbal": "<2.10", "doctrine/mongodb-odm": "<2.2", - "doctrine/persistence": "<1.3" + "doctrine/persistence": "<1.3", + "elasticsearch/elasticsearch": ">=8.0" }, "require-dev": { "behat/behat": "^3.1", - "behat/mink": "^1.7", + "behat/mink": "^1.9@dev", "doctrine/annotations": "^1.7", - "doctrine/cache": "^1.11", + "doctrine/cache": "^1.11 || ^2.1", "doctrine/common": "^2.11 || ^3.0", "doctrine/data-fixtures": "^1.2.2", + "doctrine/dbal": "^2.6 || ^3.0", "doctrine/doctrine-bundle": "^1.12 || ^2.0", "doctrine/mongodb-odm": "^2.2", "doctrine/mongodb-odm-bundle": "^4.0", - "doctrine/orm": "^2.6.4 || ^3.0", - "elasticsearch/elasticsearch": "^6.0 || ^7.0", + "doctrine/orm": "^2.6.4", + "elasticsearch/elasticsearch": "^7.11.0", "friends-of-behat/mink-browserkit-driver": "^1.3.1", "friends-of-behat/mink-extension": "^2.2", "friends-of-behat/symfony-extension": "^2.1", "guzzlehttp/guzzle": "^6.0 || ^7.0", - "jangregor/phpstan-prophecy": "^0.8", + "jangregor/phpstan-prophecy": "^1.0", "justinrainbow/json-schema": "^5.2.1", "phpdocumentor/reflection-docblock": "^3.0 || ^4.0 || ^5.1", "phpdocumentor/type-resolver": "^0.3 || ^0.4 || ^1.4", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.65", - "phpstan/phpstan-doctrine": "^0.12.7", - "phpstan/phpstan-phpunit": "^0.12.4", - "phpstan/phpstan-symfony": "^0.12.4", - "psr/log": "^1.0", + "phpspec/prophecy": "^1.10", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.1", + "phpstan/phpstan-doctrine": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-symfony": "^1.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", "ramsey/uuid": "^3.7 || ^4.0", "ramsey/uuid-doctrine": "^1.4", - "soyuka/contexts": "^3.3.1", + "soyuka/contexts": "^3.3.6", "soyuka/stubs-mongodb": "^1.0", - "symfony/asset": "^3.4 || ^4.4 || ^5.1", - "symfony/browser-kit": "^4.4 || ^5.1", - "symfony/cache": "^3.4 || ^4.4 || ^5.1", - "symfony/config": "^3.4 || ^4.4 || ^5.1", - "symfony/console": "^3.4 || ^4.4 || ^5.1", - "symfony/css-selector": "^3.4 || ^4.4 || ^5.1", - "symfony/debug": "^3.4 || ^4.4 || ^5.1", - "symfony/dependency-injection": "^3.4 || ^4.4 || ^5.1", - "symfony/doctrine-bridge": "^3.4 || ^4.4 || ^5.1", - "symfony/dom-crawler": "^3.4 || ^4.4 || ^5.1", - "symfony/event-dispatcher": "^3.4 || ^4.4 || ^5.1", - "symfony/expression-language": "^3.4 || ^4.4 || ^5.1", - "symfony/finder": "^3.4 || ^4.4 || ^5.1", - "symfony/form": "^3.4 || ^4.4 || ^5.1", - "symfony/framework-bundle": "^4.4 || ^5.1", - "symfony/http-client": "^4.4 || ^5.1", + "symfony/asset": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/browser-kit": "^4.4 || ^5.1 || ^6.0", + "symfony/cache": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/config": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/console": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/css-selector": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/debug": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/dependency-injection": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/doctrine-bridge": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/dom-crawler": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/event-dispatcher": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/expression-language": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/finder": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/form": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/framework-bundle": "^4.4 || ^5.1 || ^6.0", + "symfony/http-client": "^4.4 || ^5.1 || ^6.0", + "symfony/intl": "^4.4 || ^5.3 || ^6.0", + "symfony/maker-bundle": "^1.24", "symfony/mercure-bundle": "*", - "symfony/messenger": "^4.4 || ^5.1", - "symfony/phpunit-bridge": "^5.1.7", - "symfony/routing": "^3.4 || ^4.4 || ^5.1", - "symfony/security-bundle": "^3.4 || ^4.4 || ^5.1", - "symfony/security-core": "^4.4 || ^5.1", - "symfony/twig-bundle": "^3.4 || ^4.4 || ^5.1", - "symfony/validator": "^3.4 || ^4.4 || ^5.1", - "symfony/web-profiler-bundle": "^4.4 || ^5.1", - "symfony/yaml": "^3.4 || ^4.4 || ^5.1", + "symfony/messenger": "^4.4 || ^5.1 || ^6.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0", + "symfony/routing": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/security-bundle": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/security-core": "^4.4 || ^5.1 || ^6.0", + "symfony/twig-bundle": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/validator": "^3.4 || ^4.4 || ^5.1 || ^6.0", + "symfony/web-profiler-bundle": "^4.4 || ^5.1 || ^6.0", + "symfony/yaml": "^3.4 || ^4.4 || ^5.1 || ^6.0", "twig/twig": "^1.42.3 || ^2.12 || ^3.0", "webonyx/graphql-php": "^14.0" }, "suggest": { "doctrine/mongodb-odm-bundle": "To support MongoDB. Only versions 4.0 and later are supported.", "elasticsearch/elasticsearch": "To support Elasticsearch.", - "guzzlehttp/guzzle": "To use the HTTP cache invalidation system.", "ocramius/package-versions": "To display the API Platform's version in the debug bar.", "phpdocumentor/reflection-docblock": "To support extracting metadata from PHPDoc.", "psr/cache-implementation": "To use metadata caching.", @@ -231,6 +236,8 @@ "symfony/cache": "To have metadata caching when using Symfony integration.", "symfony/config": "To load XML configuration files.", "symfony/expression-language": "To use authorization features.", + "symfony/http-client": "To use the HTTP cache invalidation system.", + "symfony/messenger": "To support messenger integration.", "symfony/security": "To use authorization features.", "symfony/twig-bundle": "To use the Swagger UI integration.", "symfony/uid": "To support Symfony UUID/ULID identifiers.", @@ -243,12 +250,15 @@ "dev-main": "2.7.x-dev" }, "symfony": { - "require": "^3.4 || ^4.4 || ^5.1" + "require": "^3.4 || ^4.4 || ^5.1 || ^6.0" } }, "autoload": { + "files": [ + "src/deprecation.php" + ], "psr-4": { - "ApiPlatform\\Core\\": "src/" + "ApiPlatform\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -275,13 +285,17 @@ "rest", "swagger" ], + "support": { + "issues": "https://github.com/api-platform/core/issues", + "source": "https://github.com/api-platform/core/tree/v2.7.16" + }, "funding": [ { "url": "https://tidelift.com/funding/github/packagist/api-platform/core", "type": "tidelift" } ], - "time": "2021-06-15T16:53:33+00:00" + "time": "2023-10-06T10:13:25+00:00" }, { "name": "bacon/bacon-qr-code", @@ -337,6 +351,63 @@ }, "time": "2022-03-14T02:02:36+00:00" }, + { + "name": "beberlei/doctrineextensions", + "version": "v1.3.0", + "source": { + "type": "git", + "url": "https://github.com/beberlei/DoctrineExtensions.git", + "reference": "008f162f191584a6c37c03a803f718802ba9dd9a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/008f162f191584a6c37c03a803f718802ba9dd9a", + "reference": "008f162f191584a6c37c03a803f718802ba9dd9a", + "shasum": "" + }, + "require": { + "doctrine/orm": "^2.7", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.14", + "nesbot/carbon": "*", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "symfony/yaml": "^4.2 || ^5.0", + "zf1/zend-date": "^1.12", + "zf1/zend-registry": "^1.12" + }, + "type": "library", + "autoload": { + "psr-4": { + "DoctrineExtensions\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Steve Lacey", + "email": "steve@steve.ly" + } + ], + "description": "A set of extensions to Doctrine 2 that add support for additional query functions available in MySQL, Oracle, PostgreSQL and SQLite.", + "keywords": [ + "database", + "doctrine", + "orm" + ], + "support": { + "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.3.0" + }, + "time": "2020-11-29T07:37:23+00:00" + }, { "name": "behat/transliterator", "version": "v1.5.0", @@ -388,26 +459,25 @@ }, { "name": "brick/math", - "version": "0.9.3", + "version": "0.11.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478", + "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" + "php": "^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "5.0.0" }, "type": "library", "autoload": { @@ -432,19 +502,15 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" + "source": "https://github.com/brick/math/tree/0.11.0" }, "funding": [ { "url": "https://github.com/BenMorel", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" } ], - "time": "2021-08-15T20:50:18+00:00" + "time": "2023-01-15T23:15:59+00:00" }, { "name": "brick/reflection", @@ -489,6 +555,54 @@ }, "time": "2020-10-24T20:01:03+00:00" }, + { + "name": "common-gateway/woo-bundle", + "version": "dev-feature/GW-1596/test-symfony54", + "source": { + "type": "git", + "url": "https://github.com/CommonGateway/WooBundle.git", + "reference": "f11f0198a029e8706fcc016d11d1370a842b723c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CommonGateway/WooBundle/zipball/f11f0198a029e8706fcc016d11d1370a842b723c", + "reference": "f11f0198a029e8706fcc016d11d1370a842b723c", + "shasum": "" + }, + "require": { + "commongateway/corebundle": "^1.1.52 | dev-feature/GW-1596/Symfony54", + "php": ">=7.4" + }, + "require-dev": { + "symfony/dependency-injection": "~3.4|~4.1|~5.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "CommonGateway\\WOOBundle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "EUPL-1.2" + ], + "description": "A bundle for storing OpenWoo objects and synchronizing these objects from OpenWoo & xxllnc zaaksysteem.", + "homepage": "https://commongateway.nl", + "keywords": [ + "common", + "common-gateway-plugin", + "commongateway", + "conduction", + "gateway", + "symfony", + "woo" + ], + "support": { + "issues": "https://github.com/CommonGateway/WooBundle/issues", + "source": "https://github.com/CommonGateway/WooBundle/tree/feature/GW-1596/test-symfony54" + }, + "time": "2024-01-30T15:25:09+00:00" + }, { "name": "commongateway/corebundle", "version": "dev-feature/GW-1596/Symfony54", @@ -3094,139 +3208,6 @@ }, "time": "2021-07-06T20:39:40+00:00" }, - { - "name": "fgrosse/phpasn1", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/fgrosse/PHPASN1.git", - "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/42060ed45344789fb9f21f9f1864fc47b9e3507b", - "reference": "42060ed45344789fb9f21f9f1864fc47b9e3507b", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-coveralls/php-coveralls": "~2.0", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "suggest": { - "ext-bcmath": "BCmath is the fallback extension for big integer calculations", - "ext-curl": "For loading OID information from the web if they have not bee defined statically", - "ext-gmp": "GMP is the preferred extension for big integer calculations", - "phpseclib/bcmath_compat": "BCmath polyfill for servers where neither GMP nor BCmath is available" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "FG\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Friedrich Große", - "email": "friedrich.grosse@gmail.com", - "homepage": "https://github.com/FGrosse", - "role": "Author" - }, - { - "name": "All contributors", - "homepage": "https://github.com/FGrosse/PHPASN1/contributors" - } - ], - "description": "A PHP Framework that allows you to encode and decode arbitrary ASN.1 structures using the ITU-T X.690 Encoding Rules.", - "homepage": "https://github.com/FGrosse/PHPASN1", - "keywords": [ - "DER", - "asn.1", - "asn1", - "ber", - "binary", - "decoding", - "encoding", - "x.509", - "x.690", - "x509", - "x690" - ], - "support": { - "issues": "https://github.com/fgrosse/PHPASN1/issues", - "source": "https://github.com/fgrosse/PHPASN1/tree/v2.5.0" - }, - "abandoned": true, - "time": "2022-12-19T11:08:26+00:00" - }, - { - "name": "fig/link-util", - "version": "1.1.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/link-util.git", - "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/link-util/zipball/5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", - "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", - "shasum": "" - }, - "require": { - "php": ">=5.5.0", - "psr/link": "~1.0@dev" - }, - "provide": { - "psr/link-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.1", - "squizlabs/php_codesniffer": "^2.3.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Fig\\Link\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common utility implementations for HTTP links", - "keywords": [ - "http", - "http-link", - "link", - "psr", - "psr-13", - "rest" - ], - "time": "2021-02-03T23:36:04+00:00" - }, { "name": "friendsofphp/proxy-manager-lts", "version": "v1.0.16", @@ -5178,6 +5159,73 @@ ], "time": "2021-04-20T08:27:05+00:00" }, + { + "name": "paragonie/constant_time_encoding", + "version": "v2.6.3", + "source": { + "type": "git", + "url": "https://github.com/paragonie/constant_time_encoding.git", + "reference": "58c3f47f650c94ec05a151692652a868995d2938" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", + "reference": "58c3f47f650c94ec05a151692652a868995d2938", + "shasum": "" + }, + "require": { + "php": "^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^6|^7|^8|^9", + "vimeo/psalm": "^1|^2|^3|^4" + }, + "type": "library", + "autoload": { + "psr-4": { + "ParagonIE\\ConstantTime\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com", + "role": "Maintainer" + }, + { + "name": "Steve 'Sc00bz' Thomas", + "email": "steve@tobtu.com", + "homepage": "https://www.tobtu.com", + "role": "Original Developer" + } + ], + "description": "Constant-time Implementations of RFC 4648 Encoding (Base-64, Base-32, Base-16)", + "keywords": [ + "base16", + "base32", + "base32_decode", + "base32_encode", + "base64", + "base64_decode", + "base64_encode", + "bin2hex", + "encoding", + "hex", + "hex2bin", + "rfc4648" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2022-06-14T06:56:20+00:00" + }, { "name": "phenx/php-font-lib", "version": "0.5.4", @@ -5630,6 +5678,53 @@ }, "time": "2021-06-04T20:58:45+00:00" }, + { + "name": "phpstan/phpdoc-parser", + "version": "1.25.0", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "support": { + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" + }, + "time": "2024-01-04T17:06:16+00:00" + }, { "name": "psr/cache", "version": "1.0.1", @@ -5679,6 +5774,54 @@ }, "time": "2016-08-06T20:24:11+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "1.1.2", @@ -6914,40 +7057,36 @@ }, { "name": "spomky-labs/aes-key-wrap", - "version": "v6.0.0", + "version": "v7.0.0", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/aes-key-wrap.git", - "reference": "97388255a37ad6fb1ed332d07e61fa2b7bb62e0d" + "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/aes-key-wrap/zipball/97388255a37ad6fb1ed332d07e61fa2b7bb62e0d", - "reference": "97388255a37ad6fb1ed332d07e61fa2b7bb62e0d", + "url": "https://api.github.com/repos/Spomky-Labs/aes-key-wrap/zipball/fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", + "reference": "fbeb834b1f83aa8fbdfbd4c12124f71d4c1606ae", "shasum": "" }, "require": { "ext-mbstring": "*", - "lib-openssl": "*", - "php": ">=7.2", - "thecodingmachine/safe": "^1.1" + "ext-openssl": "*", + "php": ">=8.0" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-beberlei-assert": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0|^8.0|^9.0", - "thecodingmachine/phpstan-safe-rule": "^1.0" + "infection/infection": "^0.25.4", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-beberlei-assert": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.0", + "rector/rector": "^0.12.5", + "symplify/easy-coding-standard": "^10.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { "psr-4": { "AESKW\\": "src/" @@ -6978,39 +7117,67 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/aes-key-wrap/issues", - "source": "https://github.com/Spomky-Labs/aes-key-wrap/tree/v6.0.0" + "source": "https://github.com/Spomky-Labs/aes-key-wrap/tree/v7.0.0" }, - "time": "2020-08-01T14:07:55+00:00" + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2021-12-08T20:36:59+00:00" }, { - "name": "spomky-labs/base64url", - "version": "v2.0.4", + "name": "spomky-labs/pki-framework", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/Spomky-Labs/base64url.git", - "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d" + "url": "https://github.com/Spomky-Labs/pki-framework.git", + "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/base64url/zipball/7752ce931ec285da4ed1f4c5aa27e45e097be61d", - "reference": "7752ce931ec285da4ed1f4c5aa27e45e097be61d", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/d3ba688bf40e7c6e0dabf065ee18fc210734e760", + "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760", "shasum": "" }, "require": { - "php": ">=7.1" + "brick/math": "^0.10 || ^0.11", + "ext-mbstring": "*", + "php": ">=8.1" }, "require-dev": { - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.11|^0.12", - "phpstan/phpstan-beberlei-assert": "^0.11|^0.12", - "phpstan/phpstan-deprecation-rules": "^0.11|^0.12", - "phpstan/phpstan-phpunit": "^0.11|^0.12", - "phpstan/phpstan-strict-rules": "^0.11|^0.12" + "ekino/phpstan-banned-code": "^1.0", + "ext-gmp": "*", + "ext-openssl": "*", + "infection/infection": "^0.26", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-beberlei-assert": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^10.0", + "rector/rector": "^0.15", + "roave/security-advisories": "dev-latest", + "symfony/phpunit-bridge": "^6.1", + "symfony/var-dumper": "^6.1", + "symplify/easy-coding-standard": "^11.1", + "thecodingmachine/phpstan-safe-rule": "^1.2" + }, + "suggest": { + "ext-bcmath": "For better performance (or GMP)", + "ext-gmp": "For better performance (or BCMath)", + "ext-openssl": "For OpenSSL based cyphering" }, "type": "library", "autoload": { "psr-4": { - "Base64Url\\": "src/" + "SpomkyLabs\\Pki\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -7018,22 +7185,49 @@ "MIT" ], "authors": [ + { + "name": "Joni Eskelinen", + "email": "jonieske@gmail.com", + "role": "Original developer" + }, { "name": "Florent Morselli", - "homepage": "https://github.com/Spomky-Labs/base64url/contributors" + "email": "florent.morselli@spomky-labs.com", + "role": "Spomky-Labs PKI Framework developer" } ], - "description": "Base 64 URL Safe Encoding/Decoding PHP Library", - "homepage": "https://github.com/Spomky-Labs/base64url", + "description": "A PHP framework for managing Public Key Infrastructures. It comprises X.509 public key certificates, attribute certificates, certification requests and certification path validation.", + "homepage": "https://github.com/spomky-labs/pki-framework", "keywords": [ - "base64", - "rfc4648", - "safe", - "url" + "DER", + "Private Key", + "ac", + "algorithm identifier", + "asn.1", + "asn1", + "attribute certificate", + "certificate", + "certification request", + "cryptography", + "csr", + "decrypt", + "ec", + "encrypt", + "pem", + "pkcs", + "public key", + "rsa", + "sign", + "signature", + "verify", + "x.509", + "x.690", + "x509", + "x690" ], "support": { - "issues": "https://github.com/Spomky-Labs/base64url/issues", - "source": "https://github.com/Spomky-Labs/base64url/tree/v2.0.4" + "issues": "https://github.com/Spomky-Labs/pki-framework/issues", + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.0" }, "funding": [ { @@ -7045,7 +7239,7 @@ "type": "patreon" } ], - "time": "2020-11-03T09:10:25+00:00" + "time": "2023-02-13T17:21:24+00:00" }, { "name": "symfony/amqp-messenger", @@ -12459,36 +12653,37 @@ }, { "name": "web-token/jwt-framework", - "version": "v2.2.11", + "version": "3.2.9", "source": { "type": "git", "url": "https://github.com/web-token/jwt-framework.git", - "reference": "643cced197e32471418bd89e7a44b69fd04eb9de" + "reference": "679ab72706fedc9ab72794ccc13133b5f7b58250" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/643cced197e32471418bd89e7a44b69fd04eb9de", - "reference": "643cced197e32471418bd89e7a44b69fd04eb9de", + "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/679ab72706fedc9ab72794ccc13133b5f7b58250", + "reference": "679ab72706fedc9ab72794ccc13133b5f7b58250", "shasum": "" }, "require": { - "brick/math": "^0.8.17|^0.9", + "brick/math": "^0.9|^0.10|^0.11|^0.12", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "ext-sodium": "*", - "fgrosse/phpasn1": "^2.0", - "php": ">=7.2", + "paragonie/constant_time_encoding": "^2.6", + "php": ">=8.1", + "psr/clock": "^1.0", "psr/event-dispatcher": "^1.0", "psr/http-client": "^1.0", "psr/http-factory": "^1.0", - "spomky-labs/aes-key-wrap": "^5.0|^6.0", - "spomky-labs/base64url": "^1.0|^2.0", - "symfony/config": "^4.2|^5.0", - "symfony/console": "^4.2|^5.0", - "symfony/dependency-injection": "^4.2|^5.0", - "symfony/event-dispatcher": "^4.2|^5.0", - "symfony/http-kernel": "^4.2|^5.0", + "spomky-labs/aes-key-wrap": "^7.0", + "spomky-labs/pki-framework": "^1.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/polyfill-mbstring": "^1.12" }, "conflict": { @@ -12500,7 +12695,6 @@ "web-token/jwt-checker": "self.version", "web-token/jwt-console": "self.version", "web-token/jwt-core": "self.version", - "web-token/jwt-easy": "self.version", "web-token/jwt-encryption": "self.version", "web-token/jwt-encryption-algorithm-aescbc": "self.version", "web-token/jwt-encryption-algorithm-aesgcm": "self.version", @@ -12524,28 +12718,35 @@ "web-token/signature-pack": "self.version" }, "require-dev": { - "bjeavons/zxcvbn-php": "^1.0", - "blackfire/php-sdk": "^1.14", + "bjeavons/zxcvbn-php": "^1.3", + "blackfire/php-sdk": "^2.0", + "ekino/phpstan-banned-code": "^1.0", "ext-curl": "*", "ext-gmp": "*", - "friendsofphp/php-cs-fixer": "^2.16", - "infection/infection": "^0.15|^0.16|^0.17|^0.18|^0.19|^0.20", - "matthiasnoback/symfony-config-test": "^3.1|^4.0", - "nyholm/psr7": "^1.3", - "php-coveralls/php-coveralls": "^2.0", - "php-http/mock-client": "^1.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.0|^9.0", - "symfony/browser-kit": "^4.2|^5.0", - "symfony/finder": "^4.2|^5.0", - "symfony/framework-bundle": "^4.2|^5.0", - "symfony/http-client": "^5.2", - "symfony/phpunit-bridge": "^4.2|^5.0", - "symfony/serializer": "^4.2|^5.0", - "symfony/var-dumper": "^4.2|^5.0" + "infection/infection": "^0.27", + "matthiasnoback/symfony-config-test": "^5.0", + "nyholm/psr7": "^1.5", + "php-http/mock-client": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.3", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "qossmic/deptrac-shim": "^1.0", + "rector/rector": "^0.18", + "roave/security-advisories": "dev-latest", + "symfony/browser-kit": "^6.1|^7.0", + "symfony/finder": "^6.1|^7.0", + "symfony/framework-bundle": "^6.1|^7.0", + "symfony/http-client": "^6.1|^7.0", + "symfony/phpunit-bridge": "^6.1|^7.0", + "symfony/serializer": "^6.1|^7.0", + "symfony/var-dumper": "^6.1|^7.0", + "symfony/yaml": "^6.1|^7.0", + "symplify/easy-coding-standard": "^12.0" }, "suggest": { "bjeavons/zxcvbn-php": "Adds key quality check for oct keys.", @@ -12560,31 +12761,55 @@ "autoload": { "psr-4": { "Jose\\": "src/", + "Jose\\Component\\Core\\": "src/Component/Core/", + "Jose\\Component\\Checker\\": "src/Component/Checker/", + "Jose\\Component\\Console\\": "src/Component/Console/", + "Jose\\Component\\Signature\\": "src/Component/Signature/", + "Jose\\Bundle\\JoseFramework\\": "src/Bundle/JoseFramework/", + "Jose\\Component\\Encryption\\": "src/Component/Encryption/", + "Jose\\Component\\NestedToken\\": "src/Component/NestedToken/", "Jose\\Component\\Core\\Util\\Ecc\\": [ - "src/Ecc" + "src/Ecc", + "src/Ecc/" ], + "Jose\\Component\\KeyManagement\\": "src/Component/KeyManagement/", "Jose\\Component\\Signature\\Algorithm\\": [ "src/SignatureAlgorithm/ECDSA", + "src/SignatureAlgorithm/ECDSA/", "src/SignatureAlgorithm/EdDSA", + "src/SignatureAlgorithm/EdDSA/", + "src/SignatureAlgorithm/Experimental", + "src/SignatureAlgorithm/Experimental/", "src/SignatureAlgorithm/HMAC", + "src/SignatureAlgorithm/HMAC/", "src/SignatureAlgorithm/None", + "src/SignatureAlgorithm/None/", "src/SignatureAlgorithm/RSA", - "src/SignatureAlgorithm/Experimental" + "src/SignatureAlgorithm/RSA/" ], "Jose\\Component\\Encryption\\Algorithm\\": [ - "src/EncryptionAlgorithm/Experimental" + "src/EncryptionAlgorithm/Experimental", + "src/EncryptionAlgorithm/Experimental/" ], "Jose\\Component\\Encryption\\Algorithm\\KeyEncryption\\": [ "src/EncryptionAlgorithm/KeyEncryption/AESGCMKW", + "src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/", "src/EncryptionAlgorithm/KeyEncryption/AESKW", + "src/EncryptionAlgorithm/KeyEncryption/AESKW/", "src/EncryptionAlgorithm/KeyEncryption/Direct", + "src/EncryptionAlgorithm/KeyEncryption/Direct/", "src/EncryptionAlgorithm/KeyEncryption/ECDHES", + "src/EncryptionAlgorithm/KeyEncryption/ECDHES/", "src/EncryptionAlgorithm/KeyEncryption/PBES2", - "src/EncryptionAlgorithm/KeyEncryption/RSA" + "src/EncryptionAlgorithm/KeyEncryption/PBES2/", + "src/EncryptionAlgorithm/KeyEncryption/RSA", + "src/EncryptionAlgorithm/KeyEncryption/RSA/" ], "Jose\\Component\\Encryption\\Algorithm\\ContentEncryption\\": [ + "src/EncryptionAlgorithm/ContentEncryption/AESCBC", + "src/EncryptionAlgorithm/ContentEncryption/AESCBC/", "src/EncryptionAlgorithm/ContentEncryption/AESGCM", - "src/EncryptionAlgorithm/ContentEncryption/AESCBC" + "src/EncryptionAlgorithm/ContentEncryption/AESGCM/" ] } }, @@ -12599,7 +12824,7 @@ }, { "name": "All contributors", - "homepage": "https://github.com/web-token/jwt-framework/contributors" + "homepage": "https://github.com/web-token/jwt-bundle/contributors" } ], "description": "JSON Object Signing and Encryption library for PHP and Symfony Bundle.", @@ -12624,15 +12849,19 @@ ], "support": { "issues": "https://github.com/web-token/jwt-framework/issues", - "source": "https://github.com/web-token/jwt-framework/tree/v2.2.11" + "source": "https://github.com/web-token/jwt-framework/tree/3.2.9" }, "funding": [ { "url": "https://github.com/Spomky", "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" } ], - "time": "2021-06-25T15:59:52+00:00" + "time": "2024-01-04T15:42:08+00:00" }, { "name": "webmozart/assert", @@ -14430,6 +14659,7 @@ "aliases": [], "minimum-stability": "dev", "stability-flags": { + "common-gateway/woo-bundle": 20, "commongateway/corebundle": 20 }, "prefer-stable": true, diff --git a/api/config/bundles.php b/api/config/bundles.php index 432377853..330e6b049 100644 --- a/api/config/bundles.php +++ b/api/config/bundles.php @@ -18,4 +18,5 @@ Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], League\FlysystemBundle\FlysystemBundle::class => ['all' => true], Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], + CommonGateway\WOOBundle\WOOBundle::class => ['all' => true], ]; diff --git a/api/public/bundles/apiplatform/fonts/open-sans/400.css b/api/public/bundles/apiplatform/fonts/open-sans/400.css index 72d89b076..e6c28c969 100644 --- a/api/public/bundles/apiplatform/fonts/open-sans/400.css +++ b/api/public/bundles/apiplatform/fonts/open-sans/400.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-cyrillic-ext-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; } /* open-sans-cyrillic-400-normal*/ @font-face { @@ -14,7 +14,7 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-cyrillic-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; } /* open-sans-greek-ext-400-normal*/ @font-face { @@ -34,6 +34,15 @@ src: url('./files/open-sans-greek-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); unicode-range: U+0370-03FF; } +/* open-sans-hebrew-400-normal*/ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 400; + src: url('./files/open-sans-hebrew-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); + unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F; +} /* open-sans-vietnamese-400-normal*/ @font-face { font-family: 'Open Sans'; @@ -41,7 +50,7 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-vietnamese-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; } /* open-sans-latin-ext-400-normal*/ @font-face { @@ -50,7 +59,7 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-latin-ext-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* open-sans-latin-400-normal*/ @font-face { @@ -59,5 +68,5 @@ font-display: swap; font-weight: 400; src: url('./files/open-sans-latin-400-normal.woff2') format('woff2'), url('./files/open-sans-all-400-normal.woff') format('woff'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } diff --git a/api/public/bundles/apiplatform/fonts/open-sans/700.css b/api/public/bundles/apiplatform/fonts/open-sans/700.css index a41de9de1..e8bb937c3 100644 --- a/api/public/bundles/apiplatform/fonts/open-sans/700.css +++ b/api/public/bundles/apiplatform/fonts/open-sans/700.css @@ -5,7 +5,7 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-cyrillic-ext-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; + unicode-range: U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; } /* open-sans-cyrillic-700-normal*/ @font-face { @@ -14,7 +14,7 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-cyrillic-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; + unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; } /* open-sans-greek-ext-700-normal*/ @font-face { @@ -34,6 +34,15 @@ src: url('./files/open-sans-greek-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); unicode-range: U+0370-03FF; } +/* open-sans-hebrew-700-normal*/ +@font-face { + font-family: 'Open Sans'; + font-style: normal; + font-display: swap; + font-weight: 700; + src: url('./files/open-sans-hebrew-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); + unicode-range: U+0590-05FF,U+200C-2010,U+20AA,U+25CC,U+FB1D-FB4F; +} /* open-sans-vietnamese-700-normal*/ @font-face { font-family: 'Open Sans'; @@ -41,7 +50,7 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-vietnamese-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB; + unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+1EA0-1EF9,U+20AB; } /* open-sans-latin-ext-700-normal*/ @font-face { @@ -50,7 +59,7 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-latin-ext-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF; + unicode-range: U+0100-024F,U+0259,U+1E00-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF; } /* open-sans-latin-700-normal*/ @font-face { @@ -59,5 +68,5 @@ font-display: swap; font-weight: 700; src: url('./files/open-sans-latin-700-normal.woff2') format('woff2'), url('./files/open-sans-all-700-normal.woff') format('woff'); - unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; + unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; } diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-400-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-400-normal.woff2 index 4c5a6f0f4d14edaf1c78de663d627e0786bd0bce..6bc81f45b26e5af33975150afd2ae71355e3f163 100644 GIT binary patch literal 10652 zcmV;NDPz`mPew8T0RR9104baR5&!@I08In{04X*A0RR9100000000000000000000 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 C;#SE3 literal 9400 zcmV;pBuCqKPew8T0RR9103^5o5dZ)H07wu303=xe0RR9100000000000000000000 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 diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-700-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-700-normal.woff2 index 43d5a7cadcb005b9b35880084f90cee58495e3b9..26f70ab0464be0b8e10d363f2847ad866434f379 100644 GIT binary patch literal 10440 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 literal 9560 zcmV-eC8yeVPew8T0RR9103}!e5dZ)H080P>03`VU0RR9100000000000000000000 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 literal 16688 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 diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-700-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-cyrillic-ext-700-normal.woff2 index f1ae68562bbb8bd6c6b0eeab19c403d540576a16..8925e521542318a6190470fbcbce7e8742e2f20b 100644 GIT binary patch literal 16920 zcmV(}K+wN;Pew8T0RR91074i55&!@I0D$ZO070_=0RR9100000000000000000000 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 diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-400-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-400-normal.woff2 index 3770a39d6e75c7c54cb358fe49456ca61dd0476b..ce49b50c0373898495067b72a3a96ad5717373f3 100644 GIT binary patch literal 8952 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 S0&)PA+nYYh-O{VPX-xp2x{{#) literal 7704 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 SoLodJ=XCEwjIdsJ>|p>lRLzC} diff --git a/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-700-normal.woff2 b/api/public/bundles/apiplatform/fonts/open-sans/files/open-sans-greek-700-normal.woff2 index eff71c00128ccb05408e2874a9102d480ed4ccb6..25f9dbd1e89d63ed724e67d7cf0bf666c78fefee 100644 GIT binary patch literal 8816 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 Date: Tue, 30 Jan 2024 17:00:42 +0100 Subject: [PATCH 10/15] update packages guzzle, endroid, dompdf --- api/composer.json | 3 - api/composer.lock | 218 ++++++++++++++++++++++++++++------------------ 2 files changed, 135 insertions(+), 86 deletions(-) diff --git a/api/composer.json b/api/composer.json index 9306f0f33..c7b0f077e 100644 --- a/api/composer.json +++ b/api/composer.json @@ -28,11 +28,8 @@ "doctrine/orm": "^2.14", "doctrine/persistence": "^2.4", "dompdf/dompdf": "^2", - "endroid/qr-code-bundle": "3.4", "friendsofphp/proxy-manager-lts": "*", "gedmo/doctrine-extensions": "^3.5", - "guzzlehttp/guzzle": "6.5.8", - "guzzlehttp/psr7": "1.9", "hautelook/alice-bundle": "^2.9.0", "jwadhams/json-logic-php": "^1.4", "laminas/laminas-code": "*", diff --git a/api/composer.lock b/api/composer.lock index a9eb10c38..334d0655f 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bbeb6343c63d16ac02b98c99a771f12d", + "content-hash": "03815a70fb53242d8f693817fc93bac2", "packages": [ { "name": "adbario/php-dot-notation", @@ -609,12 +609,12 @@ "source": { "type": "git", "url": "https://github.com/CommonGateway/CoreBundle.git", - "reference": "4b0e4f878fbd3651f978f2a2b5409a18a1466b82" + "reference": "abc8781733fc960b48babc759ffe741bd3613254" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/4b0e4f878fbd3651f978f2a2b5409a18a1466b82", - "reference": "4b0e4f878fbd3651f978f2a2b5409a18a1466b82", + "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/abc8781733fc960b48babc759ffe741bd3613254", + "reference": "abc8781733fc960b48babc759ffe741bd3613254", "shasum": "" }, "require": { @@ -627,13 +627,13 @@ "doctrine/doctrine-migrations-bundle": "^3.1", "doctrine/orm": "^2.14", "dompdf/dompdf": "^2", - "endroid/qr-code-bundle": "3.4", + "endroid/qr-code-bundle": "^3.4", "ext-ctype": "*", "ext-fileinfo": "*", "ext-iconv": "*", "ext-json": "*", - "guzzlehttp/guzzle": "6.5.8", - "guzzlehttp/psr7": "1.9", + "guzzlehttp/guzzle": "^6.5.8 | ^7.5", + "guzzlehttp/psr7": "1.9 | ^2.4", "hautelook/alice-bundle": "^2.9.0", "jwadhams/json-logic-php": "^1.4", "league/flysystem-bundle": "^2.4", @@ -724,7 +724,7 @@ "issues": "https://github.com/CommonGateway/CoreBundle/issues", "source": "https://github.com/CommonGateway/CoreBundle" }, - "time": "2024-01-30T13:42:40+00:00" + "time": "2024-01-30T15:57:35+00:00" }, { "name": "composer/ca-bundle", @@ -2697,16 +2697,16 @@ }, { "name": "dompdf/dompdf", - "version": "v2.0.1", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085" + "reference": "093f2d9739cec57428e39ddadedfd4f3ae862c0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/c5310df0e22c758c85ea5288175fc6cd777bc085", - "reference": "c5310df0e22c758c85ea5288175fc6cd777bc085", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/093f2d9739cec57428e39ddadedfd4f3ae862c0f", + "reference": "093f2d9739cec57428e39ddadedfd4f3ae862c0f", "shasum": "" }, "require": { @@ -2753,9 +2753,9 @@ "homepage": "https://github.com/dompdf/dompdf", "support": { "issues": "https://github.com/dompdf/dompdf/issues", - "source": "https://github.com/dompdf/dompdf/tree/v2.0.1" + "source": "https://github.com/dompdf/dompdf/tree/v2.0.4" }, - "time": "2022-09-22T13:43:41+00:00" + "time": "2023-12-12T20:19:39+00:00" }, { "name": "dragonmantank/cron-expression", @@ -3022,28 +3022,32 @@ }, { "name": "endroid/qr-code-bundle", - "version": "3.4.0", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/endroid/qr-code-bundle.git", - "reference": "e853ba6c87b5cb1386e58015c26edd0da7bbc780" + "reference": "36d7e61e02d84c92702138cc1c6dac5a0565a5ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/qr-code-bundle/zipball/e853ba6c87b5cb1386e58015c26edd0da7bbc780", - "reference": "e853ba6c87b5cb1386e58015c26edd0da7bbc780", + "url": "https://api.github.com/repos/endroid/qr-code-bundle/zipball/36d7e61e02d84c92702138cc1c6dac5a0565a5ff", + "reference": "36d7e61e02d84c92702138cc1c6dac5a0565a5ff", "shasum": "" }, "require": { - "endroid/installer": "^1.1", - "endroid/qr-code": "^3.7.3", + "endroid/installer": "^1.2.2", + "endroid/qr-code": "^3.7.8", "php": ">=7.2", - "symfony/framework-bundle": "^3.4||^4.1.12||^5.0", - "symfony/twig-bundle": "^3.4||^4.0||^5.0", - "symfony/yaml": "^3.4||^4.0||^5.0" + "symfony/framework-bundle": "^3.4||^4.4||^5.0", + "symfony/twig-bundle": "^3.4||^4.4||^5.0", + "symfony/yaml": "^3.4||^4.4||^5.0" }, "require-dev": { - "endroid/test": "dev-master" + "endroid/quality": "dev-master" + }, + "suggest": { + "roave/security-advisories": "Avoids installation of package versions with vulnerabilities", + "symfony/security-checker": "Checks your composer.lock for vulnerabilities" }, "type": "symfony-bundle", "extra": { @@ -3078,9 +3082,15 @@ ], "support": { "issues": "https://github.com/endroid/qr-code-bundle/issues", - "source": "https://github.com/endroid/qr-code-bundle/tree/master" + "source": "https://github.com/endroid/qr-code-bundle/tree/3.4.3" }, - "time": "2019-11-29T22:50:41+00:00" + "funding": [ + { + "url": "https://github.com/endroid", + "type": "github" + } + ], + "time": "2020-04-25T13:48:19+00:00" }, { "name": "ezyang/htmlpurifier", @@ -3419,37 +3429,47 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.5.8", + "version": "7.7.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981" + "reference": "085b026db54d4b5012f727c80c9958e8b8cbc454" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981", - "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/085b026db54d4b5012f727c80c9958e8b8cbc454", + "reference": "085b026db54d4b5012f727c80c9958e8b8cbc454", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.9", - "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17" + "guzzlehttp/promises": "^1.5.3 || ^2.0", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", - "psr/log": "^1.1" + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "6.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -3502,19 +3522,20 @@ } ], "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", "keywords": [ "client", "curl", "framework", "http", "http client", + "psr-18", + "psr-7", "rest", "web service" ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5.8" + "source": "https://github.com/guzzle/guzzle/tree/7.7.1" }, "funding": [ { @@ -3530,20 +3551,20 @@ "type": "tidelift" } ], - "time": "2022-06-20T22:16:07+00:00" + "time": "2023-08-27T10:02:06+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.4.1", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", - "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { @@ -3553,28 +3574,38 @@ "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4-dev" - } - }, "autoload": { - "psr-4": { - "GuzzleHttp\\Promise\\": "src/" - }, "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, { "name": "Michael Dowling", "email": "mtdowling@gmail.com", "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" } ], "description": "Guzzle promises library", @@ -3583,49 +3614,64 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.1" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, - "time": "2021-03-07T09:25:29+00:00" + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2023-05-21T12:31:43+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.9.0", + "version": "2.4.5", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318" + "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", - "reference": "e98e3e6d4f86621a9b75f623996e6bbdeb4b9318", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/0454e12ef0cd597ccd2adb036f7bda4e7fface66", + "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + "bamarni/composer-bin-plugin": "^1.8.1", + "http-interop/http-factory-tests": "^0.9", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.9-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Psr7\\": "src/" } @@ -3664,6 +3710,11 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -3679,7 +3730,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.9.0" + "source": "https://github.com/guzzle/psr7/tree/2.4.5" }, "funding": [ { @@ -3695,7 +3746,7 @@ "type": "tidelift" } ], - "time": "2022-06-20T21:43:03+00:00" + "time": "2023-04-17T16:00:45+00:00" }, { "name": "hautelook/alice-bundle", @@ -5272,24 +5323,25 @@ }, { "name": "phenx/php-svg-lib", - "version": "0.3.4", + "version": "0.5.1", "source": { "type": "git", - "url": "https://github.com/PhenX/php-svg-lib.git", - "reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2" + "url": "https://github.com/dompdf/php-svg-lib.git", + "reference": "8a8a1ebcf6aea861ef30197999f096f7bd4b4456" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/f627771eb854aa7f45f80add0f23c6c4d67ea0f2", - "reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/8a8a1ebcf6aea861ef30197999f096f7bd4b4456", + "reference": "8a8a1ebcf6aea861ef30197999f096f7bd4b4456", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "sabberworm/php-css-parser": "^8.3" + "ext-mbstring": "*", + "php": "^7.1 || ^8.0", + "sabberworm/php-css-parser": "^8.4" }, "require-dev": { - "phpunit/phpunit": "^9.5" + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" }, "type": "library", "autoload": { @@ -5310,10 +5362,10 @@ "description": "A library to read, parse and export to PDF SVG files.", "homepage": "https://github.com/PhenX/php-svg-lib", "support": { - "issues": "https://github.com/PhenX/php-svg-lib/issues", - "source": "https://github.com/PhenX/php-svg-lib/tree/0.3.4" + "issues": "https://github.com/dompdf/php-svg-lib/issues", + "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.1" }, - "time": "2021-10-18T02:13:32+00:00" + "time": "2023-12-11T20:56:08+00:00" }, { "name": "phpdocumentor/reflection-common", From 8443ea122b2d2083757aa4351fe0c68fc4b9f6db Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 31 Jan 2024 13:30:31 +0100 Subject: [PATCH 11/15] Update to Symfony 5.4.35 --- api/composer.json | 2 +- api/composer.lock | 645 +++++++++++++++++++++++----------------------- 2 files changed, 324 insertions(+), 323 deletions(-) diff --git a/api/composer.json b/api/composer.json index c7b0f077e..880621f59 100644 --- a/api/composer.json +++ b/api/composer.json @@ -66,7 +66,7 @@ "symfony/runtime": "5.3.* | ^5.4", "symfony/security-bundle": "5.3.* | ^5.4", "symfony/sendinblue-mailer": "5.3.* | ^5.4", - "symfony/serializer": "5.3.* | ^5.4", + "symfony/serializer": "^5.4", "symfony/twig-bundle": "5.3.* | ^5.4", "symfony/validator": "5.3.* | ^5.4", "symfony/web-profiler-bundle": "5.3.* | ^5.4", diff --git a/api/composer.lock b/api/composer.lock index 334d0655f..a80ac906f 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "03815a70fb53242d8f693817fc93bac2", + "content-hash": "c7b5b2ffa48459001f0c49c682f8719d", "packages": [ { "name": "adbario/php-dot-notation", @@ -7295,16 +7295,16 @@ }, { "name": "symfony/amqp-messenger", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/amqp-messenger.git", - "reference": "8ba6a2c482d3fce9d450b702098ca033bbe42de4" + "reference": "41d9dadbfd9edd0906c9a8d6b614f2fab274408f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/8ba6a2c482d3fce9d450b702098ca033bbe42de4", - "reference": "8ba6a2c482d3fce9d450b702098ca033bbe42de4", + "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/41d9dadbfd9edd0906c9a8d6b614f2fab274408f", + "reference": "41d9dadbfd9edd0906c9a8d6b614f2fab274408f", "shasum": "" }, "require": { @@ -7344,7 +7344,7 @@ "description": "Symfony AMQP extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.31" + "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.35" }, "funding": [ { @@ -7360,20 +7360,20 @@ "type": "tidelift" } ], - "time": "2023-11-03T16:16:43+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/asset", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635" + "reference": "0e98032106d18e57f57176d616e3fae80db7a845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/edb2457a0ef615d420d2319851f679a4cc3b3635", - "reference": "edb2457a0ef615d420d2319851f679a4cc3b3635", + "url": "https://api.github.com/repos/symfony/asset/zipball/0e98032106d18e57f57176d616e3fae80db7a845", + "reference": "0e98032106d18e57f57176d616e3fae80db7a845", "shasum": "" }, "require": { @@ -7418,7 +7418,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v5.4.31" + "source": "https://github.com/symfony/asset/tree/v5.4.35" }, "funding": [ { @@ -7434,20 +7434,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T07:58:33+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/cache", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a" + "reference": "db1adb004e2da984085d0178964eb6f319d3cba1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/b17f28169f7a2f2c0cddf2b044d729f5b75efe5a", - "reference": "b17f28169f7a2f2c0cddf2b044d729f5b75efe5a", + "url": "https://api.github.com/repos/symfony/cache/zipball/db1adb004e2da984085d0178964eb6f319d3cba1", + "reference": "db1adb004e2da984085d0178964eb6f319d3cba1", "shasum": "" }, "require": { @@ -7515,7 +7515,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.34" + "source": "https://github.com/symfony/cache/tree/v5.4.35" }, "funding": [ { @@ -7531,20 +7531,20 @@ "type": "tidelift" } ], - "time": "2023-12-18T14:56:06+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/config", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9" + "reference": "6b763438a22a4f20885e994ad6702f6a3f25430e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", - "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", + "url": "https://api.github.com/repos/symfony/config/zipball/6b763438a22a4f20885e994ad6702f6a3f25430e", + "reference": "6b763438a22a4f20885e994ad6702f6a3f25430e", "shasum": "" }, "require": { @@ -7594,7 +7594,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.31" + "source": "https://github.com/symfony/config/tree/v5.4.35" }, "funding": [ { @@ -7610,20 +7610,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:22:43+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/console", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "4b4d8cd118484aa604ec519062113dd87abde18c" + "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/4b4d8cd118484aa604ec519062113dd87abde18c", - "reference": "4b4d8cd118484aa604ec519062113dd87abde18c", + "url": "https://api.github.com/repos/symfony/console/zipball/dbdf6adcb88d5f83790e1efb57ef4074309d3931", + "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931", "shasum": "" }, "require": { @@ -7693,7 +7693,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.34" + "source": "https://github.com/symfony/console/tree/v5.4.35" }, "funding": [ { @@ -7709,7 +7709,7 @@ "type": "tidelift" } ], - "time": "2023-12-08T13:33:03+00:00" + "time": "2024-01-23T14:28:09+00:00" }, { "name": "symfony/contracts", @@ -7814,16 +7814,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c" + "reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/75d568165a65fa7d8124869ec7c3a90424352e6c", - "reference": "75d568165a65fa7d8124869ec7c3a90424352e6c", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/45474d527212ca67cdb93f6c5e6da68f4bc67118", + "reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118", "shasum": "" }, "require": { @@ -7883,7 +7883,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.34" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.35" }, "funding": [ { @@ -7899,20 +7899,20 @@ "type": "tidelift" } ], - "time": "2023-12-28T09:31:38+00:00" + "time": "2024-01-29T20:37:36+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "0c5e5ad8b8249a0a86f415e16695180c3b61be76" + "reference": "f1c8d1f75ede8ba6810498666159c50ca05beec0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/0c5e5ad8b8249a0a86f415e16695180c3b61be76", - "reference": "0c5e5ad8b8249a0a86f415e16695180c3b61be76", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/f1c8d1f75ede8ba6810498666159c50ca05beec0", + "reference": "f1c8d1f75ede8ba6810498666159c50ca05beec0", "shasum": "" }, "require": { @@ -7999,7 +7999,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.34" + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.35" }, "funding": [ { @@ -8015,20 +8015,20 @@ "type": "tidelift" } ], - "time": "2023-12-14T14:38:10+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "b7eb1454e806f94c1a4eac5225b3e9d116ad4d22" + "reference": "21351af73e7dbe9db64f4b6bb15af6f55c78bf6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/b7eb1454e806f94c1a4eac5225b3e9d116ad4d22", - "reference": "b7eb1454e806f94c1a4eac5225b3e9d116ad4d22", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/21351af73e7dbe9db64f4b6bb15af6f55c78bf6e", + "reference": "21351af73e7dbe9db64f4b6bb15af6f55c78bf6e", "shasum": "" }, "require": { @@ -8072,7 +8072,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.34" + "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.35" }, "funding": [ { @@ -8088,20 +8088,20 @@ "type": "tidelift" } ], - "time": "2023-12-24T09:04:02+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/dotenv", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "07d75571cc7efc88f1aae96eddc5f671826c7327" + "reference": "4de488440104b99d2e7c0717ee432e760b061e32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/07d75571cc7efc88f1aae96eddc5f671826c7327", - "reference": "07d75571cc7efc88f1aae96eddc5f671826c7327", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/4de488440104b99d2e7c0717ee432e760b061e32", + "reference": "4de488440104b99d2e7c0717ee432e760b061e32", "shasum": "" }, "require": { @@ -8143,7 +8143,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.4.34" + "source": "https://github.com/symfony/dotenv/tree/v5.4.35" }, "funding": [ { @@ -8159,20 +8159,20 @@ "type": "tidelift" } ], - "time": "2023-12-28T12:17:46+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/error-handler", - "version": "v5.4.29", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078" + "reference": "39225b1e47fdd91a6924b1e7d7a4523da2e1894b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/328c6fcfd2f90b64c16efaf0ea67a311d672f078", - "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/39225b1e47fdd91a6924b1e7d7a4523da2e1894b", + "reference": "39225b1e47fdd91a6924b1e7d7a4523da2e1894b", "shasum": "" }, "require": { @@ -8214,7 +8214,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.29" + "source": "https://github.com/symfony/error-handler/tree/v5.4.35" }, "funding": [ { @@ -8230,20 +8230,20 @@ "type": "tidelift" } ], - "time": "2023-09-06T21:54:06+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3" + "reference": "7a69a85c7ea5bdd1e875806a99c51a87d3a74b38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e3bca343efeb613f843c254e7718ef17c9bdf7a3", - "reference": "e3bca343efeb613f843c254e7718ef17c9bdf7a3", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7a69a85c7ea5bdd1e875806a99c51a87d3a74b38", + "reference": "7a69a85c7ea5bdd1e875806a99c51a87d3a74b38", "shasum": "" }, "require": { @@ -8299,7 +8299,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.34" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.35" }, "funding": [ { @@ -8315,20 +8315,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T21:12:56+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/expression-language", - "version": "v5.4.21", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "501589522b844b8eecf012c133f0404f0eef77ac" + "reference": "d59441c10a5a73cd9d4d778b8253595a16f6716d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/501589522b844b8eecf012c133f0404f0eef77ac", - "reference": "501589522b844b8eecf012c133f0404f0eef77ac", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/d59441c10a5a73cd9d4d778b8253595a16f6716d", + "reference": "d59441c10a5a73cd9d4d778b8253595a16f6716d", "shasum": "" }, "require": { @@ -8362,7 +8362,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.4.21" + "source": "https://github.com/symfony/expression-language/tree/v5.4.35" }, "funding": [ { @@ -8378,20 +8378,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.25", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" + "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/5a553607d4ffbfa9c0ab62facadea296c9db7086", + "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086", "shasum": "" }, "require": { @@ -8426,7 +8426,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + "source": "https://github.com/symfony/filesystem/tree/v5.4.35" }, "funding": [ { @@ -8442,20 +8442,20 @@ "type": "tidelift" } ], - "time": "2023-05-31T13:04:02+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/finder", - "version": "v5.4.27", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + "reference": "abe6d6f77d9465fed3cd2d029b29d03b56b56435" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "url": "https://api.github.com/repos/symfony/finder/zipball/abe6d6f77d9465fed3cd2d029b29d03b56b56435", + "reference": "abe6d6f77d9465fed3cd2d029b29d03b56b56435", "shasum": "" }, "require": { @@ -8489,7 +8489,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" + "source": "https://github.com/symfony/finder/tree/v5.4.35" }, "funding": [ { @@ -8505,7 +8505,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:02:31+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/flex", @@ -8574,16 +8574,16 @@ }, { "name": "symfony/form", - "version": "v5.4.33", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec" + "reference": "c827d421caccf467ef1a969e7412a8755fa88093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec", - "reference": "9c13bf53e728d3f75ce7a36046ffc2cd0e7d25ec", + "url": "https://api.github.com/repos/symfony/form/zipball/c827d421caccf467ef1a969e7412a8755fa88093", + "reference": "c827d421caccf467ef1a969e7412a8755fa88093", "shasum": "" }, "require": { @@ -8606,7 +8606,7 @@ "symfony/error-handler": "<4.4.5", "symfony/framework-bundle": "<4.4", "symfony/http-kernel": "<4.4", - "symfony/translation": "<4.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", "symfony/translation-contracts": "<1.1.7", "symfony/twig-bridge": "<5.4.21|>=6,<6.2.7" }, @@ -8620,7 +8620,7 @@ "symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/intl": "^4.4|^5.0|^6.0", "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", "symfony/uid": "^5.1|^6.0", "symfony/validator": "^4.4.17|^5.1.9|^6.0", "symfony/var-dumper": "^4.4|^5.0|^6.0" @@ -8656,7 +8656,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v5.4.33" + "source": "https://github.com/symfony/form/tree/v5.4.35" }, "funding": [ { @@ -8672,20 +8672,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:45:54+00:00" + "time": "2024-01-23T14:28:09+00:00" }, { "name": "symfony/framework-bundle", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "ee446bb6a89ec758ffc1614f54c003124c7d7a88" + "reference": "89805687f360133f18bdedfb32138ce0ddd5383c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ee446bb6a89ec758ffc1614f54c003124c7d7a88", - "reference": "ee446bb6a89ec758ffc1614f54c003124c7d7a88", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/89805687f360133f18bdedfb32138ce0ddd5383c", + "reference": "89805687f360133f18bdedfb32138ce0ddd5383c", "shasum": "" }, "require": { @@ -8806,7 +8806,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.4.34" + "source": "https://github.com/symfony/framework-bundle/tree/v5.4.35" }, "funding": [ { @@ -8822,20 +8822,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T14:52:40+00:00" + "time": "2024-01-23T14:28:09+00:00" }, { "name": "symfony/http-client", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "8fe833b758bc5b325e9d96a913376d6d57a90fb0" + "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/8fe833b758bc5b325e9d96a913376d6d57a90fb0", - "reference": "8fe833b758bc5b325e9d96a913376d6d57a90fb0", + "url": "https://api.github.com/repos/symfony/http-client/zipball/53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3", + "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3", "shasum": "" }, "require": { @@ -8897,7 +8897,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.34" + "source": "https://github.com/symfony/http-client/tree/v5.4.35" }, "funding": [ { @@ -8913,20 +8913,20 @@ "type": "tidelift" } ], - "time": "2023-12-02T08:41:43+00:00" + "time": "2024-01-29T14:02:34+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "4da1713e88cf9c44bd4bf65f54772681222fcbec" + "reference": "f2ab692a22aef1cd54beb893aa0068bdfb093928" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4da1713e88cf9c44bd4bf65f54772681222fcbec", - "reference": "4da1713e88cf9c44bd4bf65f54772681222fcbec", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f2ab692a22aef1cd54beb893aa0068bdfb093928", + "reference": "f2ab692a22aef1cd54beb893aa0068bdfb093928", "shasum": "" }, "require": { @@ -8973,7 +8973,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.34" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.35" }, "funding": [ { @@ -8989,20 +8989,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T11:45:35+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b" + "reference": "949bc7721c83fa9f81fc6c9697db0aa340c64f4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b", - "reference": "f2b00c66d1c7ef12f3fc625af2a0bc5d5857db7b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/949bc7721c83fa9f81fc6c9697db0aa340c64f4d", + "reference": "949bc7721c83fa9f81fc6c9697db0aa340c64f4d", "shasum": "" }, "require": { @@ -9085,7 +9085,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.4.34" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.35" }, "funding": [ { @@ -9101,20 +9101,20 @@ "type": "tidelift" } ], - "time": "2023-12-30T13:02:02+00:00" + "time": "2024-01-30T20:00:46+00:00" }, { "name": "symfony/mailer", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5" + "reference": "664724b0fb4646dee30859d0ed9131a2d7633320" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5", - "reference": "0d2c0e0fdd07c80d95eadcdbba6af41e9aafcfa5", + "url": "https://api.github.com/repos/symfony/mailer/zipball/664724b0fb4646dee30859d0ed9131a2d7633320", + "reference": "664724b0fb4646dee30859d0ed9131a2d7633320", "shasum": "" }, "require": { @@ -9161,7 +9161,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.4.34" + "source": "https://github.com/symfony/mailer/tree/v5.4.35" }, "funding": [ { @@ -9177,20 +9177,20 @@ "type": "tidelift" } ], - "time": "2023-12-02T08:41:43+00:00" + "time": "2024-01-29T07:33:37+00:00" }, { "name": "symfony/mailgun-mailer", - "version": "v5.4.23", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/mailgun-mailer.git", - "reference": "541405258a14d9cf14adfe63cf86fde1a6984752" + "reference": "fbb1f557f5da0d09bda2fa0fd3d415350f418295" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/541405258a14d9cf14adfe63cf86fde1a6984752", - "reference": "541405258a14d9cf14adfe63cf86fde1a6984752", + "url": "https://api.github.com/repos/symfony/mailgun-mailer/zipball/fbb1f557f5da0d09bda2fa0fd3d415350f418295", + "reference": "fbb1f557f5da0d09bda2fa0fd3d415350f418295", "shasum": "" }, "require": { @@ -9227,7 +9227,7 @@ "description": "Symfony Mailgun Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailgun-mailer/tree/v5.4.23" + "source": "https://github.com/symfony/mailgun-mailer/tree/v5.4.35" }, "funding": [ { @@ -9243,20 +9243,20 @@ "type": "tidelift" } ], - "time": "2023-04-10T16:27:27+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/messenger", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "8f74256d181141d83649e9bee5caf34328feb3c8" + "reference": "3c1eda00d7e9879558397fe8c8cfaea24b0de4e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/8f74256d181141d83649e9bee5caf34328feb3c8", - "reference": "8f74256d181141d83649e9bee5caf34328feb3c8", + "url": "https://api.github.com/repos/symfony/messenger/zipball/3c1eda00d7e9879558397fe8c8cfaea24b0de4e0", + "reference": "3c1eda00d7e9879558397fe8c8cfaea24b0de4e0", "shasum": "" }, "require": { @@ -9317,7 +9317,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v5.4.31" + "source": "https://github.com/symfony/messenger/tree/v5.4.35" }, "funding": [ { @@ -9333,20 +9333,20 @@ "type": "tidelift" } ], - "time": "2023-11-03T16:16:43+00:00" + "time": "2024-01-30T11:13:29+00:00" }, { "name": "symfony/mime", - "version": "v5.4.26", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2" + "reference": "ee94d9b538f93abbbc1ee4ccff374593117b04a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2ea06dfeee20000a319d8407cea1d47533d5a9d2", - "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2", + "url": "https://api.github.com/repos/symfony/mime/zipball/ee94d9b538f93abbbc1ee4ccff374593117b04a9", + "reference": "ee94d9b538f93abbbc1ee4ccff374593117b04a9", "shasum": "" }, "require": { @@ -9361,7 +9361,7 @@ "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<4.4", - "symfony/serializer": "<5.4.26|>=6,<6.2.13|>=6.3,<6.3.2" + "symfony/serializer": "<5.4.35|>=6,<6.3.12|>=6.4,<6.4.3" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", @@ -9369,7 +9369,7 @@ "symfony/dependency-injection": "^4.4|^5.0|^6.0", "symfony/property-access": "^4.4|^5.1|^6.0", "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.4.26|~6.2.13|^6.3.2" + "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3" }, "type": "library", "autoload": { @@ -9401,7 +9401,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.26" + "source": "https://github.com/symfony/mime/tree/v5.4.35" }, "funding": [ { @@ -9417,20 +9417,20 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:29:31+00:00" + "time": "2024-01-30T08:00:51+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387" + "reference": "83e7438fd2ead9af4fd2fac7bb9b6fc0e8823387" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/3e295d9b0a873476356cb6cff0ce39b3f528b387", - "reference": "3e295d9b0a873476356cb6cff0ce39b3f528b387", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/83e7438fd2ead9af4fd2fac7bb9b6fc0e8823387", + "reference": "83e7438fd2ead9af4fd2fac7bb9b6fc0e8823387", "shasum": "" }, "require": { @@ -9485,7 +9485,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.31" + "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.35" }, "funding": [ { @@ -9501,7 +9501,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T07:58:33+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/monolog-bundle", @@ -9655,16 +9655,16 @@ }, { "name": "symfony/password-hasher", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "f1a07181f3442836b0aadfd4c65841804d4173c4" + "reference": "23b9782de5d06a7e61101558d3e887100fbf8f93" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/f1a07181f3442836b0aadfd4c65841804d4173c4", - "reference": "f1a07181f3442836b0aadfd4c65841804d4173c4", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/23b9782de5d06a7e61101558d3e887100fbf8f93", + "reference": "23b9782de5d06a7e61101558d3e887100fbf8f93", "shasum": "" }, "require": { @@ -9709,7 +9709,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.4.31" + "source": "https://github.com/symfony/password-hasher/tree/v5.4.35" }, "funding": [ { @@ -9725,7 +9725,7 @@ "type": "tidelift" } ], - "time": "2023-11-02T10:18:11+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -10392,16 +10392,16 @@ }, { "name": "symfony/process", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a" + "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8fa22178dfc368911dbd513b431cd9b06f9afe7a", - "reference": "8fa22178dfc368911dbd513b431cd9b06f9afe7a", + "url": "https://api.github.com/repos/symfony/process/zipball/cbc28e34015ad50166fc2f9c8962d28d0fe861eb", + "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb", "shasum": "" }, "require": { @@ -10434,7 +10434,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.34" + "source": "https://github.com/symfony/process/tree/v5.4.35" }, "funding": [ { @@ -10450,20 +10450,20 @@ "type": "tidelift" } ], - "time": "2023-12-02T08:41:43+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/property-access", - "version": "v5.4.26", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa" + "reference": "f1341758d8046cfff0ac748a0cad238f917191d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/0249e46f69e92049a488f39fcf531cb42c50caaa", - "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa", + "url": "https://api.github.com/repos/symfony/property-access/zipball/f1341758d8046cfff0ac748a0cad238f917191d4", + "reference": "f1341758d8046cfff0ac748a0cad238f917191d4", "shasum": "" }, "require": { @@ -10515,7 +10515,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.26" + "source": "https://github.com/symfony/property-access/tree/v5.4.35" }, "funding": [ { @@ -10531,20 +10531,20 @@ "type": "tidelift" } ], - "time": "2023-07-13T15:20:41+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/property-info", - "version": "v5.4.24", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1" + "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "url": "https://api.github.com/repos/symfony/property-info/zipball/d30d48f366ad2bfbf521256be85eb1c182c29198", + "reference": "d30d48f366ad2bfbf521256be85eb1c182c29198", "shasum": "" }, "require": { @@ -10606,7 +10606,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.24" + "source": "https://github.com/symfony/property-info/tree/v5.4.35" }, "funding": [ { @@ -10622,7 +10622,7 @@ "type": "tidelift" } ], - "time": "2023-05-15T20:11:03+00:00" + "time": "2024-01-23T15:43:50+00:00" }, { "name": "symfony/proxy-manager-bridge", @@ -10693,16 +10693,16 @@ }, { "name": "symfony/redis-messenger", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/redis-messenger.git", - "reference": "d1a86778fc6386203bc0321a8692622042eb6c6b" + "reference": "d00f1bbaefe83468c0afb3f6773258cefca13bb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/d1a86778fc6386203bc0321a8692622042eb6c6b", - "reference": "d1a86778fc6386203bc0321a8692622042eb6c6b", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/d00f1bbaefe83468c0afb3f6773258cefca13bb8", + "reference": "d00f1bbaefe83468c0afb3f6773258cefca13bb8", "shasum": "" }, "require": { @@ -10740,7 +10740,7 @@ "description": "Symfony Redis extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/redis-messenger/tree/v5.4.34" + "source": "https://github.com/symfony/redis-messenger/tree/v5.4.35" }, "funding": [ { @@ -10756,20 +10756,20 @@ "type": "tidelift" } ], - "time": "2023-12-11T13:52:49+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/routing", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "f1d08ed59d7718845bb70acd7480fa7da8966ec0" + "reference": "86c5a06a61ddaf17efa1403542e3d7146af96203" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/f1d08ed59d7718845bb70acd7480fa7da8966ec0", - "reference": "f1d08ed59d7718845bb70acd7480fa7da8966ec0", + "url": "https://api.github.com/repos/symfony/routing/zipball/86c5a06a61ddaf17efa1403542e3d7146af96203", + "reference": "86c5a06a61ddaf17efa1403542e3d7146af96203", "shasum": "" }, "require": { @@ -10830,7 +10830,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.34" + "source": "https://github.com/symfony/routing/tree/v5.4.35" }, "funding": [ { @@ -10846,20 +10846,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T12:51:02+00:00" + "time": "2024-01-30T13:10:15+00:00" }, { "name": "symfony/runtime", - "version": "v5.4.26", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "4659b552bc9f2380986e3f4b7e2bd4e512470e0d" + "reference": "a32a623d71fc0f699a2a196377b3b85c840bd39a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/4659b552bc9f2380986e3f4b7e2bd4e512470e0d", - "reference": "4659b552bc9f2380986e3f4b7e2bd4e512470e0d", + "url": "https://api.github.com/repos/symfony/runtime/zipball/a32a623d71fc0f699a2a196377b3b85c840bd39a", + "reference": "a32a623d71fc0f699a2a196377b3b85c840bd39a", "shasum": "" }, "require": { @@ -10910,7 +10910,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v5.4.26" + "source": "https://github.com/symfony/runtime/tree/v5.4.35" }, "funding": [ { @@ -10926,20 +10926,20 @@ "type": "tidelift" } ], - "time": "2023-07-16T16:48:57+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/security-bundle", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "6477c31e36dfa25b07befea20bc8326f4ba11d75" + "reference": "ed194715515a87d0f9c80b8696baf37ae18beb81" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6477c31e36dfa25b07befea20bc8326f4ba11d75", - "reference": "6477c31e36dfa25b07befea20bc8326f4ba11d75", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/ed194715515a87d0f9c80b8696baf37ae18beb81", + "reference": "ed194715515a87d0f9c80b8696baf37ae18beb81", "shasum": "" }, "require": { @@ -11013,7 +11013,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v5.4.34" + "source": "https://github.com/symfony/security-bundle/tree/v5.4.35" }, "funding": [ { @@ -11029,20 +11029,20 @@ "type": "tidelift" } ], - "time": "2023-12-19T08:26:08+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/security-core", - "version": "v5.4.30", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "3908c54da30dd68c2fe31915d82a1c81809d1928" + "reference": "3cbacefb2a350ed39950f93c8a054c2eb625fb69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/3908c54da30dd68c2fe31915d82a1c81809d1928", - "reference": "3908c54da30dd68c2fe31915d82a1c81809d1928", + "url": "https://api.github.com/repos/symfony/security-core/zipball/3cbacefb2a350ed39950f93c8a054c2eb625fb69", + "reference": "3cbacefb2a350ed39950f93c8a054c2eb625fb69", "shasum": "" }, "require": { @@ -11058,6 +11058,7 @@ "symfony/http-foundation": "<5.3", "symfony/ldap": "<4.4", "symfony/security-guard": "<4.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", "symfony/validator": "<5.2" }, "require-dev": { @@ -11069,7 +11070,7 @@ "symfony/expression-language": "^4.4|^5.0|^6.0", "symfony/http-foundation": "^5.3|^6.0", "symfony/ldap": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", "symfony/validator": "^5.2|^6.0" }, "suggest": { @@ -11106,7 +11107,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v5.4.30" + "source": "https://github.com/symfony/security-core/tree/v5.4.35" }, "funding": [ { @@ -11122,20 +11123,20 @@ "type": "tidelift" } ], - "time": "2023-10-27T07:38:28+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/security-csrf", - "version": "v5.4.27", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "995fcfcc5a3be09df157b4960668f61cceb86611" + "reference": "6728ed79d7f9aae3b86fca7ea554f1c46bae1e0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/995fcfcc5a3be09df157b4960668f61cceb86611", - "reference": "995fcfcc5a3be09df157b4960668f61cceb86611", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/6728ed79d7f9aae3b86fca7ea554f1c46bae1e0b", + "reference": "6728ed79d7f9aae3b86fca7ea554f1c46bae1e0b", "shasum": "" }, "require": { @@ -11179,7 +11180,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.4.27" + "source": "https://github.com/symfony/security-csrf/tree/v5.4.35" }, "funding": [ { @@ -11195,20 +11196,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T14:44:35+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/security-guard", - "version": "v5.4.27", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", - "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc" + "reference": "b6fb8c88f7cd544db761de2d1c3618cbc5c1b9e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/72c53142533462fc6fda4a429c2a21c2b944a8cc", - "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/b6fb8c88f7cd544db761de2d1c3618cbc5c1b9e7", + "reference": "b6fb8c88f7cd544db761de2d1c3618cbc5c1b9e7", "shasum": "" }, "require": { @@ -11247,7 +11248,7 @@ "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.4.27" + "source": "https://github.com/symfony/security-guard/tree/v5.4.35" }, "funding": [ { @@ -11263,20 +11264,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T14:44:35+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/security-http", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "6d3cd5a4deee9697738db8d24258890ca4140ae9" + "reference": "274a6aef49a0e1707bcb57217251885be749b6d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/6d3cd5a4deee9697738db8d24258890ca4140ae9", - "reference": "6d3cd5a4deee9697738db8d24258890ca4140ae9", + "url": "https://api.github.com/repos/symfony/security-http/zipball/274a6aef49a0e1707bcb57217251885be749b6d8", + "reference": "274a6aef49a0e1707bcb57217251885be749b6d8", "shasum": "" }, "require": { @@ -11333,7 +11334,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v5.4.31" + "source": "https://github.com/symfony/security-http/tree/v5.4.35" }, "funding": [ { @@ -11349,20 +11350,20 @@ "type": "tidelift" } ], - "time": "2023-11-03T16:13:08+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/sendinblue-mailer", - "version": "v5.4.30", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/sendinblue-mailer.git", - "reference": "0ee7cf3f1ad1a8049e0a4a52a7b927761a68babc" + "reference": "574bea1d9cf28cf6e9182242fc4eae26ed85be48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/sendinblue-mailer/zipball/0ee7cf3f1ad1a8049e0a4a52a7b927761a68babc", - "reference": "0ee7cf3f1ad1a8049e0a4a52a7b927761a68babc", + "url": "https://api.github.com/repos/symfony/sendinblue-mailer/zipball/574bea1d9cf28cf6e9182242fc4eae26ed85be48", + "reference": "574bea1d9cf28cf6e9182242fc4eae26ed85be48", "shasum": "" }, "require": { @@ -11399,7 +11400,7 @@ "description": "Symfony Sendinblue Mailer Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/sendinblue-mailer/tree/v5.4.30" + "source": "https://github.com/symfony/sendinblue-mailer/tree/v5.4.35" }, "funding": [ { @@ -11415,20 +11416,20 @@ "type": "tidelift" } ], - "time": "2023-10-24T12:09:39+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/serializer", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "b8353e4208e9161f34d22c4631c63404b26ba929" + "reference": "02acd86290077dab2f12ae91b3e9f141c079d84c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/b8353e4208e9161f34d22c4631c63404b26ba929", - "reference": "b8353e4208e9161f34d22c4631c63404b26ba929", + "url": "https://api.github.com/repos/symfony/serializer/zipball/02acd86290077dab2f12ae91b3e9f141c079d84c", + "reference": "02acd86290077dab2f12ae91b3e9f141c079d84c", "shasum": "" }, "require": { @@ -11459,7 +11460,7 @@ "symfony/http-foundation": "^4.4|^5.0|^6.0", "symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^5.4|^6.0", + "symfony/property-access": "^5.4.26|^6.3", "symfony/property-info": "^5.4.24|^6.2.11", "symfony/uid": "^5.3|^6.0", "symfony/validator": "^4.4|^5.0|^6.0", @@ -11502,7 +11503,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v5.4.34" + "source": "https://github.com/symfony/serializer/tree/v5.4.35" }, "funding": [ { @@ -11518,20 +11519,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:53:17+00:00" + "time": "2024-01-30T08:00:51+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.21", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" + "reference": "887762aa99ff16f65dc8b48aafead415f942d407" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/887762aa99ff16f65dc8b48aafead415f942d407", + "reference": "887762aa99ff16f65dc8b48aafead415f942d407", "shasum": "" }, "require": { @@ -11564,7 +11565,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.35" }, "funding": [ { @@ -11580,20 +11581,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/string", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e3f98bfc7885c957488f443df82d97814a3ce061" + "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061", - "reference": "e3f98bfc7885c957488f443df82d97814a3ce061", + "url": "https://api.github.com/repos/symfony/string/zipball/c209c4d0559acce1c9a2067612cfb5d35756edc2", + "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2", "shasum": "" }, "require": { @@ -11650,7 +11651,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.34" + "source": "https://github.com/symfony/string/tree/v5.4.35" }, "funding": [ { @@ -11666,20 +11667,20 @@ "type": "tidelift" } ], - "time": "2023-12-09T13:20:28+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/twig-bridge", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "4ced0e91705d689b77763678367bd522d79f9f9a" + "reference": "e6ae362b7c4f1d6e99f61f59b0c93b9f027b4c73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/4ced0e91705d689b77763678367bd522d79f9f9a", - "reference": "4ced0e91705d689b77763678367bd522d79f9f9a", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/e6ae362b7c4f1d6e99f61f59b0c93b9f027b4c73", + "reference": "e6ae362b7c4f1d6e99f61f59b0c93b9f027b4c73", "shasum": "" }, "require": { @@ -11719,7 +11720,7 @@ "symfony/security-core": "^4.4|^5.0|^6.0", "symfony/security-csrf": "^4.4|^5.0|^6.0", "symfony/security-http": "^4.4|^5.0|^6.0", - "symfony/serializer": "^5.2|^6.0", + "symfony/serializer": "^5.4.35|~6.3.12|^6.4.3", "symfony/stopwatch": "^4.4|^5.0|^6.0", "symfony/translation": "^5.2|^6.0", "symfony/web-link": "^4.4|^5.0|^6.0", @@ -11771,7 +11772,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.4.34" + "source": "https://github.com/symfony/twig-bridge/tree/v5.4.35" }, "funding": [ { @@ -11787,20 +11788,20 @@ "type": "tidelift" } ], - "time": "2023-12-15T11:59:38+00:00" + "time": "2024-01-30T08:00:51+00:00" }, { "name": "symfony/twig-bundle", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3" + "reference": "f59b91e23c7c790e71a187c3fa4aefdc5391d682" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/62e3505a62f482a577f55ba08747dc6a3b7463b3", - "reference": "62e3505a62f482a577f55ba08747dc6a3b7463b3", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f59b91e23c7c790e71a187c3fa4aefdc5391d682", + "reference": "f59b91e23c7c790e71a187c3fa4aefdc5391d682", "shasum": "" }, "require": { @@ -11861,7 +11862,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.4.31" + "source": "https://github.com/symfony/twig-bundle/tree/v5.4.35" }, "funding": [ { @@ -11877,20 +11878,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T07:58:33+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/validator", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "0700751f19b5e8dcfadb6614662216a93f37e2dd" + "reference": "4993e9b5b17e23e7ad9dc2e3b31412f5c4679385" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/0700751f19b5e8dcfadb6614662216a93f37e2dd", - "reference": "0700751f19b5e8dcfadb6614662216a93f37e2dd", + "url": "https://api.github.com/repos/symfony/validator/zipball/4993e9b5b17e23e7ad9dc2e3b31412f5c4679385", + "reference": "4993e9b5b17e23e7ad9dc2e3b31412f5c4679385", "shasum": "" }, "require": { @@ -11912,7 +11913,7 @@ "symfony/http-kernel": "<4.4", "symfony/intl": "<4.4", "symfony/property-info": "<5.3", - "symfony/translation": "<4.4", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", "symfony/yaml": "<4.4" }, "require-dev": { @@ -11932,7 +11933,7 @@ "symfony/mime": "^4.4|^5.0|^6.0", "symfony/property-access": "^4.4|^5.0|^6.0", "symfony/property-info": "^5.3|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { @@ -11973,7 +11974,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v5.4.34" + "source": "https://github.com/symfony/validator/tree/v5.4.35" }, "funding": [ { @@ -11989,20 +11990,20 @@ "type": "tidelift" } ], - "time": "2023-12-29T15:57:36+00:00" + "time": "2024-01-25T22:32:56+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.29", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65" + "reference": "ce4685b30e47d94dfc990c5566285ff99ddf012b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6172e4ae3534d25ee9e07eb487c20be7760fcc65", - "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ce4685b30e47d94dfc990c5566285ff99ddf012b", + "reference": "ce4685b30e47d94dfc990c5566285ff99ddf012b", "shasum": "" }, "require": { @@ -12062,7 +12063,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.29" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.35" }, "funding": [ { @@ -12078,20 +12079,20 @@ "type": "tidelift" } ], - "time": "2023-09-12T10:09:58+00:00" + "time": "2024-01-23T14:28:09+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e" + "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5fe9a0021b8d35e67d914716ec8de50716a68e7e", - "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a8c12b5448a5ac685347f5eeb2abf6a571ec16b8", + "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8", "shasum": "" }, "require": { @@ -12137,7 +12138,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.2" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.3" }, "funding": [ { @@ -12153,20 +12154,20 @@ "type": "tidelift" } ], - "time": "2023-12-27T08:18:35+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/web-link", - "version": "v5.4.21", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb" + "reference": "5eb4930dd8bdf233d32e4e3c2dfa8241051b6320" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", - "reference": "57c03a5e89ed7c2d7a1a09258dfec12f95f95adb", + "url": "https://api.github.com/repos/symfony/web-link/zipball/5eb4930dd8bdf233d32e4e3c2dfa8241051b6320", + "reference": "5eb4930dd8bdf233d32e4e3c2dfa8241051b6320", "shasum": "" }, "require": { @@ -12224,7 +12225,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v5.4.21" + "source": "https://github.com/symfony/web-link/tree/v5.4.35" }, "funding": [ { @@ -12240,20 +12241,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v5.4.34", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "8b3344d0d7faeb6c52e60d4a3657405c5c68625f" + "reference": "d71d64739a77ba23e7797d5ed3226796751df058" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8b3344d0d7faeb6c52e60d4a3657405c5c68625f", - "reference": "8b3344d0d7faeb6c52e60d4a3657405c5c68625f", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/d71d64739a77ba23e7797d5ed3226796751df058", + "reference": "d71d64739a77ba23e7797d5ed3226796751df058", "shasum": "" }, "require": { @@ -12304,7 +12305,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.34" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.35" }, "funding": [ { @@ -12320,20 +12321,20 @@ "type": "tidelift" } ], - "time": "2023-12-20T14:42:24+00:00" + "time": "2024-01-23T15:43:50+00:00" }, { "name": "symfony/yaml", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "f387675d7f5fc4231f7554baa70681f222f73563" + "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/f387675d7f5fc4231f7554baa70681f222f73563", - "reference": "f387675d7f5fc4231f7554baa70681f222f73563", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e78db7f5c70a21f0417a31f414c4a95fe76c07e4", + "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4", "shasum": "" }, "require": { @@ -12379,7 +12380,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.31" + "source": "https://github.com/symfony/yaml/tree/v5.4.35" }, "funding": [ { @@ -12395,7 +12396,7 @@ "type": "tidelift" } ], - "time": "2023-11-03T14:41:28+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "thecodingmachine/safe", @@ -14365,16 +14366,16 @@ }, { "name": "symfony/browser-kit", - "version": "v5.4.31", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "0ed1f634a36606f2065eec221b3975e05016cbbe" + "reference": "2f6f979b579ed1c051465c3c2fb81daf5bb4a002" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/0ed1f634a36606f2065eec221b3975e05016cbbe", - "reference": "0ed1f634a36606f2065eec221b3975e05016cbbe", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/2f6f979b579ed1c051465c3c2fb81daf5bb4a002", + "reference": "2f6f979b579ed1c051465c3c2fb81daf5bb4a002", "shasum": "" }, "require": { @@ -14417,7 +14418,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.4.31" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.35" }, "funding": [ { @@ -14433,20 +14434,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T07:58:33+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.26", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a" + "reference": "9e615d367e2bed41f633abb383948c96a2dbbfae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", - "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/9e615d367e2bed41f633abb383948c96a2dbbfae", + "reference": "9e615d367e2bed41f633abb383948c96a2dbbfae", "shasum": "" }, "require": { @@ -14483,7 +14484,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.26" + "source": "https://github.com/symfony/css-selector/tree/v5.4.35" }, "funding": [ { @@ -14499,20 +14500,20 @@ "type": "tidelift" } ], - "time": "2023-07-07T06:10:25+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.4.32", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "728f1fc136252a626ba5a69c02bd66a3697ff201" + "reference": "e3b4806f88abf106a411847a78619a542e71de29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/728f1fc136252a626ba5a69c02bd66a3697ff201", - "reference": "728f1fc136252a626ba5a69c02bd66a3697ff201", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/e3b4806f88abf106a411847a78619a542e71de29", + "reference": "e3b4806f88abf106a411847a78619a542e71de29", "shasum": "" }, "require": { @@ -14558,7 +14559,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.4.32" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.35" }, "funding": [ { @@ -14574,20 +14575,20 @@ "type": "tidelift" } ], - "time": "2023-11-17T20:43:48+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.2", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "bd0455b7888e4adac29cf175d819c51f88fed942" + "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bd0455b7888e4adac29cf175d819c51f88fed942", - "reference": "bd0455b7888e4adac29cf175d819c51f88fed942", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d49b4f6dc4690cf2c194311bb498abf0cf4f7485", + "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485", "shasum": "" }, "require": { @@ -14639,7 +14640,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.3" }, "funding": [ { @@ -14655,7 +14656,7 @@ "type": "tidelift" } ], - "time": "2023-12-19T09:12:31+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "theseer/tokenizer", From 6153b49165fe3e5fb9eb520e4d5bd44cc72537a8 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Wed, 13 Mar 2024 16:34:33 +0100 Subject: [PATCH 12/15] Replace Uuid by UuidInterface in dashboardcards due to compatibility issues --- api/src/Entity/DashboardCard.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/api/src/Entity/DashboardCard.php b/api/src/Entity/DashboardCard.php index 8e78148ce..ba010283a 100644 --- a/api/src/Entity/DashboardCard.php +++ b/api/src/Entity/DashboardCard.php @@ -110,7 +110,7 @@ class DashboardCard * * @ORM\Column(type="uuid") */ - private Uuid $entityId; + private UuidInterface $entityId; /** * @Groups({"read","write"}) @@ -245,12 +245,12 @@ public function setObject($object): self return $this; } - public function getEntityId(): Uuid + public function getEntityId(): UuidInterface { return $this->entityId; } - public function setEntityId($entityId): self + public function setEntityId(UuidInterface $entityId): self { $this->entityId = $entityId; From 7d0dafdb00db1a21a45fe1bfa9f1f807ac9f0851 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Thu, 14 Mar 2024 12:55:38 +0100 Subject: [PATCH 13/15] Update corebundle and other packages --- api/composer.lock | 2403 ++++++++++++++++++++++----------------------- 1 file changed, 1181 insertions(+), 1222 deletions(-) diff --git a/api/composer.lock b/api/composer.lock index e70fa1a87..03e597431 100644 --- a/api/composer.lock +++ b/api/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cfc58b90ddfad703c3e6d7f1ec53cb04", + "content-hash": "dc2a9f17a748ed5fbf959d425f91a347", "packages": [ { "name": "adbario/php-dot-notation", - "version": "3.1.1", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/adbario/php-dot-notation.git", - "reference": "aca06bf775809808232b8c21ce1ca3a4fca70ace" + "reference": "a94ce4493d19ea430baa8d7d210a2c9bd7129fc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/aca06bf775809808232b8c21ce1ca3a4fca70ace", - "reference": "aca06bf775809808232b8c21ce1ca3a4fca70ace", + "url": "https://api.github.com/repos/adbario/php-dot-notation/zipball/a94ce4493d19ea430baa8d7d210a2c9bd7129fc2", + "reference": "a94ce4493d19ea430baa8d7d210a2c9bd7129fc2", "shasum": "" }, "require": { @@ -25,9 +25,9 @@ "php": "^7.4 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.5", + "phpstan/phpstan": "^1.8", "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.6" + "squizlabs/php_codesniffer": "^3.7" }, "type": "library", "autoload": { @@ -56,22 +56,22 @@ ], "support": { "issues": "https://github.com/adbario/php-dot-notation/issues", - "source": "https://github.com/adbario/php-dot-notation/tree/3.1.1" + "source": "https://github.com/adbario/php-dot-notation/tree/3.3.0" }, - "time": "2022-03-28T01:09:30+00:00" + "time": "2023-02-24T20:27:50+00:00" }, { "name": "alcaeus/mongo-php-adapter", - "version": "1.2.2", + "version": "1.2.5", "source": { "type": "git", "url": "https://github.com/alcaeus/mongo-php-adapter.git", - "reference": "0e99bf5ea15f8e9b7ddb3a6dc38c11aa95330ca1" + "reference": "561496fca4989dc728ed3dda50331aacae62ee9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/alcaeus/mongo-php-adapter/zipball/0e99bf5ea15f8e9b7ddb3a6dc38c11aa95330ca1", - "reference": "0e99bf5ea15f8e9b7ddb3a6dc38c11aa95330ca1", + "url": "https://api.github.com/repos/alcaeus/mongo-php-adapter/zipball/561496fca4989dc728ed3dda50331aacae62ee9c", + "reference": "561496fca4989dc728ed3dda50331aacae62ee9c", "shasum": "" }, "require": { @@ -124,9 +124,9 @@ ], "support": { "issues": "https://github.com/alcaeus/mongo-php-adapter/issues", - "source": "https://github.com/alcaeus/mongo-php-adapter/tree/1.2.2" + "source": "https://github.com/alcaeus/mongo-php-adapter/tree/1.2.5" }, - "time": "2022-01-11T15:05:50+00:00" + "time": "2023-11-29T09:17:20+00:00" }, { "name": "api-platform/core", @@ -299,16 +299,16 @@ }, { "name": "bacon/bacon-qr-code", - "version": "2.0.7", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/Bacon/BaconQrCode.git", - "reference": "d70c840f68657ce49094b8d91f9ee0cc07fbf66c" + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/d70c840f68657ce49094b8d91f9ee0cc07fbf66c", - "reference": "d70c840f68657ce49094b8d91f9ee0cc07fbf66c", + "url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22", + "reference": "8674e51bb65af933a5ffaf1c308a660387c35c22", "shasum": "" }, "require": { @@ -347,33 +347,38 @@ "homepage": "https://github.com/Bacon/BaconQrCode", "support": { "issues": "https://github.com/Bacon/BaconQrCode/issues", - "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.7" + "source": "https://github.com/Bacon/BaconQrCode/tree/2.0.8" }, - "time": "2022-03-14T02:02:36+00:00" + "time": "2022-12-07T17:46:57+00:00" }, { "name": "beberlei/doctrineextensions", - "version": "v1.3.0", + "version": "v1.5.0", "source": { "type": "git", "url": "https://github.com/beberlei/DoctrineExtensions.git", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a" + "reference": "281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/008f162f191584a6c37c03a803f718802ba9dd9a", - "reference": "008f162f191584a6c37c03a803f718802ba9dd9a", + "url": "https://api.github.com/repos/beberlei/DoctrineExtensions/zipball/281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6", + "reference": "281f1650641c2f438b0a54d8eaa7ba50ac7e3eb6", "shasum": "" }, "require": { - "doctrine/orm": "^2.7", + "doctrine/orm": "^2.19 || ^3.0", "php": "^7.2 || ^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", - "nesbot/carbon": "*", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "symfony/yaml": "^4.2 || ^5.0", + "doctrine/annotations": "^1.14 || ^2", + "doctrine/coding-standard": "^9.0.2 || ^12.0", + "nesbot/carbon": "^2.72 || ^3", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5 || ^9.6", + "squizlabs/php_codesniffer": "^3.8", + "symfony/cache": "^5.4 || ^6.4 || ^7.0", + "symfony/yaml": "^5.4 || ^6.4 || ^7.0", + "vimeo/psalm": "^3.18 || ^5.22", "zf1/zend-date": "^1.12", "zf1/zend-registry": "^1.12" }, @@ -404,9 +409,9 @@ "orm" ], "support": { - "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.3.0" + "source": "https://github.com/beberlei/DoctrineExtensions/tree/v1.5.0" }, - "time": "2020-11-29T07:37:23+00:00" + "time": "2024-03-03T17:55:15+00:00" }, { "name": "behat/transliterator", @@ -555,66 +560,18 @@ }, "time": "2020-10-24T20:01:03+00:00" }, - { - "name": "common-gateway/woo-bundle", - "version": "dev-feature/GW-1596/test-symfony54", - "source": { - "type": "git", - "url": "https://github.com/CommonGateway/WooBundle.git", - "reference": "f11f0198a029e8706fcc016d11d1370a842b723c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/CommonGateway/WooBundle/zipball/f11f0198a029e8706fcc016d11d1370a842b723c", - "reference": "f11f0198a029e8706fcc016d11d1370a842b723c", - "shasum": "" - }, - "require": { - "commongateway/corebundle": "^1.1.52 | dev-feature/GW-1596/Symfony54", - "php": ">=7.4" - }, - "require-dev": { - "symfony/dependency-injection": "~3.4|~4.1|~5.0" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "CommonGateway\\WOOBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "EUPL-1.2" - ], - "description": "A bundle for storing OpenWoo objects and synchronizing these objects from OpenWoo & xxllnc zaaksysteem.", - "homepage": "https://commongateway.nl", - "keywords": [ - "common", - "common-gateway-plugin", - "commongateway", - "conduction", - "gateway", - "symfony", - "woo" - ], - "support": { - "issues": "https://github.com/CommonGateway/WooBundle/issues", - "source": "https://github.com/CommonGateway/WooBundle/tree/feature/GW-1596/test-symfony54" - }, - "time": "2024-01-30T15:25:09+00:00" - }, { "name": "commongateway/corebundle", - "version": "1.2.61", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/CommonGateway/CoreBundle.git", - "reference": "1a9f06ca5de96602a00b7bc1f015e1a9b58277e5" + "reference": "cc4716640b05f988e1b171bf30776489d42e1841" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/1a9f06ca5de96602a00b7bc1f015e1a9b58277e5", - "reference": "1a9f06ca5de96602a00b7bc1f015e1a9b58277e5", + "url": "https://api.github.com/repos/CommonGateway/CoreBundle/zipball/cc4716640b05f988e1b171bf30776489d42e1841", + "reference": "cc4716640b05f988e1b171bf30776489d42e1841", "shasum": "" }, "require": { @@ -724,83 +681,7 @@ "issues": "https://github.com/CommonGateway/CoreBundle/issues", "source": "https://github.com/CommonGateway/CoreBundle" }, - "time": "2024-02-12T10:44:03+00:00" - }, - { - "name": "composer/ca-bundle", - "version": "1.3.7", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/76e46335014860eec1aa5a724799a00a2e47cc85", - "reference": "76e46335014860eec1aa5a724799a00a2e47cc85", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.7" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2023-08-30T09:31:38+00:00" + "time": "2024-03-14T11:15:54+00:00" }, { "name": "composer/package-versions-deprecated", @@ -855,6 +736,10 @@ } ], "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.3" + }, "funding": [ { "url": "https://packagist.com", @@ -873,16 +758,16 @@ }, { "name": "composer/pcre", - "version": "3.1.1", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" + "reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "url": "https://api.github.com/repos/composer/pcre/zipball/4775f35b2d70865807c89d32c8e7385b86eb0ace", + "reference": "4775f35b2d70865807c89d32c8e7385b86eb0ace", "shasum": "" }, "require": { @@ -924,7 +809,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.1" + "source": "https://github.com/composer/pcre/tree/3.1.2" }, "funding": [ { @@ -940,7 +825,7 @@ "type": "tidelift" } ], - "time": "2023-10-11T07:11:09+00:00" + "time": "2024-03-07T15:38:35+00:00" }, { "name": "composer/semver", @@ -1091,21 +976,24 @@ }, { "name": "dasprid/enum", - "version": "1.0.3", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/DASPRiD/Enum.git", - "reference": "5abf82f213618696dda8e3bf6f64dd042d8542b2" + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/5abf82f213618696dda8e3bf6f64dd042d8542b2", - "reference": "5abf82f213618696dda8e3bf6f64dd042d8542b2", + "url": "https://api.github.com/repos/DASPRiD/Enum/zipball/6faf451159fb8ba4126b925ed2d78acfce0dc016", + "reference": "6faf451159fb8ba4126b925ed2d78acfce0dc016", "shasum": "" }, + "require": { + "php": ">=7.1 <9.0" + }, "require-dev": { "phpunit/phpunit": "^7 | ^8 | ^9", - "squizlabs/php_codesniffer": "^3.4" + "squizlabs/php_codesniffer": "*" }, "type": "library", "autoload": { @@ -1132,9 +1020,9 @@ ], "support": { "issues": "https://github.com/DASPRiD/Enum/issues", - "source": "https://github.com/DASPRiD/Enum/tree/1.0.3" + "source": "https://github.com/DASPRiD/Enum/tree/1.0.5" }, - "time": "2020-10-02T16:03:48+00:00" + "time": "2023-08-25T16:18:39+00:00" }, { "name": "doctrine/annotations", @@ -1552,16 +1440,16 @@ }, { "name": "doctrine/dbal", - "version": "3.8.0", + "version": "3.8.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9" + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/d244f2e6e6bf32bff5174e6729b57214923ecec9", - "reference": "d244f2e6e6bf32bff5174e6729b57214923ecec9", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/db922ba9436b7b18a23d1653a0b41ff2369ca41c", + "reference": "db922ba9436b7b18a23d1653a0b41ff2369ca41c", "shasum": "" }, "require": { @@ -1577,12 +1465,12 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.56", + "phpstan/phpstan": "1.10.58", "phpstan/phpstan-strict-rules": "^1.5", - "phpunit/phpunit": "9.6.15", + "phpunit/phpunit": "9.6.16", "psalm/plugin-phpunit": "0.18.4", "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.8.1", + "squizlabs/php_codesniffer": "3.9.0", "symfony/cache": "^5.4|^6.0|^7.0", "symfony/console": "^4.4|^5.4|^6.0|^7.0", "vimeo/psalm": "4.30.0" @@ -1645,7 +1533,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.8.0" + "source": "https://github.com/doctrine/dbal/tree/3.8.3" }, "funding": [ { @@ -1661,20 +1549,20 @@ "type": "tidelift" } ], - "time": "2024-01-25T21:44:02+00:00" + "time": "2024-03-03T15:55:06+00:00" }, { "name": "doctrine/deprecations", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", - "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", + "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", "shasum": "" }, "require": { @@ -1706,22 +1594,22 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.2" + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" }, - "time": "2023-09-27T20:04:15+00:00" + "time": "2024-01-30T19:34:25+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.11.1", + "version": "2.11.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "4089f1424b724786c062aea50aae5f773449b94b" + "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b", - "reference": "4089f1424b724786c062aea50aae5f773449b94b", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/492725310ae9a1b5b20d6ae09fb5ae6404616e68", + "reference": "492725310ae9a1b5b20d6ae09fb5ae6404616e68", "shasum": "" }, "require": { @@ -1742,18 +1630,18 @@ }, "conflict": { "doctrine/annotations": ">=3.0", - "doctrine/orm": "<2.14 || >=4.0", + "doctrine/orm": "<2.17 || >=4.0", "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", "doctrine/coding-standard": "^12", "doctrine/deprecations": "^1.0", - "doctrine/orm": "^2.14 || ^3.0", + "doctrine/orm": "^2.17 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^9.5.26 || ^10.0", + "phpunit/phpunit": "^9.5.26", "psalm/plugin-phpunit": "^0.18.4", - "psalm/plugin-symfony": "^4", + "psalm/plugin-symfony": "^5", "psr/log": "^1.1.4 || ^2.0 || ^3.0", "symfony/phpunit-bridge": "^6.1 || ^7.0", "symfony/property-info": "^5.4 || ^6.0 || ^7.0", @@ -1766,7 +1654,7 @@ "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "twig/twig": "^1.34 || ^2.12 || ^3.0", - "vimeo/psalm": "^4.30" + "vimeo/psalm": "^5.15" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -1811,7 +1699,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.3" }, "funding": [ { @@ -1827,7 +1715,7 @@ "type": "tidelift" } ], - "time": "2023-11-15T20:01:50+00:00" + "time": "2024-02-10T20:56:20+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -2101,16 +1989,16 @@ }, { "name": "doctrine/inflector", - "version": "2.0.9", + "version": "2.0.10", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65" + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/2930cd5ef353871c821d5c43ed030d39ac8cfe65", - "reference": "2930cd5ef353871c821d5c43ed030d39ac8cfe65", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", "shasum": "" }, "require": { @@ -2172,7 +2060,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.9" + "source": "https://github.com/doctrine/inflector/tree/2.0.10" }, "funding": [ { @@ -2188,34 +2076,34 @@ "type": "tidelift" } ], - "time": "2024-01-15T18:05:13+00:00" + "time": "2024-02-18T20:23:39+00:00" }, { "name": "doctrine/instantiator", - "version": "1.5.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^11", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.30 || ^5.4" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -2242,7 +2130,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -2258,20 +2146,20 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:15:36+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "doctrine/lexer", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", "shasum": "" }, "require": { @@ -2279,11 +2167,11 @@ "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", + "doctrine/coding-standard": "^9 || ^12", "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "vimeo/psalm": "^4.11 || ^5.21" }, "type": "library", "autoload": { @@ -2320,7 +2208,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" + "source": "https://github.com/doctrine/lexer/tree/2.1.1" }, "funding": [ { @@ -2336,20 +2224,20 @@ "type": "tidelift" } ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2024-02-05T11:35:39+00:00" }, { "name": "doctrine/migrations", - "version": "3.7.2", + "version": "3.7.4", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a" + "reference": "954e0a314c2f0eb9fb418210445111747de254a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/47af29eef49f29ebee545947e8b2a4b3be318c8a", - "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/954e0a314c2f0eb9fb418210445111747de254a6", + "reference": "954e0a314c2f0eb9fb418210445111747de254a6", "shasum": "" }, "require": { @@ -2422,7 +2310,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.7.2" + "source": "https://github.com/doctrine/migrations/tree/3.7.4" }, "funding": [ { @@ -2438,20 +2326,20 @@ "type": "tidelift" } ], - "time": "2023-12-05T11:35:05+00:00" + "time": "2024-03-06T13:41:11+00:00" }, { "name": "doctrine/orm", - "version": "2.17.4", + "version": "2.19.0", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d" + "reference": "a809a71aa6a233a6c82e68ebaaf8954adc4998dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", - "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", + "url": "https://api.github.com/repos/doctrine/orm/zipball/a809a71aa6a233a6c82e68ebaaf8954adc4998dc", + "reference": "a809a71aa6a233a6c82e68ebaaf8954adc4998dc", "shasum": "" }, "require": { @@ -2464,7 +2352,7 @@ "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", "doctrine/instantiator": "^1.3 || ^2", - "doctrine/lexer": "^2", + "doctrine/lexer": "^2 || ^3", "doctrine/persistence": "^2.4 || ^3", "ext-ctype": "*", "php": "^7.1 || ^8.0", @@ -2480,14 +2368,14 @@ "doctrine/annotations": "^1.13 || ^2", "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.10.35", + "phpstan/phpstan": "~1.4.10 || 1.10.59", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", - "vimeo/psalm": "4.30.0 || 5.16.0" + "vimeo/psalm": "4.30.0 || 5.22.2" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -2500,7 +2388,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" + "Doctrine\\ORM\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2537,9 +2425,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.4" + "source": "https://github.com/doctrine/orm/tree/2.19.0" }, - "time": "2024-01-26T19:41:16+00:00" + "time": "2024-03-03T17:43:41+00:00" }, { "name": "doctrine/persistence", @@ -2645,16 +2533,16 @@ }, { "name": "doctrine/sql-formatter", - "version": "1.1.3", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5" + "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/25a06c7bf4c6b8218f47928654252863ffc890a5", - "reference": "25a06c7bf4c6b8218f47928654252863ffc890a5", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a321d114e0a18e6497f8a2cd6f890e000cc17ecc", + "reference": "a321d114e0a18e6497f8a2cd6f890e000cc17ecc", "shasum": "" }, "require": { @@ -2691,9 +2579,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.1.3" + "source": "https://github.com/doctrine/sql-formatter/tree/1.2.0" }, - "time": "2022-05-23T21:33:49+00:00" + "time": "2023-08-16T21:49:04+00:00" }, { "name": "dompdf/dompdf", @@ -2759,16 +2647,16 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.1", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -2808,7 +2696,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -2816,30 +2704,30 @@ "type": "github" } ], - "time": "2022-01-18T15:43:28+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", - "version": "3.2.6", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7" + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", - "reference": "e5997fa97e8790cdae03a9cbd5e78e45e3c7bda7", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", + "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", "shasum": "" }, "require": { - "doctrine/lexer": "^1.2|^2", - "php": ">=7.2", - "symfony/polyfill-intl-idn": "^1.15" + "doctrine/lexer": "^2.0 || ^3.0", + "php": ">=8.1", + "symfony/polyfill-intl-idn": "^1.26" }, "require-dev": { - "phpunit/phpunit": "^8.5.8|^9.3.3", - "vimeo/psalm": "^4" + "phpunit/phpunit": "^10.2", + "vimeo/psalm": "^5.12" }, "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" @@ -2847,7 +2735,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -2875,7 +2763,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.2.6" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" }, "funding": [ { @@ -2883,29 +2771,29 @@ "type": "github" } ], - "time": "2023-06-01T07:04:22+00:00" + "time": "2023-10-06T06:47:41+00:00" }, { "name": "endroid/installer", - "version": "1.4.0", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/endroid/installer.git", - "reference": "7af9f7fdbe6dcbf65b1d3439932ac45a98d229b4" + "reference": "308051404c8370b9641cd61d86a464f2c6938265" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/installer/zipball/7af9f7fdbe6dcbf65b1d3439932ac45a98d229b4", - "reference": "7af9f7fdbe6dcbf65b1d3439932ac45a98d229b4", + "url": "https://api.github.com/repos/endroid/installer/zipball/308051404c8370b9641cd61d86a464f2c6938265", + "reference": "308051404c8370b9641cd61d86a464f2c6938265", "shasum": "" }, "require": { - "composer-plugin-api": "^1.1||^2.0", - "php": "^7.4||^8.0" + "composer-plugin-api": "^2.0", + "php": "^8.1" }, "require-dev": { "composer/composer": "^2.0", - "endroid/quality": "dev-master" + "endroid/quality": "dev-main" }, "suggest": { "roave/security-advisories": "Avoids installation of package versions with vulnerabilities" @@ -2935,7 +2823,7 @@ "description": "Composer plugin for installing configuration files", "support": { "issues": "https://github.com/endroid/installer/issues", - "source": "https://github.com/endroid/installer/tree/1.4.0" + "source": "https://github.com/endroid/installer/tree/1.4.5" }, "funding": [ { @@ -2943,7 +2831,7 @@ "type": "github" } ], - "time": "2021-10-30T23:14:36+00:00" + "time": "2023-11-07T12:11:36+00:00" }, { "name": "endroid/qr-code", @@ -3094,20 +2982,20 @@ }, { "name": "ezyang/htmlpurifier", - "version": "v4.16.0", + "version": "v4.17.0", "source": { "type": "git", "url": "https://github.com/ezyang/htmlpurifier.git", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8" + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/523407fb06eb9e5f3d59889b3978d5bfe94299c8", - "reference": "523407fb06eb9e5f3d59889b3978d5bfe94299c8", + "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/bbc513d79acf6691fa9cf10f192c90dd2957f18c", + "reference": "bbc513d79acf6691fa9cf10f192c90dd2957f18c", "shasum": "" }, "require": { - "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~5.6.0 || ~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "cerdic/css-tidy": "^1.7 || ^2.0", @@ -3149,49 +3037,47 @@ ], "support": { "issues": "https://github.com/ezyang/htmlpurifier/issues", - "source": "https://github.com/ezyang/htmlpurifier/tree/v4.16.0" + "source": "https://github.com/ezyang/htmlpurifier/tree/v4.17.0" }, - "time": "2022-09-18T07:06:19+00:00" + "time": "2023-11-17T15:01:25+00:00" }, { "name": "fakerphp/faker", - "version": "v1.15.0", + "version": "v1.23.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "89c6201c74db25fa759ff16e78a4d8f32547770e" + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/89c6201c74db25fa759ff16e78a4d8f32547770e", - "reference": "89c6201c74db25fa759ff16e78a4d8f32547770e", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", + "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "psr/container": "^1.0", - "symfony/deprecation-contracts": "^2.2" + "php": "^7.4 || ^8.0", + "psr/container": "^1.0 || ^2.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" }, "conflict": { "fzaninotto/faker": "*" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/persistence": "^1.3 || ^2.0", "ext-intl": "*", - "symfony/phpunit-bridge": "^4.4 || ^5.2" + "phpunit/phpunit": "^9.5.26", + "symfony/phpunit-bridge": "^5.4.16" }, "suggest": { + "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", "ext-curl": "Required by Faker\\Provider\\Image to download images.", "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", "ext-mbstring": "Required for multibyte Unicode string functionality." }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "v1.15-dev" - } - }, "autoload": { "psr-4": { "Faker\\": "src/Faker/" @@ -3214,9 +3100,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.15.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" }, - "time": "2021-07-06T20:39:40+00:00" + "time": "2024-01-02T13:46:09+00:00" }, { "name": "friendsofphp/proxy-manager-lts", @@ -3302,52 +3188,53 @@ }, { "name": "gedmo/doctrine-extensions", - "version": "v3.13.0", + "version": "v3.15.0", "source": { "type": "git", "url": "https://github.com/doctrine-extensions/DoctrineExtensions.git", - "reference": "291d0c527d2dc9ee07b888c9a4e2a179893f08ab" + "reference": "2a89103f4984d8970f3855284c8c04e6e6a63c0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/291d0c527d2dc9ee07b888c9a4e2a179893f08ab", - "reference": "291d0c527d2dc9ee07b888c9a4e2a179893f08ab", + "url": "https://api.github.com/repos/doctrine-extensions/DoctrineExtensions/zipball/2a89103f4984d8970f3855284c8c04e6e6a63c0f", + "reference": "2a89103f4984d8970f3855284c8c04e6e6a63c0f", "shasum": "" }, "require": { "behat/transliterator": "^1.2", - "doctrine/annotations": "^1.13 || ^2.0", "doctrine/collections": "^1.2 || ^2.0", "doctrine/common": "^2.13 || ^3.0", + "doctrine/deprecations": "^1.0", "doctrine/event-manager": "^1.2 || ^2.0", "doctrine/persistence": "^2.2 || ^3.0", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/cache": "^4.4 || ^5.3 || ^6.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0" + "psr/clock": "^1", + "symfony/cache": "^5.4 || ^6.0 || ^7.0" }, "conflict": { - "doctrine/dbal": "<2.13.1 || ^3.0 <3.2", - "doctrine/mongodb-odm": "<2.3", - "doctrine/orm": "<2.10.2 || 2.16.0 || 2.16.1", - "sebastian/comparator": "<2.0" + "doctrine/annotations": "<1.13 || >=3.0", + "doctrine/dbal": "<3.2 || >=4.0", + "doctrine/mongodb-odm": "<2.3 || >=3.0", + "doctrine/orm": "<2.14.0 || 2.16.0 || 2.16.1 || >=3.0" }, "require-dev": { + "doctrine/annotations": "^1.13 || ^2.0", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13.1 || ^3.2", + "doctrine/dbal": "^3.2", "doctrine/doctrine-bundle": "^2.3", "doctrine/mongodb-odm": "^2.3", - "doctrine/orm": "^2.10.2", - "friendsofphp/php-cs-fixer": "^3.4.0 <3.10", - "nesbot/carbon": "^2.55", + "doctrine/orm": "^2.14.0", + "friendsofphp/php-cs-fixer": "^3.14.0", + "nesbot/carbon": "^2.71 || ^3.0", "phpstan/phpstan": "^1.10.2", "phpstan/phpstan-doctrine": "^1.0", "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^8.5 || ^9.5", - "rector/rector": "^0.15.20", - "symfony/console": "^4.4 || ^5.3 || ^6.0", - "symfony/phpunit-bridge": "^6.0", - "symfony/yaml": "^4.4 || ^5.3 || ^6.0" + "phpunit/phpunit": "^9.6", + "rector/rector": "^0.19", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/mongodb-odm": "to use the extensions with the MongoDB ODM", @@ -3404,7 +3291,7 @@ "support": { "email": "gediminas.morkevicius@gmail.com", "issues": "https://github.com/doctrine-extensions/DoctrineExtensions/issues", - "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.13.0", + "source": "https://github.com/doctrine-extensions/DoctrineExtensions/tree/v3.15.0", "wiki": "https://github.com/Atlantic18/DoctrineExtensions/tree/main/doc" }, "funding": [ @@ -3425,26 +3312,26 @@ "type": "github" } ], - "time": "2023-09-06T13:16:12+00:00" + "time": "2024-02-12T15:17:22+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.7.1", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "085b026db54d4b5012f727c80c9958e8b8cbc454" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/085b026db54d4b5012f727c80c9958e8b8cbc454", - "reference": "085b026db54d4b5012f727c80c9958e8b8cbc454", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0", - "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", + "guzzlehttp/promises": "^1.5.3 || ^2.0.1", + "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -3453,11 +3340,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -3535,7 +3422,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.7.1" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -3551,33 +3438,37 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:02:06+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", - "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -3614,7 +3505,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.3" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -3630,26 +3521,26 @@ "type": "tidelift" } ], - "time": "2023-05-21T12:31:43+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.4.5", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/0454e12ef0cd597ccd2adb036f7bda4e7fface66", - "reference": "0454e12ef0cd597ccd2adb036f7bda4e7fface66", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -3657,9 +3548,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -3730,7 +3621,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.5" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -3746,37 +3637,38 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:00:45+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "hautelook/alice-bundle", - "version": "2.9.0", + "version": "2.12.2", "source": { "type": "git", "url": "https://github.com/theofidry/AliceBundle.git", - "reference": "17c5199b2a6efbc1383b0afe1cddfa3c176b7b6f" + "reference": "76485f14618725c3555e3c2737c68088d06104fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/17c5199b2a6efbc1383b0afe1cddfa3c176b7b6f", - "reference": "17c5199b2a6efbc1383b0afe1cddfa3c176b7b6f", + "url": "https://api.github.com/repos/theofidry/AliceBundle/zipball/76485f14618725c3555e3c2737c68088d06104fb", + "reference": "76485f14618725c3555e3c2737c68088d06104fb", "shasum": "" }, "require": { - "doctrine/data-fixtures": "^1.2", - "doctrine/doctrine-bundle": "^1.8 || ^2.0", - "doctrine/orm": "^2.5.11", - "doctrine/persistence": "^1.3.4 || ^2.0", - "php": "^7.3 || ^8.0", - "psr/log": "^1.0", - "symfony/finder": "^3.4 || ^4.0 || ^5.0", - "symfony/framework-bundle": "^3.4.24 || ^4.0 || ^5.0", - "theofidry/alice-data-fixtures": "^1.4" + "doctrine/data-fixtures": "^1.5", + "doctrine/doctrine-bundle": "^2.5", + "doctrine/orm": "^2.10.0", + "doctrine/persistence": "^2.2 || ^3.0", + "php": "^8.1", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/finder": "^5.4.2 || ^6.0", + "symfony/framework-bundle": "^5.4.2 || ^6.0", + "theofidry/alice-data-fixtures": "^1.5" }, "require-dev": { "phpspec/prophecy": "^1.7", - "phpunit/phpunit": "^8.5", - "symfony/phpunit-bridge": "^5.1" + "phpspec/prophecy-phpunit": "^2.0", + "phpunit/phpunit": "^9.5", + "symfony/phpunit-bridge": "^6.0" }, "type": "symfony-bundle", "extra": { @@ -3815,28 +3707,23 @@ "symfony" ], "support": { - "source": "https://github.com/theofidry/AliceBundle/tree/2.9.0" + "issues": "https://github.com/theofidry/AliceBundle/issues", + "source": "https://github.com/theofidry/AliceBundle/tree/2.12.2" }, - "funding": [ - { - "url": "https://github.com/theofidry", - "type": "github" - } - ], - "time": "2021-02-23T08:45:57+00:00" + "time": "2023-11-22T23:06:15+00:00" }, { "name": "jean85/pretty-package-versions", - "version": "2.0.5", + "version": "2.0.6", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/f9fdd29ad8e6d024f52678b570e5593759b550b4", + "reference": "f9fdd29ad8e6d024f52678b570e5593759b550b4", "shasum": "" }, "require": { @@ -3844,9 +3731,9 @@ "php": "^7.1|^8.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", + "friendsofphp/php-cs-fixer": "^3.2", "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", + "phpstan/phpstan": "^1.4", "phpunit/phpunit": "^7.5|^8.5|^9.4", "vimeo/psalm": "^4.3" }, @@ -3880,29 +3767,29 @@ ], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.6" }, - "time": "2021-10-08T21:21:46+00:00" + "time": "2024-03-08T09:58:59+00:00" }, { "name": "jwadhams/json-logic-php", - "version": "1.4.2", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/jwadhams/json-logic-php.git", - "reference": "2546c07ffef957bbf7b385938d0c155bd9b47c5f" + "reference": "e4ea3a46f44d3d34740276f7a21f8f052b029743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jwadhams/json-logic-php/zipball/2546c07ffef957bbf7b385938d0c155bd9b47c5f", - "reference": "2546c07ffef957bbf7b385938d0c155bd9b47c5f", + "url": "https://api.github.com/repos/jwadhams/json-logic-php/zipball/e4ea3a46f44d3d34740276f7a21f8f052b029743", + "reference": "e4ea3a46f44d3d34740276f7a21f8f052b029743", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=7.2.0" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^9.3.3" }, "type": "library", "autoload": { @@ -3923,9 +3810,9 @@ "description": "Build rules with complex comparisons and boolean operators, serialized as JSON, and execute them in PHP", "support": { "issues": "https://github.com/jwadhams/json-logic-php/issues", - "source": "https://github.com/jwadhams/json-logic-php/tree/1.4.2" + "source": "https://github.com/jwadhams/json-logic-php/tree/1.5.0" }, - "time": "2020-05-12T14:00:33+00:00" + "time": "2022-03-02T21:44:10+00:00" }, { "name": "khanamiryan/qrcode-detector-decoder", @@ -3986,29 +3873,29 @@ }, { "name": "laminas/laminas-code", - "version": "4.12.0", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0" + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/36cbee228b427446419dd51944bdfb6bb8ddbcd0", - "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "doctrine/annotations": "^2.0.0", + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^10.0.9", + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.7.1" + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -4045,37 +3932,37 @@ "type": "community_bridge" } ], - "time": "2023-09-06T14:56:25+00:00" + "time": "2023-10-18T10:00:55+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.12.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", - "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/af459883f4018d0f8a0c69c7a209daef3bf973ba", + "reference": "af459883f4018d0f8a0c69c7a209daef3bf973ba", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.26.6", - "laminas/laminas-coding-standard": "~2.4.0", + "infection/infection": "^0.27.0", + "laminas/laminas-coding-standard": "~2.5.0", "maglnet/composer-require-checker": "^3.8.0", - "phpunit/phpunit": "^9.5.18", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.22.0" + "phpunit/phpunit": "^9.6.7", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.9" }, "type": "library", "autoload": { @@ -4107,7 +3994,7 @@ "type": "community_bridge" } ], - "time": "2022-10-10T10:11:09+00:00" + "time": "2023-10-10T08:35:13+00:00" }, { "name": "league/flysystem", @@ -4462,26 +4349,26 @@ }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.15.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", + "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" + "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0" }, "type": "library", "autoload": { @@ -4502,7 +4389,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0" }, "funding": [ { @@ -4514,36 +4401,39 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2024-01-28T23:22:08+00:00" }, { "name": "maennchen/zipstream-php", - "version": "2.2.6", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/maennchen/ZipStream-PHP.git", - "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f" + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f", - "reference": "30ad6f93cf3efe4192bc7a4c9cad11ff8f4f237f", + "url": "https://api.github.com/repos/maennchen/ZipStream-PHP/zipball/b8174494eda667f7d13876b4a7bfef0f62a7c0d1", + "reference": "b8174494eda667f7d13876b4a7bfef0f62a7c0d1", "shasum": "" }, "require": { - "myclabs/php-enum": "^1.5", - "php": "^7.4 || ^8.0", - "psr/http-message": "^1.0", - "symfony/polyfill-mbstring": "^1.0" + "ext-mbstring": "*", + "ext-zlib": "*", + "php-64bit": "^8.1" }, "require-dev": { "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^3.9", - "guzzlehttp/guzzle": "^6.5.3 || ^7.2.0", + "friendsofphp/php-cs-fixer": "^3.16", + "guzzlehttp/guzzle": "^7.5", "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.4", - "phpunit/phpunit": "^8.5.8 || ^9.4.2", - "vimeo/psalm": "^4.1" + "php-coveralls/php-coveralls": "^2.5", + "phpunit/phpunit": "^10.0", + "vimeo/psalm": "^5.0" + }, + "suggest": { + "guzzlehttp/psr7": "^2.4", + "psr/http-message": "^2.0" }, "type": "library", "autoload": { @@ -4580,7 +4470,7 @@ ], "support": { "issues": "https://github.com/maennchen/ZipStream-PHP/issues", - "source": "https://github.com/maennchen/ZipStream-PHP/tree/2.2.6" + "source": "https://github.com/maennchen/ZipStream-PHP/tree/3.1.0" }, "funding": [ { @@ -4592,7 +4482,7 @@ "type": "open_collective" } ], - "time": "2022-11-25T18:57:19+00:00" + "time": "2023-06-21T14:59:35+00:00" }, { "name": "markbaker/complex", @@ -4703,26 +4593,24 @@ }, { "name": "masterminds/html5", - "version": "2.7.5", + "version": "2.8.1", "source": { "type": "git", "url": "https://github.com/Masterminds/html5-php.git", - "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab" + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f640ac1bdddff06ea333a920c95bbad8872429ab", - "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", "shasum": "" }, "require": { - "ext-ctype": "*", "ext-dom": "*", - "ext-libxml": "*", "php": ">=5.3.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7" + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" }, "type": "library", "extra": { @@ -4766,42 +4654,45 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.7.5" + "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" }, - "time": "2021-07-01T14:25:37+00:00" + "time": "2023-05-10T11:58:31+00:00" }, { "name": "mongodb/mongodb", - "version": "1.15.0", + "version": "1.17.0", "source": { "type": "git", "url": "https://github.com/mongodb/mongo-php-library.git", - "reference": "3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8" + "reference": "9d9c917cf7ff275ed6bd63c596efeb6e49fd0e53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8", - "reference": "3a681a3b2f2c0ebac227a3b86bb9057d0e6eb8f8", + "url": "https://api.github.com/repos/mongodb/mongo-php-library/zipball/9d9c917cf7ff275ed6bd63c596efeb6e49fd0e53", + "reference": "9d9c917cf7ff275ed6bd63c596efeb6e49fd0e53", "shasum": "" }, "require": { "ext-hash": "*", "ext-json": "*", - "ext-mongodb": "^1.15.0", - "jean85/pretty-package-versions": "^1.2 || ^2.0.1", - "php": "^7.2 || ^8.0", - "symfony/polyfill-php80": "^1.19" + "ext-mongodb": "^1.17.0", + "jean85/pretty-package-versions": "^2.0.1", + "php": "^7.4 || ^8.0", + "psr/log": "^1.1.4|^2|^3", + "symfony/polyfill-php80": "^1.27", + "symfony/polyfill-php81": "^1.27" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "squizlabs/php_codesniffer": "^3.6", + "doctrine/coding-standard": "^12.0", + "rector/rector": "^0.18", + "squizlabs/php_codesniffer": "^3.7", "symfony/phpunit-bridge": "^5.2", - "vimeo/psalm": "^4.28" + "vimeo/psalm": "^5.13" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15.x-dev" + "dev-master": "1.17.x-dev" } }, "autoload": { @@ -4824,6 +4715,10 @@ { "name": "Jeremy Mikola", "email": "jmikola@gmail.com" + }, + { + "name": "Jérôme Tamarelle", + "email": "jerome.tamarelle@mongodb.com" } ], "description": "MongoDB driver library", @@ -4836,22 +4731,22 @@ ], "support": { "issues": "https://github.com/mongodb/mongo-php-library/issues", - "source": "https://github.com/mongodb/mongo-php-library/tree/1.15.0" + "source": "https://github.com/mongodb/mongo-php-library/tree/1.17.0" }, - "time": "2022-11-23T04:45:35+00:00" + "time": "2023-11-15T09:21:50+00:00" }, { "name": "monolog/monolog", - "version": "2.9.1", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", "shasum": "" }, "require": { @@ -4928,7 +4823,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" }, "funding": [ { @@ -4940,41 +4835,42 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4990,7 +4886,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -4998,7 +4894,7 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "myclabs/php-enum", @@ -5065,36 +4961,40 @@ }, { "name": "nelmio/alice", - "version": "v3.8.2", + "version": "3.12.2", "source": { "type": "git", "url": "https://github.com/nelmio/alice.git", - "reference": "b57f4c6f039baa72e2bd5b75fd8de77e1b9228e3" + "reference": "a020c0767e10dbb7bf1c193e16e94710691133d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/alice/zipball/b57f4c6f039baa72e2bd5b75fd8de77e1b9228e3", - "reference": "b57f4c6f039baa72e2bd5b75fd8de77e1b9228e3", + "url": "https://api.github.com/repos/nelmio/alice/zipball/a020c0767e10dbb7bf1c193e16e94710691133d9", + "reference": "a020c0767e10dbb7bf1c193e16e94710691133d9", "shasum": "" }, "require": { "fakerphp/faker": "^1.10", "myclabs/deep-copy": "^1.10", - "php": "^7.3 || ^8.0", - "sebastian/comparator": "^3.0 || ^4.0", - "symfony/property-access": "^2.8 || ^3.4 || ^4.0 || ^5.0", - "symfony/yaml": "^2.8 || ^3.4 || ^4.0 || ^5.0" + "php": "^8.1", + "sebastian/comparator": "^3.0 || ^4.0 || ^5.0", + "symfony/property-access": "^5.4 || ^6.0", + "symfony/yaml": "^5.4 || ^6.0" }, "conflict": { - "symfony/framework-bundle": "<3.4" + "symfony/framework-bundle": "<5.4.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.1.0", + "bamarni/composer-bin-plugin": "^1.4.1", "phpspec/prophecy": "^1.6", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^8.5.4 || ^9.3", - "symfony/phpunit-bridge": "^5.1.3", - "symfony/var-dumper": "^3.4 || ^4.0 || ^5.0" + "phpunit/phpunit": "^9.3", + "symfony/config": "^5.4 || ^6.0", + "symfony/dependency-injection": "^5.4 || ^6.0", + "symfony/finder": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^5.4 || ^6.0", + "symfony/var-dumper": "^5.4 || ^6.0" }, "suggest": { "theofidry/alice-data-fixtures": "Wrapper for Alice to provide a persistence layer." @@ -5143,7 +5043,7 @@ ], "support": { "issues": "https://github.com/nelmio/alice/issues", - "source": "https://github.com/nelmio/alice/tree/v3.8.2" + "source": "https://github.com/nelmio/alice/tree/3.12.2" }, "funding": [ { @@ -5151,33 +5051,34 @@ "type": "github" } ], - "time": "2021-02-27T19:13:09+00:00" + "time": "2023-02-13T11:17:55+00:00" }, { "name": "nelmio/cors-bundle", - "version": "2.1.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "0b964b665016dfb61dd0fd2bb8c24afb1ae45a93" + "reference": "78fcdb91f76b080a1008133def9c7f613833933d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/0b964b665016dfb61dd0fd2bb8c24afb1ae45a93", - "reference": "0b964b665016dfb61dd0fd2bb8c24afb1ae45a93", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/78fcdb91f76b080a1008133def9c7f613833933d", + "reference": "78fcdb91f76b080a1008133def9c7f613833933d", "shasum": "" }, "require": { - "symfony/framework-bundle": "^4.3 || ^5.0" + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "mockery/mockery": "^1.2", - "symfony/phpunit-bridge": "^4.3 || ^5.0" + "mockery/mockery": "^1.3.6", + "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -5208,7 +5109,11 @@ "cors", "crossdomain" ], - "time": "2021-04-20T08:27:05+00:00" + "support": { + "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.4.0" + }, + "time": "2023-11-30T16:41:19+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -5271,31 +5176,167 @@ "rfc4648" ], "support": { - "email": "info@paragonie.com", - "issues": "https://github.com/paragonie/constant_time_encoding/issues", - "source": "https://github.com/paragonie/constant_time_encoding" + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/constant_time_encoding/issues", + "source": "https://github.com/paragonie/constant_time_encoding" + }, + "time": "2022-06-14T06:56:20+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v9.99.100", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", + "shasum": "" + }, + "require": { + "php": ">= 7" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "polyfill", + "pseudorandom", + "random" + ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, + "time": "2020-10-15T08:29:30+00:00" + }, + { + "name": "paragonie/sodium_compat", + "version": "v1.20.0", + "source": { + "type": "git", + "url": "https://github.com/paragonie/sodium_compat.git", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "shasum": "" + }, + "require": { + "paragonie/random_compat": ">=1", + "php": "^5.2.4|^5.3|^5.4|^5.5|^5.6|^7|^8" + }, + "require-dev": { + "phpunit/phpunit": "^3|^4|^5|^6|^7|^8|^9" + }, + "suggest": { + "ext-libsodium": "PHP < 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security.", + "ext-sodium": "PHP >= 7.0: Better performance, password hashing (Argon2i), secure memory management (memzero), and better security." + }, + "type": "library", + "autoload": { + "files": [ + "autoload.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com" + }, + { + "name": "Frank Denis", + "email": "jedisct1@pureftpd.org" + } + ], + "description": "Pure PHP implementation of libsodium; uses the PHP extension if it exists", + "keywords": [ + "Authentication", + "BLAKE2b", + "ChaCha20", + "ChaCha20-Poly1305", + "Chapoly", + "Curve25519", + "Ed25519", + "EdDSA", + "Edwards-curve Digital Signature Algorithm", + "Elliptic Curve Diffie-Hellman", + "Poly1305", + "Pure-PHP cryptography", + "RFC 7748", + "RFC 8032", + "Salpoly", + "Salsa20", + "X25519", + "XChaCha20-Poly1305", + "XSalsa20-Poly1305", + "Xchacha20", + "Xsalsa20", + "aead", + "cryptography", + "ecdh", + "elliptic curve", + "elliptic curve cryptography", + "encryption", + "libsodium", + "php", + "public-key cryptography", + "secret-key cryptography", + "side-channel resistant" + ], + "support": { + "issues": "https://github.com/paragonie/sodium_compat/issues", + "source": "https://github.com/paragonie/sodium_compat/tree/v1.20.0" }, - "time": "2022-06-14T06:56:20+00:00" + "time": "2023-04-30T00:54:53+00:00" }, { "name": "phenx/php-font-lib", - "version": "0.5.4", + "version": "0.5.6", "source": { "type": "git", "url": "https://github.com/dompdf/php-font-lib.git", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4" + "reference": "a1681e9793040740a405ac5b189275059e2a9863" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/dd448ad1ce34c63d09baccd05415e361300c35b4", - "reference": "dd448ad1ce34c63d09baccd05415e361300c35b4", + "url": "https://api.github.com/repos/dompdf/php-font-lib/zipball/a1681e9793040740a405ac5b189275059e2a9863", + "reference": "a1681e9793040740a405ac5b189275059e2a9863", "shasum": "" }, "require": { "ext-mbstring": "*" }, "require-dev": { - "symfony/phpunit-bridge": "^3 || ^4 || ^5" + "symfony/phpunit-bridge": "^3 || ^4 || ^5 || ^6" }, "type": "library", "autoload": { @@ -5305,7 +5346,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "LGPL-2.1-or-later" ], "authors": [ { @@ -5317,22 +5358,22 @@ "homepage": "https://github.com/PhenX/php-font-lib", "support": { "issues": "https://github.com/dompdf/php-font-lib/issues", - "source": "https://github.com/dompdf/php-font-lib/tree/0.5.4" + "source": "https://github.com/dompdf/php-font-lib/tree/0.5.6" }, - "time": "2021-12-17T19:44:54+00:00" + "time": "2024-01-29T14:45:26+00:00" }, { "name": "phenx/php-svg-lib", - "version": "0.5.1", + "version": "0.5.3", "source": { "type": "git", "url": "https://github.com/dompdf/php-svg-lib.git", - "reference": "8a8a1ebcf6aea861ef30197999f096f7bd4b4456" + "reference": "0e46722c154726a5f9ac218197ccc28adba16fcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/8a8a1ebcf6aea861ef30197999f096f7bd4b4456", - "reference": "8a8a1ebcf6aea861ef30197999f096f7bd4b4456", + "url": "https://api.github.com/repos/dompdf/php-svg-lib/zipball/0e46722c154726a5f9ac218197ccc28adba16fcf", + "reference": "0e46722c154726a5f9ac218197ccc28adba16fcf", "shasum": "" }, "require": { @@ -5351,7 +5392,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "LGPL-3.0" + "LGPL-3.0-or-later" ], "authors": [ { @@ -5363,9 +5404,9 @@ "homepage": "https://github.com/PhenX/php-svg-lib", "support": { "issues": "https://github.com/dompdf/php-svg-lib/issues", - "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.1" + "source": "https://github.com/dompdf/php-svg-lib/tree/0.5.3" }, - "time": "2023-12-11T20:56:08+00:00" + "time": "2024-02-23T20:39:24+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -5414,20 +5455,24 @@ "reflection", "static analysis" ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, "time": "2020-06-27T09:03:43+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", + "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", "shasum": "" }, "require": { @@ -5438,7 +5483,8 @@ "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2" + "mockery/mockery": "~1.3.2", + "psalm/phar": "^4.8" }, "type": "library", "extra": { @@ -5466,28 +5512,41 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2020-09-03T19:13:55+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" + }, + "time": "2021-10-19T17:43:47+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "reference": "153ae662783729388a584b4361f2545e4d841e3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", + "reference": "153ae662783729388a584b4361f2545e4d841e3c", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { - "ext-tokenizer": "*" + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -5511,7 +5570,11 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-09-17T18:55:26+00:00" + "support": { + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" + }, + "time": "2024-02-23T11:10:43+00:00" }, { "name": "phpoffice/phpspreadsheet", @@ -5620,16 +5683,16 @@ }, { "name": "phpoffice/phpword", - "version": "0.18.2", + "version": "0.18.3", "source": { "type": "git", "url": "https://github.com/PHPOffice/PHPWord.git", - "reference": "aca10785cf68dc95d7f6fac4fe854979fef3f8db" + "reference": "be0190cd5d8f95b4be08d5853b107aa4e352759a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/aca10785cf68dc95d7f6fac4fe854979fef3f8db", - "reference": "aca10785cf68dc95d7f6fac4fe854979fef3f8db", + "url": "https://api.github.com/repos/PHPOffice/PHPWord/zipball/be0190cd5d8f95b4be08d5853b107aa4e352759a", + "reference": "be0190cd5d8f95b4be08d5853b107aa4e352759a", "shasum": "" }, "require": { @@ -5726,22 +5789,22 @@ ], "support": { "issues": "https://github.com/PHPOffice/PHPWord/issues", - "source": "https://github.com/PHPOffice/PHPWord/tree/0.18.2" + "source": "https://github.com/PHPOffice/PHPWord/tree/0.18.3" }, - "time": "2021-06-04T20:58:45+00:00" + "time": "2022-02-17T15:40:03+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.25.0", + "version": "1.26.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/231e3186624c03d7e7c890ec662b81e6b0405227", + "reference": "231e3186624c03d7e7c890ec662b81e6b0405227", "shasum": "" }, "require": { @@ -5773,26 +5836,26 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.26.0" }, - "time": "2024-01-04T17:06:16+00:00" + "time": "2024-02-23T16:05:55+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -5812,7 +5875,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -5822,9 +5885,9 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/2.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:23:37+00:00" }, { "name": "psr/clock", @@ -5974,21 +6037,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -6008,7 +6071,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -6020,27 +6083,27 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-09-23T14:17:50+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -6060,7 +6123,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -6075,31 +6138,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -6114,7 +6177,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -6128,26 +6191,26 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/link", - "version": "1.0.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/php-fig/link.git", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", + "url": "https://api.github.com/repos/php-fig/link/zipball/846c25f58a1f02b93a00f2404e3626b6bf9b7807", + "reference": "846c25f58a1f02b93a00f2404e3626b6bf9b7807", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -6171,6 +6234,7 @@ } ], "description": "Common interfaces for HTTP links", + "homepage": "https://github.com/php-fig/link", "keywords": [ "http", "http-link", @@ -6179,34 +6243,37 @@ "psr-13", "rest" ], - "time": "2016-10-28T16:06:13+00:00" + "support": { + "source": "https://github.com/php-fig/link/tree/1.1.1" + }, + "time": "2021-03-11T22:59:13+00:00" }, { "name": "psr/log", - "version": "1.1.4", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", + "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6227,31 +6294,31 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/2.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:41:46+00:00" }, { "name": "psr/simple-cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", + "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -6266,7 +6333,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -6278,9 +6345,9 @@ "simple-cache" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/master" + "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" }, - "time": "2017-10-23T01:57:42+00:00" + "time": "2021-10-29T13:26:27+00:00" }, { "name": "ralouphie/getallheaders", @@ -6618,12 +6685,12 @@ }, "type": "library", "autoload": { - "psr-4": { - "Respect\\Stringifier\\": "src/" - }, "files": [ "src/stringify.php" - ] + ], + "psr-4": { + "Respect\\Stringifier\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6650,44 +6717,42 @@ }, { "name": "respect/validation", - "version": "2.2.3", + "version": "2.3.4", "source": { "type": "git", "url": "https://github.com/Respect/Validation.git", - "reference": "4c21a7ffc9a4915673cb2c2843963919e664e627" + "reference": "788939e35909cbc3dcd72202d616e04dd553b572" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Respect/Validation/zipball/4c21a7ffc9a4915673cb2c2843963919e664e627", - "reference": "4c21a7ffc9a4915673cb2c2843963919e664e627", + "url": "https://api.github.com/repos/Respect/Validation/zipball/788939e35909cbc3dcd72202d616e04dd553b572", + "reference": "788939e35909cbc3dcd72202d616e04dd553b572", "shasum": "" }, "require": { - "php": "^7.3 || ^8.0", + "php": "^8.1 || ^8.2", "respect/stringifier": "^0.2.0", "symfony/polyfill-mbstring": "^1.2" }, "require-dev": { "egulias/email-validator": "^3.0", - "malukenho/docheader": "^0.1", + "giggsey/libphonenumber-for-php-lite": "^8.13", + "malukenho/docheader": "^1.0", "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^9.3", + "phpstan/phpstan": "^1.9", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.6", "psr/http-message": "^1.0", - "respect/coding-standard": "^3.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/validator": "^3.0||^4.0", - "zendframework/zend-validator": "^2.1" + "respect/coding-standard": "^4.0", + "squizlabs/php_codesniffer": "^3.7" }, "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", + "egulias/email-validator": "Improves the Email rule if available", "ext-bcmath": "Arbitrary Precision Mathematics", "ext-fileinfo": "File Information", "ext-mbstring": "Multibyte String Functions", - "symfony/validator": "Use Symfony validator through Respect\\Validation", - "zendframework/zend-validator": "Use Zend Framework validator through Respect\\Validation" + "giggsey/libphonenumber-for-php-lite": "Enables the phone rule if available" }, "type": "library", "autoload": { @@ -6714,22 +6779,22 @@ ], "support": { "issues": "https://github.com/Respect/Validation/issues", - "source": "https://github.com/Respect/Validation/tree/2.2.3" + "source": "https://github.com/Respect/Validation/tree/2.3.4" }, - "time": "2021-03-19T14:12:45+00:00" + "time": "2024-03-11T21:14:03+00:00" }, { "name": "sabberworm/php-css-parser", - "version": "8.4.0", + "version": "v8.5.1", "source": { "type": "git", - "url": "https://github.com/sabberworm/PHP-CSS-Parser.git", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30" + "url": "https://github.com/MyIntervals/PHP-CSS-Parser.git", + "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/e41d2140031d533348b2192a83f02d8dd8a71d30", - "reference": "e41d2140031d533348b2192a83f02d8dd8a71d30", + "url": "https://api.github.com/repos/MyIntervals/PHP-CSS-Parser/zipball/4a3d572b0f8b28bb6fd016ae8bbfc445facef152", + "reference": "4a3d572b0f8b28bb6fd016ae8bbfc445facef152", "shasum": "" }, "require": { @@ -6737,13 +6802,17 @@ "php": ">=5.6.20" }, "require-dev": { - "codacy/coverage": "^1.4", - "phpunit/phpunit": "^4.8.36" + "phpunit/phpunit": "^5.7.27" }, "suggest": { "ext-mbstring": "for parsing UTF-8 CSS" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "9.0.x-dev" + } + }, "autoload": { "psr-4": { "Sabberworm\\CSS\\": "src/" @@ -6756,6 +6825,14 @@ "authors": [ { "name": "Raphael Schweikert" + }, + { + "name": "Oliver Klee", + "email": "github@oliverklee.de" + }, + { + "name": "Jake Hotson", + "email": "jake.github@qzdesign.co.uk" } ], "description": "Parser for CSS Files written in PHP", @@ -6766,23 +6843,23 @@ "stylesheet" ], "support": { - "issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues", - "source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.4.0" + "issues": "https://github.com/MyIntervals/PHP-CSS-Parser/issues", + "source": "https://github.com/MyIntervals/PHP-CSS-Parser/tree/v8.5.1" }, - "time": "2021-12-11T13:40:54+00:00" + "time": "2024-02-15T16:41:13+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -6835,7 +6912,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -6843,20 +6920,20 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -6901,7 +6978,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -6909,20 +6986,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", "shasum": "" }, "require": { @@ -6971,14 +7048,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" }, "funding": [ { @@ -6986,20 +7063,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2024-03-02T06:33:00+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -7038,10 +7115,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -7049,7 +7126,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "setono/cron-expression-bundle", @@ -7185,20 +7262,20 @@ }, { "name": "spomky-labs/pki-framework", - "version": "1.1.0", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/pki-framework.git", - "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760" + "reference": "86102bdd19379b2c6e5b0feb94fd490d40e7d133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/d3ba688bf40e7c6e0dabf065ee18fc210734e760", - "reference": "d3ba688bf40e7c6e0dabf065ee18fc210734e760", + "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/86102bdd19379b2c6e5b0feb94fd490d40e7d133", + "reference": "86102bdd19379b2c6e5b0feb94fd490d40e7d133", "shasum": "" }, "require": { - "brick/math": "^0.10 || ^0.11", + "brick/math": "^0.10|^0.11|^0.12", "ext-mbstring": "*", "php": ">=8.1" }, @@ -7206,20 +7283,21 @@ "ekino/phpstan-banned-code": "^1.0", "ext-gmp": "*", "ext-openssl": "*", - "infection/infection": "^0.26", + "infection/infection": "^0.27", "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/extension-installer": "^1.3", "phpstan/phpstan": "^1.8", "phpstan/phpstan-beberlei-assert": "^1.0", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^10.0", - "rector/rector": "^0.15", + "phpunit/phpunit": "^10.1", + "rector/rector": "^0.19", "roave/security-advisories": "dev-latest", - "symfony/phpunit-bridge": "^6.1", - "symfony/var-dumper": "^6.1", - "symplify/easy-coding-standard": "^11.1", - "thecodingmachine/phpstan-safe-rule": "^1.2" + "symfony/phpunit-bridge": "^6.4|^7.0", + "symfony/string": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0", + "symplify/easy-coding-standard": "^12.0" }, "suggest": { "ext-bcmath": "For better performance (or GMP)", @@ -7279,7 +7357,7 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/pki-framework/issues", - "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.0" + "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.1.1" }, "funding": [ { @@ -7291,20 +7369,20 @@ "type": "patreon" } ], - "time": "2023-02-13T17:21:24+00:00" + "time": "2024-02-05T20:37:46+00:00" }, { "name": "symfony/amqp-messenger", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/amqp-messenger.git", - "reference": "41d9dadbfd9edd0906c9a8d6b614f2fab274408f" + "reference": "456958ef89fffddc3935f3954a7eac255a5adb21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/41d9dadbfd9edd0906c9a8d6b614f2fab274408f", - "reference": "41d9dadbfd9edd0906c9a8d6b614f2fab274408f", + "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/456958ef89fffddc3935f3954a7eac255a5adb21", + "reference": "456958ef89fffddc3935f3954a7eac255a5adb21", "shasum": "" }, "require": { @@ -7344,7 +7422,7 @@ "description": "Symfony AMQP extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.35" + "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.36" }, "funding": [ { @@ -7360,7 +7438,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-14T16:15:37+00:00" }, { "name": "symfony/asset", @@ -7438,16 +7516,16 @@ }, { "name": "symfony/cache", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "db1adb004e2da984085d0178964eb6f319d3cba1" + "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/db1adb004e2da984085d0178964eb6f319d3cba1", - "reference": "db1adb004e2da984085d0178964eb6f319d3cba1", + "url": "https://api.github.com/repos/symfony/cache/zipball/a30f316214d908cf5874f700f3f3fb29ceee91ba", + "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba", "shasum": "" }, "require": { @@ -7515,7 +7593,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.35" + "source": "https://github.com/symfony/cache/tree/v5.4.36" }, "funding": [ { @@ -7531,20 +7609,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-19T13:08:14+00:00" }, { "name": "symfony/config", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "6b763438a22a4f20885e994ad6702f6a3f25430e" + "reference": "0a4f363dc2f13d2f871f917cc563796d9ddc78d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/6b763438a22a4f20885e994ad6702f6a3f25430e", - "reference": "6b763438a22a4f20885e994ad6702f6a3f25430e", + "url": "https://api.github.com/repos/symfony/config/zipball/0a4f363dc2f13d2f871f917cc563796d9ddc78d1", + "reference": "0a4f363dc2f13d2f871f917cc563796d9ddc78d1", "shasum": "" }, "require": { @@ -7594,7 +7672,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.35" + "source": "https://github.com/symfony/config/tree/v5.4.36" }, "funding": [ { @@ -7610,20 +7688,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-23T16:13:23+00:00" }, { "name": "symfony/console", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931" + "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/dbdf6adcb88d5f83790e1efb57ef4074309d3931", - "reference": "dbdf6adcb88d5f83790e1efb57ef4074309d3931", + "url": "https://api.github.com/repos/symfony/console/zipball/39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e", + "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e", "shasum": "" }, "require": { @@ -7693,7 +7771,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.35" + "source": "https://github.com/symfony/console/tree/v5.4.36" }, "funding": [ { @@ -7709,7 +7787,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:28:09+00:00" + "time": "2024-02-20T16:33:57+00:00" }, { "name": "symfony/contracts", @@ -7814,16 +7892,16 @@ }, { "name": "symfony/dependency-injection", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118" + "reference": "cc1fb237cd0e6da33005062b13b8485deb6e4440" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/45474d527212ca67cdb93f6c5e6da68f4bc67118", - "reference": "45474d527212ca67cdb93f6c5e6da68f4bc67118", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/cc1fb237cd0e6da33005062b13b8485deb6e4440", + "reference": "cc1fb237cd0e6da33005062b13b8485deb6e4440", "shasum": "" }, "require": { @@ -7883,7 +7961,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.35" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.36" }, "funding": [ { @@ -7899,20 +7977,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:37:36+00:00" + "time": "2024-02-22T18:43:31+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v5.4.35", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "f1c8d1f75ede8ba6810498666159c50ca05beec0" + "reference": "07ce0b69c4eed50aae2138916149da3f7d93dce7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/f1c8d1f75ede8ba6810498666159c50ca05beec0", - "reference": "f1c8d1f75ede8ba6810498666159c50ca05beec0", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/07ce0b69c4eed50aae2138916149da3f7d93dce7", + "reference": "07ce0b69c4eed50aae2138916149da3f7d93dce7", "shasum": "" }, "require": { @@ -7999,7 +8077,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.35" + "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.37" }, "funding": [ { @@ -8015,20 +8093,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-27T10:07:57+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "21351af73e7dbe9db64f4b6bb15af6f55c78bf6e" + "reference": "14a1d0a43b93f9b52effad08fb8dd936f09653b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/21351af73e7dbe9db64f4b6bb15af6f55c78bf6e", - "reference": "21351af73e7dbe9db64f4b6bb15af6f55c78bf6e", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/14a1d0a43b93f9b52effad08fb8dd936f09653b0", + "reference": "14a1d0a43b93f9b52effad08fb8dd936f09653b0", "shasum": "" }, "require": { @@ -8072,7 +8150,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.35" + "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.36" }, "funding": [ { @@ -8088,7 +8166,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-15T21:03:16+00:00" }, { "name": "symfony/dotenv", @@ -8163,16 +8241,16 @@ }, { "name": "symfony/error-handler", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "39225b1e47fdd91a6924b1e7d7a4523da2e1894b" + "reference": "90b1d7799bfc1b3ed5f902e8b334eeb7dba537a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/39225b1e47fdd91a6924b1e7d7a4523da2e1894b", - "reference": "39225b1e47fdd91a6924b1e7d7a4523da2e1894b", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/90b1d7799bfc1b3ed5f902e8b334eeb7dba537a1", + "reference": "90b1d7799bfc1b3ed5f902e8b334eeb7dba537a1", "shasum": "" }, "require": { @@ -8214,7 +8292,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.35" + "source": "https://github.com/symfony/error-handler/tree/v5.4.36" }, "funding": [ { @@ -8230,7 +8308,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-22T11:40:53+00:00" }, { "name": "symfony/event-dispatcher", @@ -8509,16 +8587,16 @@ }, { "name": "symfony/flex", - "version": "v1.21.5", + "version": "v1.21.6", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "6b46a001639f810d01f4f1b39be1291192a711d4" + "reference": "06b58a5e5b4c6528fb12e0fac5fea0db3f1e7ae8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/6b46a001639f810d01f4f1b39be1291192a711d4", - "reference": "6b46a001639f810d01f4f1b39be1291192a711d4", + "url": "https://api.github.com/repos/symfony/flex/zipball/06b58a5e5b4c6528fb12e0fac5fea0db3f1e7ae8", + "reference": "06b58a5e5b4c6528fb12e0fac5fea0db3f1e7ae8", "shasum": "" }, "require": { @@ -8554,7 +8632,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v1.21.5" + "source": "https://github.com/symfony/flex/tree/v1.21.6" }, "funding": [ { @@ -8570,20 +8648,20 @@ "type": "tidelift" } ], - "time": "2024-02-05T18:04:39+00:00" + "time": "2024-03-02T08:16:37+00:00" }, { "name": "symfony/form", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "c827d421caccf467ef1a969e7412a8755fa88093" + "reference": "3bbf663b8021a5a7b8f4bf9b868354db6611a514" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/c827d421caccf467ef1a969e7412a8755fa88093", - "reference": "c827d421caccf467ef1a969e7412a8755fa88093", + "url": "https://api.github.com/repos/symfony/form/zipball/3bbf663b8021a5a7b8f4bf9b868354db6611a514", + "reference": "3bbf663b8021a5a7b8f4bf9b868354db6611a514", "shasum": "" }, "require": { @@ -8656,7 +8734,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v5.4.35" + "source": "https://github.com/symfony/form/tree/v5.4.36" }, "funding": [ { @@ -8672,20 +8750,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:28:09+00:00" + "time": "2024-02-08T18:38:25+00:00" }, { "name": "symfony/framework-bundle", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "89805687f360133f18bdedfb32138ce0ddd5383c" + "reference": "224f69093099a507cf84d8c48ceb29e8653a5896" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/89805687f360133f18bdedfb32138ce0ddd5383c", - "reference": "89805687f360133f18bdedfb32138ce0ddd5383c", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/224f69093099a507cf84d8c48ceb29e8653a5896", + "reference": "224f69093099a507cf84d8c48ceb29e8653a5896", "shasum": "" }, "require": { @@ -8768,7 +8846,7 @@ "symfony/web-link": "^4.4|^5.0|^6.0", "symfony/workflow": "^5.2|^6.0", "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.10|^3.0" + "twig/twig": "^2.10|^3.0.4" }, "suggest": { "ext-apcu": "For best performance of the system caches", @@ -8806,7 +8884,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v5.4.35" + "source": "https://github.com/symfony/framework-bundle/tree/v5.4.36" }, "funding": [ { @@ -8822,20 +8900,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:28:09+00:00" + "time": "2024-02-20T14:48:43+00:00" }, { "name": "symfony/http-client", - "version": "v5.4.35", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3" + "reference": "63d93fd99523b9608929a38172da3365a6c0821c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3", - "reference": "53e4cc088a5f3466dc77c9f121f17e8e02ecc9c3", + "url": "https://api.github.com/repos/symfony/http-client/zipball/63d93fd99523b9608929a38172da3365a6c0821c", + "reference": "63d93fd99523b9608929a38172da3365a6c0821c", "shasum": "" }, "require": { @@ -8897,7 +8975,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.35" + "source": "https://github.com/symfony/http-client/tree/v5.4.37" }, "funding": [ { @@ -8913,7 +8991,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T14:02:34+00:00" + "time": "2024-02-28T15:18:15+00:00" }, { "name": "symfony/http-foundation", @@ -8993,16 +9071,16 @@ }, { "name": "symfony/http-kernel", - "version": "v5.4.35", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "949bc7721c83fa9f81fc6c9697db0aa340c64f4d" + "reference": "4ef7ed872564852b3c6c15fecf492975a52cbff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/949bc7721c83fa9f81fc6c9697db0aa340c64f4d", - "reference": "949bc7721c83fa9f81fc6c9697db0aa340c64f4d", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4ef7ed872564852b3c6c15fecf492975a52cbff3", + "reference": "4ef7ed872564852b3c6c15fecf492975a52cbff3", "shasum": "" }, "require": { @@ -9085,7 +9163,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.4.35" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.37" }, "funding": [ { @@ -9101,20 +9179,20 @@ "type": "tidelift" } ], - "time": "2024-01-30T20:00:46+00:00" + "time": "2024-03-04T20:55:44+00:00" }, { "name": "symfony/mailer", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "664724b0fb4646dee30859d0ed9131a2d7633320" + "reference": "b57d722f2bf6e1dc08df9c86efbfdcaaba89693b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/664724b0fb4646dee30859d0ed9131a2d7633320", - "reference": "664724b0fb4646dee30859d0ed9131a2d7633320", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b57d722f2bf6e1dc08df9c86efbfdcaaba89693b", + "reference": "b57d722f2bf6e1dc08df9c86efbfdcaaba89693b", "shasum": "" }, "require": { @@ -9161,7 +9239,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.4.35" + "source": "https://github.com/symfony/mailer/tree/v5.4.36" }, "funding": [ { @@ -9177,7 +9255,7 @@ "type": "tidelift" } ], - "time": "2024-01-29T07:33:37+00:00" + "time": "2024-02-01T13:42:14+00:00" }, { "name": "symfony/mailgun-mailer", @@ -9247,16 +9325,16 @@ }, { "name": "symfony/messenger", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "3c1eda00d7e9879558397fe8c8cfaea24b0de4e0" + "reference": "2114101eac7d26a662c5fbc241d9694907bb7357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/3c1eda00d7e9879558397fe8c8cfaea24b0de4e0", - "reference": "3c1eda00d7e9879558397fe8c8cfaea24b0de4e0", + "url": "https://api.github.com/repos/symfony/messenger/zipball/2114101eac7d26a662c5fbc241d9694907bb7357", + "reference": "2114101eac7d26a662c5fbc241d9694907bb7357", "shasum": "" }, "require": { @@ -9317,7 +9395,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v5.4.35" + "source": "https://github.com/symfony/messenger/tree/v5.4.36" }, "funding": [ { @@ -9333,7 +9411,7 @@ "type": "tidelift" } ], - "time": "2024-01-30T11:13:29+00:00" + "time": "2024-02-23T16:13:23+00:00" }, { "name": "symfony/mime", @@ -9655,16 +9733,16 @@ }, { "name": "symfony/password-hasher", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "23b9782de5d06a7e61101558d3e887100fbf8f93" + "reference": "a0c08f9045230ef73d25617b2c0e0b56d8feb0a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/23b9782de5d06a7e61101558d3e887100fbf8f93", - "reference": "23b9782de5d06a7e61101558d3e887100fbf8f93", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/a0c08f9045230ef73d25617b2c0e0b56d8feb0a2", + "reference": "a0c08f9045230ef73d25617b2c0e0b56d8feb0a2", "shasum": "" }, "require": { @@ -9709,7 +9787,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.4.35" + "source": "https://github.com/symfony/password-hasher/tree/v5.4.36" }, "funding": [ { @@ -9725,20 +9803,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-10T16:59:05+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -9749,9 +9827,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9790,7 +9865,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -9806,20 +9881,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "e46b4da57951a16053cd751f63f4a24292788157" + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/e46b4da57951a16053cd751f63f4a24292788157", - "reference": "e46b4da57951a16053cd751f63f4a24292788157", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/07094a28851a49107f3ab4f9120ca2975a64b6e1", + "reference": "07094a28851a49107f3ab4f9120ca2975a64b6e1", "shasum": "" }, "require": { @@ -9830,9 +9905,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9877,7 +9949,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.29.0" }, "funding": [ { @@ -9893,20 +9965,20 @@ "type": "tidelift" } ], - "time": "2023-03-21T17:27:24+00:00" + "time": "2024-01-29T20:12:16+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", - "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/a287ed7475f85bf6f61890146edbc932c0fff919", + "reference": "a287ed7475f85bf6f61890146edbc932c0fff919", "shasum": "" }, "require": { @@ -9919,9 +9991,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -9964,7 +10033,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.29.0" }, "funding": [ { @@ -9980,20 +10049,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:30:37+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -10004,9 +10073,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10048,7 +10114,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -10064,20 +10130,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -10091,9 +10157,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10131,7 +10194,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -10147,20 +10210,20 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5" + "reference": "21bd091060673a1177ae842c0ef8fe30893114d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fe2f306d1d9d346a7fee353d0d5012e401e984b5", - "reference": "fe2f306d1d9d346a7fee353d0d5012e401e984b5", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2", + "reference": "21bd091060673a1177ae842c0ef8fe30893114d2", "shasum": "" }, "require": { @@ -10168,9 +10231,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10210,7 +10270,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0" }, "funding": [ { @@ -10226,20 +10286,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", - "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", "shasum": "" }, "require": { @@ -10247,9 +10307,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10293,7 +10350,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" }, "funding": [ { @@ -10309,20 +10366,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b" + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b", - "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", "shasum": "" }, "require": { @@ -10330,9 +10387,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -10372,7 +10426,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" }, "funding": [ { @@ -10388,20 +10442,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/process", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb" + "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/cbc28e34015ad50166fc2f9c8962d28d0fe861eb", - "reference": "cbc28e34015ad50166fc2f9c8962d28d0fe861eb", + "url": "https://api.github.com/repos/symfony/process/zipball/4fdf34004f149cc20b2f51d7d119aa500caad975", + "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975", "shasum": "" }, "require": { @@ -10434,7 +10488,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.35" + "source": "https://github.com/symfony/process/tree/v5.4.36" }, "funding": [ { @@ -10450,7 +10504,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-12T15:49:53+00:00" }, { "name": "symfony/property-access", @@ -10693,16 +10747,16 @@ }, { "name": "symfony/redis-messenger", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/redis-messenger.git", - "reference": "d00f1bbaefe83468c0afb3f6773258cefca13bb8" + "reference": "54b107003c5abc03cc5077c8847678b432b1e602" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/d00f1bbaefe83468c0afb3f6773258cefca13bb8", - "reference": "d00f1bbaefe83468c0afb3f6773258cefca13bb8", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/54b107003c5abc03cc5077c8847678b432b1e602", + "reference": "54b107003c5abc03cc5077c8847678b432b1e602", "shasum": "" }, "require": { @@ -10740,7 +10794,7 @@ "description": "Symfony Redis extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/redis-messenger/tree/v5.4.35" + "source": "https://github.com/symfony/redis-messenger/tree/v5.4.36" }, "funding": [ { @@ -10756,20 +10810,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-05T13:56:32+00:00" }, { "name": "symfony/routing", - "version": "v5.4.35", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "86c5a06a61ddaf17efa1403542e3d7146af96203" + "reference": "48ae43e443693ddb4e574f7c12f0d17ce287694e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/86c5a06a61ddaf17efa1403542e3d7146af96203", - "reference": "86c5a06a61ddaf17efa1403542e3d7146af96203", + "url": "https://api.github.com/repos/symfony/routing/zipball/48ae43e443693ddb4e574f7c12f0d17ce287694e", + "reference": "48ae43e443693ddb4e574f7c12f0d17ce287694e", "shasum": "" }, "require": { @@ -10830,7 +10884,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.35" + "source": "https://github.com/symfony/routing/tree/v5.4.37" }, "funding": [ { @@ -10846,7 +10900,7 @@ "type": "tidelift" } ], - "time": "2024-01-30T13:10:15+00:00" + "time": "2024-02-27T09:52:32+00:00" }, { "name": "symfony/runtime", @@ -10930,16 +10984,16 @@ }, { "name": "symfony/security-bundle", - "version": "v5.4.35", + "version": "v5.4.37", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "ed194715515a87d0f9c80b8696baf37ae18beb81" + "reference": "6773ef12fe2671a42f111e31f2c18af18e79c55c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/ed194715515a87d0f9c80b8696baf37ae18beb81", - "reference": "ed194715515a87d0f9c80b8696baf37ae18beb81", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6773ef12fe2671a42f111e31f2c18af18e79c55c", + "reference": "6773ef12fe2671a42f111e31f2c18af18e79c55c", "shasum": "" }, "require": { @@ -11013,7 +11067,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v5.4.35" + "source": "https://github.com/symfony/security-bundle/tree/v5.4.37" }, "funding": [ { @@ -11029,7 +11083,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-03-01T19:35:15+00:00" }, { "name": "symfony/security-core", @@ -11268,16 +11322,16 @@ }, { "name": "symfony/security-http", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "274a6aef49a0e1707bcb57217251885be749b6d8" + "reference": "87ee1ea2b86740fc6a0104f165bebbe0b08b66ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/274a6aef49a0e1707bcb57217251885be749b6d8", - "reference": "274a6aef49a0e1707bcb57217251885be749b6d8", + "url": "https://api.github.com/repos/symfony/security-http/zipball/87ee1ea2b86740fc6a0104f165bebbe0b08b66ba", + "reference": "87ee1ea2b86740fc6a0104f165bebbe0b08b66ba", "shasum": "" }, "require": { @@ -11334,7 +11388,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v5.4.35" + "source": "https://github.com/symfony/security-http/tree/v5.4.36" }, "funding": [ { @@ -11350,7 +11404,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-23T16:13:23+00:00" }, { "name": "symfony/sendinblue-mailer", @@ -11420,16 +11474,16 @@ }, { "name": "symfony/serializer", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "02acd86290077dab2f12ae91b3e9f141c079d84c" + "reference": "05137a513f4c5a5e56ffbcf53847a93284b49f67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/02acd86290077dab2f12ae91b3e9f141c079d84c", - "reference": "02acd86290077dab2f12ae91b3e9f141c079d84c", + "url": "https://api.github.com/repos/symfony/serializer/zipball/05137a513f4c5a5e56ffbcf53847a93284b49f67", + "reference": "05137a513f4c5a5e56ffbcf53847a93284b49f67", "shasum": "" }, "require": { @@ -11503,7 +11557,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v5.4.35" + "source": "https://github.com/symfony/serializer/tree/v5.4.36" }, "funding": [ { @@ -11519,7 +11573,7 @@ "type": "tidelift" } ], - "time": "2024-01-30T08:00:51+00:00" + "time": "2024-02-22T18:40:43+00:00" }, { "name": "symfony/stopwatch", @@ -11585,16 +11639,16 @@ }, { "name": "symfony/string", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2" + "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/c209c4d0559acce1c9a2067612cfb5d35756edc2", - "reference": "c209c4d0559acce1c9a2067612cfb5d35756edc2", + "url": "https://api.github.com/repos/symfony/string/zipball/4e232c83622bd8cd32b794216aa29d0d266d353b", + "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b", "shasum": "" }, "require": { @@ -11651,7 +11705,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.35" + "source": "https://github.com/symfony/string/tree/v5.4.36" }, "funding": [ { @@ -11667,20 +11721,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-01T08:49:30+00:00" }, { "name": "symfony/twig-bridge", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "e6ae362b7c4f1d6e99f61f59b0c93b9f027b4c73" + "reference": "14a73aa32c9769b823f7a6f6c018d7c576e49fe7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/e6ae362b7c4f1d6e99f61f59b0c93b9f027b4c73", - "reference": "e6ae362b7c4f1d6e99f61f59b0c93b9f027b4c73", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/14a73aa32c9769b823f7a6f6c018d7c576e49fe7", + "reference": "14a73aa32c9769b823f7a6f6c018d7c576e49fe7", "shasum": "" }, "require": { @@ -11772,7 +11826,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.4.35" + "source": "https://github.com/symfony/twig-bridge/tree/v5.4.36" }, "funding": [ { @@ -11788,20 +11842,20 @@ "type": "tidelift" } ], - "time": "2024-01-30T08:00:51+00:00" + "time": "2024-02-15T11:19:14+00:00" }, { "name": "symfony/twig-bundle", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "f59b91e23c7c790e71a187c3fa4aefdc5391d682" + "reference": "37a338733c456fc8cd056c2e0f20bae020cbec70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/f59b91e23c7c790e71a187c3fa4aefdc5391d682", - "reference": "f59b91e23c7c790e71a187c3fa4aefdc5391d682", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/37a338733c456fc8cd056c2e0f20bae020cbec70", + "reference": "37a338733c456fc8cd056c2e0f20bae020cbec70", "shasum": "" }, "require": { @@ -11862,7 +11916,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.4.35" + "source": "https://github.com/symfony/twig-bundle/tree/v5.4.36" }, "funding": [ { @@ -11878,20 +11932,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T13:51:25+00:00" + "time": "2024-02-15T11:19:14+00:00" }, { "name": "symfony/validator", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "4993e9b5b17e23e7ad9dc2e3b31412f5c4679385" + "reference": "e80028e0f7814a8824fc1f474f1566a7bddceec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/4993e9b5b17e23e7ad9dc2e3b31412f5c4679385", - "reference": "4993e9b5b17e23e7ad9dc2e3b31412f5c4679385", + "url": "https://api.github.com/repos/symfony/validator/zipball/e80028e0f7814a8824fc1f474f1566a7bddceec5", + "reference": "e80028e0f7814a8824fc1f474f1566a7bddceec5", "shasum": "" }, "require": { @@ -11974,7 +12028,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v5.4.35" + "source": "https://github.com/symfony/validator/tree/v5.4.36" }, "funding": [ { @@ -11990,20 +12044,20 @@ "type": "tidelift" } ], - "time": "2024-01-25T22:32:56+00:00" + "time": "2024-02-21T11:39:05+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "ce4685b30e47d94dfc990c5566285ff99ddf012b" + "reference": "2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ce4685b30e47d94dfc990c5566285ff99ddf012b", - "reference": "ce4685b30e47d94dfc990c5566285ff99ddf012b", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90", + "reference": "2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90", "shasum": "" }, "require": { @@ -12063,7 +12117,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.35" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.36" }, "funding": [ { @@ -12079,20 +12133,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:28:09+00:00" + "time": "2024-02-15T11:19:14+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8" + "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a8c12b5448a5ac685347f5eeb2abf6a571ec16b8", - "reference": "a8c12b5448a5ac685347f5eeb2abf6a571ec16b8", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/0bd342e24aef49fc82a21bd4eedd3e665d177e5b", + "reference": "0bd342e24aef49fc82a21bd4eedd3e665d177e5b", "shasum": "" }, "require": { @@ -12138,7 +12192,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.3" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.4" }, "funding": [ { @@ -12154,7 +12208,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-26T08:37:45+00:00" }, { "name": "symfony/web-link", @@ -12245,16 +12299,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v5.4.35", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "d71d64739a77ba23e7797d5ed3226796751df058" + "reference": "93df9846358093676fe0b029d0c4725f7935742f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/d71d64739a77ba23e7797d5ed3226796751df058", - "reference": "d71d64739a77ba23e7797d5ed3226796751df058", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/93df9846358093676fe0b029d0c4725f7935742f", + "reference": "93df9846358093676fe0b029d0c4725f7935742f", "shasum": "" }, "require": { @@ -12305,7 +12359,7 @@ "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.35" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.36" }, "funding": [ { @@ -12321,7 +12375,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:43:50+00:00" + "time": "2024-02-20T07:10:08+00:00" }, { "name": "symfony/yaml", @@ -12400,39 +12454,46 @@ }, { "name": "thecodingmachine/safe", - "version": "v1.3.3", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/thecodingmachine/safe.git", - "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc" + "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/a8ab0876305a4cdaef31b2350fcb9811b5608dbc", - "reference": "a8ab0876305a4cdaef31b2350fcb9811b5608dbc", + "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", + "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", "shasum": "" }, "require": { - "php": ">=7.2" + "php": "^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12", + "phpstan/phpstan": "^1.5", + "phpunit/phpunit": "^9.5", "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^0.12" + "thecodingmachine/phpstan-strict-rules": "^1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.1-dev" + "dev-master": "2.2.x-dev" } }, "autoload": { "files": [ "deprecated/apc.php", + "deprecated/array.php", + "deprecated/datetime.php", "deprecated/libevent.php", + "deprecated/misc.php", + "deprecated/password.php", "deprecated/mssql.php", "deprecated/stats.php", + "deprecated/strings.php", "lib/special_cases.php", + "deprecated/mysqli.php", "generated/apache.php", "generated/apcu.php", "generated/array.php", @@ -12453,6 +12514,7 @@ "generated/fpm.php", "generated/ftp.php", "generated/funchand.php", + "generated/gettext.php", "generated/gmp.php", "generated/gnupg.php", "generated/hash.php", @@ -12462,7 +12524,6 @@ "generated/image.php", "generated/imap.php", "generated/info.php", - "generated/ingres-ii.php", "generated/inotify.php", "generated/json.php", "generated/ldap.php", @@ -12471,20 +12532,14 @@ "generated/mailparse.php", "generated/mbstring.php", "generated/misc.php", - "generated/msql.php", "generated/mysql.php", - "generated/mysqli.php", - "generated/mysqlndMs.php", - "generated/mysqlndQc.php", "generated/network.php", "generated/oci8.php", "generated/opcache.php", "generated/openssl.php", "generated/outcontrol.php", - "generated/password.php", "generated/pcntl.php", "generated/pcre.php", - "generated/pdf.php", "generated/pgsql.php", "generated/posix.php", "generated/ps.php", @@ -12495,7 +12550,6 @@ "generated/sem.php", "generated/session.php", "generated/shmop.php", - "generated/simplexml.php", "generated/sockets.php", "generated/sodium.php", "generated/solr.php", @@ -12518,13 +12572,13 @@ "generated/zip.php", "generated/zlib.php" ], - "psr-4": { - "Safe\\": [ - "lib/", - "deprecated/", - "generated/" - ] - } + "classmap": [ + "lib/DateTime.php", + "lib/DateTimeImmutable.php", + "lib/Exceptions/", + "deprecated/Exceptions/", + "generated/Exceptions/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -12533,42 +12587,46 @@ "description": "PHP core functions that throw exceptions instead of returning FALSE on error", "support": { "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v1.3.3" + "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" }, - "time": "2020-10-28T17:51:34+00:00" + "time": "2023-04-05T11:54:14+00:00" }, { "name": "theofidry/alice-data-fixtures", - "version": "1.4.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/theofidry/AliceDataFixtures.git", - "reference": "bcfdf64bc940eb4a7b40b46d9ca5251e5692cc11" + "reference": "34e4751103f869da06163d91a9a7ace1b47d5d06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/AliceDataFixtures/zipball/bcfdf64bc940eb4a7b40b46d9ca5251e5692cc11", - "reference": "bcfdf64bc940eb4a7b40b46d9ca5251e5692cc11", + "url": "https://api.github.com/repos/theofidry/AliceDataFixtures/zipball/34e4751103f869da06163d91a9a7ace1b47d5d06", + "reference": "34e4751103f869da06163d91a9a7ace1b47d5d06", "shasum": "" }, "require": { - "nelmio/alice": "^3.5", - "php": "^7.3 | ^8.0", - "psr/log": "^1.0" + "nelmio/alice": "^3.10", + "php": "^8.2", + "psr/log": "^1 || ^2 || ^3", + "webmozart/assert": "^1.10" }, "conflict": { + "doctrine/dbal": "<3.0", "doctrine/orm": "<2.6.3", - "illuminate/database": "<5.5", + "doctrine/persistence": "<2.0", + "illuminate/database": "<8.12", "ocramius/proxy-manager": "<2.1", - "symfony/framework-bundle": "<3.4", + "symfony/framework-bundle": "<5.4 || >=6.0 <6.4", "zendframework/zend-code": "<3.3.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.1", - "phpspec/prophecy": "^1.6", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.3", - "symfony/phpunit-bridge": "^5.1.3" + "bamarni/composer-bin-plugin": "^1.4.1", + "doctrine/annotations": "^1.13", + "phpspec/prophecy": "^1.14.0", + "phpspec/prophecy-phpunit": "^2.0.1", + "phpunit/phpunit": "^9.5.10", + "symfony/phpunit-bridge": "^5.3.8 || ^6.4" }, "suggest": { "alcaeus/mongo-php-adapter": "To use Doctrine with the MongoDB flavour", @@ -12585,7 +12643,8 @@ "type": "library", "extra": { "bamarni-bin": { - "bin-links": false + "bin-links": false, + "forward-command": false }, "branch-alias": { "dev-master": "1.x-dev" @@ -12618,7 +12677,7 @@ ], "support": { "issues": "https://github.com/theofidry/AliceDataFixtures/issues", - "source": "https://github.com/theofidry/AliceDataFixtures/tree/1.4.0" + "source": "https://github.com/theofidry/AliceDataFixtures/tree/1.7.0" }, "funding": [ { @@ -12626,37 +12685,33 @@ "type": "github" } ], - "time": "2021-01-25T10:07:17+00:00" + "time": "2023-12-03T21:49:12+00:00" }, { "name": "twig/twig", - "version": "v3.4.3", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58" + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/c38fd6b0b7f370c198db91ffd02e23b517426b58", - "reference": "c38fd6b0b7f370c198db91ffd02e23b517426b58", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { - "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0" + "psr/container": "^1.0|^2.0", + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { "Twig\\": "src/" @@ -12690,7 +12745,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.4.3" + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" }, "funding": [ { @@ -12702,20 +12757,20 @@ "type": "tidelift" } ], - "time": "2022-09-28T08:42:51+00:00" + "time": "2023-11-21T18:54:41+00:00" }, { "name": "web-token/jwt-framework", - "version": "3.2.9", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/web-token/jwt-framework.git", - "reference": "679ab72706fedc9ab72794ccc13133b5f7b58250" + "reference": "1dbef13afb91a576d5ce431e5f9570183b19c0dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/679ab72706fedc9ab72794ccc13133b5f7b58250", - "reference": "679ab72706fedc9ab72794ccc13133b5f7b58250", + "url": "https://api.github.com/repos/web-token/jwt-framework/zipball/1dbef13afb91a576d5ce431e5f9570183b19c0dd", + "reference": "1dbef13afb91a576d5ce431e5f9570183b19c0dd", "shasum": "" }, "require": { @@ -12725,6 +12780,7 @@ "ext-openssl": "*", "ext-sodium": "*", "paragonie/constant_time_encoding": "^2.6", + "paragonie/sodium_compat": "^1.20", "php": ">=8.1", "psr/clock": "^1.0", "psr/event-dispatcher": "^1.0", @@ -12736,6 +12792,7 @@ "symfony/console": "^5.4|^6.0|^7.0", "symfony/dependency-injection": "^5.4|^6.0|^7.0", "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", "symfony/http-kernel": "^5.4|^6.0|^7.0", "symfony/polyfill-mbstring": "^1.12" }, @@ -12758,7 +12815,9 @@ "web-token/jwt-encryption-algorithm-experimental": "self.version", "web-token/jwt-encryption-algorithm-pbes2": "self.version", "web-token/jwt-encryption-algorithm-rsa": "self.version", + "web-token/jwt-experimental": "self.version", "web-token/jwt-key-mgmt": "self.version", + "web-token/jwt-library": "self.version", "web-token/jwt-nested-token": "self.version", "web-token/jwt-signature": "self.version", "web-token/jwt-signature-algorithm-ecdsa": "self.version", @@ -12767,18 +12826,18 @@ "web-token/jwt-signature-algorithm-hmac": "self.version", "web-token/jwt-signature-algorithm-none": "self.version", "web-token/jwt-signature-algorithm-rsa": "self.version", + "web-token/jwt-signature-pack": "self.version", "web-token/jwt-util-ecc": "self.version", "web-token/signature-pack": "self.version" }, "require-dev": { "bjeavons/zxcvbn-php": "^1.3", - "blackfire/php-sdk": "^2.0", "ekino/phpstan-banned-code": "^1.0", "ext-curl": "*", "ext-gmp": "*", "infection/infection": "^0.27", "matthiasnoback/symfony-config-test": "^5.0", - "nyholm/psr7": "^1.5", + "nyholm/psr7": "^1.8", "php-http/mock-client": "^1.5", "php-parallel-lint/php-parallel-lint": "^1.3", "phpbench/phpbench": "^1.2", @@ -12789,12 +12848,11 @@ "phpstan/phpstan-strict-rules": "^1.4", "phpunit/phpunit": "^10.1", "qossmic/deptrac-shim": "^1.0", - "rector/rector": "^0.18", + "rector/rector": "^1.0", "roave/security-advisories": "dev-latest", "symfony/browser-kit": "^6.1|^7.0", "symfony/finder": "^6.1|^7.0", "symfony/framework-bundle": "^6.1|^7.0", - "symfony/http-client": "^6.1|^7.0", "symfony/phpunit-bridge": "^6.1|^7.0", "symfony/serializer": "^6.1|^7.0", "symfony/var-dumper": "^6.1|^7.0", @@ -12803,10 +12861,10 @@ }, "suggest": { "bjeavons/zxcvbn-php": "Adds key quality check for oct keys.", - "ext-sodium": "Sodium is required for OKP key creation, EdDSA signature algorithm and ECDH-ES key encryption with OKP keys", "php-http/httplug": "To enable JKU/X5U support.", "php-http/httplug-bundle": "To enable JKU/X5U support.", "php-http/message-factory": "To enable JKU/X5U support.", + "spomky-labs/aes-key-wrap": "To enable AES Key Wrap algorithm.", "symfony/serializer": "Use the Symfony serializer to serialize/unserialize JWS and JWE tokens.", "symfony/var-dumper": "Used to show data on the debug toolbar." }, @@ -12814,56 +12872,9 @@ "autoload": { "psr-4": { "Jose\\": "src/", - "Jose\\Component\\Core\\": "src/Component/Core/", - "Jose\\Component\\Checker\\": "src/Component/Checker/", - "Jose\\Component\\Console\\": "src/Component/Console/", - "Jose\\Component\\Signature\\": "src/Component/Signature/", - "Jose\\Bundle\\JoseFramework\\": "src/Bundle/JoseFramework/", - "Jose\\Component\\Encryption\\": "src/Component/Encryption/", - "Jose\\Component\\NestedToken\\": "src/Component/NestedToken/", - "Jose\\Component\\Core\\Util\\Ecc\\": [ - "src/Ecc", - "src/Ecc/" - ], - "Jose\\Component\\KeyManagement\\": "src/Component/KeyManagement/", - "Jose\\Component\\Signature\\Algorithm\\": [ - "src/SignatureAlgorithm/ECDSA", - "src/SignatureAlgorithm/ECDSA/", - "src/SignatureAlgorithm/EdDSA", - "src/SignatureAlgorithm/EdDSA/", - "src/SignatureAlgorithm/Experimental", - "src/SignatureAlgorithm/Experimental/", - "src/SignatureAlgorithm/HMAC", - "src/SignatureAlgorithm/HMAC/", - "src/SignatureAlgorithm/None", - "src/SignatureAlgorithm/None/", - "src/SignatureAlgorithm/RSA", - "src/SignatureAlgorithm/RSA/" - ], - "Jose\\Component\\Encryption\\Algorithm\\": [ - "src/EncryptionAlgorithm/Experimental", - "src/EncryptionAlgorithm/Experimental/" - ], - "Jose\\Component\\Encryption\\Algorithm\\KeyEncryption\\": [ - "src/EncryptionAlgorithm/KeyEncryption/AESGCMKW", - "src/EncryptionAlgorithm/KeyEncryption/AESGCMKW/", - "src/EncryptionAlgorithm/KeyEncryption/AESKW", - "src/EncryptionAlgorithm/KeyEncryption/AESKW/", - "src/EncryptionAlgorithm/KeyEncryption/Direct", - "src/EncryptionAlgorithm/KeyEncryption/Direct/", - "src/EncryptionAlgorithm/KeyEncryption/ECDHES", - "src/EncryptionAlgorithm/KeyEncryption/ECDHES/", - "src/EncryptionAlgorithm/KeyEncryption/PBES2", - "src/EncryptionAlgorithm/KeyEncryption/PBES2/", - "src/EncryptionAlgorithm/KeyEncryption/RSA", - "src/EncryptionAlgorithm/KeyEncryption/RSA/" - ], - "Jose\\Component\\Encryption\\Algorithm\\ContentEncryption\\": [ - "src/EncryptionAlgorithm/ContentEncryption/AESCBC", - "src/EncryptionAlgorithm/ContentEncryption/AESCBC/", - "src/EncryptionAlgorithm/ContentEncryption/AESGCM", - "src/EncryptionAlgorithm/ContentEncryption/AESGCM/" - ] + "Jose\\Component\\": "src/Library/", + "Jose\\Experimental\\": "src/Experimental/", + "Jose\\Bundle\\JoseFramework\\": "src/Bundle/" } }, "notification-url": "https://packagist.org/downloads/", @@ -12902,7 +12913,7 @@ ], "support": { "issues": "https://github.com/web-token/jwt-framework/issues", - "source": "https://github.com/web-token/jwt-framework/tree/3.2.9" + "source": "https://github.com/web-token/jwt-framework/tree/3.3.1" }, "funding": [ { @@ -12914,25 +12925,25 @@ "type": "patreon" } ], - "time": "2024-01-04T15:42:08+00:00" + "time": "2024-02-28T09:04:35+00:00" }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -12968,20 +12979,24 @@ "check", "validate" ], - "time": "2021-03-09T10:59:23+00:00" + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" }, { "name": "willdurand/negotiation", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/willdurand/Negotiation.git", - "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c" + "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/04e14f38d4edfcc974114a07d2777d90c98f3d9c", - "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", + "reference": "68e9ea0553ef6e2ee8db5c1d98829f111e623ec2", "shasum": "" }, "require": { @@ -13020,31 +13035,37 @@ "header", "negotiation" ], - "time": "2020-09-25T08:01:41+00:00" + "support": { + "issues": "https://github.com/willdurand/Negotiation/issues", + "source": "https://github.com/willdurand/Negotiation/tree/3.1.0" + }, + "time": "2022-01-30T20:08:53+00:00" } ], "packages-dev": [ { "name": "nikic/php-parser", - "version": "v4.12.0", + "version": "v5.0.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/139676794dc1e9231bf7bcd123cfc0c99182cb13", + "reference": "139676794dc1e9231bf7bcd123cfc0c99182cb13", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -13052,7 +13073,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -13076,26 +13097,27 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.2" }, - "time": "2021-07-21T10:44:31+00:00" + "time": "2024-03-05T20:51:40+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -13136,9 +13158,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -13191,93 +13219,25 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpspec/prophecy", - "version": "v1.17.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/15873c65b207b07765dbc3c95d20fdf4a320cbe2", - "reference": "15873c65b207b07765dbc3c95d20fdf4a320cbe2", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2 || ^2.0", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.17.0" - }, - "time": "2023-02-02T15:41:36+00:00" - }, { "name": "phpunit/php-code-coverage", - "version": "9.2.7", + "version": "9.2.31", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218" + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d4c798ed8d51506800b441f7a13ecb0f76f12218", - "reference": "d4c798ed8d51506800b441f7a13ecb0f76f12218", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.12.0", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -13292,8 +13252,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -13326,7 +13286,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.7" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" }, "funding": [ { @@ -13334,7 +13295,7 @@ "type": "github" } ], - "time": "2021-09-17T05:39:03+00:00" + "time": "2024-03-02T06:37:42+00:00" }, { "name": "phpunit/php-file-iterator", @@ -13579,20 +13540,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.14", + "version": "9.6.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "1883687169c017d6ae37c58883ca3994cfc34189" + "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1883687169c017d6ae37c58883ca3994cfc34189", - "reference": "1883687169c017d6ae37c58883ca3994cfc34189", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1a156980d78a6666721b7e8e8502fe210b587fcd", + "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -13603,31 +13564,26 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-code-coverage": "^9.2.28", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -13635,7 +13591,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -13666,7 +13622,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.14" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.17" }, "funding": [ { @@ -13676,22 +13633,26 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-02-18T12:54:07+00:00" + "time": "2024-02-23T13:14:51+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", "shasum": "" }, "require": { @@ -13726,7 +13687,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" }, "funding": [ { @@ -13734,7 +13695,7 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", @@ -13849,20 +13810,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -13894,7 +13855,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -13902,20 +13863,20 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -13957,7 +13918,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -13965,20 +13926,20 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", "shasum": "" }, "require": { @@ -14021,7 +13982,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" }, "funding": [ { @@ -14029,24 +13990,24 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2024-03-02T06:35:11+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -14078,7 +14039,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -14086,7 +14047,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -14253,32 +14214,33 @@ "type": "github" } ], + "abandoned": true, "time": "2020-09-28T06:45:17+00:00" }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -14301,7 +14263,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -14309,7 +14271,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -14579,16 +14541,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.3", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485" + "reference": "16ed5bdfd18e14fc7de347c8688e8ac479284222" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d49b4f6dc4690cf2c194311bb498abf0cf4f7485", - "reference": "d49b4f6dc4690cf2c194311bb498abf0cf4f7485", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/16ed5bdfd18e14fc7de347c8688e8ac479284222", + "reference": "16ed5bdfd18e14fc7de347c8688e8ac479284222", "shasum": "" }, "require": { @@ -14640,7 +14602,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.3" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.4" }, "funding": [ { @@ -14656,20 +14618,20 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-08T14:08:19+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -14698,7 +14660,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -14706,15 +14668,12 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], "minimum-stability": "dev", - "stability-flags": { - "common-gateway/woo-bundle": 20, - "commongateway/corebundle": 20 - }, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { From 6b89d093b474f8081346fc0c430e4ddf6206ea1a Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Thu, 14 Mar 2024 16:32:52 +0100 Subject: [PATCH 14/15] Reset sessionDataProcessor. require stable instead of dev --- api/composer.json | 2 +- api/src/Controller/LoginController.php | 4 +- api/src/Logger/SessionDataProcessor.php | 187 +++++++++++++++++++++--- 3 files changed, 173 insertions(+), 20 deletions(-) diff --git a/api/composer.json b/api/composer.json index fd8c5bc0e..2ed21942b 100644 --- a/api/composer.json +++ b/api/composer.json @@ -1,7 +1,7 @@ { "type": "project", "license": "proprietary", - "minimum-stability": "dev", + "minimum-stability": "stable", "prefer-stable": true, "require": { "php": "^7.4.0 || ^8.1.0 || ^8.2.0", diff --git a/api/src/Controller/LoginController.php b/api/src/Controller/LoginController.php index 25ab685c7..e88dd1b7c 100644 --- a/api/src/Controller/LoginController.php +++ b/api/src/Controller/LoginController.php @@ -48,8 +48,8 @@ public function MeAction(Request $request) 'last_name' => $this->getUser()->getLastName(), 'name' => $this->getUser()->getName(), 'email' => $this->getUser()->getEmail(), - 'person' => $userService->getPersonForUser($this->getUser()), // Get person ObjectEntity (->Entity with function = person) by id - 'organization' => $userService->getOrganizationForUser($this->getUser()), // Get organization ObjectEntity (->Entity with function = organization) by id + 'person' => $this->getUser()->getPerson(), // Get person ObjectEntity (->Entity with function = person) by id + 'organization' => $this->getUser()->getOrganization(), // Get organization ObjectEntity (->Entity with function = organization) by id ]; $result = json_encode($result); } else { diff --git a/api/src/Logger/SessionDataProcessor.php b/api/src/Logger/SessionDataProcessor.php index ae9014c48..4ce307ff1 100644 --- a/api/src/Logger/SessionDataProcessor.php +++ b/api/src/Logger/SessionDataProcessor.php @@ -2,6 +2,10 @@ namespace App\Logger; +use App\Event\ActionEvent; +use Doctrine\ORM\EntityManagerInterface; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\HttpFoundation\Exception\JsonException; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\SessionInterface; @@ -10,30 +14,179 @@ class SessionDataProcessor private SessionInterface $session; private RequestStack $requestStack; - public function __construct(SessionInterface $session, RequestStack $requestStack) + /** + * @var EventDispatcherInterface The event dispatcher. + */ + private EventDispatcherInterface $eventDispatcher; + + /** + * @var EntityManagerInterface The entity manager. + */ + private EntityManagerInterface $entityManager; + + /** + * @param SessionInterface $session + * @param RequestStack $requestStack + * @param EventDispatcherInterface $eventDispatcher + * @param EntityManagerInterface $entityManager + */ + public function __construct( + SessionInterface $session, + RequestStack $requestStack, + EventDispatcherInterface $eventDispatcher, + EntityManagerInterface $entityManager + ) { $this->session = $session; $this->requestStack = $requestStack; + $this->eventDispatcher = $eventDispatcher; + $this->entityManager = $entityManager; } - public function __invoke(array $record): array + /** + * Update the context with data from the session and the request stack. + * + * @param array $record The log record to update the context for. + * + * @return array The updated context. + */ + public function updateContext(array $record): array + { + $context = $record['context']; + + $context['session'] = $this->session->getId(); + $context['process'] = $this->session->has('process') === true ? $this->session->get('process') : ''; + $context['endpoint'] = $this->session->has('endpoint') === true ? $this->session->get('endpoint') : ''; + $context['schema'] = $this->session->has('schema') === true ? $this->session->get('schema') : ''; + $context['object'] = $this->session->has('object') === true ? $this->session->get('object') : ''; + $context['cronjob'] = $this->session->has('cronjob') === true ? $this->session->get('cronjob') : ''; + $context['action'] = $this->session->has('action') === true ? $this->session->get('action') : ''; + $context['mapping'] = $this->session->has('mapping') === true ? $this->session->get('mapping') : ''; + $context['source'] = $this->session->has('source') === true ? $this->session->get('source') : ''; + + // Add more to context if we are dealing with a log containing sourceCall data. + if (isset($context['sourceCall']) === true) { + $context = $this->updateSourceCallContext($context, $record['level_name']); + } + + $context['user'] = $this->session->has('user') === true ? $this->session->get('user') : ''; + $context['organization'] = $this->session->has('organization') === true ? $this->session->get('organization') : ''; + $context['application'] = $this->session->has('application') === true ? $this->session->get('application') : ''; + $context['host'] = $this->requestStack->getMainRequest() !== null ? $this->requestStack->getMainRequest()->getHost() : ''; + $context['ip'] = $this->requestStack->getMainRequest() !== null ? $this->requestStack->getMainRequest()->getClientIp() : ''; + $context['method'] = $this->requestStack->getMainRequest() !== null ? $this->requestStack->getMainRequest()->getMethod() : ''; + + // Add more to context for higher level logs. + if (in_array($record['level_name'], ['ERROR', 'CRITICAL', 'ALERT', 'EMERGENCY']) === true) { + $context = $this->addErrorContext($context, $record['level_name']); + } + + return $context; + } + + /** + * Update the context for Source call logs. + * + * @param array $context The log context we are updating. + * @param string $levelName The level name of the log record we are updating the context for. + * + * @return array The updated context. + */ + private function updateSourceCallContext(array $context, string $levelName): array + { + if (in_array($levelName, ['ERROR', 'CRITICAL', 'ALERT', 'EMERGENCY']) === true) { + $maxStrLength = ($context['sourceCall']['maxCharCountErrorBody'] ?? 2000); + unset($context['sourceCall']['maxCharCountBody']); + } else { + $maxStrLength = ($context['sourceCall']['maxCharCountBody'] ?? 500); + unset($context['sourceCall']['maxCharCountErrorBody']); + } + + if (isset($context['sourceCall']['callQuery']) === true) { + $context['sourceCall']['callQuery'] = json_encode($context['sourceCall']['callQuery']); + if ($context['sourceCall']['callQuery'] === "[]") { + $context['sourceCall']['callQuery'] = ''; + } + } + + if (isset($context['sourceCall']['callBody']) === true && strlen($context['sourceCall']['callBody']) > $maxStrLength) { + $context['sourceCall']['callBody'] = substr($context['sourceCall']['callBody'], 0, $maxStrLength).'...'; + } + + if (isset($context['sourceCall']['responseBody']) === true && strlen($context['sourceCall']['responseBody']) > $maxStrLength) { + $context['sourceCall']['responseBody'] = substr($context['sourceCall']['responseBody'], 0, $maxStrLength).'...'; + } + + return $context; + } + + /** + * Update the context with data from the session and the request stack. For log records with level ERROR or higher. + * See: https://github.com/Seldaek/monolog/blob/main/doc/01-usage.md for all possible log levels. + * + * @param array $context The log context we are updating. + * @param string $levelName The level name of the log record we are updating the context for. + * + * @return array The updated context. + */ + private function addErrorContext(array $context, string $levelName): array + { + $context['pathRaw'] = $this->requestStack->getMainRequest() !== null ? $this->requestStack->getMainRequest()->getPathInfo() : ''; + $context['querystring'] = $this->requestStack->getMainRequest() !== null ? $this->requestStack->getMainRequest()->getQueryString() : ''; + $context['mongoDBFilter'] = $this->session->has('mongoDBFilter') === true ? json_encode($this->session->get('mongoDBFilter')) : ''; + $context['contentType'] = $this->requestStack->getMainRequest() !== null ? $this->requestStack->getMainRequest()->getContentType() : ''; + + // Do not log entire body for normal errors, only critical and higher. + if ($this->requestStack->getMainRequest() !== null && $levelName !== 'ERROR') { + try { + $context['body'] = $this->requestStack->getMainRequest()->toArray(); + } catch (JsonException $exception) { + $context['body'] = ''; + } + $context['crude_body'] = $this->requestStack->getMainRequest() ? $this->requestStack->getMainRequest()->getContent() : ''; + } + + return $context; + } + + /** + * Dispatches a log create action. + * + * @param array $record The log record that is created. + * + * @return array The resulting log record after the action. + */ + public function dispatchLogCreateAction(array $record): array { - $record['context']['session'] = $this->session->getId(); - $record['context']['process'] = $this->session->has('process') ? $this->session->get('process') : ''; - $record['context']['endpoint'] = $this->session->has('endpoint') ? $this->session->get('endpoint') : ''; - $record['context']['schema'] = $this->session->has('schema') ? $this->session->get('schema') : ''; - $record['context']['object'] = $this->session->has('object') === true ? $this->session->get('object') : ''; - $record['context']['cronjob'] = $this->session->has('cronjob') ? $this->session->get('cronjob') : ''; - $record['context']['action'] = $this->session->has('cronjob') ? $this->session->get('action') : ''; - $record['context']['mapping'] = $this->session->has('mapping') ? $this->session->get('mapping') : ''; - $record['context']['source'] = $this->session->has('source') ? $this->session->get('source') : ''; - $record['context']['plugin'] = isset($record['data']['plugin']) === true ? $record['data']['plugin'] : ''; - $record['context']['user'] = $this->session->has('user') ? $this->session->get('user') : ''; - $record['context']['organization'] = $this->session->has('organization') ? $this->session->get('organization') : ''; - $record['context']['application'] = $this->session->has('application') ? $this->session->get('application') : ''; - $record['context']['host'] = $this->requestStack->getMainRequest() ? $this->requestStack->getMainRequest()->getHost() : ''; - $record['context']['ip'] = $this->requestStack->getMainRequest() ? $this->requestStack->getMainRequest()->getClientIp() : ''; + if ($this->entityManager->getConnection()->isConnected() === true + && in_array( + $this->entityManager->getConnection()->getDatabase(), + $this->entityManager->getConnection()->getSchemaManager()->listDatabases() + ) === true + && $this->entityManager->getConnection()->getSchemaManager()->tablesExist('action') === true + && in_array($record['level_name'], ['ERROR', 'CRITICAL', 'ALERT', 'EMERGENCY']) === true + ){ + $event = new ActionEvent('commongateway.action.event', $record, 'commongateway.log.create'); + + $this->eventDispatcher->dispatch($event, 'commongateway.action.event'); + + $record = $event->getData(); + } return $record; } + + /** + * Updates the log record with data from the session, request and from actions. + * + * @param array $record The log record. + * + * @return array The updated log record. + */ + + public function __invoke(array $record): array + { + $record['context'] = $this->updateContext($record); + return $this->dispatchLogCreateAction($record); + } } From aebe05120c4a0f1da742f77417e534f10c67f618 Mon Sep 17 00:00:00 2001 From: Robert Zondervan Date: Thu, 14 Mar 2024 16:47:09 +0100 Subject: [PATCH 15/15] Remove bundles from bundles.php --- api/config/bundles.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/api/config/bundles.php b/api/config/bundles.php index d17ef005c..d029c6f9a 100644 --- a/api/config/bundles.php +++ b/api/config/bundles.php @@ -8,10 +8,7 @@ Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], ApiPlatform\Core\Bridge\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], - Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], - Knp\Bundle\MarkdownBundle\KnpMarkdownBundle::class => ['all' => true], Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], - Conduction\CommonGroundBundle\CommonGroundBundle::class => ['all' => true], Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle::class => ['all' => true], Fidry\AliceDataFixtures\Bridge\Symfony\FidryAliceDataFixturesBundle::class => ['all' => true], Hautelook\AliceBundle\HautelookAliceBundle::class => ['all' => true],