diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php deleted file mode 100644 index bb744c831..000000000 --- a/.php-cs-fixer.dist.php +++ /dev/null @@ -1,23 +0,0 @@ -in( - [ - __DIR__ . '/apps/backoffice/backend/src', - __DIR__ . '/apps/backoffice/frontend/src', - __DIR__ . '/apps/mooc/backend/src', - __DIR__ . '/apps/mooc/frontend/src', - __DIR__ . '/src', - __DIR__ . '/tests', - ] -); - -$config = new PhpCsFixer\Config(); - -return $config->setRules( - [ - '@PSR12' => true, - 'strict_param' => true, - 'modernize_strpos' => true, - 'array_syntax' => ['syntax' => 'short'], - ] -)->setFinder($finder); diff --git a/Dockerfile b/Dockerfile index 5e677d79f..e5dd7520c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,31 +1,19 @@ -FROM php:8.1.6-fpm-alpine +FROM php:8.2-fpm-alpine WORKDIR /app -RUN wget https://github.com/FriendsOfPHP/pickle/releases/download/v0.7.9/pickle.phar \ - && mv pickle.phar /usr/local/bin/pickle \ - && chmod +x /usr/local/bin/pickle - RUN apk --update upgrade \ - && apk add --no-cache autoconf automake make gcc g++ bash icu-dev libzip-dev rabbitmq-c rabbitmq-c-dev \ - && docker-php-ext-install -j$(nproc) \ + && apk add --no-cache autoconf automake make gcc g++ bash icu-dev libzip-dev rabbitmq-c rabbitmq-c-dev linux-headers + +RUN pecl install apcu-5.1.22 && pecl install amqp-2.1.0 && pecl install xdebug-3.2.2 + +RUN docker-php-ext-install -j$(nproc) \ bcmath \ opcache \ intl \ zip \ pdo_mysql -RUN pickle install apcu@5.1.21 - -ADD etc/infrastructure/php/extensions/rabbitmq.sh /root/install-rabbitmq.sh -ADD etc/infrastructure/php/extensions/xdebug.sh /root/install-xdebug.sh -RUN apk add git -RUN sh /root/install-rabbitmq.sh -RUN sh /root/install-xdebug.sh - -RUN docker-php-ext-enable \ - amqp \ - apcu \ - opcache +RUN docker-php-ext-enable amqp apcu opcache RUN curl -sS https://get.symfony.com/cli/installer | bash -s - --install-dir /usr/local/bin diff --git a/Makefile b/Makefile index ca2150c78..a3ea006ee 100644 --- a/Makefile +++ b/Makefile @@ -49,7 +49,7 @@ static-analysis: composer-env-file .PHONY: lint lint: - docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/php-cs-fixer fix --config .php-cs-fixer.dist.php --allow-risky=yes --dry-run + docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/ecs check .PHONY: run-tests run-tests: composer-env-file diff --git a/README.md b/README.md index dd94d40cc..2af641e94 100644 --- a/README.md +++ b/README.md @@ -63,8 +63,8 @@ some Symfony and Laravel implementations. ### ⛱️ Bounded Contexts -* [Mooc](src/Mooc): Place to look in if you wanna see some code 🙂. Massive Open Online Courses public platform with users, videos, notifications, and so on. -* [Backoffice](src/Backoffice): Here you'll find the use cases needed by the Customer Support department in order to manage users, courses, videos, and so on. +- [Mooc](src/Mooc): Place to look in if you wanna see some code 🙂. Massive Open Online Courses public platform with users, videos, notifications, and so on. +- [Backoffice](src/Backoffice): Here you'll find the use cases needed by the Customer Support department in order to manage users, courses, videos, and so on. ### 🎯 Hexagonal Architecture @@ -106,6 +106,7 @@ src ``` #### Repository pattern + Our repositories try to be as simple as possible usually only containing 2 methods `search` and `save`. If we need some query with more filters we use the `Specification` pattern also known as `Criteria` pattern. So we add a `searchByCriteria` method. @@ -114,33 +115,46 @@ You can see an example [here](src/Mooc/Courses/Domain/CourseRepository.php) and its implementation [here](src/Mooc/Courses/Infrastructure/Persistence/DoctrineCourseRepository.php). ### Aggregates + You can see an example of an aggregate [here](src/Mooc/Courses/Domain/Course.php). All aggregates should extend the [AggregateRoot](src/Shared/Domain/Aggregate/AggregateRoot.php). ### Command Bus + There is 1 implementations of the [command bus](src/Shared/Domain/Bus/Command/CommandBus.php). -1. [Sync](src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php) using the Symfony Message Bus +1. [Sync](src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php) using the Symfony Message Bus. + ### Query Bus + The [Query Bus](src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php) uses the Symfony Message Bus. ### Event Bus + The [Event Bus](src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php) uses the Symfony Message Bus. The [MySql Bus](src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php) uses a MySql+Pulling as a bus. The [RabbitMQ Bus](src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php) uses RabbitMQ C extension. ## 📱 Monitoring + Every time a domain event is published it's exported to Prometheus. You can access to the Prometheus panel [here](http://localhost:9999/). ## 🤔 Contributing + There are some things missing (add swagger, improve documentation...), feel free to add this if you want! If you want some guidelines feel free to contact us :) ## 🤩 Extra + This code was shown in the [From framework coupled code to #microservices through #DDD](http://codely.tv/screencasts/codigo-acoplado-framework-microservicios-ddd) talk and doubts where answered in the [DDD y CQRS: Preguntas Frecuentes](http://codely.tv/screencasts/ddd-cqrs-preguntas-frecuentes/) video. 🎥 Used in the CodelyTV Pro courses: -* [🇪🇸 DDD in PHP](https://pro.codely.tv/library/ddd-en-php/about/) -* [🇪🇸 Arquitectura Hexagonal](https://pro.codely.tv/library/arquitectura-hexagonal/66748/about/) -* [🇪🇸 CQRS: Command Query Responsibility Segregation](https://pro.codely.tv/library/cqrs-command-query-responsibility-segregation-3719e4aa/62554/about/) -* [🇪🇸 Comunicación entre microservicios: Event-Driven Architecture](https://pro.codely.tv/library/comunicacion-entre-microservicios-event-driven-architecture/74823/about/) + +- [🇪🇸 DDD in PHP](https://pro.codely.tv/library/ddd-en-php/about/) +- [🇪🇸 Arquitectura Hexagonal](https://pro.codely.tv/library/arquitectura-hexagonal/66748/about/) +- [🇪🇸 CQRS: Command Query Responsibility Segregation](https://pro.codely.tv/library/cqrs-command-query-responsibility-segregation-3719e4aa/62554/about/) +- [🇪🇸 Comunicación entre microservicios: Event-Driven Architecture](https://pro.codely.tv/library/comunicacion-entre-microservicios-event-driven-architecture/74823/about/) + +## 🌐 remember to visit our courses + +- [Courses codely](https://codely.com/cursos) diff --git a/apps/backoffice/backend/config/bundles.php b/apps/backoffice/backend/config/bundles.php index 7de452252..8455bba43 100644 --- a/apps/backoffice/backend/config/bundles.php +++ b/apps/backoffice/backend/config/bundles.php @@ -1,7 +1,9 @@ ['all' => true], + Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle::class => ['test' => true], // WouterJ\EloquentBundle\WouterJEloquentBundle::class => ['test' => true] ]; diff --git a/apps/backoffice/backend/public/index.php b/apps/backoffice/backend/public/index.php index 8c109ee2d..977a86d4b 100644 --- a/apps/backoffice/backend/public/index.php +++ b/apps/backoffice/backend/public/index.php @@ -1,5 +1,7 @@ handle($request); $response->send(); $kernel->terminate($request, $response); diff --git a/apps/backoffice/backend/src/BackofficeBackendKernel.php b/apps/backoffice/backend/src/BackofficeBackendKernel.php index 25c8aa935..9e25fc2cc 100644 --- a/apps/backoffice/backend/src/BackofficeBackendKernel.php +++ b/apps/backoffice/backend/src/BackofficeBackendKernel.php @@ -9,9 +9,10 @@ use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpKernel\Kernel; + use function dirname; -final class BackofficeBackendKernel extends Kernel +class BackofficeBackendKernel extends Kernel { use MicroKernelTrait; diff --git a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php index 7b1570dbb..545846fc5 100644 --- a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php +++ b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php @@ -10,37 +10,36 @@ use CodelyTv\Shared\Domain\Bus\Query\QueryBus; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; + use function Lambdish\Phunctional\map; -final class CoursesGetController +final readonly class CoursesGetController { - public function __construct(private QueryBus $queryBus) - { - } + public function __construct(private QueryBus $queryBus) {} public function __invoke(Request $request): JsonResponse { $orderBy = $request->query->get('order_by'); $order = $request->query->get('order'); - $limit = $request->query->get('limit'); + $limit = $request->query->get('limit'); $offset = $request->query->get('offset'); /** @var BackofficeCoursesResponse $response */ $response = $this->queryBus->ask( new SearchBackofficeCoursesByCriteriaQuery( (array) $request->query->get('filters'), - null === $orderBy ? null : (string) $orderBy, - null === $order ? null : (string) $order, - null === $limit ? null : (int) $limit, - null === $offset ? null : (int) $offset + $orderBy === null ? null : (string) $orderBy, + $order === null ? null : (string) $order, + $limit === null ? null : (int) $limit, + $offset === null ? null : (int) $offset ) ); return new JsonResponse( map( fn (BackofficeCourseResponse $course) => [ - 'id' => $course->id(), - 'name' => $course->name(), + 'id' => $course->id(), + 'name' => $course->name(), 'duration' => $course->duration(), ], $response->courses() diff --git a/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php b/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php index 6326b58fb..21a639d9f 100644 --- a/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php +++ b/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php @@ -9,16 +9,14 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -final class MetricsController +final readonly class MetricsController { - public function __construct(private PrometheusMonitor $monitor) - { - } + public function __construct(private PrometheusMonitor $monitor) {} public function __invoke(Request $request): Response { $renderer = new RenderTextFormat(); - $result = $renderer->render($this->monitor->registry()->getMetricFamilySamples()); + $result = $renderer->render($this->monitor->registry()->getMetricFamilySamples()); return new Response($result, 200, ['Content-Type' => RenderTextFormat::MIME_TYPE]); } diff --git a/apps/backoffice/frontend/config/bundles.php b/apps/backoffice/frontend/config/bundles.php index c44a868b7..0a87a7689 100644 --- a/apps/backoffice/frontend/config/bundles.php +++ b/apps/backoffice/frontend/config/bundles.php @@ -1,8 +1,10 @@ ['all' => true], + Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle::class => ['test' => true], - Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], + Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true], // WouterJ\EloquentBundle\WouterJEloquentBundle::class => ['test' => true] ]; diff --git a/apps/backoffice/frontend/public/index.php b/apps/backoffice/frontend/public/index.php index af90aac44..c18f536e7 100644 --- a/apps/backoffice/frontend/public/index.php +++ b/apps/backoffice/frontend/public/index.php @@ -1,5 +1,7 @@ handle($request); $response->send(); $kernel->terminate($request, $response); diff --git a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php index 2b5e5247b..650c7d02b 100644 --- a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php +++ b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php @@ -9,9 +9,10 @@ use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpKernel\Kernel; + use function dirname; -final class BackofficeFrontendKernel extends Kernel +class BackofficeFrontendKernel extends Kernel { use MicroKernelTrait; diff --git a/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php b/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php index 21bc0f4c6..62948247d 100644 --- a/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php +++ b/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php @@ -13,8 +13,8 @@ final class ImportCoursesToElasticsearchCommand extends Command { public function __construct( - private MySqlBackofficeCourseRepository $mySqlRepository, - private ElasticsearchBackofficeCourseRepository $elasticRepository + private readonly MySqlBackofficeCourseRepository $mySqlRepository, + private readonly ElasticsearchBackofficeCourseRepository $elasticRepository ) { parent::__construct(); } diff --git a/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php b/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php index 549fcd62b..6bd5b5d78 100644 --- a/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php +++ b/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php @@ -6,7 +6,7 @@ use CodelyTv\Mooc\CoursesCounter\Application\Find\CoursesCounterResponse; use CodelyTv\Mooc\CoursesCounter\Application\Find\FindCoursesCounterQuery; -use CodelyTv\Shared\Domain\ValueObject\Uuid; +use CodelyTv\Shared\Domain\ValueObject\SimpleUuid; use CodelyTv\Shared\Infrastructure\Symfony\WebController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -21,10 +21,10 @@ public function __invoke(Request $request): Response return $this->render( 'pages/courses/courses.html.twig', [ - 'title' => 'Courses', - 'description' => 'Courses CodelyTV - Backoffice', + 'title' => 'Courses', + 'description' => 'Courses CodelyTV - Backoffice', 'courses_counter' => $coursesCounterResponse->total(), - 'new_course_id' => Uuid::random()->value(), + 'new_course_id' => SimpleUuid::random()->value(), ] ); } diff --git a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php index 0b76138b7..22e168f8d 100644 --- a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php +++ b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php @@ -32,8 +32,8 @@ private function validateRequest(Request $request): ConstraintViolationListInter { $constraint = new Assert\Collection( [ - 'id' => new Assert\Uuid(), - 'name' => [new Assert\NotBlank(), new Assert\Length(['min' => 1, 'max' => 255])], + 'id' => new Assert\Uuid(), + 'name' => [new Assert\NotBlank(), new Assert\Length(['min' => 1, 'max' => 255])], 'duration' => [new Assert\NotBlank(), new Assert\Length(['min' => 4, 'max' => 100])], ] ); diff --git a/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php b/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php index 8cdc343d8..757747ac0 100644 --- a/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php +++ b/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php @@ -15,7 +15,7 @@ public function __invoke(Request $request): Response return $this->render( 'pages/home.html.twig', [ - 'title' => 'Welcome', + 'title' => 'Welcome', 'description' => 'CodelyTV - Backoffice', ] ); diff --git a/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php b/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php index 0b194cf1d..1a853490c 100644 --- a/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php +++ b/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php @@ -9,16 +9,14 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -final class MetricsController +final readonly class MetricsController { - public function __construct(private PrometheusMonitor $monitor) - { - } + public function __construct(private PrometheusMonitor $monitor) {} public function __invoke(Request $request): Response { $renderer = new RenderTextFormat(); - $result = $renderer->render($this->monitor->registry()->getMetricFamilySamples()); + $result = $renderer->render($this->monitor->registry()->getMetricFamilySamples()); return new Response($result, 200, ['Content-Type' => RenderTextFormat::MIME_TYPE]); } diff --git a/apps/bootstrap.php b/apps/bootstrap.php index f9717d54c..cb93ce7f7 100644 --- a/apps/bootstrap.php +++ b/apps/bootstrap.php @@ -1,5 +1,7 @@ =1.2) if (is_array($env = @include $rootPath . '/.env.local.php')) { foreach ($env as $k => $v) { - $_ENV[$k] = $_ENV[$k] ?? (isset($_SERVER[$k]) && str_starts_with($k, 'HTTP_') ? $_SERVER[$k] : $v); + $_ENV[$k] ??= isset($_SERVER[$k]) && str_starts_with($k, 'HTTP_') ? $_SERVER[$k] : $v; } } elseif (!class_exists(Dotenv::class)) { throw new RuntimeException( @@ -18,11 +20,11 @@ ); } else { // load all the .env files - (new Dotenv(false))->loadEnv($rootPath . '/.env'); + (new Dotenv())->loadEnv($rootPath . '/.env'); } -$_SERVER += $_ENV; -$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; -$_SERVER['APP_DEBUG'] = $_SERVER['APP_DEBUG'] ?? $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV']; +$_SERVER += $_ENV; +$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev'; +$_SERVER['APP_DEBUG'] ??= $_ENV['APP_DEBUG'] ?? $_SERVER['APP_ENV'] !== 'prod'; $_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = (int) $_SERVER['APP_DEBUG'] || filter_var($_SERVER['APP_DEBUG'], FILTER_VALIDATE_BOOLEAN) ? '1' : '0'; diff --git a/apps/mooc/backend/config/bundles.php b/apps/mooc/backend/config/bundles.php index 7de452252..8455bba43 100644 --- a/apps/mooc/backend/config/bundles.php +++ b/apps/mooc/backend/config/bundles.php @@ -1,7 +1,9 @@ ['all' => true], + Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true], FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle::class => ['test' => true], // WouterJ\EloquentBundle\WouterJEloquentBundle::class => ['test' => true] ]; diff --git a/apps/mooc/backend/public/index.php b/apps/mooc/backend/public/index.php index 9d02406aa..0d1e3eae8 100644 --- a/apps/mooc/backend/public/index.php +++ b/apps/mooc/backend/public/index.php @@ -1,5 +1,7 @@ handle($request); $response->send(); $kernel->terminate($request, $response); diff --git a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php index 69aeaff18..5ce3765b6 100644 --- a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php +++ b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php @@ -12,6 +12,7 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; + use function Lambdish\Phunctional\pipe; final class ConsumeMySqlDomainEventsCommand extends Command @@ -19,9 +20,9 @@ final class ConsumeMySqlDomainEventsCommand extends Command protected static $defaultName = 'codelytv:domain-events:mysql:consume'; public function __construct( - private MySqlDoctrineDomainEventsConsumer $consumer, - private DatabaseConnections $connections, - private DomainEventSubscriberLocator $subscriberLocator + private readonly MySqlDoctrineDomainEventsConsumer $consumer, + private readonly DatabaseConnections $connections, + private readonly DomainEventSubscriberLocator $subscriberLocator ) { parent::__construct(); } diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php index 3055c60a6..876cda3b3 100644 --- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php +++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php @@ -15,9 +15,9 @@ final class ConfigureRabbitMqCommand extends Command protected static $defaultName = 'codelytv:domain-events:rabbitmq:configure'; public function __construct( - private RabbitMqConfigurer $configurer, - private string $exchangeName, - private Traversable $subscribers + private readonly RabbitMqConfigurer $configurer, + private readonly string $exchangeName, + private readonly Traversable $subscribers ) { parent::__construct(); } diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php index 4fcd6d403..125a50a24 100644 --- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php +++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php @@ -11,6 +11,7 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; + use function Lambdish\Phunctional\repeat; final class ConsumeRabbitMqDomainEventsCommand extends Command @@ -18,9 +19,9 @@ final class ConsumeRabbitMqDomainEventsCommand extends Command protected static $defaultName = 'codelytv:domain-events:rabbitmq:consume'; public function __construct( - private RabbitMqDomainEventsConsumer $consumer, - private DatabaseConnections $connections, - private DomainEventSubscriberLocator $locator + private readonly RabbitMqDomainEventsConsumer $consumer, + private readonly DatabaseConnections $connections, + private readonly DomainEventSubscriberLocator $locator ) { parent::__construct(); } @@ -35,7 +36,7 @@ protected function configure(): void protected function execute(InputInterface $input, OutputInterface $output): int { - $queueName = (string) $input->getArgument('queue'); + $queueName = (string) $input->getArgument('queue'); $eventsToProcess = (int) $input->getArgument('quantity'); repeat($this->consumer($queueName), $eventsToProcess); diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php index 3fd739cbf..5883b60db 100644 --- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php +++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php @@ -11,16 +11,17 @@ use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; + use function Lambdish\Phunctional\each; final class GenerateSupervisorRabbitMqConsumerFilesCommand extends Command { - private const EVENTS_TO_PROCESS_AT_TIME = 200; + private const EVENTS_TO_PROCESS_AT_TIME = 200; private const NUMBERS_OF_PROCESSES_PER_SUBSCRIBER = 1; - private const SUPERVISOR_PATH = __DIR__ . '/../../../../build/supervisor'; + private const SUPERVISOR_PATH = __DIR__ . '/../../../../build/supervisor'; protected static $defaultName = 'codelytv:domain-events:rabbitmq:generate-supervisor-files'; - public function __construct(private DomainEventSubscriberLocator $locator) + public function __construct(private readonly DomainEventSubscriberLocator $locator) { parent::__construct(); } @@ -44,17 +45,11 @@ protected function execute(InputInterface $input, OutputInterface $output): int private function configCreator(string $path): callable { return function (DomainEventSubscriber $subscriber) use ($path): void { - $queueName = RabbitMqQueueNameFormatter::format($subscriber); + $queueName = RabbitMqQueueNameFormatter::format($subscriber); $subscriberName = RabbitMqQueueNameFormatter::shortFormat($subscriber); $fileContent = str_replace( - [ - '{subscriber_name}', - '{queue_name}', - '{path}', - '{processes}', - '{events_to_process}', - ], + ['{subscriber_name}', '{queue_name}', '{path}', '{processes}', '{events_to_process}', ], [ $subscriberName, $queueName, diff --git a/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php b/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php index 82c30e36f..d500d03bb 100644 --- a/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php +++ b/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php @@ -8,18 +8,16 @@ use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; -final class HealthCheckGetController +final readonly class HealthCheckGetController { - public function __construct(private RandomNumberGenerator $generator) - { - } + public function __construct(private RandomNumberGenerator $generator) {} public function __invoke(Request $request): JsonResponse { return new JsonResponse( [ 'mooc-backend' => 'ok', - 'rand' => $this->generator->generate(), + 'rand' => $this->generator->generate(), ] ); } diff --git a/apps/mooc/backend/src/Controller/Metrics/MetricsController.php b/apps/mooc/backend/src/Controller/Metrics/MetricsController.php index 32428afd7..18619a02c 100644 --- a/apps/mooc/backend/src/Controller/Metrics/MetricsController.php +++ b/apps/mooc/backend/src/Controller/Metrics/MetricsController.php @@ -9,16 +9,14 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -final class MetricsController +final readonly class MetricsController { - public function __construct(private PrometheusMonitor $monitor) - { - } + public function __construct(private PrometheusMonitor $monitor) {} public function __invoke(Request $request): Response { $renderer = new RenderTextFormat(); - $result = $renderer->render($this->monitor->registry()->getMetricFamilySamples()); + $result = $renderer->render($this->monitor->registry()->getMetricFamilySamples()); return new Response($result, 200, ['Content-Type' => RenderTextFormat::MIME_TYPE]); } diff --git a/apps/mooc/backend/src/MoocBackendKernel.php b/apps/mooc/backend/src/MoocBackendKernel.php index 4ae0b228b..9a5b3e1bc 100644 --- a/apps/mooc/backend/src/MoocBackendKernel.php +++ b/apps/mooc/backend/src/MoocBackendKernel.php @@ -9,9 +9,10 @@ use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\HttpKernel\Kernel; + use function dirname; -final class MoocBackendKernel extends Kernel +class MoocBackendKernel extends Kernel { use MicroKernelTrait; diff --git a/composer.json b/composer.json index ea800fcce..1f498b9b6 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,7 @@ "type": "project", "description": "An example project applying Domain-Driven Design, Hexagonal Architecture and CQRS in a Monorepository", "require": { - "php": "^8.1", + "php": "^8.2", "ext-amqp": "*", "ext-apcu": "*", @@ -40,10 +40,10 @@ "roave/security-advisories": "dev-master", - "behat/behat": "^3", - "friends-of-behat/mink-extension": "^2", - "friends-of-behat/symfony-extension": "^2", - "behat/mink-browserkit-driver": "^2", + "behat/behat": "^3.13", + "friends-of-behat/mink-extension": "2.6.1", + "friends-of-behat/symfony-extension": "2.3.1", + "behat/mink-browserkit-driver": "2.1.0", "phpunit/phpunit": "^9", "mockery/mockery": "^1", @@ -51,8 +51,10 @@ "fakerphp/faker": "^1", "symfony/error-handler": "^6", - "vimeo/psalm": "^4", - "friendsofphp/php-cs-fixer": "^3.8" + + "symplify/easy-coding-standard": "^12.0", + "vimeo/psalm": "^5.15", + "rector/rector": "^0.18.4" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index f12724bfe..4cb195c0d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,30 +4,29 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c096ab9ab7ca0c43b0244f7dcbb55400", + "content-hash": "6a083c6e70896a6fe633c8afc29cb888", "packages": [ { "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": { @@ -52,19 +51,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": "doctrine/cache", @@ -161,31 +156,34 @@ }, { "name": "doctrine/collections", - "version": "1.6.8", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af" + "reference": "3023e150f90a38843856147b58190aa8b46cc155" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af", - "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af", + "url": "https://api.github.com/repos/doctrine/collections/zipball/3023e150f90a38843856147b58190aa8b46cc155", + "reference": "3023e150f90a38843856147b58190aa8b46cc155", "shasum": "" }, "require": { - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.2.1" + "doctrine/coding-standard": "^10.0", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^5.11" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -224,22 +222,36 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.6.8" + "source": "https://github.com/doctrine/collections/tree/2.1.3" }, - "time": "2021-08-10T18:51:53+00:00" + "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%2Fcollections", + "type": "tidelift" + } + ], + "time": "2023-07-06T15:15:36+00:00" }, { "name": "doctrine/common", - "version": "3.3.0", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "c824e95d4c83b7102d8bc60595445a6f7d540f96" + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/c824e95d4c83b7102d8bc60595445a6f7d540f96", - "reference": "c824e95d4c83b7102d8bc60595445a6f7d540f96", + "url": "https://api.github.com/repos/doctrine/common/zipball/8b5e5650391f851ed58910b3e3d48a71062eeced", + "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced", "shasum": "" }, "require": { @@ -247,18 +259,19 @@ "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "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/", @@ -300,7 +313,7 @@ ], "support": { "issues": "https://github.com/doctrine/common/issues", - "source": "https://github.com/doctrine/common/tree/3.3.0" + "source": "https://github.com/doctrine/common/tree/3.4.3" }, "funding": [ { @@ -316,42 +329,44 @@ "type": "tidelift" } ], - "time": "2022-02-05T18:28:51+00:00" + "time": "2022-10-09T11:47:59+00:00" }, { "name": "doctrine/dbal", - "version": "3.3.6", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "9e7f76dd1cde81c62574fdffa5a9c655c847ad21" + "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/9e7f76dd1cde81c62574fdffa5a9c655c847ad21", - "reference": "9e7f76dd1cde81c62574fdffa5a9c655c847ad21", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/00d03067f07482f025d41ab55e4ba0db5eca2cdf", + "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.11|^2.0", "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1.0", - "php": "^7.3 || ^8.0", + "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": "2022.1", - "phpstan/phpstan": "1.6.3", - "phpstan/phpstan-strict-rules": "^1.2", - "phpunit/phpunit": "9.5.20", - "psalm/plugin-phpunit": "0.16.1", - "squizlabs/php_codesniffer": "3.6.2", - "symfony/cache": "^5.2|^6.0", - "symfony/console": "^2.7|^3.0|^4.0|^5.0|^6.0", - "vimeo/psalm": "4.23.0" + "doctrine/coding-standard": "12.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "1.10.35", + "phpstan/phpstan-strict-rules": "^1.5", + "phpunit/phpunit": "9.6.13", + "psalm/plugin-phpunit": "0.18.4", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.7.2", + "symfony/cache": "^5.4|^6.0", + "symfony/console": "^4.4|^5.4|^6.0", + "vimeo/psalm": "4.30.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -411,7 +426,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.3.6" + "source": "https://github.com/doctrine/dbal/tree/3.7.0" }, "funding": [ { @@ -427,29 +442,33 @@ "type": "tidelift" } ], - "time": "2022-05-02T17:21:01+00:00" + "time": "2023-09-26T20:56:55+00:00" }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "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" @@ -468,43 +487,40 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-06-03T09:27:29+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "41370af6a30faa9dc0368c4a6814d596e81aba7f" + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" }, "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/750671534e0241a7c50ea5b43f67e23eb5c96f32", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "conflict": { - "doctrine/common": "<2.9@dev" + "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpunit/phpunit": "^7.0" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.28" }, "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/", @@ -548,7 +564,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.x" + "source": "https://github.com/doctrine/event-manager/tree/2.0.0" }, "funding": [ { @@ -564,32 +580,32 @@ "type": "tidelift" } ], - "time": "2020-05-29T18:28:51+00:00" + "time": "2022-10-12T20:59:15+00:00" }, { "name": "doctrine/inflector", - "version": "2.0.4", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" + "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", "autoload": { @@ -639,7 +655,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.8" }, "funding": [ { @@ -655,34 +671,34 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:16:43+00:00" + "time": "2023-06-16T13:40:37+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "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", + "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.22" + "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": { @@ -709,7 +725,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -725,35 +741,37 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.3", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^9 || ^10", "phpstan/phpstan": "^1.3", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" + "psalm/plugin-phpunit": "^0.18.3", + "vimeo/psalm": "^4.11 || ^5.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + "Doctrine\\Common\\Lexer\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -785,7 +803,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" + "source": "https://github.com/doctrine/lexer/tree/2.1.0" }, "funding": [ { @@ -801,57 +819,59 @@ "type": "tidelift" } ], - "time": "2022-02-28T11:07:21+00:00" + "time": "2022-12-14T08:49:07+00:00" }, { "name": "doctrine/orm", - "version": "2.12.2", + "version": "2.16.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "8291a7f09b12d14783ed6537b4586583d155869e" + "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/8291a7f09b12d14783ed6537b4586583d155869e", - "reference": "8291a7f09b12d14783ed6537b4586583d155869e", + "url": "https://api.github.com/repos/doctrine/orm/zipball/17500f56eaa930f5cd14d765bc2cd851c7d37cc0", + "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0", "shasum": "" }, "require": { "composer-runtime-api": "^2", "doctrine/cache": "^1.12.1 || ^2.1.1", - "doctrine/collections": "^1.5", + "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.1", + "doctrine/event-manager": "^1.2 || ^2", "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3", - "doctrine/lexer": "^1.2.3", + "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": "^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 || >= 2.0" + "doctrine/annotations": "<1.13 || >= 3.0" }, "require-dev": { - "doctrine/annotations": "^1.13", - "doctrine/coding-standard": "^9.0", + "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.6.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpstan/phpstan": "~1.4.10 || 1.10.28", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.6.2", + "squizlabs/php_codesniffer": "3.7.2", "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.23.0" + "vimeo/psalm": "4.30.0 || 5.14.1" }, "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" }, @@ -898,45 +918,42 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.12.2" + "source": "https://github.com/doctrine/orm/tree/2.16.2" }, - "time": "2022-05-02T19:10:07+00:00" + "time": "2023-08-27T18:21:56+00:00" }, { "name": "doctrine/persistence", - "version": "3.0.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "25ec98a8cbd1f850e60fdb62c0ef77c162da8704" + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/25ec98a8cbd1f850e60fdb62c0ef77c162da8704", - "reference": "25ec98a8cbd1f850e60fdb62c0ef77c162da8704", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/63fee8c33bef740db6730eb2a750cd3da6495603", + "reference": "63fee8c33bef740db6730eb2a750cd3da6495603", "shasum": "" }, "require": { - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", + "doctrine/event-manager": "^1 || ^2", "php": "^7.2 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/annotations": "<1.7 || >=2.0", "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/annotations": "^1.7", - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "1.5.0", + "phpstan/phpstan": "1.9.4", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", "phpunit/phpunit": "^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "4.22.0" + "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { @@ -985,7 +1002,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.0.2" + "source": "https://github.com/doctrine/persistence/tree/3.2.0" }, "funding": [ { @@ -1001,20 +1018,20 @@ "type": "tidelift" } ], - "time": "2022-05-06T06:10:05+00:00" + "time": "2023-05-17T18:32:04+00:00" }, { "name": "elasticsearch/elasticsearch", - "version": "v7.17.0", + "version": "v7.17.2", "source": { "type": "git", - "url": "https://github.com/elastic/elasticsearch-php.git", - "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b" + "url": "git@github.com:elastic/elasticsearch-php.git", + "reference": "2d302233f2bb0926812d82823bb820d405e130fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/1890f9d7fde076b5a3ddcf579a802af05b2e781b", - "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b", + "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/2d302233f2bb0926812d82823bb820d405e130fc", + "reference": "2d302233f2bb0926812d82823bb820d405e130fc", "shasum": "" }, "require": { @@ -1027,7 +1044,7 @@ "ext-yaml": "*", "ext-zip": "*", "mockery/mockery": "^1.2", - "phpstan/phpstan": "^0.12", + "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.3", "squizlabs/php_codesniffer": "^3.4", "symfony/finder": "~4.0" @@ -1064,11 +1081,7 @@ "elasticsearch", "search" ], - "support": { - "issues": "https://github.com/elastic/elasticsearch-php/issues", - "source": "https://github.com/elastic/elasticsearch-php/tree/v7.17.0" - }, - "time": "2022-02-03T13:40:04+00:00" + "time": "2023-04-21T15:31:12+00:00" }, { "name": "endclothing/prometheus_client_php", @@ -1121,23 +1134,23 @@ }, { "name": "ezimuel/guzzlestreams", - "version": "3.0.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/ezimuel/guzzlestreams.git", - "reference": "abe3791d231167f14eb80d413420d1eab91163a8" + "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezimuel/guzzlestreams/zipball/abe3791d231167f14eb80d413420d1eab91163a8", - "reference": "abe3791d231167f14eb80d413420d1eab91163a8", + "url": "https://api.github.com/repos/ezimuel/guzzlestreams/zipball/b4b5a025dfee70d6cd34c780e07330eb93d5b997", + "reference": "b4b5a025dfee70d6cd34c780e07330eb93d5b997", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~9.0" }, "type": "library", "extra": { @@ -1168,22 +1181,22 @@ "stream" ], "support": { - "source": "https://github.com/ezimuel/guzzlestreams/tree/3.0.1" + "source": "https://github.com/ezimuel/guzzlestreams/tree/3.1.0" }, - "time": "2020-02-14T23:11:50+00:00" + "time": "2022-10-24T12:58:50+00:00" }, { "name": "ezimuel/ringphp", - "version": "1.2.0", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/ezimuel/ringphp.git", - "reference": "92b8161404ab1ad84059ebed41d9f757e897ce74" + "reference": "7887fc8488013065f72f977dcb281994f5fde9f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ezimuel/ringphp/zipball/92b8161404ab1ad84059ebed41d9f757e897ce74", - "reference": "92b8161404ab1ad84059ebed41d9f757e897ce74", + "url": "https://api.github.com/repos/ezimuel/ringphp/zipball/7887fc8488013065f72f977dcb281994f5fde9f4", + "reference": "7887fc8488013065f72f977dcb281994f5fde9f4", "shasum": "" }, "require": { @@ -1225,28 +1238,28 @@ ], "description": "Fork of guzzle/RingPHP (abandoned) to be used with elasticsearch-php", "support": { - "source": "https://github.com/ezimuel/ringphp/tree/1.2.0" + "source": "https://github.com/ezimuel/ringphp/tree/1.2.2" }, - "time": "2021-11-16T11:51:30+00:00" + "time": "2022-12-07T11:28:53+00:00" }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.12", + "version": "v1.0.16", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7" + "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/8419f0158715b30d4b99a5bd37c6a39671994ad7", - "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7", + "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", @@ -1257,7 +1270,7 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.4|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { @@ -1297,7 +1310,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.12" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16" }, "funding": [ { @@ -1309,28 +1322,28 @@ "type": "tidelift" } ], - "time": "2022-05-05T09:31:05+00:00" + "time": "2023-05-24T07:17:17+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "6.5.7", + "version": "6.5.8", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "724562fa861e21a4071c652c8a159934e4f05592" + "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/724562fa861e21a4071c652c8a159934e4f05592", - "reference": "724562fa861e21a4071c652c8a159934e4f05592", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981", + "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.6.1", + "guzzlehttp/psr7": "^1.9", "php": ">=5.5", - "symfony/polyfill-intl-idn": "^1.17.0" + "symfony/polyfill-intl-idn": "^1.17" }, "require-dev": { "ext-curl": "*", @@ -1408,7 +1421,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/6.5.7" + "source": "https://github.com/guzzle/guzzle/tree/6.5.8" }, "funding": [ { @@ -1424,20 +1437,20 @@ "type": "tidelift" } ], - "time": "2022-06-09T21:36:50+00:00" + "time": "2022-06-20T22:16:07+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { @@ -1447,11 +1460,6 @@ "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "autoload": { "files": [ "src/functions_include.php" @@ -1492,7 +1500,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, "funding": [ { @@ -1508,20 +1516,20 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2023-05-21T12:31:43+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.8.5", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268" + "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/337e3ad8e5716c15f9657bd214d16cc5e69df268", - "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/e4490cabc77465aaee90b20cfc9a770f8c04be6b", + "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b", "shasum": "" }, "require": { @@ -1540,11 +1548,6 @@ "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.7-dev" - } - }, "autoload": { "files": [ "src/functions_include.php" @@ -1602,7 +1605,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.8.5" + "source": "https://github.com/guzzle/psr7/tree/1.9.1" }, "funding": [ { @@ -1618,7 +1621,7 @@ "type": "tidelift" } ], - "time": "2022-03-20T21:51:18+00:00" + "time": "2023-04-17T16:00:37+00:00" }, { "name": "lambdish/phunctional", @@ -1678,29 +1681,29 @@ }, { "name": "laminas/laminas-code", - "version": "4.5.2", + "version": "4.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad" + "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/da01fb74c08f37e20e7ae49f1e3ee09aa401ebad", - "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/36cbee228b427446419dd51944bdfb6bb8ddbcd0", + "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0", "shasum": "" }, "require": { - "php": ">=7.4, <8.2" + "php": "~8.1.0 || ~8.2.0" }, "require-dev": { - "doctrine/annotations": "^1.13.2", + "doctrine/annotations": "^2.0.0", "ext-phar": "*", "laminas/laminas-coding-standard": "^2.3.0", "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^9.5.10", - "psalm/plugin-phpunit": "^0.16.1", - "vimeo/psalm": "^4.13.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", @@ -1708,9 +1711,6 @@ }, "type": "library", "autoload": { - "files": [ - "polyfill/ReflectionEnumPolyfill.php" - ], "psr-4": { "Laminas\\Code\\": "src/" } @@ -1740,30 +1740,30 @@ "type": "community_bridge" } ], - "time": "2022-06-06T11:26:02+00:00" + "time": "2023-09-06T14:56:25+00:00" }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.5.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab" + "reference": "5ef52e26392777a26dbb8f20fe24f91b406459f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/7f049390b756d34ba5940a8fb47634fbb51f79ab", - "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/5ef52e26392777a26dbb8f20fe24f91b406459f6", + "reference": "5ef52e26392777a26dbb8f20fe24f91b406459f6", "shasum": "" }, "require": { - "php": ">=7.4, <8.2" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.5.14", - "psalm/plugin-phpunit": "^0.15.2", - "squizlabs/php_codesniffer": "^3.6.2", - "vimeo/psalm": "^4.21.0" + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "squizlabs/php_codesniffer": "^3.7.1", + "vimeo/psalm": "^4.29.0" }, "type": "library", "extra": { @@ -1802,20 +1802,20 @@ "type": "community_bridge" } ], - "time": "2022-02-22T22:17:01+00:00" + "time": "2022-12-12T11:44:10+00:00" }, { "name": "monolog/monolog", - "version": "3.1.0", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "0c375495d40df0207e5833dca333f963b171ff43" + "reference": "e2392369686d420ca32df3803de28b5d6f76867d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/0c375495d40df0207e5833dca333f963b171ff43", - "reference": "0c375495d40df0207e5833dca333f963b171ff43", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d", "shasum": "" }, "require": { @@ -1830,17 +1830,16 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2", - "guzzlehttp/guzzle": "^7.4", + "graylog2/gelf-php": "^1.4.2 || ^2.0", + "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^1.4", + "phpstan/phpstan": "^1.9", "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^9.5.16", - "predis/predis": "^1.1", + "phpstan/phpstan-strict-rules": "^1.4", + "phpunit/phpunit": "^10.1", + "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" @@ -1858,7 +1857,6 @@ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, @@ -1893,7 +1891,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.1.0" + "source": "https://github.com/Seldaek/monolog/tree/3.4.0" }, "funding": [ { @@ -1905,7 +1903,7 @@ "type": "tidelift" } ], - "time": "2022-06-09T09:09:00+00:00" + "time": "2023-06-21T08:46:11+00:00" }, { "name": "psr/cache", @@ -1956,24 +1954,77 @@ }, "time": "2021-02-03T23:26:27+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", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -2000,9 +2051,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/event-dispatcher", @@ -2056,25 +2107,25 @@ }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "1.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "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/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -2103,9 +2154,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/1.1" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:50:52+00:00" }, { "name": "psr/log", @@ -2203,42 +2254,52 @@ }, { "name": "ramsey/collection", - "version": "1.2.2", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a" + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a", - "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a", + "url": "https://api.github.com/repos/ramsey/collection/zipball/a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", + "reference": "a4b48764bfbb8f3a6a4d1aeb1a35bb5e9ecac4a5", "shasum": "" }, "require": { - "php": "^7.3 || ^8", - "symfony/polyfill-php81": "^1.23" + "php": "^8.1" }, "require-dev": { - "captainhook/captainhook": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "ergebnis/composer-normalize": "^2.6", - "fakerphp/faker": "^1.5", - "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.8", - "mockery/mockery": "^1.3", + "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", - "phpstan/phpstan": "^0.12.32", - "phpstan/phpstan-mockery": "^0.12.5", - "phpstan/phpstan-phpunit": "^0.12.11", - "phpunit/phpunit": "^8.5 || ^9", - "psy/psysh": "^0.10.4", - "slevomat/coding-standard": "^6.3", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.4" + "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/" @@ -2266,7 +2327,7 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/1.2.2" + "source": "https://github.com/ramsey/collection/tree/2.0.0" }, "funding": [ { @@ -2278,28 +2339,27 @@ "type": "tidelift" } ], - "time": "2021-10-10T03:01:02+00:00" + "time": "2022-12-31T21:50:55+00:00" }, { "name": "ramsey/uuid", - "version": "4.3.1", + "version": "4.7.4", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28" + "reference": "60a4c63ab724854332900504274f6150ff26d286" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", - "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", + "reference": "60a4c63ab724854332900504274f6150ff26d286", "shasum": "" }, "require": { - "brick/math": "^0.8 || ^0.9", - "ext-ctype": "*", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11", "ext-json": "*", "php": "^8.0", - "ramsey/collection": "^1.0" + "ramsey/collection": "^1.2 || ^2.0" }, "replace": { "rhumsaa/uuid": "self.version" @@ -2311,24 +2371,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", @@ -2360,7 +2419,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.3.1" + "source": "https://github.com/ramsey/uuid/tree/4.7.4" }, "funding": [ { @@ -2372,27 +2431,27 @@ "type": "tidelift" } ], - "time": "2022-03-27T21:42:02+00:00" + "time": "2023-04-15T23:01:58+00:00" }, { "name": "react/promise", - "version": "v2.9.0", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910" + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", + "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38", "shasum": "" }, "require": { "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { @@ -2436,41 +2495,37 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.9.0" + "source": "https://github.com/reactphp/promise/tree/v2.10.0" }, "funding": [ { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" + "url": "https://opencollective.com/reactphp", + "type": "open_collective" } ], - "time": "2022-02-11T10:27:51+00:00" + "time": "2023-05-02T15:15:43+00:00" }, { "name": "symfony/cache", - "version": "v6.1.1", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "364fc90734230d936ac2db8e897cc03ec8497bbb" + "reference": "e60d00b4f633efa4c1ef54e77c12762d9073e7b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/364fc90734230d936ac2db8e897cc03ec8497bbb", - "reference": "364fc90734230d936ac2db8e897cc03ec8497bbb", + "url": "https://api.github.com/repos/symfony/cache/zipball/e60d00b4f633efa4c1ef54e77c12762d9073e7b3", + "reference": "e60d00b4f633efa4c1ef54e77c12762d9073e7b3", "shasum": "" }, "require": { "php": ">=8.1", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2|^3", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/cache-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.2.10" }, "conflict": { "doctrine/dbal": "<2.13.1", @@ -2486,7 +2541,7 @@ "require-dev": { "cache/integration-tests": "dev-master", "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1", + "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "symfony/config": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", @@ -2521,14 +2576,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/v6.1.1" + "source": "https://github.com/symfony/cache/tree/v6.3.4" }, "funding": [ { @@ -2544,33 +2599,30 @@ "type": "tidelift" } ], - "time": "2022-06-06T19:15:01+00:00" + "time": "2023-08-05T09:10:27+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.1.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3" + "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2eab7fa459af6d75c6463e63e633b667a9b761d3", - "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ad945640ccc0ae6e208bcea7d7de4b39b569896b", + "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b", "shasum": "" }, "require": { "php": ">=8.1", "psr/cache": "^3.0" }, - "suggest": { - "symfony/cache-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -2607,7 +2659,80 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.3.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": "2023-05-23T14:45:45+00:00" + }, + { + "name": "symfony/clock", + "version": "v6.3.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "a74086d3db70d0f06ffd84480daa556248706e98" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/a74086d3db70d0f06ffd84480daa556248706e98", + "reference": "a74086d3db70d0f06ffd84480daa556248706e98", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/clock": "^1.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v6.3.4" }, "funding": [ { @@ -2623,41 +2748,39 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-07-31T11:35:03+00:00" }, { "name": "symfony/config", - "version": "v6.1.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "ed8d12417bcacd2d969750feb1fe1aab1c11e613" + "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/ed8d12417bcacd2d969750feb1fe1aab1c11e613", - "reference": "ed8d12417bcacd2d969750feb1fe1aab1c11e613", + "url": "https://api.github.com/repos/symfony/config/zipball/b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", + "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/filesystem": "^5.4|^6.0", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<5.4" + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" }, "require-dev": { "symfony/event-dispatcher": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", "symfony/messenger": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, "type": "library", "autoload": { "psr-4": { @@ -2684,7 +2807,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/v6.1.0" + "source": "https://github.com/symfony/config/tree/v6.3.2" }, "funding": [ { @@ -2700,27 +2823,27 @@ "type": "tidelift" } ], - "time": "2022-05-17T12:56:32+00:00" + "time": "2023-07-19T20:22:16+00:00" }, { "name": "symfony/console", - "version": "v6.1.1", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6187424023fbffcd757789aeb517c9161b1eabee" + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6187424023fbffcd757789aeb517c9161b1eabee", - "reference": "6187424023fbffcd757789aeb517c9161b1eabee", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -2742,12 +2865,6 @@ "symfony/process": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, "type": "library", "autoload": { "psr-4": { @@ -2775,12 +2892,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.1.1" + "source": "https://github.com/symfony/console/tree/v6.3.4" }, "funding": [ { @@ -2796,33 +2913,34 @@ "type": "tidelift" } ], - "time": "2022-06-08T14:02:09+00:00" + "time": "2023-08-16T10:10:12+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.1.0", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "fc1fcd2b153f585934e80055bb3254913def2a6e" + "reference": "68a5a9570806a087982f383f6109c5e925892a49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/fc1fcd2b153f585934e80055bb3254913def2a6e", - "reference": "fc1fcd2b153f585934e80055bb3254913def2a6e", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/68a5a9570806a087982f383f6109c5e925892a49", + "reference": "68a5a9570806a087982f383f6109c5e925892a49", "shasum": "" }, "require": { "php": ">=8.1", "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/service-contracts": "^1.1.6|^2.0|^3.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10" }, "conflict": { "ext-psr": "<1.1|>=2", "symfony/config": "<6.1", "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<5.4", + "symfony/proxy-manager-bridge": "<6.3", "symfony/yaml": "<5.4" }, "provide": { @@ -2834,13 +2952,6 @@ "symfony/expression-language": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" - }, "type": "library", "autoload": { "psr-4": { @@ -2867,7 +2978,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/v6.1.0" + "source": "https://github.com/symfony/dependency-injection/tree/v6.3.4" }, "funding": [ { @@ -2883,20 +2994,20 @@ "type": "tidelift" } ], - "time": "2022-05-27T06:40:20+00:00" + "time": "2023-08-16T17:55:17+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.1.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", - "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -2905,7 +3016,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -2934,7 +3045,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -2950,27 +3061,28 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/dotenv", - "version": "v6.1.0", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "568c11bcedf419e7e61f663912c3547b54de51df" + "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/568c11bcedf419e7e61f663912c3547b54de51df", - "reference": "568c11bcedf419e7e61f663912c3547b54de51df", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/ceadb434fe2a6763a03d2d110441745834f3dd1e", + "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e", "shasum": "" }, "require": { "php": ">=8.1" }, "conflict": { - "symfony/console": "<5.4" + "symfony/console": "<5.4", + "symfony/process": "<5.4" }, "require-dev": { "symfony/console": "^5.4|^6.0", @@ -3007,7 +3119,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.1.0" + "source": "https://github.com/symfony/dotenv/tree/v6.3.0" }, "funding": [ { @@ -3023,20 +3135,20 @@ "type": "tidelift" } ], - "time": "2022-04-01T07:15:35+00:00" + "time": "2023-04-21T14:41:17+00:00" }, { "name": "symfony/error-handler", - "version": "v6.1.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "d02c662651e5de760bb7d5e94437113309e8f8a0" + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/d02c662651e5de760bb7d5e94437113309e8f8a0", - "reference": "d02c662651e5de760bb7d5e94437113309e8f8a0", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a", + "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a", "shasum": "" }, "require": { @@ -3044,8 +3156,11 @@ "psr/log": "^1|^2|^3", "symfony/var-dumper": "^5.4|^6.0" }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^5.4|^6.0", "symfony/serializer": "^5.4|^6.0" }, @@ -3078,7 +3193,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/v6.1.0" + "source": "https://github.com/symfony/error-handler/tree/v6.3.2" }, "funding": [ { @@ -3094,28 +3209,29 @@ "type": "tidelift" } ], - "time": "2022-05-23T10:32:57+00:00" + "time": "2023-07-16T17:05:46+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v6.1.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347" + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a0449a7ad7daa0f7c0acd508259f80544ab5a347", - "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<5.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", @@ -3128,13 +3244,9 @@ "symfony/error-handler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0" }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, "type": "library", "autoload": { "psr-4": { @@ -3161,7 +3273,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/v6.1.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" }, "funding": [ { @@ -3177,33 +3289,30 @@ "type": "tidelift" } ], - "time": "2022-05-05T16:51:07+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.1.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448" + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448", - "reference": "02ff5eea2f453731cfbc6bc215e456b781480448", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", + "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", "shasum": "" }, "require": { "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3240,7 +3349,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" }, "funding": [ { @@ -3256,20 +3365,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/filesystem", - "version": "v6.1.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d" + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3132d2f43ca799c2aa099f9738d98228c56baa5d", - "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", "shasum": "" }, "require": { @@ -3303,7 +3412,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.1.0" + "source": "https://github.com/symfony/filesystem/tree/v6.3.1" }, "funding": [ { @@ -3319,20 +3428,20 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:34:40+00:00" + "time": "2023-06-01T08:30:39+00:00" }, { "name": "symfony/finder", - "version": "v6.1.0", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f" + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/45b8beb69d6eb3b05a65689ebfd4222326773f8f", - "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f", + "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", "shasum": "" }, "require": { @@ -3367,7 +3476,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.1.0" + "source": "https://github.com/symfony/finder/tree/v6.3.3" }, "funding": [ { @@ -3383,20 +3492,20 @@ "type": "tidelift" } ], - "time": "2022-04-15T08:08:08+00:00" + "time": "2023-07-31T08:31:44+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.1.1", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "260d97823252318eb3b525dd8c0bee2cc5dbfd7f" + "reference": "f822f54ff05cd88878910b4559f66c12176d952c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/260d97823252318eb3b525dd8c0bee2cc5dbfd7f", - "reference": "260d97823252318eb3b525dd8c0bee2cc5dbfd7f", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f822f54ff05cd88878910b4559f66c12176d952c", + "reference": "f822f54ff05cd88878910b4559f66c12176d952c", "shasum": "" }, "require": { @@ -3405,14 +3514,14 @@ "php": ">=8.1", "symfony/cache": "^5.4|^6.0", "symfony/config": "^6.1", - "symfony/dependency-injection": "^6.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/dependency-injection": "^6.3.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.1", "symfony/event-dispatcher": "^5.4|^6.0", "symfony/filesystem": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/http-kernel": "^6.1", + "symfony/http-foundation": "^6.3", + "symfony/http-kernel": "^6.3", "symfony/polyfill-mbstring": "~1.0", "symfony/routing": "^5.4|^6.0" }, @@ -3421,77 +3530,70 @@ "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "phpunit/phpunit": "<5.4.3", "symfony/asset": "<5.4", + "symfony/clock": "<6.3", "symfony/console": "<5.4", - "symfony/dom-crawler": "<5.4", + "symfony/dom-crawler": "<6.3", "symfony/dotenv": "<5.4", "symfony/form": "<5.4", - "symfony/http-client": "<5.4", + "symfony/http-client": "<6.3", "symfony/lock": "<5.4", "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/mime": "<5.4", + "symfony/messenger": "<6.3", + "symfony/mime": "<6.2", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4", "symfony/security-core": "<5.4", "symfony/security-csrf": "<5.4", - "symfony/serializer": "<6.1", + "symfony/serializer": "<6.3", "symfony/stopwatch": "<5.4", - "symfony/translation": "<5.4", + "symfony/translation": "<6.2.8", "symfony/twig-bridge": "<5.4", "symfony/twig-bundle": "<5.4", - "symfony/validator": "<5.4", + "symfony/validator": "<6.3", "symfony/web-profiler-bundle": "<5.4", "symfony/workflow": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.13.1", + "doctrine/annotations": "^1.13.1|^2", "doctrine/persistence": "^1.3|^2|^3", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/asset": "^5.4|^6.0", + "symfony/asset-mapper": "^6.3", "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", "symfony/console": "^5.4.9|^6.0.9", "symfony/css-selector": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", + "symfony/dom-crawler": "^6.3", "symfony/dotenv": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/form": "^5.4|^6.0", "symfony/html-sanitizer": "^6.1", - "symfony/http-client": "^5.4|^6.0", + "symfony/http-client": "^6.3", "symfony/lock": "^5.4|^6.0", "symfony/mailer": "^5.4|^6.0", - "symfony/messenger": "^6.1", - "symfony/mime": "^5.4|^6.0", + "symfony/messenger": "^6.3", + "symfony/mime": "^6.2", "symfony/notifier": "^5.4|^6.0", "symfony/polyfill-intl-icu": "~1.0", "symfony/process": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", "symfony/rate-limiter": "^5.4|^6.0", + "symfony/scheduler": "^6.3", "symfony/security-bundle": "^5.4|^6.0", "symfony/semaphore": "^5.4|^6.0", - "symfony/serializer": "^6.1", + "symfony/serializer": "^6.3", "symfony/stopwatch": "^5.4|^6.0", "symfony/string": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", + "symfony/translation": "^6.2.8", "symfony/twig-bundle": "^5.4|^6.0", "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^5.4|^6.0", + "symfony/validator": "^6.3", "symfony/web-link": "^5.4|^6.0", "symfony/workflow": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0", "twig/twig": "^2.10|^3.0" }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, "type": "symfony-bundle", "autoload": { "psr-4": { @@ -3518,7 +3620,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/v6.1.1" + "source": "https://github.com/symfony/framework-bundle/tree/v6.3.4" }, "funding": [ { @@ -3534,35 +3636,40 @@ "type": "tidelift" } ], - "time": "2022-06-09T10:53:06+00:00" + "time": "2023-08-16T18:04:38+00:00" }, { "name": "symfony/http-foundation", - "version": "v6.1.1", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "a58dc88d56e04e57993d96c1407a17407610e1df" + "reference": "cac1556fdfdf6719668181974104e6fcfa60e844" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a58dc88d56e04e57993d96c1407a17407610e1df", - "reference": "a58dc88d56e04e57993d96c1407a17407610e1df", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cac1556fdfdf6719668181974104e6fcfa60e844", + "reference": "cac1556fdfdf6719668181974104e6fcfa60e844", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.2" }, "require-dev": { - "predis/predis": "~1.0", + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1|^2.0", "symfony/cache": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0" - }, - "suggest": { - "symfony/mime": "To use the file extension guesser" + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^5.4|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "type": "library", "autoload": { @@ -3590,7 +3697,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.1.1" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.4" }, "funding": [ { @@ -3606,28 +3713,29 @@ "type": "tidelift" } ], - "time": "2022-05-31T14:28:03+00:00" + "time": "2023-08-22T08:20:46+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.1.1", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "86c4d6f6c5b6cd012df41e3b950c924b3ffdc019" + "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/86c4d6f6c5b6cd012df41e3b950c924b3ffdc019", - "reference": "86c4d6f6c5b6cd012df41e3b950c924b3ffdc019", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", + "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/error-handler": "^6.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/http-foundation": "^6.3.4", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -3635,15 +3743,18 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.1", + "symfony/dependency-injection": "<6.3.4", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/mailer": "<5.4", "symfony/messenger": "<5.4", "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", "symfony/validator": "<5.4", + "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, "provide": { @@ -3652,28 +3763,27 @@ "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", "symfony/config": "^6.1", "symfony/console": "^5.4|^6.0", "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.1", + "symfony/dependency-injection": "^6.3.4", "symfony/dom-crawler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/http-client-contracts": "^2.5|^3", "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", "symfony/stopwatch": "^5.4|^6.0", "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", + "symfony/var-exporter": "^6.2", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -3700,7 +3810,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/v6.1.1" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.4" }, "funding": [ { @@ -3716,29 +3826,30 @@ "type": "tidelift" } ], - "time": "2022-06-09T17:31:33+00:00" + "time": "2023-08-26T13:54:49+00:00" }, { "name": "symfony/messenger", - "version": "v6.1.0", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "e4e204ce4f2e90b54320c9043a0898d925dcd118" + "reference": "bf460982736a4b99d11a3a90005ef438c3780df7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/e4e204ce4f2e90b54320c9043a0898d925dcd118", - "reference": "e4e204ce4f2e90b54320c9043a0898d925dcd118", + "url": "https://api.github.com/repos/symfony/messenger/zipball/bf460982736a4b99d11a3a90005ef438c3780df7", + "reference": "bf460982736a4b99d11a3a90005ef438c3780df7", "shasum": "" }, "require": { "php": ">=8.1", - "psr/log": "^1|^2|^3" + "psr/log": "^1|^2|^3", + "symfony/clock": "^6.3" }, "conflict": { "symfony/event-dispatcher": "<5.4", - "symfony/event-dispatcher-contracts": "<2", + "symfony/event-dispatcher-contracts": "<2.5", "symfony/framework-bundle": "<5.4", "symfony/http-kernel": "<5.4", "symfony/serializer": "<5.4" @@ -3747,19 +3858,18 @@ "psr/cache": "^1.0|^2.0|^3.0", "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher": "^5.4|^6.0", "symfony/http-kernel": "^5.4|^6.0", "symfony/process": "^5.4|^6.0", "symfony/property-access": "^5.4|^6.0", + "symfony/rate-limiter": "^5.4|^6.0", "symfony/routing": "^5.4|^6.0", "symfony/serializer": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/stopwatch": "^5.4|^6.0", "symfony/validator": "^5.4|^6.0" }, - "suggest": { - "enqueue/messenger-adapter": "For using the php-enqueue library as a transport." - }, "type": "library", "autoload": { "psr-4": { @@ -3786,7 +3896,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/v6.1.0" + "source": "https://github.com/symfony/messenger/tree/v6.3.4" }, "funding": [ { @@ -3802,20 +3912,20 @@ "type": "tidelift" } ], - "time": "2022-05-11T12:12:29+00:00" + "time": "2023-08-14T14:06:04+00:00" }, { "name": "symfony/polyfill-apcu", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "43273a33c46f9d5a08dac76859f63d6814242e81" + "reference": "c6c2c0f5f4cb0b100c5dfea807ef5cd27bbe9899" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/43273a33c46f9d5a08dac76859f63d6814242e81", - "reference": "43273a33c46f9d5a08dac76859f63d6814242e81", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/c6c2c0f5f4cb0b100c5dfea807ef5cd27bbe9899", + "reference": "c6c2c0f5f4cb0b100c5dfea807ef5cd27bbe9899", "shasum": "" }, "require": { @@ -3824,7 +3934,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3863,7 +3973,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-apcu/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-apcu/tree/v1.28.0" }, "funding": [ { @@ -3879,20 +3989,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -3907,7 +4017,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3945,7 +4055,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -3961,20 +4071,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -3986,7 +4096,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4026,7 +4136,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -4042,20 +4152,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d", + "reference": "ecaafce9f77234a6a449d29e49267ba10499116d", "shasum": "" }, "require": { @@ -4069,7 +4179,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4113,7 +4223,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.0" }, "funding": [ { @@ -4129,20 +4239,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:30:37+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -4154,7 +4264,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4197,7 +4307,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -4213,20 +4323,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -4241,7 +4351,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4280,7 +4390,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -4296,20 +4406,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179", + "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179", "shasum": "" }, "require": { @@ -4318,7 +4428,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4356,7 +4466,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0" }, "funding": [ { @@ -4372,20 +4482,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5", + "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5", "shasum": "" }, "require": { @@ -4394,7 +4504,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4439,7 +4549,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0" }, "funding": [ { @@ -4455,29 +4565,30 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.26.0", + "name": "symfony/polyfill-php83", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4489,7 +4600,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, "classmap": [ "Resources/stubs" @@ -4509,7 +4620,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -4518,7 +4629,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" }, "funding": [ { @@ -4534,46 +4645,41 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2023-08-16T06:22:46+00:00" }, { "name": "symfony/routing", - "version": "v6.1.1", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8f068b792e515b25e26855ac8dc7fe800399f3e5" + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8f068b792e515b25e26855ac8dc7fe800399f3e5", - "reference": "8f068b792e515b25e26855ac8dc7fe800399f3e5", + "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a", + "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", - "symfony/config": "<5.4", + "symfony/config": "<6.2", "symfony/dependency-injection": "<5.4", "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", + "symfony/config": "^6.2", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-foundation": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" - }, "type": "library", "autoload": { "psr-4": { @@ -4606,7 +4712,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.1.1" + "source": "https://github.com/symfony/routing/tree/v6.3.3" }, "funding": [ { @@ -4622,37 +4728,33 @@ "type": "tidelift" } ], - "time": "2022-06-08T12:21:15+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c" + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c", - "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1", + "psr/container": "^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4662,7 +4764,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4689,7 +4794,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" }, "funding": [ { @@ -4705,20 +4810,20 @@ "type": "tidelift" } ], - "time": "2022-03-13T20:07:29+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/string", - "version": "v6.1.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "d3edc75baf9f1d4f94879764dda2e1ac33499529" + "reference": "53d1a83225002635bca3482fcbf963001313fb68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/d3edc75baf9f1d4f94879764dda2e1ac33499529", - "reference": "d3edc75baf9f1d4f94879764dda2e1ac33499529", + "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", + "reference": "53d1a83225002635bca3482fcbf963001313fb68", "shasum": "" }, "require": { @@ -4729,12 +4834,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/intl": "^6.2", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -4774,7 +4880,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.1.0" + "source": "https://github.com/symfony/string/tree/v6.3.2" }, "funding": [ { @@ -4790,32 +4896,29 @@ "type": "tidelift" } ], - "time": "2022-04-22T08:18:23+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.1.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "bfddd2a1faa271b782b791c361cc16e2dd49dfaa" + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/bfddd2a1faa271b782b791c361cc16e2dd49dfaa", - "reference": "bfddd2a1faa271b782b791c361cc16e2dd49dfaa", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86", + "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86", "shasum": "" }, "require": { "php": ">=8.1" }, - "suggest": { - "symfony/translation-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.1-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4855,7 +4958,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.1.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0" }, "funding": [ { @@ -4871,52 +4974,55 @@ "type": "tidelift" } ], - "time": "2022-04-22T07:30:54+00:00" + "time": "2023-05-30T17:17:10+00:00" }, { "name": "symfony/twig-bridge", - "version": "v6.1.0", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "53ce2d7811500c0f0f94af700307ff5b1e305d3c" + "reference": "6f8435db76a2d79917489a19a82679276c1b4e32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/53ce2d7811500c0f0f94af700307ff5b1e305d3c", - "reference": "53ce2d7811500c0f0f94af700307ff5b1e305d3c", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/6f8435db76a2d79917489a19a82679276c1b4e32", + "reference": "6f8435db76a2d79917489a19a82679276c1b4e32", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/translation-contracts": "^2.5|^3", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", "symfony/console": "<5.4", - "symfony/form": "<6.1", + "symfony/form": "<6.3", "symfony/http-foundation": "<5.4", - "symfony/http-kernel": "<5.4", + "symfony/http-kernel": "<6.2", + "symfony/mime": "<6.2", "symfony/translation": "<5.4", "symfony/workflow": "<5.4" }, "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", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/asset": "^5.4|^6.0", + "symfony/asset-mapper": "^6.3", "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/form": "^6.1", + "symfony/form": "^6.3", "symfony/html-sanitizer": "^6.1", "symfony/http-foundation": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", + "symfony/http-kernel": "^6.2", "symfony/intl": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", + "symfony/mime": "^6.2", "symfony/polyfill-intl-icu": "~1.0", "symfony/property-info": "^5.4|^6.0", "symfony/routing": "^5.4|^6.0", @@ -4924,9 +5030,9 @@ "symfony/security-core": "^5.4|^6.0", "symfony/security-csrf": "^5.4|^6.0", "symfony/security-http": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0", + "symfony/serializer": "^6.2", "symfony/stopwatch": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", + "symfony/translation": "^6.1", "symfony/web-link": "^5.4|^6.0", "symfony/workflow": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0", @@ -4934,23 +5040,6 @@ "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" }, - "suggest": { - "symfony/asset": "For using the AssetExtension", - "symfony/expression-language": "For using the ExpressionExtension", - "symfony/finder": "", - "symfony/form": "For using the FormExtension", - "symfony/html-sanitizer": "For using the HtmlSanitizerExtension", - "symfony/http-kernel": "For using the HttpKernelExtension", - "symfony/routing": "For using the RoutingExtension", - "symfony/security-core": "For using the SecurityExtension", - "symfony/security-csrf": "For using the CsrfExtension", - "symfony/security-http": "For using the LogoutUrlExtension", - "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/translation": "For using the TranslationExtension", - "symfony/var-dumper": "For using the DumpExtension", - "symfony/web-link": "For using the WebLinkExtension", - "symfony/yaml": "For using the YamlExtension" - }, "type": "symfony-bridge", "autoload": { "psr-4": { @@ -4977,7 +5066,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.1.0" + "source": "https://github.com/symfony/twig-bridge/tree/v6.3.2" }, "funding": [ { @@ -4993,31 +5082,30 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:34:40+00:00" + "time": "2023-07-20T16:42:33+00:00" }, { "name": "symfony/twig-bundle", - "version": "v6.1.1", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "a2abab10068525a7f5a879e40e411d369d688545" + "reference": "d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a2abab10068525a7f5a879e40e411d369d688545", - "reference": "a2abab10068525a7f5a879e40e411d369d688545", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea", + "reference": "d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "php": ">=8.1", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", + "symfony/config": "^6.1", + "symfony/dependency-injection": "^6.1", "symfony/http-foundation": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/twig-bridge": "^5.4|^6.0", + "symfony/http-kernel": "^6.2", + "symfony/twig-bridge": "^6.3", "twig/twig": "^2.13|^3.0.4" }, "conflict": { @@ -5025,7 +5113,7 @@ "symfony/translation": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.10.4|^2", "symfony/asset": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", @@ -5063,7 +5151,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/v6.1.1" + "source": "https://github.com/symfony/twig-bundle/tree/v6.3.0" }, "funding": [ { @@ -5079,33 +5167,33 @@ "type": "tidelift" } ], - "time": "2022-05-27T16:55:36+00:00" + "time": "2023-05-06T09:53:41+00:00" }, { "name": "symfony/validator", - "version": "v6.1.1", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "b2ae30b952165080e810c3a118b230184cb97db0" + "reference": "0c8435154920b9bbe93bece675234c244cadf73b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/b2ae30b952165080e810c3a118b230184cb97db0", - "reference": "b2ae30b952165080e810c3a118b230184cb97db0", + "url": "https://api.github.com/repos/symfony/validator/zipball/0c8435154920b9bbe93bece675234c244cadf73b", + "reference": "0c8435154920b9bbe93bece675234c244cadf73b", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1|^2|^3" + "symfony/polyfill-php83": "^1.27", + "symfony/translation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.13", "doctrine/lexer": "<1.1", - "phpunit/phpunit": "<5.4.3", "symfony/dependency-injection": "<5.4", "symfony/expression-language": "<5.4", "symfony/http-kernel": "<5.4", @@ -5115,8 +5203,8 @@ "symfony/yaml": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.13", - "egulias/email-validator": "^2.1.10|^3", + "doctrine/annotations": "^1.13|^2", + "egulias/email-validator": "^2.1.10|^3|^4", "symfony/cache": "^5.4|^6.0", "symfony/config": "^5.4|^6.0", "symfony/console": "^5.4|^6.0", @@ -5133,18 +5221,6 @@ "symfony/translation": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" - }, "type": "library", "autoload": { "psr-4": { @@ -5171,7 +5247,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.1.1" + "source": "https://github.com/symfony/validator/tree/v6.3.4" }, "funding": [ { @@ -5187,42 +5263,38 @@ "type": "tidelift" } ], - "time": "2022-06-09T12:51:38+00:00" + "time": "2023-08-17T15:49:05+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.1.0", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "98587d939cb783aa04e828e8fa857edaca24c212" + "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/98587d939cb783aa04e828e8fa857edaca24c212", - "reference": "98587d939cb783aa04e828e8fa857edaca24c212", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45", + "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", "symfony/console": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", "symfony/process": "^5.4|^6.0", "symfony/uid": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, "bin": [ "Resources/bin/var-dump-server" ], @@ -5259,7 +5331,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.1.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.4" }, "funding": [ { @@ -5275,20 +5347,20 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:34:40+00:00" + "time": "2023-08-24T14:51:05+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.1.1", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "ce1452317b1210ddfe18d143fa8a09c18f034b89" + "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/ce1452317b1210ddfe18d143fa8a09c18f034b89", - "reference": "ce1452317b1210ddfe18d143fa8a09c18f034b89", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df1f8aac5751871b83d30bf3e2c355770f8f0691", + "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691", "shasum": "" }, "require": { @@ -5328,10 +5400,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.1.1" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.4" }, "funding": [ { @@ -5347,24 +5421,25 @@ "type": "tidelift" } ], - "time": "2022-05-27T12:58:07+00:00" + "time": "2023-08-16T18:14:47+00:00" }, { "name": "symfony/yaml", - "version": "v6.1.0", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "84ce4f9d2d68f306f971a39d949d8f4b5550dba2" + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/84ce4f9d2d68f306f971a39d949d8f4b5550dba2", - "reference": "84ce4f9d2d68f306f971a39d949d8f4b5550dba2", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", + "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -5373,9 +5448,6 @@ "require-dev": { "symfony/console": "^5.4|^6.0" }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, "bin": [ "Resources/bin/yaml-lint" ], @@ -5405,7 +5477,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.1.0" + "source": "https://github.com/symfony/yaml/tree/v6.3.3" }, "funding": [ { @@ -5421,20 +5493,20 @@ "type": "tidelift" } ], - "time": "2022-04-15T14:25:02+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { "name": "twig/twig", - "version": "v3.4.1", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342" + "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/e939eae92386b69b49cfa4599dd9bead6bf4a342", - "reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", + "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", "shasum": "" }, "require": { @@ -5443,15 +5515,10 @@ "symfony/polyfill-mbstring": "^1.3" }, "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" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4-dev" - } - }, "autoload": { "psr-4": { "Twig\\": "src/" @@ -5485,7 +5552,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.4.1" + "source": "https://github.com/twigphp/Twig/tree/v3.7.1" }, "funding": [ { @@ -5497,7 +5564,7 @@ "type": "tidelift" } ], - "time": "2022-05-17T05:48:52+00:00" + "time": "2023-08-28T11:09:02+00:00" } ], "packages-dev": [ @@ -5669,16 +5736,16 @@ }, { "name": "behat/behat", - "version": "v3.10.0", + "version": "v3.13.0", "source": { "type": "git", "url": "https://github.com/Behat/Behat.git", - "reference": "a55661154079cf881ef643b303bfaf67bae3a09f" + "reference": "9dd7cdb309e464ddeab095cd1a5151c2dccba4ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/a55661154079cf881ef643b303bfaf67bae3a09f", - "reference": "a55661154079cf881ef643b303bfaf67bae3a09f", + "url": "https://api.github.com/repos/Behat/Behat/zipball/9dd7cdb309e464ddeab095cd1a5151c2dccba4ab", + "reference": "9dd7cdb309e464ddeab095cd1a5151c2dccba4ab", "shasum": "" }, "require": { @@ -5686,7 +5753,7 @@ "behat/transliterator": "^1.2", "ext-mbstring": "*", "php": "^7.2 || ^8.0", - "psr/container": "^1.0", + "psr/container": "^1.0 || ^2.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", @@ -5695,8 +5762,8 @@ "symfony/yaml": "^4.4 || ^5.0 || ^6.0" }, "require-dev": { - "container-interop/container-interop": "^1.2", "herrera-io/box": "~1.6.1", + "phpspec/prophecy": "^1.15", "phpunit/phpunit": "^8.5 || ^9.0", "symfony/process": "^4.4 || ^5.0 || ^6.0", "vimeo/psalm": "^4.8" @@ -5750,9 +5817,9 @@ ], "support": { "issues": "https://github.com/Behat/Behat/issues", - "source": "https://github.com/Behat/Behat/tree/v3.10.0" + "source": "https://github.com/Behat/Behat/tree/v3.13.0" }, - "time": "2021-11-02T20:09:40+00:00" + "time": "2023-04-18T15:40:53+00:00" }, { "name": "behat/gherkin", @@ -5995,91 +6062,18 @@ }, "time": "2022-03-30T09:27:43+00:00" }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.5", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "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.5" - }, - "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": "2022-01-17T14:14:24+00:00" - }, { "name": "composer/pcre", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", "shasum": "" }, "require": { @@ -6121,7 +6115,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.0.0" + "source": "https://github.com/composer/pcre/tree/3.1.0" }, "funding": [ { @@ -6137,20 +6131,20 @@ "type": "tidelift" } ], - "time": "2022-02-25T20:21:48+00:00" + "time": "2022-11-17T09:50:14+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -6200,9 +6194,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -6218,7 +6212,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -6323,94 +6317,22 @@ }, "time": "2019-12-04T15:06:13+00:00" }, - { - "name": "doctrine/annotations", - "version": "1.13.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "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" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" - }, - "time": "2021-08-05T19:00:23+00:00" - }, { "name": "fakerphp/faker", - "version": "v1.19.0", + "version": "v1.23.0", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75" + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75", - "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", + "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", + "php": "^7.4 || ^8.0", "psr/container": "^1.0 || ^2.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" }, @@ -6421,7 +6343,8 @@ "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", @@ -6433,7 +6356,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "v1.19-dev" + "dev-main": "v1.21-dev" } }, "autoload": { @@ -6458,9 +6381,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0" + "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0" }, - "time": "2022-02-02T17:38:57+00:00" + "time": "2023-06-12T08:44:38+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -6563,6 +6486,67 @@ }, "time": "2022-03-02T22:36:06+00:00" }, + { + "name": "fidry/cpu-core-counter", + "version": "0.5.1", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^9.5.26 || ^8.5.31", + "theofidry/php-cs-fixer-config": "^1.0", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2022-12-24T12:35:10+00:00" + }, { "name": "friends-of-behat/mink-extension", "version": "v2.6.1", @@ -6697,95 +6681,6 @@ }, "time": "2021-12-24T13:14:59+00:00" }, - { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.8.0", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", - "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3", - "shasum": "" - }, - "require": { - "composer/semver": "^3.2", - "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^1.13", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^7.4 || ^8.0", - "php-cs-fixer/diff": "^2.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.23", - "symfony/polyfill-php80": "^1.25", - "symfony/polyfill-php81": "^1.25", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" - }, - "require-dev": { - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^1.5", - "mikey179/vfsstream": "^1.6.10", - "php-coveralls/php-coveralls": "^2.5.2", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.15", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "symfony/phpunit-bridge": "^6.0", - "symfony/yaml": "^5.4 || ^6.0" - }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." - }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", - "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - } - }, - "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/v3.8.0" - }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" - } - ], - "time": "2022-03-18T17:20:59+00:00" - }, { "name": "hamcrest/hamcrest-php", "version": "v2.0.1", @@ -6839,26 +6734,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": { @@ -6902,44 +6795,46 @@ ], "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": "mockery/mockery", - "version": "1.5.0", + "version": "1.6.6", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.10", + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^4.30" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -6950,12 +6845,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -6973,23 +6876,26 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-01-20T13:18:17+00:00" + "time": "2023-08-09T00:03:52+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -7027,7 +6933,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -7035,20 +6941,20 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.0.0", + "version": "v4.2.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", "shasum": "" }, "require": { @@ -7084,22 +6990,22 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" }, - "time": "2020-12-01T19:48:11+00:00" + "time": "2023-04-09T17:37:40+00:00" }, { "name": "nikic/php-parser", - "version": "v4.14.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -7140,98 +7046,45 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2022-05-31T20:59:12+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { - "name": "openlss/lib-array2xml", - "version": "1.0.0", + "name": "phar-io/manifest", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/nullivex/lib-array2xml.git", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" + "url": "https://github.com/phar-io/manifest.git", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { - "php": ">=5.3.2" + "ext-dom": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", - "autoload": { - "psr-0": { - "LSS": "" + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Bryan Tong", - "email": "bryan@nullivex.com", - "homepage": "https://www.nullivex.com" - }, - { - "name": "Tony Butler", - "email": "spudz76@gmail.com", - "homepage": "https://www.nullivex.com" - } - ], - "description": "Array2XML conversion library credit to lalit.org", - "homepage": "https://www.nullivex.com", - "keywords": [ - "array", - "array conversion", - "xml", - "xml conversion" - ], - "support": { - "issues": "https://github.com/nullivex/lib-array2xml/issues", - "source": "https://github.com/nullivex/lib-array2xml/tree/master" - }, - "time": "2019-03-29T20:06:56+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" + "BSD-3-Clause" ], "authors": [ { @@ -7308,58 +7161,6 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "php-cs-fixer/diff", - "version": "v2.0.2", - "source": { - "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/29dc0d507e838c4580d018bd8b5cb412474f7ec3", - "reference": "29dc0d507e838c4580d018bd8b5cb412474f7ec3", - "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" - } - ], - "description": "sebastian/diff v3 backport support for PHP 5.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/v2.0.2" - }, - "time": "2020-10-14T08:32:19+00:00" - }, { "name": "phpdocumentor/reflection-common", "version": "2.2.0", @@ -7472,25 +7273,33 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.1", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" + "doctrine/deprecations": "^1.0", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.13" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "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": { @@ -7516,96 +7325,138 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2022-03-15T21:29:03+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { - "name": "phpspec/prophecy", - "version": "v1.15.0", + "name": "phpstan/phpdoc-parser", + "version": "1.24.2", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "bcad8d995980440892759db0c32acae7c8e79442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", + "reference": "bcad8d995980440892759db0c32acae7c8e79442", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "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", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "Prophecy\\": "src/Prophecy" + "PHPStan\\PhpDocParser\\": [ + "src/" + ] } }, "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": "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.24.2" + }, + "time": "2023-09-26T12:28:12+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "1.10.35", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e730e5facb75ffe09dfb229795e8c01a459f26c3", + "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" + "dev", + "static analysis" ], "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" }, - "time": "2021-12-08T12:19:24+00:00" + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2023-09-19T15:27:56+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "9.2.29", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.15", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -7620,8 +7471,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": { @@ -7654,7 +7505,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" }, "funding": [ { @@ -7662,7 +7514,7 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2023-09-19T04:57:46+00:00" }, { "name": "phpunit/php-file-iterator", @@ -7907,20 +7759,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.20", + "version": "9.6.13", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be", + "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -7931,31 +7783,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.13", + "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": "^3.0", + "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" @@ -7963,7 +7810,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -7994,7 +7841,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13" }, "funding": [ { @@ -8004,9 +7852,69 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-04-01T12:37:26+00:00" + "time": "2023-09-19T05:39:22+00:00" + }, + { + "name": "rector/rector", + "version": "0.18.4", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "d99a91176b7eb7f2b6d509a6486b3661c6dfd370" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/d99a91176b7eb7f2b6d509a6486b3661c6dfd370", + "reference": "d99a91176b7eb7f2b6d509a6486b3661c6dfd370", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.10.31" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/0.18.4" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2023-09-25T17:07:54+00:00" }, { "name": "roave/security-advisories", @@ -8014,20 +7922,23 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "bf362097fbfe4580b99b696dd8208b24ffd112b2" + "reference": "7818a0d2a1d8c7eb6dcd2d0bcdc7f1e3e3caafe3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/bf362097fbfe4580b99b696dd8208b24ffd112b2", - "reference": "bf362097fbfe4580b99b696dd8208b24ffd112b2", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7818a0d2a1d8c7eb6dcd2d0bcdc7f1e3e3caafe3", + "reference": "7818a0d2a1d8c7eb6dcd2d0bcdc7f1e3e3caafe3", "shasum": "" }, "conflict": { "3f/pygmentize": "<1.2", - "admidio/admidio": "<4.1.9", + "admidio/admidio": "<4.2.11", "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", + "aheinze/cockpit": "<2.2", + "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", "akaunting/akaunting": "<2.1.13", - "alextselegidis/easyappointments": "<=1.4.3", + "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", + "alextselegidis/easyappointments": "<1.5", "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", "amazing/media2click": ">=1,<1.3.3", "amphp/artax": "<1.0.6|>=2,<2.0.6", @@ -8035,17 +7946,34 @@ "amphp/http-client": ">=4,<4.4", "anchorcms/anchor-cms": "<=0.12.7", "andreapollastri/cipi": "<=3.1.15", - "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6", - "appwrite/server-ce": "<0.11.1|>=0.12,<0.12.2", + "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", + "apache-solr-for-typo3/solr": "<2.8.3", + "apereo/phpcas": "<1.6", + "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", + "appwrite/server-ce": "<=1.2.1", + "arc/web": "<3", "area17/twill": "<1.2.5|>=2,<2.5.3", - "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", + "artesaos/seotools": "<0.17.2", + "asymmetricrypt/asymmetricrypt": "<9.9.99", + "athlon1600/php-proxy": "<=5.1", + "athlon1600/php-proxy-app": "<=3", + "austintoddj/canvas": "<=3.4.2", + "automad/automad": "<1.8", + "awesome-support/awesome-support": "<=6.0.7", "aws/aws-sdk-php": ">=3,<3.2.1", + "azuracast/azuracast": "<0.18.3", + "backdrop/backdrop": "<1.24.2", + "backpack/crud": "<3.4.9", + "badaso/core": "<2.7", "bagisto/bagisto": "<0.1.5", "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", "barryvdh/laravel-translation-manager": "<0.6.2", - "baserproject/basercms": "<4.5.4", - "billz/raspap-webgui": "<=2.6.6", + "barzahlen/barzahlen-php": "<2.0.1", + "baserproject/basercms": "<4.7.5", + "bassjobsen/bootstrap-3-typeahead": ">4.0.2", + "bigfork/silverstripe-form-capture": ">=3,<3.1.1", + "billz/raspap-webgui": "<=2.9.2", "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", "bmarshall511/wordpress_zero_spam": "<5.2.13", "bolt/bolt": "<3.7.2", @@ -8053,38 +7981,53 @@ "bottelet/flarepoint": "<2.2.1", "brightlocal/phpwhois": "<=4.2.5", "brotkrueml/codehighlight": "<2.7", + "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", + "brotkrueml/typo3-matomo-integration": "<1.3.2", "buddypress/buddypress": "<7.2.1", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "bugsnag/bugsnag-laravel": "<2.0.2", "bytefury/crater": "<6.0.2", "cachethq/cachet": "<2.5.1", - "cakephp/cakephp": "<3.10.3|>=4,<4.0.6", + "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", "cardgate/magento2": "<2.0.33", + "cardgate/woocommerce": "<=3.1.15", "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", "cartalyst/sentry": "<=2.1.6", "catfan/medoo": "<1.7.5", - "centreon/centreon": "<20.10.7", + "cecil/cecil": "<7.47.1", + "centreon/centreon": "<22.10.0.0-beta1", "cesnet/simplesamlphp-module-proxystatistics": "<3.1", + "chriskacerguis/codeigniter-restserver": "<=2.7.1", + "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", + "cockpit-hq/cockpit": "<=2.6.3", "codeception/codeception": "<3.1.3|>=4,<4.1.22", - "codeigniter/framework": "<=3.0.6", - "codeigniter4/framework": "<4.1.9", + "codeigniter/framework": "<3.1.9", + "codeigniter4/framework": "<4.3.5", + "codeigniter4/shield": "<1.0.0.0-beta4", "codiad/codiad": "<=2.8.4", - "composer/composer": "<1.10.26|>=2-alpha.1,<2.2.12|>=2.3,<2.3.5", - "concrete5/concrete5": "<9", - "concrete5/core": "<8.5.7", + "composer/composer": "<1.10.26|>=2,<2.2.12|>=2.3,<2.3.5", + "concrete5/concrete5": "<9.2", + "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.18|>=4.10,<4.11.7|>=4.13,<4.13.3", + "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", "contao/core": ">=2,<3.5.39", - "contao/core-bundle": "<4.9.18|>=4.10,<4.11.7|>=4.13,<4.13.3|= 4.10.0", + "contao/core-bundle": "<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10", "contao/listing-bundle": ">=4,<4.4.8", "contao/managed-edition": "<=1.5", - "craftcms/cms": "<3.7.36", - "croogo/croogo": "<3.0.7", - "cuyz/valinor": ">=0.5,<0.7", + "cosenary/instagram": "<=2.3", + "craftcms/cms": "<=4.4.14", + "croogo/croogo": "<4", + "cuyz/valinor": "<0.12", "czproject/git-php": "<4.0.3", "darylldoyle/safe-svg": "<1.9.10", "datadog/dd-trace": ">=0.30,<0.30.2", + "datatables/datatables": "<1.10.10", "david-garcia/phpwhois": "<=4.3.1", + "dbrisinajumi/d2files": "<1", + "dcat/laravel-admin": "<=2.1.3.0-beta", + "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", + "desperado/xml-bundle": "<=0.1.7", "directmailteam/direct-mail": "<5.2.4", "doctrine/annotations": ">=1,<1.2.7", "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", @@ -8095,260 +8038,362 @@ "doctrine/mongodb-odm": ">=1,<1.0.2", "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "= 12.0.5|<16|>= 3.3.beta1, < 13.0.2", - "dompdf/dompdf": "<1.2.1", - "drupal/core": ">=7,<7.88|>=8,<9.2.13|>=9.3,<9.3.6", - "drupal/drupal": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", + "dolibarr/dolibarr": "<17.0.1", + "dompdf/dompdf": "<2.0.2|==2.0.2", + "drupal/core": "<9.4.14|>=9.5,<9.5.8|>=10,<10.0.8", + "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", "dweeves/magmi": "<=0.7.24", "ecodev/newsletter": "<=4", "ectouch/ectouch": "<=2.7.2", + "elefant/cms": "<2.0.7", "elgg/elgg": "<3.3.24|>=4,<4.0.5", + "encore/laravel-admin": "<=1.8.19", "endroid/qr-code-bundle": "<3.4.2", "enshrined/svg-sanitize": "<0.15", "erusev/parsedown": "<1.7.2", "ether/logs": "<3.0.4", - "ezsystems/demobundle": ">=5.4,<5.4.6.1", + "exceedone/exment": "<4.4.3|>=5,<5.0.3", + "exceedone/laravel-admin": "<2.2.3|==3", + "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", "ezsystems/ez-support-tools": ">=2.2,<2.2.3", - "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1", - "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1|>=5.4,<5.4.11.1|>=2017.12,<2017.12.0.1", + "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", + "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", - "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.27", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26", "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", - "ezsystems/ezplatform-kernel": "<=1.2.5|>=1.3,<1.3.19", + "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", + "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.26", "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", - "ezsystems/ezplatform-richtext": ">=2.3,<=2.3.7", + "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev", "ezsystems/ezplatform-user": ">=1,<1.0.1", - "ezsystems/ezpublish-kernel": "<=6.13.8.1|>=7,<7.5.29", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.3.5.1", + "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.30", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", - "ezsystems/repository-forms": ">=2.3,<2.3.2.1", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<4.1.1", "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2022.8", + "facturascripts/facturascripts": "<=2022.08", "feehi/cms": "<=2.1.1", - "feehi/feehicms": "<=0.1.3", + "feehi/feehicms": "<=2.1.1", "fenom/fenom": "<=2.12.1", "filegator/filegator": "<7.8", - "firebase/php-jwt": "<2", - "flarum/core": ">=1,<=1.0.1", - "flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15", - "flarum/tags": "<=0.1-beta.13", + "firebase/php-jwt": "<6", + "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", + "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", + "flarum/core": "<1.8", + "flarum/framework": "<1.8", + "flarum/mentions": "<1.6.3", + "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", + "flarum/tags": "<=0.1.0.0-beta13", "fluidtypo3/vhs": "<5.1.1", + "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", "fof/upload": "<1.2.3", "fooman/tcpdf": "<6.2.22", "forkcms/forkcms": "<5.11.1", "fossar/tcpdf-parser": "<6.2.22", - "francoisjacquet/rosariosis": "<9", + "francoisjacquet/rosariosis": "<11", + "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", "friendsofsymfony/oauth2-php": "<1.3", "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", - "froala/wysiwyg-editor": "<3.2.7", - "froxlor/froxlor": "<=0.10.22", + "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", + "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.1", + "froxlor/froxlor": "<2.1", "fuel/core": "<1.8.1", + "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", "gaoming13/wechat-php-sdk": "<=1.10.2", "genix/cms": "<=1.1.11", - "getgrav/grav": "<1.7.33", - "getkirby/cms": "<3.5.8", + "getgrav/grav": "<=1.7.42.1", + "getkirby/cms": "<3.5.8.3-dev|>=3.6,<3.6.6.3-dev|>=3.7,<3.7.5.2-dev|>=3.8,<3.8.4.1-dev|>=3.9,<3.9.6", + "getkirby/kirby": "<=2.5.12", "getkirby/panel": "<2.5.14", + "getkirby/starterkit": "<=3.7.0.2", "gilacms/gila": "<=1.11.4", + "gleez/cms": "<=1.2|==2", "globalpayments/php-sdk": "<2", + "gogentooss/samlbase": "<1.2.7", "google/protobuf": "<3.15", "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", - "gree/jose": "<=2.2", + "gree/jose": "<2.2.1", "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<5.6.5", - "guzzlehttp/guzzle": "<6.5.7|>=7,<7.4.4", - "guzzlehttp/psr7": "<1.8.4|>=2,<2.1.1", - "helloxz/imgurl": "= 2.31|<=2.31", + "grumpydictator/firefly-iii": "<6", + "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", + "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", + "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", + "harvesthq/chosen": "<1.8.7", + "helloxz/imgurl": "<=2.31", + "hhxsv5/laravel-s": "<3.7.36", "hillelcoren/invoice-ninja": "<5.3.35", + "himiklab/yii2-jqgrid-widget": "<1.0.8", "hjue/justwriting": "<=1", "hov/jobfair": "<1.0.13|>=2,<2.0.2", + "httpsoft/http-message": "<1.0.12", "hyn/multi-tenant": ">=5.6,<5.7.2", - "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4", + "ibexa/admin-ui": ">=4.2,<4.2.3", + "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3", + "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", "ibexa/post-install": "<=1.0.4", + "ibexa/user": ">=4,<4.4.3", "icecoder/icecoder": "<=8.1", + "idno/known": "<=1.3.1", "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4", "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", - "impresscms/impresscms": "<=1.4.3", - "in2code/femanager": "<5.5.1|>=6,<6.3.1", - "intelliants/subrion": "<=4.2.1", + "impresscms/impresscms": "<=1.4.5", + "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.1", + "in2code/ipandlanguageredirect": "<5.1.2", + "in2code/lux": "<17.6.1|>=18,<24.0.2", + "innologi/typo3-appointments": "<2.0.6", + "intelliants/subrion": "<4.2.2", + "islandora/islandora": ">=2,<2.4.1", "ivankristianto/phpwhois": "<=4.3", "jackalope/jackalope-doctrine-dbal": "<1.7.4", "james-heinrich/getid3": "<1.9.21", + "james-heinrich/phpthumb": "<1.7.12", + "jasig/phpcas": "<1.3.3", + "jcbrand/converse.js": "<3.3.3", + "joomla/application": "<1.0.13", "joomla/archive": "<1.1.12|>=2,<2.0.1", "joomla/filesystem": "<1.6.2|>=2,<2.0.1", "joomla/filter": "<1.4.4|>=2,<2.0.1", + "joomla/framework": ">=2.5.4,<=3.8.12", "joomla/input": ">=2,<2.0.2", + "joomla/joomla-cms": "<3.9.12", "joomla/session": "<1.3.1", + "joyqi/hyper-down": "<=2.4.27", "jsdecena/laracom": "<2.0.9", "jsmitty12/phpwhois": "<5.1", "kazist/phpwhois": "<=4.2.6", + "kelvinmo/simplexrd": "<3.1.1", "kevinpapst/kimai2": "<1.16.7", - "kitodo/presentation": "<3.1.2", + "khodakhah/nodcms": "<=3", + "kimai/kimai": "<1.1", + "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", "klaviyo/magento2-extension": ">=1,<3", + "knplabs/knp-snappy": "<=1.4.2", + "kohana/core": "<3.3.3", + "krayin/laravel-crm": "<1.2.2", "kreait/firebase-php": ">=3.2,<3.8.1", "la-haute-societe/tcpdf": "<6.2.22", + "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", "laminas/laminas-http": "<2.14.2", "laravel/fortify": "<1.11.1", - "laravel/framework": "<6.20.42|>=7,<7.30.6|>=8,<8.75", - "laravel/laravel": "<=9.1.8", + "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", "latte/latte": "<2.10.8", - "lavalite/cms": "<=5.8", + "lavalite/cms": "<=9", "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", "league/commonmark": "<0.18.3", "league/flysystem": "<1.1.4|>=2,<2.1.1", + "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", - "librenms/librenms": "<22.4", + "librenms/librenms": "<2017.08.18", + "liftkit/database": "<2.13.2", "limesurvey/limesurvey": "<3.27.19", "livehelperchat/livehelperchat": "<=3.91", "livewire/livewire": ">2.2.4,<2.2.6", "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", "luyadev/yii-helpers": "<1.2.1", - "magento/community-edition": ">=2,<2.2.10|>=2.3,<2.3.3", - "magento/magento1ce": "<1.9.4.3", - "magento/magento1ee": ">=1,<1.14.4.3", - "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2-p.2", + "magento/community-edition": "<=2.4", + "magento/magento1ce": "<1.9.4.3-dev", + "magento/magento1ee": ">=1,<1.14.4.3-dev", + "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2", + "maikuolan/phpmussel": ">=1,<1.6", + "mantisbt/mantisbt": "<=2.25.5", "marcwillmann/turn": "<0.3.3", "matyhtf/framework": "<3.0.6", - "mautic/core": "<4.3|= 2.13.1", + "mautic/core": "<4.3", "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35", - "microweber/microweber": "<1.3", + "mediawiki/matomo": "<2.4.3", + "melisplatform/melis-asset-manager": "<5.0.1", + "melisplatform/melis-cms": "<5.0.1", + "melisplatform/melis-front": "<5.0.1", + "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", + "mgallegos/laravel-jqgrid": "<=1.3", + "microweber/microweber": "<=1.3.4", "miniorange/miniorange-saml": "<1.4.3", "mittwald/typo3_forum": "<1.2.1", - "modx/revolution": "<= 2.8.3-pl|<2.8", + "mobiledetect/mobiledetectlib": "<2.8.32", + "modx/revolution": "<=2.8.3.0-patch", "mojo42/jirafeau": "<4.4", + "mongodb/mongodb": ">=1,<1.9.2", "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.0.1", + "moodle/moodle": "<4.2.0.0-RC2-dev|==4.2", + "movim/moxl": ">=0.8,<=0.10", + "mpdf/mpdf": "<=7.1.7", "mustache/mustache": ">=2,<2.14.1", "namshi/jose": "<2.2", "neoan3-apps/template": "<1.1.1", - "neorazorx/facturascripts": "<2022.4", + "neorazorx/facturascripts": "<2022.04", "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", + "neos/neos-ui": "<=8.3.3", "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", - "nilsteampassnet/teampass": "<=2.1.27.36", + "nilsteampassnet/teampass": "<3.0.10", + "notrinos/notrinos-erp": "<=0.7", "noumo/easyii": "<=0.9", - "nukeviet/nukeviet": "<4.3.4", + "nukeviet/nukeviet": "<4.5.02", + "nyholm/psr7": "<1.6.1", "nystudio107/craft-seomatic": "<3.4.12", "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", "october/backend": "<1.1.2", - "october/cms": "= 1.1.1|= 1.0.471|= 1.0.469|>=1.0.319,<1.0.469", - "october/october": ">=1.0.319,<1.0.466|>=2.1,<2.1.12", + "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", + "october/october": "<=3.4.4", "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<1.0.475|>=1.1,<1.1.11|>=2,<2.1.27", + "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66", "onelogin/php-saml": "<2.10.4", "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5", "open-web-analytics/open-web-analytics": "<1.7.4", - "opencart/opencart": "<=3.0.3.2", + "opencart/opencart": "<=3.0.3.7", "openid/php-openid": "<2.3", - "openmage/magento-lts": "<19.4.15|>=20,<20.0.13", - "orchid/platform": ">=9,<9.4.4", + "openmage/magento-lts": "<=19.5|>=20,<=20.1", + "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", + "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5", + "oro/commerce": ">=4.1,<5.0.6", "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<4.2.8", + "oxid-esales/oxideshop-ce": "<4.5", + "packbackbooks/lti-1-3-php-library": "<5", "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": ">=0,<3", + "pagarme/pagarme-php": "<3", "pagekit/pagekit": "<=1.0.18", "paragonie/random_compat": "<2", "passbolt/passbolt_api": "<2.11", "paypal/merchant-sdk-php": "<3.12", "pear/archive_tar": "<1.4.14", "pear/crypt_gpg": "<1.6.7", + "pear/pear": "<=1.10.1", "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", "personnummer/personnummer": "<3.0.2", "phanan/koel": "<5.1.4", + "php-mod/curl": "<2.3.2", + "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", - "phpmyadmin/phpmyadmin": "<5.1.3", + "phpmyadmin/phpmyadmin": "<5.2.1", + "phpmyfaq/phpmyfaq": "<=3.1.7", "phpoffice/phpexcel": "<1.8", "phpoffice/phpspreadsheet": "<1.16", - "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.7", - "phpservermon/phpservermon": "<=3.5.2", + "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.19", + "phpservermon/phpservermon": "<3.6", + "phpsysinfo/phpsysinfo": "<3.2.5", "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3", "phpwhois/phpwhois": "<=4.2.5", "phpxmlrpc/extras": "<0.6.1", + "phpxmlrpc/phpxmlrpc": "<4.9.2", + "pi/pi": "<=2.5", + "pimcore/admin-ui-classic-bundle": "<1.1.2", + "pimcore/customer-management-framework-bundle": "<3.4.2", "pimcore/data-hub": "<1.2.4", - "pimcore/pimcore": "<10.4", + "pimcore/perspective-editor": "<1.5.1", + "pimcore/pimcore": "<10.6.8", + "pixelfed/pixelfed": "<=0.11.4", "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": ">= 4.0.0-BETA5, < 4.4.2|<4.2.10", + "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1", "pressbooks/pressbooks": "<5.18", "prestashop/autoupgrade": ">=4,<4.10.1", - "prestashop/contactform": ">1.0.1,<4.3", + "prestashop/blockwishlist": ">=2,<2.1.1", + "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": ">=1.7,<=1.7.8.2", - "prestashop/productcomments": ">=4,<4.2.1", + "prestashop/prestashop": "<=8.1", + "prestashop/productcomments": "<5.0.2", "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", "prestashop/ps_linklist": "<3.1", "privatebin/privatebin": "<1.4", - "propel/propel": ">=2-alpha.1,<=2-alpha.7", + "processwire/processwire": "<=3.0.200", + "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", "pterodactyl/panel": "<1.7", + "ptheofan/yii2-statemachine": ">=2", "ptrofimov/beanstalk_console": "<1.7.14", "pusher/pusher-php-server": "<2.2.1", - "pwweb/laravel-core": "<=0.3.6-beta", + "pwweb/laravel-core": "<=0.3.6.0-beta", + "pyrocms/pyrocms": "<=3.9.1", "rainlab/debugbar-plugin": "<3.1", + "rainlab/user-plugin": "<=1.4.5", + "rankmath/seo-by-rank-math": "<=1.0.95", + "rap2hpoutre/laravel-log-viewer": "<0.13", + "react/http": ">=0.7,<1.9", + "really-simple-plugins/complianz-gdpr": "<6.4.2", "remdex/livehelperchat": "<3.99", "rmccue/requests": ">=1.6,<1.8", "robrichards/xmlseclibs": "<3.0.4", + "roots/soil": "<4.1", "rudloff/alltube": "<3.0.3", "s-cart/core": "<6.9", "s-cart/s-cart": "<6.9", "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", - "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", - "scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11", + "sabre/dav": "<1.7.11|>=1.8,<1.8.9", + "scheb/two-factor-bundle": "<3.26|>=4,<4.11", "sensiolabs/connect": "<4.2.3", "serluck/phpwhois": "<=4.2.6", - "shopware/core": "<=6.4.9", - "shopware/platform": "<=6.4.9", + "sfroemken/url_redirect": "<=1.2.1", + "sheng/yiicms": "<=1.2", + "shopware/core": "<=6.4.20", + "shopware/platform": "<=6.4.20", "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<5.7.9", + "shopware/shopware": "<=5.7.17", "shopware/storefront": "<=6.4.8.1", "shopxo/shopxo": "<2.2.6", "showdoc/showdoc": "<2.10.4", - "silverstripe/admin": ">=1,<1.8.1", - "silverstripe/assets": ">=1,<1.4.7|>=1.5,<1.5.2", - "silverstripe/cms": "<4.3.6|>=4.4,<4.4.4", + "silverstripe-australia/advancedreports": ">=1,<=2", + "silverstripe/admin": "<1.13.6", + "silverstripe/assets": ">=1,<1.11.1", + "silverstripe/cms": "<4.11.3", "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<4.10.1", - "silverstripe/graphql": "<3.5.2|>=4-alpha.1,<4-alpha.2|= 4.0.0-alpha1", + "silverstripe/framework": "<4.13.14|>=5,<5.0.13", + "silverstripe/graphql": "<3.5.2|>=4.0.0.0-alpha1,<4.0.0.0-alpha2|>=4.1.1,<4.1.2|>=4.2.2,<4.2.3", + "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", + "silverstripe/recipe-cms": ">=4.5,<4.5.3", "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", - "silverstripe/subsites": ">=2,<2.1.1", + "silverstripe/subsites": ">=2,<2.6.1", "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", "silverstripe/userforms": "<3", + "silverstripe/versioned-admin": ">=1,<1.11.1", "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", + "simplesamlphp/saml2": "<1.15.4|>=2,<2.3.8|>=3,<3.1.4", "simplesamlphp/simplesamlphp": "<1.18.6", "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "simplesamlphp/simplesamlphp-module-openid": "<1", + "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", "simplito/elliptic-php": "<1.0.6", + "sitegeist/fluid-components": "<3.5", + "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", + "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", "slim/slim": "<2.6", - "smarty/smarty": "<3.1.45|>=4,<4.1.1", - "snipe/snipe-it": "<5.4.4|>= 6.0.0-RC-1, <= 6.0.0-RC-5", + "slub/slub-events": "<3.0.3", + "smarty/smarty": "<3.1.48|>=4,<4.3.1", + "snipe/snipe-it": "<=6.0.14", "socalnick/scn-social-auth": "<1.15.2", "socialiteproviders/steam": "<1.1", - "spipu/html2pdf": "<5.2.4", + "spatie/browsershot": "<3.57.4", + "spipu/html2pdf": "<5.2.8", + "spoon/library": "<1.4.1", "spoonity/tcpdf": "<6.2.22", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "ssddanbrown/bookstack": "<22.2.3", - "statamic/cms": "<3.2.39|>=3.3,<3.3.2", - "stormpath/sdk": ">=0,<9.9.99", - "studio-42/elfinder": "<2.1.59", - "subrion/cms": "<=4.2.1", - "sulu/sulu": "= 2.4.0-RC1|<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8", + "ssddanbrown/bookstack": "<22.02.3", + "statamic/cms": "<4.10", + "stormpath/sdk": "<9.9.99", + "studio-42/elfinder": "<2.1.62", + "subhh/libconnect": "<7.0.8|>=8,<8.1", + "sukohi/surpass": "<1", + "sulu/sulu": "<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8|==2.4.0.0-RC1|>=2.5,<2.5.10", + "sumocoders/framework-user-bundle": "<1.4", + "swag/paypal": "<5.4.4", "swiftmailer/swiftmailer": ">=4,<5.4.5", "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", @@ -8358,15 +8403,16 @@ "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2", "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", + "symbiote/silverstripe-seed": "<6.0.3", "symbiote/silverstripe-versionedfiles": "<=2.0.3", - "symfont/process": ">=0,<4", + "symfont/process": ">=0", "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3|= 6.0.3|= 5.4.3|= 5.3.14", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3", "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", - "symfony/http-kernel": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5|>=5.2,<5.3.12", + "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", "symfony/mime": ">=4.3,<4.3.8", @@ -8376,74 +8422,103 @@ "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/routing": ">=2,<2.0.19", "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", - "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11|>=5.3,<5.3.12", + "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": ">=2,<3.4.49|>=4,<4.4.35|>=5,<5.3.12|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3", + "symfony/symfony": "<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", "symfony/translation": ">=2,<2.0.17", + "symfony/ux-autocomplete": "<2.11.2", "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", - "t3/dce": ">=2.2,<2.6.2", + "t3/dce": "<0.11.5|>=2.2,<2.6.2", "t3g/svg-sanitizer": "<1.0.3", "tastyigniter/tastyigniter": "<3.3", + "tcg/voyager": "<=1.4", "tecnickcom/tcpdf": "<6.2.22", "terminal42/contao-tablelookupwizard": "<3.3.5", "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1-beta.1,<2.1.3", + "thelia/thelia": ">=2.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", - "tinymce/tinymce": "<5.10", - "titon/framework": ">=0,<9.9.99", - "topthink/framework": "<6.0.12", - "topthink/think": "<=6.0.9", + "thinkcmf/thinkcmf": "<=5.1.7", + "thorsten/phpmyfaq": "<3.2.0.0-beta2", + "tikiwiki/tiki-manager": "<=17.1", + "tinymce/tinymce": "<5.10.7|>=6,<6.3.1", + "tinymighty/wiki-seo": "<1.2.2", + "titon/framework": "<9.9.99", + "tobiasbg/tablepress": "<=2.0.0.0-RC1", + "topthink/framework": "<6.0.14", + "topthink/think": "<=6.1.1", "topthink/thinkphp": "<=3.2.3", - "tribalsystems/zenario": "<9.2.55826", + "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", + "tribalsystems/zenario": "<=9.3.57595", "truckersmp/phpwhois": "<=4.3.1", - "twig/twig": "<1.38|>=2,<2.14.11|>=3,<3.3.8", - "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.29|>=10,<10.4.19|>=11,<11.5", + "ttskch/pagination-service-provider": "<1", + "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", + "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": ">=6.2,<=6.2.56|>=7,<=7.6.52|>=8,<=8.7.41|>=9,<9.5.29|>=10,<10.4.19|>=11,<11.5", + "typo3/cms-core": "<8.7.51|>=9,<9.5.42|>=10,<10.4.39|>=11,<11.5.30|>=12,<12.4.4", + "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", + "typo3/html-sanitizer": ">=1,<1.5.1|>=2,<2.1.2", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", "ua-parser/uap-php": "<3.8", - "unisharp/laravel-filemanager": "<=2.3", + "uasoft-indonesia/badaso": "<=2.9.7", + "unisharp/laravel-filemanager": "<=2.5.1", "userfrosting/userfrosting": ">=0.3.1,<4.6.3", "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", + "uvdesk/community-skeleton": "<=1.1.1", "vanilla/safecurl": "<0.9.2", "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4", + "vova07/yii2-fileapi-widget": "<0.1.9", "vrana/adminer": "<4.8.1", + "waldhacker/hcaptcha": "<2.1.2", "wallabag/tcpdf": "<6.2.22", + "wallabag/wallabag": "<=2.6.2", "wanglelecc/laracms": "<=1.0.3", "web-auth/webauthn-framework": ">=3.3,<3.3.4", + "webbuilders-group/silverstripe-kapost-bridge": "<0.4", "webcoast/deferred-image-processing": "<1.0.2", + "webklex/laravel-imap": "<5.3", + "webklex/php-imap": "<5.3", + "webpa/webpa": "<3.1.2", + "wikibase/wikibase": "<=1.39.3", "wikimedia/parsoid": "<0.12.2", "willdurand/js-translation-bundle": "<2.1.1", + "wintercms/winter": "<1.2.3", + "woocommerce/woocommerce": "<6.6", "wp-cli/wp-cli": "<2.5", - "wp-graphql/wp-graphql": "<0.3.5", + "wp-graphql/wp-graphql": "<=1.14.5", "wpanel/wpanel4-cms": "<=4.3.1", - "wwbn/avideo": "<=11.6", + "wpcloud/wp-stateless": "<3.2", + "wwbn/avideo": "<=12.4", + "xataface/xataface": "<3", + "xpressengine/xpressengine": "<3.0.15", "yeswiki/yeswiki": "<4.1", - "yetiforce/yetiforce-crm": "<6.4", + "yetiforce/yetiforce-crm": "<=6.4", "yidashi/yii2cmf": "<=2", "yii2mod/yii2-cms": "<1.9.2", - "yiisoft/yii": ">=1.1.14,<1.1.15", + "yiisoft/yii": "<1.1.27", "yiisoft/yii2": "<2.0.38", "yiisoft/yii2-bootstrap": "<2.0.4", "yiisoft/yii2-dev": "<2.0.43", "yiisoft/yii2-elasticsearch": "<2.0.5", - "yiisoft/yii2-gii": "<2.0.4", + "yiisoft/yii2-gii": "<=2.2.4", "yiisoft/yii2-jui": "<2.0.4", "yiisoft/yii2-redis": "<2.0.8", + "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", "yoast-seo-for-typo3/yoast_seo": "<7.2.3", "yourls/yourls": "<=1.8.2", + "zencart/zencart": "<=1.5.7.0-beta", "zendesk/zendesk_api_client_php": "<2.2.11", "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", @@ -8464,8 +8539,17 @@ "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", "zendframework/zendframework": "<=3", "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": ">=2,<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", + "zendframework/zendopenid": "<2.0.2", + "zendframework/zendrest": "<2.0.2", + "zendframework/zendservice-amazon": "<2.0.3", + "zendframework/zendservice-api": "<1", + "zendframework/zendservice-audioscrobbler": "<2.0.2", + "zendframework/zendservice-nirvanix": "<2.0.2", + "zendframework/zendservice-slideshare": "<2.0.2", + "zendframework/zendservice-technorati": "<2.0.2", + "zendframework/zendservice-windowsazure": "<2.0.2", + "zendframework/zendxml": "<1.0.1", + "zenstruck/collection": "<0.2.1", "zetacomponents/mail": "<1.8.2", "zf-commons/zfc-user": "<1.2.2", "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", @@ -8490,6 +8574,9 @@ } ], "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", + "keywords": [ + "dev" + ], "support": { "issues": "https://github.com/Roave/SecurityAdvisories/issues", "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" @@ -8504,7 +8591,7 @@ "type": "tidelift" } ], - "time": "2022-06-10T00:15:15+00:00" + "time": "2023-09-27T09:04:28+00:00" }, { "name": "sebastian/cli-parser", @@ -8675,16 +8762,16 @@ }, { "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": { @@ -8737,7 +8824,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": [ { @@ -8745,7 +8832,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -8806,16 +8893,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -8860,7 +8947,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.5" }, "funding": [ { @@ -8868,20 +8955,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+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": { @@ -8923,7 +9010,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": [ { @@ -8931,20 +9018,20 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -9000,7 +9087,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -9008,20 +9095,20 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bde739e7565280bda77be70044ac1047bc007e34" }, "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/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", "shasum": "" }, "require": { @@ -9064,7 +9151,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.6" }, "funding": [ { @@ -9072,7 +9159,7 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-08-02T09:26:13+00:00" }, { "name": "sebastian/lines-of-code", @@ -9245,16 +9332,16 @@ }, { "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": { @@ -9293,10 +9380,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": [ { @@ -9304,7 +9391,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -9363,16 +9450,16 @@ }, { "name": "sebastian/type", - "version": "3.0.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -9384,7 +9471,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -9407,7 +9494,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -9415,7 +9502,7 @@ "type": "github" } ], - "time": "2022-03-15T09:54:48+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -9471,101 +9558,33 @@ "time": "2020-09-28T06:39:44+00:00" }, { - "name": "symfony/browser-kit", - "version": "v6.1.0", + "name": "spatie/array-to-xml", + "version": "3.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "b839cef6e6526bd2090efe92c218d8c7479a51e0" + "url": "https://github.com/spatie/array-to-xml.git", + "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/b839cef6e6526bd2090efe92c218d8c7479a51e0", - "reference": "b839cef6e6526bd2090efe92c218d8c7479a51e0", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f9ab39c808500c347d5a8b6b13310bd5221e39e7", + "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/dom-crawler": "^5.4|^6.0" + "ext-dom": "*", + "php": "^8.0" }, "require-dev": { - "symfony/css-selector": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/mime": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" - }, - "suggest": { - "symfony/process": "" + "mockery/mockery": "^1.2", + "pestphp/pest": "^1.21", + "spatie/pest-plugin-snapshots": "^1.1" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" - }, - "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": "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/v6.1.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" + "Spatie\\ArrayToXml\\": "src" } - ], - "time": "2022-05-06T20:04:05+00:00" - }, - { - "name": "symfony/css-selector", - "version": "v6.1.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "05c40f02f621609404b8820ff8bc39acb46e19cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/05c40f02f621609404b8820ff8bc39acb46e19cf", - "reference": "05c40f02f621609404b8820ff8bc39acb46e19cf", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9573,69 +9592,62 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Freek Van der Herten", + "email": "freek@spatie.be", + "homepage": "https://freek.dev", + "role": "Developer" } ], - "description": "Converts CSS selectors to XPath expressions", - "homepage": "https://symfony.com", + "description": "Convert an array to xml", + "homepage": "https://github.com/spatie/array-to-xml", + "keywords": [ + "array", + "convert", + "xml" + ], "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.1.0" + "source": "https://github.com/spatie/array-to-xml/tree/3.2.0" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://spatie.be/open-source/support-us", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/spatie", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-07-19T18:30:26+00:00" }, { - "name": "symfony/dom-crawler", - "version": "v6.1.0", + "name": "symfony/browser-kit", + "version": "v6.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "baacc99edd169bd8e06723f4c38150ef97feca0f" + "url": "https://github.com/symfony/browser-kit.git", + "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/baacc99edd169bd8e06723f4c38150ef97feca0f", - "reference": "baacc99edd169bd8e06723f4c38150ef97feca0f", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/ca4a988488f61ac18f8f845445eabdd36f89aa8d", + "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d", "shasum": "" }, "require": { - "masterminds/html5": "^2.6", "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "symfony/dom-crawler": "^5.4|^6.0" }, "require-dev": { - "symfony/css-selector": "^5.4|^6.0" - }, - "suggest": { - "symfony/css-selector": "" + "symfony/css-selector": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/mime": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" + "Symfony\\Component\\BrowserKit\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9655,10 +9667,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Eases DOM navigation for HTML and XML documents", + "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/dom-crawler/tree/v6.1.0" + "source": "https://github.com/symfony/browser-kit/tree/v6.3.2" }, "funding": [ { @@ -9674,30 +9686,29 @@ "type": "tidelift" } ], - "time": "2022-05-04T14:48:14+00:00" + "time": "2023-07-06T06:56:43+00:00" }, { - "name": "symfony/options-resolver", - "version": "v6.1.0", + "name": "symfony/css-selector", + "version": "v6.3.2", "source": { "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4" + "url": "https://github.com/symfony/css-selector.git", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a3016f5442e28386ded73c43a32a5b68586dd1c4", - "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57", + "reference": "883d961421ab1709877c10ac99451632a3d6fa57", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" + "Symfony\\Component\\CssSelector\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9712,20 +9723,19 @@ "name": "Fabien Potencier", "email": "fabien@symfony.com" }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides an improved replacement for the array_replace PHP function", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.1.0" + "source": "https://github.com/symfony/css-selector/tree/v6.3.2" }, "funding": [ { @@ -9741,29 +9751,35 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-07-12T16:00:22+00:00" }, { - "name": "symfony/process", - "version": "v6.1.0", + "name": "symfony/dom-crawler", + "version": "v6.3.4", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "318718453c2be58266f1a9e74063d13cb8dd4165" + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/318718453c2be58266f1a9e74063d13cb8dd4165", - "reference": "318718453c2be58266f1a9e74063d13cb8dd4165", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1", + "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1", "shasum": "" }, "require": { - "php": ">=8.1" + "masterminds/html5": "^2.6", + "php": ">=8.1", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "symfony/css-selector": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Component\\DomCrawler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9783,10 +9799,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.1.0" + "source": "https://github.com/symfony/dom-crawler/tree/v6.3.4" }, "funding": [ { @@ -9802,29 +9818,30 @@ "type": "tidelift" } ], - "time": "2022-05-11T12:12:29+00:00" + "time": "2023-08-01T07:43:40+00:00" }, { "name": "symfony/proxy-manager-bridge", - "version": "v6.1.0", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "bcb3e7a28ee373bd64ecd2a2289a64c5860716af" + "reference": "7ba2ac62c88d7c3460d41f04ceba5fc3b9071a39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/bcb3e7a28ee373bd64ecd2a2289a64c5860716af", - "reference": "bcb3e7a28ee373bd64ecd2a2289a64c5860716af", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/7ba2ac62c88d7c3460d41f04ceba5fc3b9071a39", + "reference": "7ba2ac62c88d7c3460d41f04ceba5fc3b9071a39", "shasum": "" }, "require": { "friendsofphp/proxy-manager-lts": "^1.0.2", "php": ">=8.1", - "symfony/dependency-injection": "^5.4|^6.0" + "symfony/dependency-injection": "^6.3", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/config": "^5.4|^6.0" + "symfony/config": "^6.1" }, "type": "symfony-bridge", "autoload": { @@ -9852,7 +9869,7 @@ "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.1.0" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.3.0" }, "funding": [ { @@ -9868,30 +9885,63 @@ "type": "tidelift" } ], - "time": "2022-03-02T13:21:45+00:00" + "time": "2023-05-26T07:49:33+00:00" }, { - "name": "symfony/stopwatch", - "version": "v6.1.0", + "name": "symfony/translation", + "version": "v6.3.3", "source": { "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d" + "url": "https://github.com/symfony/translation.git", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/77dedae82ce2a26e2e9b481855473fc3b3e4e54d", - "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d", + "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/service-contracts": "^1|^2|^3" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^2.5|^3.0" + }, + "conflict": { + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" + }, + "provide": { + "symfony/translation-implementation": "2.3|3.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13", + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/finder": "^5.4|^6.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/intl": "^5.4|^6.0", + "symfony/polyfill-intl-icu": "^1.21", + "symfony/routing": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0" }, "type": "library", "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" + "Symfony\\Component\\Translation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9911,10 +9961,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a way to profile code", + "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.1.0" + "source": "https://github.com/symfony/translation/tree/v6.3.3" }, "funding": [ { @@ -9930,103 +9980,65 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2023-07-31T07:08:24+00:00" }, { - "name": "symfony/translation", - "version": "v6.1.0", + "name": "symplify/easy-coding-standard", + "version": "12.0.8", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "b254416631615bc6fe49b0a67f18658827288147" + "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", + "reference": "99d87d188acc712dd6655ee946569f823cfeff69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/b254416631615bc6fe49b0a67f18658827288147", - "reference": "b254416631615bc6fe49b0a67f18658827288147", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/99d87d188acc712dd6655ee946569f823cfeff69", + "reference": "99d87d188acc712dd6655ee946569f823cfeff69", "shasum": "" }, "require": { - "php": ">=8.1", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.3|^3.0" + "php": ">=7.2" }, "conflict": { - "symfony/config": "<5.4", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/twig-bundle": "<5.4", - "symfony/yaml": "<5.4" - }, - "provide": { - "symfony/translation-implementation": "2.3|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/intl": "^5.4|^6.0", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^5.4|^6.0", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^5.4|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "friendsofphp/php-cs-fixer": "<3.0", + "squizlabs/php_codesniffer": "<3.6", + "symplify/coding-standard": "<11.3" }, + "bin": [ + "bin/ecs" + ], "type": "library", "autoload": { "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "bootstrap.php" ] }, "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": "Use Coding Standard with 0-knowledge of PHP-CS-Fixer and PHP_CodeSniffer", + "keywords": [ + "Code style", + "automation", + "fixer", + "static analysis" ], - "description": "Provides tools to internationalize your application", - "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.1.0" + "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.0.8" }, "funding": [ { - "url": "https://symfony.com/sponsor", + "url": "https://www.paypal.me/rectorphp", "type": "custom" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/tomasvotruba", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2022-05-11T12:12:29+00:00" + "time": "2023-09-08T10:17:14+00:00" }, { "name": "theseer/tokenizer", @@ -10080,24 +10092,24 @@ }, { "name": "vimeo/psalm", - "version": "4.23.0", + "version": "5.15.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88" + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/f1fe6ff483bf325c803df9f510d09a03fd796f88", - "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352", + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352", "shasum": "" }, "require": { "amphp/amp": "^2.4.2", "amphp/byte-stream": "^1.5", - "composer/package-versions-deprecated": "^1.8.0", + "composer-runtime-api": "^2", "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0", + "composer/xdebug-handler": "^2.0 || ^3.0", "dnoegel/php-xdg-base-dir": "^0.1.1", "ext-ctype": "*", "ext-dom": "*", @@ -10106,34 +10118,38 @@ "ext-mbstring": "*", "ext-simplexml": "*", "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.0.3", - "felixfbecker/language-server-protocol": "^1.5", + "felixfbecker/advanced-json-rpc": "^3.1", + "felixfbecker/language-server-protocol": "^1.5.2", + "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.13", - "openlss/lib-array2xml": "^1.0", - "php": "^7.1|^8", - "sebastian/diff": "^3.0 || ^4.0", - "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", - "symfony/polyfill-php80": "^1.25", - "webmozart/path-util": "^2.3" + "nikic/php-parser": "^4.16", + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "sebastian/diff": "^4.0 || ^5.0", + "spatie/array-to-xml": "^2.17.0 || ^3.0", + "symfony/console": "^4.1.6 || ^5.0 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0" + }, + "conflict": { + "nikic/php-parser": "4.17.0" }, "provide": { "psalm/psalm": "self.version" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "brianium/paratest": "^4.0||^6.0", + "amphp/phpunit-util": "^2.0", + "bamarni/composer-bin-plugin": "^1.4", + "brianium/paratest": "^6.9", "ext-curl": "*", + "mockery/mockery": "^1.5", + "nunomaduro/mock-final-classes": "^1.1", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpdocumentor/reflection-docblock": "^5", - "phpmyadmin/sql-parser": "5.1.0||dev-master", - "phpspec/prophecy": ">=1.9.0", - "phpunit/phpunit": "^9.0", - "psalm/plugin-phpunit": "^0.16", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/process": "^4.3 || ^5.0 || ^6.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" + "phpstan/phpdoc-parser": "^1.6", + "phpunit/phpunit": "^9.6", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.6", + "symfony/process": "^4.4 || ^5.0 || ^6.0" }, "suggest": { "ext-curl": "In order to send data to shepherd", @@ -10149,17 +10165,14 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev", + "dev-master": "5.x-dev", + "dev-4.x": "4.x-dev", "dev-3.x": "3.x-dev", "dev-2.x": "2.x-dev", "dev-1.x": "1.x-dev" } }, "autoload": { - "files": [ - "src/functions.php", - "src/spl_object_id.php" - ], "psr-4": { "Psalm\\": "src/Psalm/" } @@ -10177,13 +10190,14 @@ "keywords": [ "code", "inspection", - "php" + "php", + "static analysis" ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.23.0" + "source": "https://github.com/vimeo/psalm/tree/5.15.0" }, - "time": "2022-04-28T17:35:49+00:00" + "time": "2023-08-20T23:07:30+00:00" }, { "name": "webmozart/assert", @@ -10242,57 +10256,6 @@ "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, "time": "2022-06-03T18:03:27+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" - }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" } ], "aliases": [], @@ -10303,7 +10266,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8.1", + "php": "^8.2", "ext-amqp": "*", "ext-apcu": "*", "ext-json": "*", @@ -10313,5 +10276,5 @@ "platform-dev": { "ext-xdebug": "*" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/ecs.php b/ecs.php new file mode 100644 index 000000000..437848d5d --- /dev/null +++ b/ecs.php @@ -0,0 +1,137 @@ +paths([ + __DIR__ . '/apps', + __DIR__ . '/src', + __DIR__ . '/tests', + ]); + + $ecsConfig->sets([SetList::PSR_12]); + + $ecsConfig->rules([ + // Imports + NoUnusedImportsFixer::class, + FullyQualifiedStrictTypesFixer::class, + GlobalNamespaceImportFixer::class, + NoLeadingImportSlashFixer::class, + // Arrays + TrimArraySpacesFixer::class, + // Blank lines + BlankLineAfterStrictTypesFixer::class, + NoBlankLinesAfterClassOpeningFixer::class, + // Spacing + SingleLineEmptyBodyFixer::class, + CastSpacesFixer::class, + TypeDeclarationSpacesFixer::class, + TypesSpacesFixer::class, + // Casing + ClassReferenceNameCasingFixer::class, + LowercaseStaticReferenceFixer::class, + MagicMethodCasingFixer::class, + NativeFunctionCasingFixer::class, + NativeFunctionTypeDeclarationCasingFixer::class, + // Architecture + FinalClassFixer::class, + FinalPublicMethodForAbstractClassFixer::class, + ProtectedToPrivateFixer::class, + VisibilityRequiredFixer::class, + DateTimeImmutableFixer::class, + NoUselessElseFixer::class, + // Operator + AssignNullCoalescingToCoalesceEqualFixer::class, + NoUselessConcatOperatorFixer::class, + NoUselessNullsafeOperatorFixer::class, + ObjectOperatorWithoutWhitespaceFixer::class, + TernaryToElvisOperatorFixer::class, + TernaryToNullCoalescingFixer::class, + // Testing + PhpUnitConstructFixer::class, + PhpUnitDedicateAssertFixer::class, + PhpUnitDedicateAssertInternalTypeFixer::class, + PhpUnitExpectationFixer::class, + // Other + LineLengthFixer::class, + NoNullPropertyInitializationFixer::class, + NoUnneededFinalMethodFixer::class, + SelfAccessorFixer::class, + SelfStaticAccessorFixer::class, + NoUnneededControlParenthesesFixer::class, + NoUnneededCurlyBracesFixer::class, + SimplifiedIfReturnFixer::class, + TrailingCommaInMultilineFixer::class, + DeclareStrictTypesFixer::class, + StrictComparisonFixer::class, + SingleQuoteFixer::class, + StatementIndentationFixer::class, + ]); + + $ecsConfig->ruleWithConfiguration(ArraySyntaxFixer::class, ['syntax' => 'short']); + $ecsConfig->ruleWithConfiguration(LineLengthFixer::class, [LineLengthFixer::LINE_LENGTH => 120]); + $ecsConfig->ruleWithConfiguration(YodaStyleFixer::class, ['equal' => false, 'identical' => false, 'less_and_greater' => false]); + $ecsConfig->ruleWithConfiguration(PhpUnitMethodCasingFixer::class, ['case' => PhpUnitMethodCasingFixer::SNAKE_CASE]); + $ecsConfig->ruleWithConfiguration(OrderedTypesFixer::class, ['null_adjustment' => 'always_last']); + + $ecsConfig->skip([ + FinalClassFixer::class => [ + __DIR__ . '/apps/backoffice/backend/src/BackofficeBackendKernel.php', + __DIR__ . '/apps/backoffice/frontend/src/BackofficeFrontendKernel.php', + __DIR__ . '/apps/mooc/backend/src/MoocBackendKernel.php', + __DIR__ . '/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php', + ] + ]); +}; diff --git a/etc/infrastructure/php/extensions/rabbitmq.sh b/etc/infrastructure/php/extensions/rabbitmq.sh deleted file mode 100644 index 41fc6072f..000000000 --- a/etc/infrastructure/php/extensions/rabbitmq.sh +++ /dev/null @@ -1,6 +0,0 @@ -git clone --depth 1 --branch v1.11.0beta https://github.com/php-amqp/php-amqp.git -cd php-amqp -phpize -./configure -make -make install diff --git a/etc/infrastructure/php/extensions/xdebug.sh b/etc/infrastructure/php/extensions/xdebug.sh deleted file mode 100644 index 99dca7162..000000000 --- a/etc/infrastructure/php/extensions/xdebug.sh +++ /dev/null @@ -1,7 +0,0 @@ -git clone --depth 1 --branch 3.0.4 https://github.com/xdebug/xdebug.git -cd xdebug -git checkout 592ab9fa10cfa132623489511e92ef69fb91744c -phpize -./configure -make -make install diff --git a/psalm.xml b/psalm.xml index 383336980..5eea39ada 100644 --- a/psalm.xml +++ b/psalm.xml @@ -1,10 +1,12 @@ diff --git a/rector.php b/rector.php new file mode 100644 index 000000000..3ae4afdf7 --- /dev/null +++ b/rector.php @@ -0,0 +1,18 @@ +paths([ + __DIR__ . '/apps', + __DIR__ . '/src', + __DIR__ . '/tests', + ]); + + $rectorConfig->sets([ + LevelSetList::UP_TO_PHP_82 + ]); +}; diff --git a/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php b/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php index eced14cb2..e5205d311 100644 --- a/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php +++ b/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php @@ -11,11 +11,9 @@ use CodelyTv\Analytics\DomainEvents\Domain\AnalyticsDomainEventName; use CodelyTv\Analytics\DomainEvents\Domain\DomainEventsRepository; -final class DomainEventStorer +final readonly class DomainEventStorer { - public function __construct(private readonly DomainEventsRepository $repository) - { - } + public function __construct(private DomainEventsRepository $repository) {} public function store( AnalyticsDomainEventId $id, diff --git a/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php b/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php index 0fc8c2806..011a0abe7 100644 --- a/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php +++ b/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php @@ -11,11 +11,9 @@ use CodelyTv\Shared\Domain\Bus\Event\DomainEvent; use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber; -final class StoreDomainEventOnOccurred implements DomainEventSubscriber +final readonly class StoreDomainEventOnOccurred implements DomainEventSubscriber { - public function __construct(private readonly DomainEventStorer $storer) - { - } + public function __construct(private DomainEventStorer $storer) {} public static function subscribedTo(): array { @@ -24,10 +22,10 @@ public static function subscribedTo(): array public function __invoke(DomainEvent $event): void { - $id = new AnalyticsDomainEventId($event->eventId()); + $id = new AnalyticsDomainEventId($event->eventId()); $aggregateId = new AnalyticsDomainEventAggregateId($event->aggregateId()); - $name = new AnalyticsDomainEventName($event::eventName()); - $body = new AnalyticsDomainEventBody($event->toPrimitives()); + $name = new AnalyticsDomainEventName($event::eventName()); + $body = new AnalyticsDomainEventBody($event->toPrimitives()); $this->storer->store($id, $aggregateId, $name, $body); } diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php index 8c7447ef1..0297eb90c 100644 --- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php +++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php @@ -4,13 +4,12 @@ namespace CodelyTv\Analytics\DomainEvents\Domain; -final class AnalyticsDomainEvent +final readonly class AnalyticsDomainEvent { public function __construct( - private readonly AnalyticsDomainEventId $id, - private readonly AnalyticsDomainEventAggregateId $aggregateId, - private readonly AnalyticsDomainEventName $name, - private readonly AnalyticsDomainEventBody $body - ) { - } + private AnalyticsDomainEventId $id, + private AnalyticsDomainEventAggregateId $aggregateId, + private AnalyticsDomainEventName $name, + private AnalyticsDomainEventBody $body + ) {} } diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventAggregateId.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventAggregateId.php index 5b5c66a21..8d1bcdfbf 100644 --- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventAggregateId.php +++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventAggregateId.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\Uuid; -final class AnalyticsDomainEventAggregateId extends Uuid -{ -} +final class AnalyticsDomainEventAggregateId extends Uuid {} diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php index 744dfa75b..1f5b227f1 100644 --- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php +++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php @@ -4,11 +4,9 @@ namespace CodelyTv\Analytics\DomainEvents\Domain; -final class AnalyticsDomainEventBody +final readonly class AnalyticsDomainEventBody { - public function __construct(private readonly array $value) - { - } + public function __construct(private array $value) {} public function value(): array { diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventId.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventId.php index 2e186b375..6cfebcb7a 100644 --- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventId.php +++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventId.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\Uuid; -final class AnalyticsDomainEventId extends Uuid -{ -} +final class AnalyticsDomainEventId extends Uuid {} diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventName.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventName.php index 36f393995..67294de35 100644 --- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventName.php +++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventName.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\StringValueObject; -final class AnalyticsDomainEventName extends StringValueObject -{ -} +final class AnalyticsDomainEventName extends StringValueObject {} diff --git a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php index aef9a81b3..320a2ae48 100644 --- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php +++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php @@ -6,11 +6,9 @@ use CodelyTv\Shared\Domain\Bus\Command\Command; -final class AuthenticateUserCommand implements Command +final readonly class AuthenticateUserCommand implements Command { - public function __construct(private readonly string $username, private readonly string $password) - { - } + public function __construct(private string $username, private string $password) {} public function username(): string { diff --git a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php index 7c7641853..9d4d53c7b 100644 --- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php +++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php @@ -8,11 +8,9 @@ use CodelyTv\Backoffice\Auth\Domain\AuthUsername; use CodelyTv\Shared\Domain\Bus\Command\CommandHandler; -final class AuthenticateUserCommandHandler implements CommandHandler +final readonly class AuthenticateUserCommandHandler implements CommandHandler { - public function __construct(private readonly UserAuthenticator $authenticator) - { - } + public function __construct(private UserAuthenticator $authenticator) {} public function __invoke(AuthenticateUserCommand $command): void { diff --git a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php index d86d65576..2a6e438fb 100644 --- a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php +++ b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php @@ -11,11 +11,9 @@ use CodelyTv\Backoffice\Auth\Domain\InvalidAuthCredentials; use CodelyTv\Backoffice\Auth\Domain\InvalidAuthUsername; -final class UserAuthenticator +final readonly class UserAuthenticator { - public function __construct(private readonly AuthRepository $repository) - { - } + public function __construct(private AuthRepository $repository) {} public function authenticate(AuthUsername $username, AuthPassword $password): void { @@ -27,7 +25,7 @@ public function authenticate(AuthUsername $username, AuthPassword $password): vo private function ensureUserExist(?AuthUser $auth, AuthUsername $username): void { - if (null === $auth) { + if ($auth === null) { throw new InvalidAuthUsername($username); } } diff --git a/src/Backoffice/Auth/Domain/AuthPassword.php b/src/Backoffice/Auth/Domain/AuthPassword.php index 9953d265f..9437c09f8 100644 --- a/src/Backoffice/Auth/Domain/AuthPassword.php +++ b/src/Backoffice/Auth/Domain/AuthPassword.php @@ -8,7 +8,7 @@ final class AuthPassword extends StringValueObject { - public function isEquals(AuthPassword $other): bool + public function isEquals(self $other): bool { return $this->value() === $other->value(); } diff --git a/src/Backoffice/Auth/Domain/AuthUser.php b/src/Backoffice/Auth/Domain/AuthUser.php index 1e951c905..99b0e97e8 100644 --- a/src/Backoffice/Auth/Domain/AuthUser.php +++ b/src/Backoffice/Auth/Domain/AuthUser.php @@ -4,11 +4,9 @@ namespace CodelyTv\Backoffice\Auth\Domain; -final class AuthUser +final readonly class AuthUser { - public function __construct(private readonly AuthUsername $username, private readonly AuthPassword $password) - { - } + public function __construct(private AuthUsername $username, private AuthPassword $password) {} public function passwordMatches(AuthPassword $password): bool { diff --git a/src/Backoffice/Auth/Domain/AuthUsername.php b/src/Backoffice/Auth/Domain/AuthUsername.php index 2841fa3a4..bc1f5b884 100644 --- a/src/Backoffice/Auth/Domain/AuthUsername.php +++ b/src/Backoffice/Auth/Domain/AuthUsername.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\StringValueObject; -final class AuthUsername extends StringValueObject -{ -} +final class AuthUsername extends StringValueObject {} diff --git a/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php b/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php index d1645e452..eed7b9bd0 100644 --- a/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php +++ b/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php @@ -8,6 +8,7 @@ use CodelyTv\Backoffice\Auth\Domain\AuthRepository; use CodelyTv\Backoffice\Auth\Domain\AuthUser; use CodelyTv\Backoffice\Auth\Domain\AuthUsername; + use function Lambdish\Phunctional\get; final class InMemoryAuthRepository implements AuthRepository @@ -21,6 +22,6 @@ public function search(AuthUsername $username): ?AuthUser { $password = get($username->value(), self::USERS); - return null !== $password ? new AuthUser($username, new AuthPassword($password)) : null; + return $password !== null ? new AuthUser($username, new AuthPassword($password)) : null; } } diff --git a/src/Backoffice/Courses/Application/BackofficeCourseResponse.php b/src/Backoffice/Courses/Application/BackofficeCourseResponse.php index 7c8440ba6..1b684f4af 100644 --- a/src/Backoffice/Courses/Application/BackofficeCourseResponse.php +++ b/src/Backoffice/Courses/Application/BackofficeCourseResponse.php @@ -4,11 +4,9 @@ namespace CodelyTv\Backoffice\Courses\Application; -final class BackofficeCourseResponse +final readonly class BackofficeCourseResponse { - public function __construct(private readonly string $id, private readonly string $name, private readonly string $duration) - { - } + public function __construct(private string $id, private string $name, private string $duration) {} public function id(): string { diff --git a/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php b/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php index 9fb967455..aaf185801 100644 --- a/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php +++ b/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php @@ -7,11 +7,9 @@ use CodelyTv\Backoffice\Courses\Domain\BackofficeCourse; use CodelyTv\Backoffice\Courses\Domain\BackofficeCourseRepository; -final class BackofficeCourseCreator +final readonly class BackofficeCourseCreator { - public function __construct(private readonly BackofficeCourseRepository $repository) - { - } + public function __construct(private BackofficeCourseRepository $repository) {} public function create(string $id, string $name, string $duration): void { diff --git a/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php b/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php index a7ca626ce..7b67f9575 100644 --- a/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php +++ b/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php @@ -7,11 +7,9 @@ use CodelyTv\Mooc\Courses\Domain\CourseCreatedDomainEvent; use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber; -final class CreateBackofficeCourseOnCourseCreated implements DomainEventSubscriber +final readonly class CreateBackofficeCourseOnCourseCreated implements DomainEventSubscriber { - public function __construct(private readonly BackofficeCourseCreator $creator) - { - } + public function __construct(private BackofficeCourseCreator $creator) {} public static function subscribedTo(): array { diff --git a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php index 0045c8e4c..f602c4a69 100644 --- a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php +++ b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php @@ -8,13 +8,12 @@ use CodelyTv\Backoffice\Courses\Application\BackofficeCoursesResponse; use CodelyTv\Backoffice\Courses\Domain\BackofficeCourse; use CodelyTv\Backoffice\Courses\Domain\BackofficeCourseRepository; + use function Lambdish\Phunctional\map; -final class AllBackofficeCoursesSearcher +final readonly class AllBackofficeCoursesSearcher { - public function __construct(private readonly BackofficeCourseRepository $repository) - { - } + public function __construct(private BackofficeCourseRepository $repository) {} public function searchAll(): BackofficeCoursesResponse { diff --git a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQuery.php b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQuery.php index 1d537951b..41df25386 100644 --- a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQuery.php +++ b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQuery.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\Bus\Query\Query; -final class SearchAllBackofficeCoursesQuery implements Query -{ -} +final class SearchAllBackofficeCoursesQuery implements Query {} diff --git a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php index dde35f54f..7688fc8c3 100644 --- a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php +++ b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php @@ -7,11 +7,9 @@ use CodelyTv\Backoffice\Courses\Application\BackofficeCoursesResponse; use CodelyTv\Shared\Domain\Bus\Query\QueryHandler; -final class SearchAllBackofficeCoursesQueryHandler implements QueryHandler +final readonly class SearchAllBackofficeCoursesQueryHandler implements QueryHandler { - public function __construct(private readonly AllBackofficeCoursesSearcher $searcher) - { - } + public function __construct(private AllBackofficeCoursesSearcher $searcher) {} public function __invoke(SearchAllBackofficeCoursesQuery $query): BackofficeCoursesResponse { diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php index 74cdc7372..70f32ebf6 100644 --- a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php +++ b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php @@ -11,13 +11,12 @@ use CodelyTv\Shared\Domain\Criteria\Criteria; use CodelyTv\Shared\Domain\Criteria\Filters; use CodelyTv\Shared\Domain\Criteria\Order; + use function Lambdish\Phunctional\map; -final class BackofficeCoursesByCriteriaSearcher +final readonly class BackofficeCoursesByCriteriaSearcher { - public function __construct(private readonly BackofficeCourseRepository $repository) - { - } + public function __construct(private BackofficeCourseRepository $repository) {} public function search(Filters $filters, Order $order, ?int $limit, ?int $offset): BackofficeCoursesResponse { diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php index f35fb7089..87eb2a648 100644 --- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php +++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php @@ -6,16 +6,15 @@ use CodelyTv\Shared\Domain\Bus\Query\Query; -final class SearchBackofficeCoursesByCriteriaQuery implements Query +final readonly class SearchBackofficeCoursesByCriteriaQuery implements Query { public function __construct( - private readonly array $filters, - private readonly ?string $orderBy, - private readonly ?string $order, - private readonly ?int $limit, - private readonly ?int $offset - ) { - } + private array $filters, + private ?string $orderBy, + private ?string $order, + private ?int $limit, + private ?int $offset + ) {} public function filters(): array { diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php index a3cfe6f71..4228431c0 100644 --- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php +++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php @@ -9,16 +9,14 @@ use CodelyTv\Shared\Domain\Criteria\Filters; use CodelyTv\Shared\Domain\Criteria\Order; -final class SearchBackofficeCoursesByCriteriaQueryHandler implements QueryHandler +final readonly class SearchBackofficeCoursesByCriteriaQueryHandler implements QueryHandler { - public function __construct(private readonly BackofficeCoursesByCriteriaSearcher $searcher) - { - } + public function __construct(private BackofficeCoursesByCriteriaSearcher $searcher) {} public function __invoke(SearchBackofficeCoursesByCriteriaQuery $query): BackofficeCoursesResponse { $filters = Filters::fromValues($query->filters()); - $order = Order::fromValues($query->orderBy(), $query->order()); + $order = Order::fromValues($query->orderBy(), $query->order()); return $this->searcher->search($filters, $order, $query->limit(), $query->offset()); } diff --git a/src/Backoffice/Courses/Domain/BackofficeCourse.php b/src/Backoffice/Courses/Domain/BackofficeCourse.php index 96636c2d0..8bffd93a8 100644 --- a/src/Backoffice/Courses/Domain/BackofficeCourse.php +++ b/src/Backoffice/Courses/Domain/BackofficeCourse.php @@ -8,11 +8,9 @@ final class BackofficeCourse extends AggregateRoot { - public function __construct(private readonly string $id, private readonly string $name, private readonly string $duration) - { - } + public function __construct(private readonly string $id, private readonly string $name, private readonly string $duration) {} - public static function fromPrimitives(array $primitives): BackofficeCourse + public static function fromPrimitives(array $primitives): self { return new self($primitives['id'], $primitives['name'], $primitives['duration']); } @@ -20,8 +18,8 @@ public static function fromPrimitives(array $primitives): BackofficeCourse public function toPrimitives(): array { return [ - 'id' => $this->id, - 'name' => $this->name, + 'id' => $this->id, + 'name' => $this->name, 'duration' => $this->duration, ]; } diff --git a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php index 5bd3abbec..7ffe2b7ea 100644 --- a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php +++ b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php @@ -8,6 +8,7 @@ use CodelyTv\Backoffice\Courses\Domain\BackofficeCourseRepository; use CodelyTv\Shared\Domain\Criteria\Criteria; use CodelyTv\Shared\Infrastructure\Persistence\Elasticsearch\ElasticsearchRepository; + use function Lambdish\Phunctional\map; final class ElasticsearchBackofficeCourseRepository extends ElasticsearchRepository implements BackofficeCourseRepository diff --git a/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php index 5a2062beb..4f892381d 100644 --- a/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php +++ b/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php @@ -7,16 +7,15 @@ use CodelyTv\Backoffice\Courses\Domain\BackofficeCourse; use CodelyTv\Backoffice\Courses\Domain\BackofficeCourseRepository; use CodelyTv\Shared\Domain\Criteria\Criteria; + use function Lambdish\Phunctional\get; final class InMemoryCacheBackofficeCourseRepository implements BackofficeCourseRepository { - private static array $allCoursesCache = []; - private static array $matchingCache = []; + private static array $allCoursesCache = []; + private static array $matchingCache = []; - public function __construct(private readonly BackofficeCourseRepository $repository) - { - } + public function __construct(private readonly BackofficeCourseRepository $repository) {} public function save(BackofficeCourse $course): void { diff --git a/src/Mooc/Courses/Application/Create/CourseCreator.php b/src/Mooc/Courses/Application/Create/CourseCreator.php index b85373945..8147a6002 100644 --- a/src/Mooc/Courses/Application/Create/CourseCreator.php +++ b/src/Mooc/Courses/Application/Create/CourseCreator.php @@ -11,11 +11,9 @@ use CodelyTv\Mooc\Shared\Domain\Courses\CourseId; use CodelyTv\Shared\Domain\Bus\Event\EventBus; -final class CourseCreator +final readonly class CourseCreator { - public function __construct(private readonly CourseRepository $repository, private readonly EventBus $bus) - { - } + public function __construct(private CourseRepository $repository, private EventBus $bus) {} public function __invoke(CourseId $id, CourseName $name, CourseDuration $duration): void { diff --git a/src/Mooc/Courses/Application/Create/CreateCourseCommand.php b/src/Mooc/Courses/Application/Create/CreateCourseCommand.php index 970c9cdaf..239223fe8 100644 --- a/src/Mooc/Courses/Application/Create/CreateCourseCommand.php +++ b/src/Mooc/Courses/Application/Create/CreateCourseCommand.php @@ -6,11 +6,9 @@ use CodelyTv\Shared\Domain\Bus\Command\Command; -final class CreateCourseCommand implements Command +final readonly class CreateCourseCommand implements Command { - public function __construct(private readonly string $id, private readonly string $name, private readonly string $duration) - { - } + public function __construct(private string $id, private string $name, private string $duration) {} public function id(): string { diff --git a/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php b/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php index 49b2eaf66..f251c1e1a 100644 --- a/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php +++ b/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php @@ -9,16 +9,14 @@ use CodelyTv\Mooc\Shared\Domain\Courses\CourseId; use CodelyTv\Shared\Domain\Bus\Command\CommandHandler; -final class CreateCourseCommandHandler implements CommandHandler +final readonly class CreateCourseCommandHandler implements CommandHandler { - public function __construct(private readonly CourseCreator $creator) - { - } + public function __construct(private CourseCreator $creator) {} public function __invoke(CreateCourseCommand $command): void { - $id = new CourseId($command->id()); - $name = new CourseName($command->name()); + $id = new CourseId($command->id()); + $name = new CourseName($command->name()); $duration = new CourseDuration($command->duration()); $this->creator->__invoke($id, $name, $duration); diff --git a/src/Mooc/Courses/Application/Find/CourseFinder.php b/src/Mooc/Courses/Application/Find/CourseFinder.php index b307b9d37..c59f5e62b 100644 --- a/src/Mooc/Courses/Application/Find/CourseFinder.php +++ b/src/Mooc/Courses/Application/Find/CourseFinder.php @@ -9,17 +9,15 @@ use CodelyTv\Mooc\Courses\Domain\CourseRepository; use CodelyTv\Mooc\Shared\Domain\Courses\CourseId; -final class CourseFinder +final readonly class CourseFinder { - public function __construct(private readonly CourseRepository $repository) - { - } + public function __construct(private CourseRepository $repository) {} public function __invoke(CourseId $id): Course { $course = $this->repository->search($id); - if (null === $course) { + if ($course === null) { throw new CourseNotExist($id); } diff --git a/src/Mooc/Courses/Application/Update/CourseRenamer.php b/src/Mooc/Courses/Application/Update/CourseRenamer.php index e1916c4f4..ba96d9970 100644 --- a/src/Mooc/Courses/Application/Update/CourseRenamer.php +++ b/src/Mooc/Courses/Application/Update/CourseRenamer.php @@ -10,11 +10,11 @@ use CodelyTv\Mooc\Shared\Domain\Courses\CourseId; use CodelyTv\Shared\Domain\Bus\Event\EventBus; -final class CourseRenamer +final readonly class CourseRenamer { - private readonly CourseFinder $finder; + private CourseFinder $finder; - public function __construct(private readonly CourseRepository $repository, private readonly EventBus $bus) + public function __construct(private CourseRepository $repository, private EventBus $bus) { $this->finder = new CourseFinder($repository); } diff --git a/src/Mooc/Courses/Domain/Course.php b/src/Mooc/Courses/Domain/Course.php index f41041490..cdd5484c1 100644 --- a/src/Mooc/Courses/Domain/Course.php +++ b/src/Mooc/Courses/Domain/Course.php @@ -9,9 +9,7 @@ final class Course extends AggregateRoot { - public function __construct(private readonly CourseId $id, private CourseName $name, private readonly CourseDuration $duration) - { - } + public function __construct(private readonly CourseId $id, private CourseName $name, private readonly CourseDuration $duration) {} public static function create(CourseId $id, CourseName $name, CourseDuration $duration): self { diff --git a/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php b/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php index 41a68e6ec..4d6525403 100644 --- a/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php +++ b/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php @@ -35,7 +35,7 @@ public static function fromPrimitives( public function toPrimitives(): array { return [ - 'name' => $this->name, + 'name' => $this->name, 'duration' => $this->duration, ]; } diff --git a/src/Mooc/Courses/Domain/CourseDuration.php b/src/Mooc/Courses/Domain/CourseDuration.php index 3de808b53..71a56484b 100644 --- a/src/Mooc/Courses/Domain/CourseDuration.php +++ b/src/Mooc/Courses/Domain/CourseDuration.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\StringValueObject; -final class CourseDuration extends StringValueObject -{ -} +final class CourseDuration extends StringValueObject {} diff --git a/src/Mooc/Courses/Domain/CourseName.php b/src/Mooc/Courses/Domain/CourseName.php index 52855e4b2..2235c0996 100644 --- a/src/Mooc/Courses/Domain/CourseName.php +++ b/src/Mooc/Courses/Domain/CourseName.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\StringValueObject; -final class CourseName extends StringValueObject -{ -} +final class CourseName extends StringValueObject {} diff --git a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php index a0e5c2996..d82d01a2c 100644 --- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php +++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php @@ -7,17 +7,15 @@ use CodelyTv\Mooc\CoursesCounter\Domain\CoursesCounterNotExist; use CodelyTv\Mooc\CoursesCounter\Domain\CoursesCounterRepository; -final class CoursesCounterFinder +final readonly class CoursesCounterFinder { - public function __construct(private readonly CoursesCounterRepository $repository) - { - } + public function __construct(private CoursesCounterRepository $repository) {} public function __invoke(): CoursesCounterResponse { $counter = $this->repository->search(); - if (null === $counter) { + if ($counter === null) { throw new CoursesCounterNotExist(); } diff --git a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php index b0373e28e..b7ddf5618 100644 --- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php +++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php @@ -6,11 +6,9 @@ use CodelyTv\Shared\Domain\Bus\Query\Response; -final class CoursesCounterResponse implements Response +final readonly class CoursesCounterResponse implements Response { - public function __construct(private readonly int $total) - { - } + public function __construct(private int $total) {} public function total(): int { diff --git a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQuery.php b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQuery.php index a13b1e9ea..4be728c05 100644 --- a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQuery.php +++ b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQuery.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\Bus\Query\Query; -final class FindCoursesCounterQuery implements Query -{ -} +final class FindCoursesCounterQuery implements Query {} diff --git a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php index b7808f602..d4952b13e 100644 --- a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php +++ b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php @@ -6,11 +6,9 @@ use CodelyTv\Shared\Domain\Bus\Query\QueryHandler; -final class FindCoursesCounterQueryHandler implements QueryHandler +final readonly class FindCoursesCounterQueryHandler implements QueryHandler { - public function __construct(private readonly CoursesCounterFinder $finder) - { - } + public function __construct(private CoursesCounterFinder $finder) {} public function __invoke(FindCoursesCounterQuery $query): CoursesCounterResponse { diff --git a/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php b/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php index 0da54ad77..9a2fe67bc 100644 --- a/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php +++ b/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php @@ -11,14 +11,13 @@ use CodelyTv\Shared\Domain\Bus\Event\EventBus; use CodelyTv\Shared\Domain\UuidGenerator; -final class CoursesCounterIncrementer +final readonly class CoursesCounterIncrementer { public function __construct( - private readonly CoursesCounterRepository $repository, - private readonly UuidGenerator $uuidGenerator, - private readonly EventBus $bus - ) { - } + private CoursesCounterRepository $repository, + private UuidGenerator $uuidGenerator, + private EventBus $bus + ) {} public function __invoke(CourseId $courseId): void { diff --git a/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php b/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php index 8e1a83e6f..8925dc255 100644 --- a/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php +++ b/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php @@ -7,13 +7,12 @@ use CodelyTv\Mooc\Courses\Domain\CourseCreatedDomainEvent; use CodelyTv\Mooc\Shared\Domain\Courses\CourseId; use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber; + use function Lambdish\Phunctional\apply; -final class IncrementCoursesCounterOnCourseCreated implements DomainEventSubscriber +final readonly class IncrementCoursesCounterOnCourseCreated implements DomainEventSubscriber { - public function __construct(private readonly CoursesCounterIncrementer $incrementer) - { - } + public function __construct(private CoursesCounterIncrementer $incrementer) {} public static function subscribedTo(): array { diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php index fc73ba58b..c4fbaf355 100644 --- a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php +++ b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php @@ -6,6 +6,7 @@ use CodelyTv\Mooc\Shared\Domain\Courses\CourseId; use CodelyTv\Shared\Domain\Aggregate\AggregateRoot; + use function Lambdish\Phunctional\search; final class CoursesCounter extends AggregateRoot @@ -42,7 +43,7 @@ public function existingCourses(): array public function increment(CourseId $courseId): void { - $this->total = $this->total->increment(); + $this->total = $this->total->increment(); $this->existingCourses[] = $courseId; $this->record(new CoursesCounterIncrementedDomainEvent($this->id()->value(), $this->total()->value())); @@ -52,7 +53,7 @@ public function hasIncremented(CourseId $courseId): bool { $existingCourse = search($this->courseIdComparator($courseId), $this->existingCourses()); - return null !== $existingCourse; + return $existingCourse !== null; } private function courseIdComparator(CourseId $courseId): callable diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounterId.php b/src/Mooc/CoursesCounter/Domain/CoursesCounterId.php index 9142b2594..16d0461e9 100644 --- a/src/Mooc/CoursesCounter/Domain/CoursesCounterId.php +++ b/src/Mooc/CoursesCounter/Domain/CoursesCounterId.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\Uuid; -final class CoursesCounterId extends Uuid -{ -} +final class CoursesCounterId extends Uuid {} diff --git a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php index 40bc8611f..934a9986a 100644 --- a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php +++ b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php @@ -8,6 +8,7 @@ use CodelyTv\Shared\Infrastructure\Doctrine\Dbal\DoctrineCustomType; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\JsonType; + use function Lambdish\Phunctional\map; final class CourseIdsType extends JsonType implements DoctrineCustomType diff --git a/src/Mooc/Shared/Domain/Courses/CourseId.php b/src/Mooc/Shared/Domain/Courses/CourseId.php index ed2c5a753..ff6b551a8 100644 --- a/src/Mooc/Shared/Domain/Courses/CourseId.php +++ b/src/Mooc/Shared/Domain/Courses/CourseId.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\Uuid; -final class CourseId extends Uuid -{ -} +final class CourseId extends Uuid {} diff --git a/src/Mooc/Shared/Domain/Videos/VideoUrl.php b/src/Mooc/Shared/Domain/Videos/VideoUrl.php index 3bc0448ea..9eae75f37 100644 --- a/src/Mooc/Shared/Domain/Videos/VideoUrl.php +++ b/src/Mooc/Shared/Domain/Videos/VideoUrl.php @@ -18,7 +18,7 @@ public function __construct(string $value) private function ensureIsValidUrl(string $url): void { - if (false === filter_var($url, FILTER_VALIDATE_URL)) { + if (filter_var($url, FILTER_VALIDATE_URL) === false) { throw new InvalidArgumentException(sprintf('The url <%s> is not well formatted', $url)); } } diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php index 436a867d5..1be475ed2 100644 --- a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php +++ b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php @@ -5,6 +5,7 @@ namespace CodelyTv\Mooc\Shared\Infrastructure\Doctrine; use CodelyTv\Shared\Domain\Utils; + use function Lambdish\Phunctional\filter; use function Lambdish\Phunctional\map; use function Lambdish\Phunctional\reduce; @@ -16,7 +17,7 @@ final class DbalTypesSearcher public static function inPath(string $path, string $contextName): array { $possibleDbalDirectories = self::possibleDbalPaths($path); - $dbalDirectories = filter(self::isExistingDbalPath(), $possibleDbalDirectories); + $dbalDirectories = filter(self::isExistingDbalPath(), $possibleDbalDirectories); return reduce(self::dbalClassesSearcher($contextName), $dbalDirectories, []); } @@ -50,14 +51,11 @@ private static function dbalClassesSearcher(string $contextName): callable { return static function (array $totalNamespaces, string $path) use ($contextName) { $possibleFiles = scandir($path); - $files = filter( - static fn ($file) => Utils::endsWith('Type.php', $file), - $possibleFiles - ); + $files = filter(static fn ($file) => Utils::endsWith('Type.php', $file), $possibleFiles); $namespaces = map( static function (string $file) use ($path, $contextName) { - $fullPath = "$path/$file"; + $fullPath = "$path/$file"; $splittedPath = explode("/src/$contextName/", $fullPath); $classWithoutPrefix = str_replace(['.php', '/'], ['', '\\'], $splittedPath[1]); diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php index d2e28a092..cacc676ed 100644 --- a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php +++ b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php @@ -15,7 +15,7 @@ final class DoctrinePrefixesSearcher public static function inPath(string $path, string $baseNamespace): array { $possibleMappingDirectories = self::possibleMappingPaths($path); - $mappingDirectories = filter(self::isExistingMappingPath(), $possibleMappingDirectories); + $mappingDirectories = filter(self::isExistingMappingPath(), $possibleMappingDirectories); return array_flip(reindex(self::namespaceFormatter($baseNamespace), $mappingDirectories)); } diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/MoocEntityManagerFactory.php b/src/Mooc/Shared/Infrastructure/Doctrine/MoocEntityManagerFactory.php index 4153955e0..5c31fca56 100644 --- a/src/Mooc/Shared/Infrastructure/Doctrine/MoocEntityManagerFactory.php +++ b/src/Mooc/Shared/Infrastructure/Doctrine/MoocEntityManagerFactory.php @@ -13,7 +13,7 @@ final class MoocEntityManagerFactory public static function create(array $parameters, string $environment): EntityManagerInterface { - $isDevMode = 'prod' !== $environment; + $isDevMode = $environment !== 'prod'; $prefixes = array_merge( DoctrinePrefixesSearcher::inPath(__DIR__ . '/../../../../Mooc', 'CodelyTv\Mooc'), diff --git a/src/Mooc/Videos/Application/Create/CreateVideoCommand.php b/src/Mooc/Videos/Application/Create/CreateVideoCommand.php index 636298100..d2104597b 100644 --- a/src/Mooc/Videos/Application/Create/CreateVideoCommand.php +++ b/src/Mooc/Videos/Application/Create/CreateVideoCommand.php @@ -6,16 +6,15 @@ use CodelyTv\Shared\Domain\Bus\Command\Command; -final class CreateVideoCommand implements Command +final readonly class CreateVideoCommand implements Command { public function __construct( - private readonly string $id, - private readonly string $type, - private readonly string $title, - private readonly string $url, - private readonly string $courseId - ) { - } + private string $id, + private string $type, + private string $title, + private string $url, + private string $courseId + ) {} public function id(): string { diff --git a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php index e6b8b0d89..6cabf783b 100644 --- a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php +++ b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php @@ -11,18 +11,16 @@ use CodelyTv\Mooc\Videos\Domain\VideoType; use CodelyTv\Shared\Domain\Bus\Command\CommandHandler; -final class CreateVideoCommandHandler implements CommandHandler +final readonly class CreateVideoCommandHandler implements CommandHandler { - public function __construct(private readonly VideoCreator $creator) - { - } + public function __construct(private VideoCreator $creator) {} public function __invoke(CreateVideoCommand $command): void { - $id = new VideoId($command->id()); - $type = new VideoType($command->type()); - $title = new VideoTitle($command->title()); - $url = new VideoUrl($command->url()); + $id = new VideoId($command->id()); + $type = new VideoType($command->type()); + $title = new VideoTitle($command->title()); + $url = new VideoUrl($command->url()); $courseId = new CourseId($command->courseId()); $this->creator->create($id, $type, $title, $url, $courseId); diff --git a/src/Mooc/Videos/Application/Create/VideoCreator.php b/src/Mooc/Videos/Application/Create/VideoCreator.php index 91180306b..f2054a6ae 100644 --- a/src/Mooc/Videos/Application/Create/VideoCreator.php +++ b/src/Mooc/Videos/Application/Create/VideoCreator.php @@ -13,11 +13,9 @@ use CodelyTv\Mooc\Videos\Domain\VideoType; use CodelyTv\Shared\Domain\Bus\Event\EventBus; -final class VideoCreator +final readonly class VideoCreator { - public function __construct(private readonly VideoRepository $repository, private readonly EventBus $bus) - { - } + public function __construct(private VideoRepository $repository, private EventBus $bus) {} public function create(VideoId $id, VideoType $type, VideoTitle $title, VideoUrl $url, CourseId $courseId): void { diff --git a/src/Mooc/Videos/Application/Find/FindVideoQuery.php b/src/Mooc/Videos/Application/Find/FindVideoQuery.php index eadef0af1..1f3a652be 100644 --- a/src/Mooc/Videos/Application/Find/FindVideoQuery.php +++ b/src/Mooc/Videos/Application/Find/FindVideoQuery.php @@ -6,11 +6,9 @@ use CodelyTv\Shared\Domain\Bus\Query\Query; -final class FindVideoQuery implements Query +final readonly class FindVideoQuery implements Query { - public function __construct(private readonly string $id) - { - } + public function __construct(private string $id) {} public function id(): string { diff --git a/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php b/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php index 4491614e5..ef04073f4 100644 --- a/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php +++ b/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php @@ -6,6 +6,7 @@ use CodelyTv\Mooc\Videos\Domain\VideoId; use CodelyTv\Shared\Domain\Bus\Query\QueryHandler; + use function Lambdish\Phunctional\apply; use function Lambdish\Phunctional\pipe; diff --git a/src/Mooc/Videos/Application/Find/VideoResponse.php b/src/Mooc/Videos/Application/Find/VideoResponse.php index 6bd5fd336..e261a18d0 100644 --- a/src/Mooc/Videos/Application/Find/VideoResponse.php +++ b/src/Mooc/Videos/Application/Find/VideoResponse.php @@ -6,14 +6,13 @@ use CodelyTv\Shared\Domain\Bus\Query\Response; -final class VideoResponse implements Response +final readonly class VideoResponse implements Response { public function __construct( - private readonly string $id, - private readonly string $type, - private readonly string $title, - private readonly string $url, - private readonly string $courseId - ) { - } + private string $id, + private string $type, + private string $title, + private string $url, + private string $courseId + ) {} } diff --git a/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php b/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php index 822916230..f2dcea30b 100644 --- a/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php +++ b/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php @@ -6,11 +6,9 @@ use CodelyTv\Shared\Domain\Bus\Command\Command; -final class TrimVideoCommand implements Command +final readonly class TrimVideoCommand implements Command { - public function __construct(private readonly string $videoId, private readonly int $keepFromSecond, private readonly int $keepToSecond) - { - } + public function __construct(private string $videoId, private int $keepFromSecond, private int $keepToSecond) {} public function videoId(): string { diff --git a/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php b/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php index 4f52d05fc..e51a39cc4 100644 --- a/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php +++ b/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php @@ -7,15 +7,13 @@ use CodelyTv\Mooc\Videos\Domain\VideoId; use CodelyTv\Shared\Domain\SecondsInterval; -final class TrimVideoCommandHandler +final readonly class TrimVideoCommandHandler { - public function __construct(private readonly VideoTrimmer $trimmer) - { - } + public function __construct(private VideoTrimmer $trimmer) {} public function __invoke(TrimVideoCommand $command): void { - $id = new VideoId($command->videoId()); + $id = new VideoId($command->videoId()); $interval = SecondsInterval::fromValues($command->keepFromSecond(), $command->keepToSecond()); $this->trimmer->trim($id, $interval); diff --git a/src/Mooc/Videos/Application/Trim/VideoTrimmer.php b/src/Mooc/Videos/Application/Trim/VideoTrimmer.php index d1415e4a9..1f7fc8dd5 100644 --- a/src/Mooc/Videos/Application/Trim/VideoTrimmer.php +++ b/src/Mooc/Videos/Application/Trim/VideoTrimmer.php @@ -9,7 +9,5 @@ final class VideoTrimmer { - public function trim(VideoId $id, SecondsInterval $interval): void - { - } + public function trim(VideoId $id, SecondsInterval $interval): void {} } diff --git a/src/Mooc/Videos/Application/Update/VideoTitleUpdater.php b/src/Mooc/Videos/Application/Update/VideoTitleUpdater.php index cea6b77aa..3670cb513 100644 --- a/src/Mooc/Videos/Application/Update/VideoTitleUpdater.php +++ b/src/Mooc/Videos/Application/Update/VideoTitleUpdater.php @@ -9,11 +9,11 @@ use CodelyTv\Mooc\Videos\Domain\VideoRepository; use CodelyTv\Mooc\Videos\Domain\VideoTitle; -final class VideoTitleUpdater +final readonly class VideoTitleUpdater { - private readonly VideoFinder $finder; + private VideoFinder $finder; - public function __construct(private readonly VideoRepository $repository) + public function __construct(private VideoRepository $repository) { $this->finder = new VideoFinder($repository); } diff --git a/src/Mooc/Videos/Domain/Video.php b/src/Mooc/Videos/Domain/Video.php index 6028dc104..a8626df49 100644 --- a/src/Mooc/Videos/Domain/Video.php +++ b/src/Mooc/Videos/Domain/Video.php @@ -16,8 +16,7 @@ public function __construct( private VideoTitle $title, private readonly VideoUrl $url, private readonly CourseId $courseId - ) { - } + ) {} public static function create( VideoId $id, @@ -25,7 +24,7 @@ public static function create( VideoTitle $title, VideoUrl $url, CourseId $courseId - ): Video { + ): self { $video = new self($id, $type, $title, $url, $courseId); $video->record( diff --git a/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php b/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php index e820ac970..829ee3884 100644 --- a/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php +++ b/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php @@ -30,7 +30,7 @@ public static function fromPrimitives( array $body, string $eventId, string $occurredOn - ): VideoCreatedDomainEvent { + ): self { return new self( $aggregateId, $body['type'], @@ -45,9 +45,9 @@ public static function fromPrimitives( public function toPrimitives(): array { return [ - 'type' => $this->type, - 'title' => $this->title, - 'url' => $this->url, + 'type' => $this->type, + 'title' => $this->title, + 'url' => $this->url, 'course_id' => $this->courseId, ]; } diff --git a/src/Mooc/Videos/Domain/VideoFinder.php b/src/Mooc/Videos/Domain/VideoFinder.php index ba7a22f00..19109faf4 100644 --- a/src/Mooc/Videos/Domain/VideoFinder.php +++ b/src/Mooc/Videos/Domain/VideoFinder.php @@ -4,17 +4,15 @@ namespace CodelyTv\Mooc\Videos\Domain; -final class VideoFinder +final readonly class VideoFinder { - public function __construct(private readonly VideoRepository $repository) - { - } + public function __construct(private VideoRepository $repository) {} public function __invoke(VideoId $id): Video { $video = $this->repository->search($id); - if (null === $video) { + if ($video === null) { throw new VideoNotFound($id); } diff --git a/src/Mooc/Videos/Domain/VideoId.php b/src/Mooc/Videos/Domain/VideoId.php index 2c8a3d177..4396d6b85 100644 --- a/src/Mooc/Videos/Domain/VideoId.php +++ b/src/Mooc/Videos/Domain/VideoId.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\Uuid; -final class VideoId extends Uuid -{ -} +final class VideoId extends Uuid {} diff --git a/src/Mooc/Videos/Domain/VideoTitle.php b/src/Mooc/Videos/Domain/VideoTitle.php index 32e53aa88..d792cf453 100644 --- a/src/Mooc/Videos/Domain/VideoTitle.php +++ b/src/Mooc/Videos/Domain/VideoTitle.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\StringValueObject; -final class VideoTitle extends StringValueObject -{ -} +final class VideoTitle extends StringValueObject {} diff --git a/src/Mooc/Videos/Domain/VideoType.php b/src/Mooc/Videos/Domain/VideoType.php index 439c785b1..3b20ed338 100644 --- a/src/Mooc/Videos/Domain/VideoType.php +++ b/src/Mooc/Videos/Domain/VideoType.php @@ -14,7 +14,7 @@ final class VideoType extends Enum { public const SCREENCAST = 'screencast'; - public const INTERVIEW = 'interview'; + public const INTERVIEW = 'interview'; protected function throwExceptionForInvalidValue($value): never { diff --git a/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php b/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php index 933277438..fffa093fe 100644 --- a/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php +++ b/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php @@ -15,10 +15,10 @@ final class VideoRepositoryMySql extends DoctrineRepository implements VideoRepository { private static array $criteriaToDoctrineFields = [ - 'id' => 'id', - 'type' => 'type', - 'title' => 'title', - 'url' => 'url', + 'id' => 'id', + 'type' => 'type', + 'title' => 'title', + 'url' => 'url', 'course_id' => 'courseId', ]; @@ -35,7 +35,7 @@ public function search(VideoId $id): ?Video public function searchByCriteria(Criteria $criteria): Videos { $doctrineCriteria = DoctrineCriteriaConverter::convert($criteria, self::$criteriaToDoctrineFields); - $videos = $this->repository(Video::class)->matching($doctrineCriteria)->toArray(); + $videos = $this->repository(Video::class)->matching($doctrineCriteria)->toArray(); return new Videos($videos); } diff --git a/src/Shared/Domain/Aggregate/AggregateRoot.php b/src/Shared/Domain/Aggregate/AggregateRoot.php index 80fa7ddbd..9c2d69d91 100644 --- a/src/Shared/Domain/Aggregate/AggregateRoot.php +++ b/src/Shared/Domain/Aggregate/AggregateRoot.php @@ -12,7 +12,7 @@ abstract class AggregateRoot final public function pullDomainEvents(): array { - $domainEvents = $this->domainEvents; + $domainEvents = $this->domainEvents; $this->domainEvents = []; return $domainEvents; diff --git a/src/Shared/Domain/Bus/Command/Command.php b/src/Shared/Domain/Bus/Command/Command.php index d8343b898..dceac12c7 100644 --- a/src/Shared/Domain/Bus/Command/Command.php +++ b/src/Shared/Domain/Bus/Command/Command.php @@ -4,6 +4,4 @@ namespace CodelyTv\Shared\Domain\Bus\Command; -interface Command -{ -} +interface Command {} diff --git a/src/Shared/Domain/Bus/Command/CommandHandler.php b/src/Shared/Domain/Bus/Command/CommandHandler.php index 2cea0d72d..1168c1df4 100644 --- a/src/Shared/Domain/Bus/Command/CommandHandler.php +++ b/src/Shared/Domain/Bus/Command/CommandHandler.php @@ -4,6 +4,4 @@ namespace CodelyTv\Shared\Domain\Bus\Command; -interface CommandHandler -{ -} +interface CommandHandler {} diff --git a/src/Shared/Domain/Bus/Event/DomainEvent.php b/src/Shared/Domain/Bus/Event/DomainEvent.php index 0bca368d4..9ea835826 100644 --- a/src/Shared/Domain/Bus/Event/DomainEvent.php +++ b/src/Shared/Domain/Bus/Event/DomainEvent.php @@ -5,7 +5,7 @@ namespace CodelyTv\Shared\Domain\Bus\Event; use CodelyTv\Shared\Domain\Utils; -use CodelyTv\Shared\Domain\ValueObject\Uuid; +use CodelyTv\Shared\Domain\ValueObject\SimpleUuid; use DateTimeImmutable; abstract class DomainEvent @@ -15,7 +15,7 @@ abstract class DomainEvent public function __construct(private readonly string $aggregateId, string $eventId = null, string $occurredOn = null) { - $this->eventId = $eventId ?: Uuid::random()->value(); + $this->eventId = $eventId ?: SimpleUuid::random()->value(); $this->occurredOn = $occurredOn ?: Utils::dateToString(new DateTimeImmutable()); } @@ -30,17 +30,17 @@ abstract public static function eventName(): string; abstract public function toPrimitives(): array; - public function aggregateId(): string + final public function aggregateId(): string { return $this->aggregateId; } - public function eventId(): string + final public function eventId(): string { return $this->eventId; } - public function occurredOn(): string + final public function occurredOn(): string { return $this->occurredOn; } diff --git a/src/Shared/Domain/Bus/Query/Query.php b/src/Shared/Domain/Bus/Query/Query.php index 319bac80b..3ed4d1467 100644 --- a/src/Shared/Domain/Bus/Query/Query.php +++ b/src/Shared/Domain/Bus/Query/Query.php @@ -4,6 +4,4 @@ namespace CodelyTv\Shared\Domain\Bus\Query; -interface Query -{ -} +interface Query {} diff --git a/src/Shared/Domain/Bus/Query/QueryHandler.php b/src/Shared/Domain/Bus/Query/QueryHandler.php index dc4a36392..f849e7210 100644 --- a/src/Shared/Domain/Bus/Query/QueryHandler.php +++ b/src/Shared/Domain/Bus/Query/QueryHandler.php @@ -4,6 +4,4 @@ namespace CodelyTv\Shared\Domain\Bus\Query; -interface QueryHandler -{ -} +interface QueryHandler {} diff --git a/src/Shared/Domain/Bus/Query/Response.php b/src/Shared/Domain/Bus/Query/Response.php index 3bf921ee0..dd8be87cb 100644 --- a/src/Shared/Domain/Bus/Query/Response.php +++ b/src/Shared/Domain/Bus/Query/Response.php @@ -4,6 +4,4 @@ namespace CodelyTv\Shared\Domain\Bus\Query; -interface Response -{ -} +interface Response {} diff --git a/src/Shared/Domain/Collection.php b/src/Shared/Domain/Collection.php index 137e6c234..a184dd3cb 100644 --- a/src/Shared/Domain/Collection.php +++ b/src/Shared/Domain/Collection.php @@ -7,7 +7,9 @@ use ArrayIterator; use Countable; use IteratorAggregate; +use Traversable; +/** @template-implements IteratorAggregate*/ abstract class Collection implements Countable, IteratorAggregate { public function __construct(private readonly array $items) @@ -17,12 +19,12 @@ public function __construct(private readonly array $items) abstract protected function type(): string; - public function getIterator(): ArrayIterator + final public function getIterator(): Traversable { return new ArrayIterator($this->items()); } - public function count(): int + final public function count(): int { return count($this->items()); } diff --git a/src/Shared/Domain/Criteria/Criteria.php b/src/Shared/Domain/Criteria/Criteria.php index 1c762ed23..690b78cff 100644 --- a/src/Shared/Domain/Criteria/Criteria.php +++ b/src/Shared/Domain/Criteria/Criteria.php @@ -4,15 +4,14 @@ namespace CodelyTv\Shared\Domain\Criteria; -final class Criteria +final readonly class Criteria { public function __construct( - private readonly Filters $filters, - private readonly Order $order, - private readonly ?int $offset, - private readonly ?int $limit - ) { - } + private Filters $filters, + private Order $order, + private ?int $offset, + private ?int $limit + ) {} public function hasFilters(): bool { diff --git a/src/Shared/Domain/Criteria/Filter.php b/src/Shared/Domain/Criteria/Filter.php index 5a8cbf3bf..48c61445a 100644 --- a/src/Shared/Domain/Criteria/Filter.php +++ b/src/Shared/Domain/Criteria/Filter.php @@ -4,14 +4,13 @@ namespace CodelyTv\Shared\Domain\Criteria; -final class Filter +final readonly class Filter { public function __construct( - private readonly FilterField $field, - private readonly FilterOperator $operator, - private readonly FilterValue $value - ) { - } + private FilterField $field, + private FilterOperator $operator, + private FilterValue $value + ) {} public static function fromValues(array $values): self { diff --git a/src/Shared/Domain/Criteria/FilterField.php b/src/Shared/Domain/Criteria/FilterField.php index 7c952bbb5..fcc11e2de 100644 --- a/src/Shared/Domain/Criteria/FilterField.php +++ b/src/Shared/Domain/Criteria/FilterField.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\StringValueObject; -final class FilterField extends StringValueObject -{ -} +final class FilterField extends StringValueObject {} diff --git a/src/Shared/Domain/Criteria/FilterOperator.php b/src/Shared/Domain/Criteria/FilterOperator.php index 1c9c3b8ff..8a888019a 100644 --- a/src/Shared/Domain/Criteria/FilterOperator.php +++ b/src/Shared/Domain/Criteria/FilterOperator.php @@ -14,11 +14,11 @@ */ final class FilterOperator extends Enum { - public const EQUAL = '='; - public const NOT_EQUAL = '!='; - public const GT = '>'; - public const LT = '<'; - public const CONTAINS = 'CONTAINS'; + public const EQUAL = '='; + public const NOT_EQUAL = '!='; + public const GT = '>'; + public const LT = '<'; + public const CONTAINS = 'CONTAINS'; public const NOT_CONTAINS = 'NOT_CONTAINS'; private static array $containing = [self::CONTAINS, self::NOT_CONTAINS]; diff --git a/src/Shared/Domain/Criteria/FilterValue.php b/src/Shared/Domain/Criteria/FilterValue.php index 08151b09e..5576c10fb 100644 --- a/src/Shared/Domain/Criteria/FilterValue.php +++ b/src/Shared/Domain/Criteria/FilterValue.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\StringValueObject; -final class FilterValue extends StringValueObject -{ -} +final class FilterValue extends StringValueObject {} diff --git a/src/Shared/Domain/Criteria/Filters.php b/src/Shared/Domain/Criteria/Filters.php index b55a5e0f2..56a6312d8 100644 --- a/src/Shared/Domain/Criteria/Filters.php +++ b/src/Shared/Domain/Criteria/Filters.php @@ -5,6 +5,7 @@ namespace CodelyTv\Shared\Domain\Criteria; use CodelyTv\Shared\Domain\Collection; + use function Lambdish\Phunctional\reduce; final class Filters extends Collection diff --git a/src/Shared/Domain/Criteria/Order.php b/src/Shared/Domain/Criteria/Order.php index 643a65268..c86595764 100644 --- a/src/Shared/Domain/Criteria/Order.php +++ b/src/Shared/Domain/Criteria/Order.php @@ -4,25 +4,23 @@ namespace CodelyTv\Shared\Domain\Criteria; -final class Order +final readonly class Order { - public function __construct(private readonly OrderBy $orderBy, private readonly OrderType $orderType) - { - } + public function __construct(private OrderBy $orderBy, private OrderType $orderType) {} - public static function createDesc(OrderBy $orderBy): Order + public static function createDesc(OrderBy $orderBy): self { return new self($orderBy, OrderType::desc()); } - public static function fromValues(?string $orderBy, ?string $order): Order + public static function fromValues(?string $orderBy, ?string $order): self { - return null === $orderBy ? self::none() : new Order(new OrderBy($orderBy), new OrderType($order)); + return $orderBy === null ? self::none() : new self(new OrderBy($orderBy), new OrderType($order)); } - public static function none(): Order + public static function none(): self { - return new Order(new OrderBy(''), OrderType::none()); + return new self(new OrderBy(''), OrderType::none()); } public function orderBy(): OrderBy diff --git a/src/Shared/Domain/Criteria/OrderBy.php b/src/Shared/Domain/Criteria/OrderBy.php index c6e43e6b9..d2d054cae 100644 --- a/src/Shared/Domain/Criteria/OrderBy.php +++ b/src/Shared/Domain/Criteria/OrderBy.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\StringValueObject; -final class OrderBy extends StringValueObject -{ -} +final class OrderBy extends StringValueObject {} diff --git a/src/Shared/Domain/Criteria/OrderType.php b/src/Shared/Domain/Criteria/OrderType.php index 2ffc46071..50f2f5213 100644 --- a/src/Shared/Domain/Criteria/OrderType.php +++ b/src/Shared/Domain/Criteria/OrderType.php @@ -14,7 +14,7 @@ */ final class OrderType extends Enum { - public const ASC = 'asc'; + public const ASC = 'asc'; public const DESC = 'desc'; public const NONE = 'none'; diff --git a/src/Shared/Domain/Second.php b/src/Shared/Domain/Second.php index 6ed51277e..6ff9f4bcb 100644 --- a/src/Shared/Domain/Second.php +++ b/src/Shared/Domain/Second.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\ValueObject\IntValueObject; -final class Second extends IntValueObject -{ -} +final class Second extends IntValueObject {} diff --git a/src/Shared/Domain/SecondsInterval.php b/src/Shared/Domain/SecondsInterval.php index 55df80a10..1b6546342 100644 --- a/src/Shared/Domain/SecondsInterval.php +++ b/src/Shared/Domain/SecondsInterval.php @@ -6,14 +6,14 @@ use DomainException; -final class SecondsInterval +final readonly class SecondsInterval { - public function __construct(private readonly Second $from, private readonly Second $to) + public function __construct(private Second $from, private Second $to) { $this->ensureIntervalEndsAfterStart($from, $to); } - public static function fromValues(int $from, int $to): SecondsInterval + public static function fromValues(int $from, int $to): self { return new self(new Second($from), new Second($to)); } diff --git a/src/Shared/Domain/Utils.php b/src/Shared/Domain/Utils.php index e0eb706f8..bdb8a9ef8 100644 --- a/src/Shared/Domain/Utils.php +++ b/src/Shared/Domain/Utils.php @@ -8,6 +8,7 @@ use DateTimeInterface; use ReflectionClass; use RuntimeException; + use function Lambdish\Phunctional\filter; final class Utils @@ -19,7 +20,7 @@ public static function endsWith(string $needle, string $haystack): bool return true; } - return (substr($haystack, -$length) === $needle); + return substr($haystack, -$length) === $needle; } public static function dateToString(DateTimeInterface $date): string @@ -41,7 +42,7 @@ public static function jsonDecode(string $json): array { $data = json_decode($json, true); - if (JSON_ERROR_NONE !== json_last_error()) { + if (json_last_error() !== JSON_ERROR_NONE) { throw new RuntimeException('Unable to parse response body into JSON: ' . json_last_error()); } @@ -50,7 +51,7 @@ public static function jsonDecode(string $json): array public static function toSnakeCase(string $text): string { - return ctype_lower($text) ? $text : strtolower((string) preg_replace('/([^A-Z\s])([A-Z])/', "$1_$2", $text)); + return ctype_lower($text) ? $text : strtolower((string) preg_replace('/([^A-Z\s])([A-Z])/', '$1_$2', $text)); } public static function toCamelCase(string $text): string @@ -63,7 +64,7 @@ public static function dot(array $array, string $prepend = ''): array $results = []; foreach ($array as $key => $value) { if (is_array($value) && !empty($value)) { - $results = array_merge($results, static::dot($value, $prepend . $key . '.')); + $results = array_merge($results, self::dot($value, $prepend . $key . '.')); } else { $results[$prepend . $key] = $value; } @@ -74,10 +75,7 @@ public static function dot(array $array, string $prepend = ''): array public static function filesIn(string $path, string $fileType): array { - return filter( - static fn (string $possibleModule) => strstr($possibleModule, $fileType), - scandir($path) - ); + return filter(static fn (string $possibleModule) => strstr($possibleModule, $fileType), scandir($path)); } public static function extractClassName(object $object): string diff --git a/src/Shared/Domain/ValueObject/Enum.php b/src/Shared/Domain/ValueObject/Enum.php index 1d7eed987..76825cecf 100644 --- a/src/Shared/Domain/ValueObject/Enum.php +++ b/src/Shared/Domain/ValueObject/Enum.php @@ -7,6 +7,7 @@ use CodelyTv\Shared\Domain\Utils; use ReflectionClass; use Stringable; + use function in_array; use function Lambdish\Phunctional\reindex; @@ -26,29 +27,29 @@ public static function __callStatic(string $name, $args) return new static(self::values()[$name]); } - public static function fromString(string $value): Enum + final public static function fromString(string $value): self { return new static($value); } - public static function values(): array + final public static function values(): array { $class = static::class; if (!isset(self::$cache[$class])) { - $reflected = new ReflectionClass($class); + $reflected = new ReflectionClass($class); self::$cache[$class] = reindex(self::keysFormatter(), $reflected->getConstants()); } return self::$cache[$class]; } - public static function randomValue() + final public static function randomValue() { return self::values()[array_rand(self::values())]; } - public static function random(): static + final public static function random(): static { return new static(self::randomValue()); } @@ -58,14 +59,14 @@ private static function keysFormatter(): callable return static fn ($unused, string $key): string => Utils::toCamelCase(strtolower($key)); } - public function value() + final public function value() { return $this->value; } - public function equals(Enum $other): bool + final public function equals(self $other): bool { - return $other == $this; + return $other->value() === $this->value(); } public function __toString(): string diff --git a/src/Shared/Domain/ValueObject/IntValueObject.php b/src/Shared/Domain/ValueObject/IntValueObject.php index e75774629..60514d776 100644 --- a/src/Shared/Domain/ValueObject/IntValueObject.php +++ b/src/Shared/Domain/ValueObject/IntValueObject.php @@ -6,16 +6,14 @@ abstract class IntValueObject { - public function __construct(protected int $value) - { - } + public function __construct(protected int $value) {} - public function value(): int + final public function value(): int { return $this->value; } - public function isBiggerThan(IntValueObject $other): bool + final public function isBiggerThan(self $other): bool { return $this->value() > $other->value(); } diff --git a/src/Shared/Domain/ValueObject/SimpleUuid.php b/src/Shared/Domain/ValueObject/SimpleUuid.php new file mode 100644 index 000000000..250f41c40 --- /dev/null +++ b/src/Shared/Domain/ValueObject/SimpleUuid.php @@ -0,0 +1,7 @@ +value; } diff --git a/src/Shared/Domain/ValueObject/Uuid.php b/src/Shared/Domain/ValueObject/Uuid.php index 7bf9e9c00..c23061a9b 100644 --- a/src/Shared/Domain/ValueObject/Uuid.php +++ b/src/Shared/Domain/ValueObject/Uuid.php @@ -8,24 +8,24 @@ use Ramsey\Uuid\Uuid as RamseyUuid; use Stringable; -class Uuid implements Stringable +abstract class Uuid implements Stringable { public function __construct(protected string $value) { $this->ensureIsValidUuid($value); } - public static function random(): self + final public static function random(): self { return new static(RamseyUuid::uuid4()->toString()); } - public function value(): string + final public function value(): string { return $this->value; } - public function equals(Uuid $other): bool + final public function equals(self $other): bool { return $this->value() === $other->value(); } @@ -38,7 +38,7 @@ public function __toString(): string private function ensureIsValidUuid(string $id): void { if (!RamseyUuid::isValid($id)) { - throw new InvalidArgumentException(sprintf('<%s> does not allow the value <%s>.', static::class, $id)); + throw new InvalidArgumentException(sprintf('<%s> does not allow the value <%s>.', self::class, $id)); } } } diff --git a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php index eb5cb6efe..bac6860bb 100644 --- a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php +++ b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php @@ -9,6 +9,7 @@ use ReflectionClass; use ReflectionMethod; use ReflectionNamedType; + use function Lambdish\Phunctional\map; use function Lambdish\Phunctional\reduce; use function Lambdish\Phunctional\reindex; @@ -25,7 +26,7 @@ public static function forPipedCallables(iterable $callables): array return reduce(self::pipedCallablesReducer(), $callables, []); } - private static function classExtractor(CallableFirstParameterExtractor $parameterExtractor): callable + private static function classExtractor(self $parameterExtractor): callable { return static fn (callable $handler): ?string => $parameterExtractor->extract($handler); } @@ -51,7 +52,7 @@ private static function unflatten(): callable public function extract($class): ?string { $reflector = new ReflectionClass($class); - $method = $reflector->getMethod('__invoke'); + $method = $reflector->getMethod('__invoke'); if ($this->hasOnlyOneParameter($method)) { return $this->firstParameterClassFrom($method); @@ -65,7 +66,7 @@ private function firstParameterClassFrom(ReflectionMethod $method): string /** @var ReflectionNamedType $fistParameterType */ $fistParameterType = $method->getParameters()[0]->getType(); - if (null === $fistParameterType) { + if ($fistParameterType === null) { throw new LogicException('Missing type hint for the first parameter of __invoke'); } diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php index cb2e77213..38217a553 100644 --- a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php +++ b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php @@ -8,19 +8,17 @@ use CodelyTv\Shared\Domain\Utils; use RuntimeException; -final class DomainEventJsonDeserializer +final readonly class DomainEventJsonDeserializer { - public function __construct(private readonly DomainEventMapping $mapping) - { - } + public function __construct(private DomainEventMapping $mapping) {} public function deserialize(string $domainEvent): DomainEvent { - $eventData = Utils::jsonDecode($domainEvent); - $eventName = $eventData['data']['type']; + $eventData = Utils::jsonDecode($domainEvent); + $eventName = $eventData['data']['type']; $eventClass = $this->mapping->for($eventName); - if (null === $eventClass) { + if ($eventClass === null) { throw new RuntimeException("The event <$eventName> doesn't exist or has no subscribers"); } diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonSerializer.php b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonSerializer.php index 011a1ff86..113528e2f 100644 --- a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonSerializer.php +++ b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonSerializer.php @@ -13,10 +13,10 @@ public static function serialize(DomainEvent $domainEvent): string return json_encode( [ 'data' => [ - 'id' => $domainEvent->eventId(), - 'type' => $domainEvent::eventName(), + 'id' => $domainEvent->eventId(), + 'type' => $domainEvent::eventName(), 'occurred_on' => $domainEvent->occurredOn(), - 'attributes' => array_merge($domainEvent->toPrimitives(), ['id' => $domainEvent->aggregateId()]), + 'attributes' => array_merge($domainEvent->toPrimitives(), ['id' => $domainEvent->aggregateId()]), ], 'meta' => [], ] diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php index 956d864bc..481da1326 100644 --- a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php +++ b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php @@ -6,6 +6,7 @@ use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber; use RuntimeException; + use function Lambdish\Phunctional\reduce; use function Lambdish\Phunctional\reindex; @@ -31,10 +32,7 @@ private function eventsExtractor(): callable { return fn (array $mapping, DomainEventSubscriber $subscriber) => array_merge( $mapping, - reindex( - $this->eventNameExtractor(), - $subscriber::subscribedTo() - ) + reindex($this->eventNameExtractor(), $subscriber::subscribedTo()) ); } diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php index f456bc573..be6230573 100644 --- a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php +++ b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php @@ -9,6 +9,7 @@ use CodelyTv\Shared\Infrastructure\Bus\Event\RabbitMq\RabbitMqQueueNameFormatter; use RuntimeException; use Traversable; + use function Lambdish\Phunctional\search; final class DomainEventSubscriberLocator @@ -27,7 +28,7 @@ public function allSubscribedTo(string $eventClass): array return $formatted[$eventClass]; } - public function withRabbitMqQueueNamed(string $queueName): DomainEventSubscriber|callable + public function withRabbitMqQueueNamed(string $queueName): callable|DomainEventSubscriber { $subscriber = search( static fn (DomainEventSubscriber $subscriber) => RabbitMqQueueNameFormatter::format($subscriber) === @@ -35,7 +36,7 @@ public function withRabbitMqQueueNamed(string $queueName): DomainEventSubscriber $this->mapping ); - if (null === $subscriber) { + if ($subscriber === null) { throw new RuntimeException("There are no subscribers for the <$queueName> queue"); } diff --git a/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php b/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php index d894ad23a..f7bc03b52 100644 --- a/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php +++ b/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php @@ -21,9 +21,7 @@ public function __construct(iterable $subscribers) $this->bus = new MessageBus( [ new HandleMessageMiddleware( - new HandlersLocator( - CallableFirstParameterExtractor::forPipedCallables($subscribers) - ) + new HandlersLocator(CallableFirstParameterExtractor::forPipedCallables($subscribers)) ), ] ); diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php index 85b3481cc..43ae38c0f 100644 --- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php +++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php @@ -11,14 +11,15 @@ use Doctrine\DBAL\FetchMode; use Doctrine\ORM\EntityManager; use RuntimeException; + use function Lambdish\Phunctional\each; use function Lambdish\Phunctional\map; -final class MySqlDoctrineDomainEventsConsumer +final readonly class MySqlDoctrineDomainEventsConsumer { - private readonly Connection $connection; + private Connection $connection; - public function __construct(EntityManager $entityManager, private readonly DomainEventMapping $eventMapping) + public function __construct(EntityManager $entityManager, private DomainEventMapping $eventMapping) { $this->connection = $entityManager->getConnection(); } @@ -43,7 +44,7 @@ private function executeSubscribers(callable $subscribers): callable return function (array $rawEvent) use ($subscribers): void { try { $domainEventClass = $this->eventMapping->for($rawEvent['name']); - $domainEvent = $domainEventClass::fromPrimitives( + $domainEvent = $domainEventClass::fromPrimitives( $rawEvent['aggregate_id'], Utils::jsonDecode($rawEvent['body']), $rawEvent['id'], @@ -63,6 +64,6 @@ private function formatDate($stringDate): string private function idExtractor(): callable { - return static fn (array $event): string => "'${event['id']}'"; + return static fn (array $event): string => "'{$event['id']}'"; } } diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php index 77c8e451c..5127030df 100644 --- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php +++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php @@ -9,6 +9,7 @@ use CodelyTv\Shared\Domain\Utils; use Doctrine\DBAL\Connection; use Doctrine\ORM\EntityManager; + use function Lambdish\Phunctional\each; final class MySqlDoctrineEventBus implements EventBus @@ -29,11 +30,11 @@ public function publish(DomainEvent ...$events): void private function publisher(): callable { return function (DomainEvent $domainEvent): void { - $id = $this->connection->quote($domainEvent->eventId()); + $id = $this->connection->quote($domainEvent->eventId()); $aggregateId = $this->connection->quote($domainEvent->aggregateId()); - $name = $this->connection->quote($domainEvent::eventName()); - $body = $this->connection->quote(Utils::jsonEncode($domainEvent->toPrimitives())); - $occurredOn = $this->connection->quote( + $name = $this->connection->quote($domainEvent::eventName()); + $body = $this->connection->quote(Utils::jsonEncode($domainEvent->toPrimitives())); + $occurredOn = $this->connection->quote( Utils::stringToDate($domainEvent->occurredOn())->format(self::DATABASE_TIMESTAMP_FORMAT) ); diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php index b16eca437..03d529f75 100644 --- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php +++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php @@ -6,17 +6,16 @@ use AMQPQueue; use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber; + use function Lambdish\Phunctional\each; -final class RabbitMqConfigurer +final readonly class RabbitMqConfigurer { - public function __construct(private readonly RabbitMqConnection $connection) - { - } + public function __construct(private RabbitMqConnection $connection) {} public function configure(string $exchangeName, DomainEventSubscriber ...$subscribers): void { - $retryExchangeName = RabbitMqExchangeNameFormatter::retry($exchangeName); + $retryExchangeName = RabbitMqExchangeNameFormatter::retry($exchangeName); $deadLetterExchangeName = RabbitMqExchangeNameFormatter::deadLetter($exchangeName); $this->declareExchange($exchangeName); @@ -53,12 +52,12 @@ private function queueDeclarator( $retryExchangeName, $deadLetterExchangeName ): void { - $queueName = RabbitMqQueueNameFormatter::format($subscriber); - $retryQueueName = RabbitMqQueueNameFormatter::formatRetry($subscriber); + $queueName = RabbitMqQueueNameFormatter::format($subscriber); + $retryQueueName = RabbitMqQueueNameFormatter::formatRetry($subscriber); $deadLetterQueueName = RabbitMqQueueNameFormatter::formatDeadLetter($subscriber); - $queue = $this->declareQueue($queueName); - $retryQueue = $this->declareQueue($retryQueueName, $exchangeName, $queueName, 1000); + $queue = $this->declareQueue($queueName); + $retryQueue = $this->declareQueue($retryQueueName, $exchangeName, $queueName, 1000); $deadLetterQueue = $this->declareQueue($deadLetterQueueName); $queue->bind($exchangeName, $queueName); @@ -79,15 +78,15 @@ private function declareQueue( ): AMQPQueue { $queue = $this->connection->queue($name); - if (null !== $deadLetterExchange) { + if ($deadLetterExchange !== null) { $queue->setArgument('x-dead-letter-exchange', $deadLetterExchange); } - if (null !== $deadLetterRoutingKey) { + if ($deadLetterRoutingKey !== null) { $queue->setArgument('x-dead-letter-routing-key', $deadLetterRoutingKey); } - if (null !== $messageTtl) { + if ($messageTtl !== null) { $queue->setArgument('x-message-ttl', $messageTtl); } diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php index a43fa35d8..5242ce758 100644 --- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php +++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php @@ -12,15 +12,13 @@ final class RabbitMqConnection { private static ?AMQPConnection $connection = null; - private static ?AMQPChannel $channel = null; + private static ?AMQPChannel $channel = null; /** @var AMQPExchange[] */ private static array $exchanges = []; /** @var AMQPQueue[] */ private static array $queues = []; - public function __construct(private readonly array $configuration) - { - } + public function __construct(private readonly array $configuration) {} public function queue(string $name): AMQPQueue { @@ -57,7 +55,7 @@ private function channel(): AMQPChannel private function connection(): AMQPConnection { - if (null === self::$connection) { + if (self::$connection === null) { self::$connection = new AMQPConnection($this->configuration); } diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php index 8c007002b..bf12fc093 100644 --- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php +++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php @@ -9,18 +9,18 @@ use AMQPQueueException; use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventJsonDeserializer; use Throwable; + use function Lambdish\Phunctional\assoc; use function Lambdish\Phunctional\get; -final class RabbitMqDomainEventsConsumer +final readonly class RabbitMqDomainEventsConsumer { public function __construct( - private readonly RabbitMqConnection $connection, - private readonly DomainEventJsonDeserializer $deserializer, - private readonly string $exchangeName, - private readonly int $maxRetries - ) { - } + private RabbitMqConnection $connection, + private DomainEventJsonDeserializer $deserializer, + private string $exchangeName, + private int $maxRetries + ) {} public function consume(callable $subscriber, string $queueName): void { @@ -81,11 +81,11 @@ private function sendMessageTo(string $exchangeName, AMQPEnvelope $envelope, AMQ $queue->getName(), AMQP_NOPARAM, [ - 'message_id' => $envelope->getMessageId(), - 'content_type' => $envelope->getContentType(), + 'message_id' => $envelope->getMessageId(), + 'content_type' => $envelope->getContentType(), 'content_encoding' => $envelope->getContentEncoding(), - 'priority' => $envelope->getPriority(), - 'headers' => assoc($headers, 'redelivery_count', get('redelivery_count', $headers, 0) + 1), + 'priority' => $envelope->getPriority(), + 'headers' => assoc($headers, 'redelivery_count', get('redelivery_count', $headers, 0) + 1), ] ); } diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php index 2440afda0..ddd46d98a 100644 --- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php +++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php @@ -9,16 +9,16 @@ use CodelyTv\Shared\Domain\Bus\Event\EventBus; use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventJsonSerializer; use CodelyTv\Shared\Infrastructure\Bus\Event\MySql\MySqlDoctrineEventBus; + use function Lambdish\Phunctional\each; -final class RabbitMqEventBus implements EventBus +final readonly class RabbitMqEventBus implements EventBus { public function __construct( - private readonly RabbitMqConnection $connection, - private readonly string $exchangeName, - private readonly MySqlDoctrineEventBus $failoverPublisher - ) { - } + private RabbitMqConnection $connection, + private string $exchangeName, + private MySqlDoctrineEventBus $failoverPublisher + ) {} public function publish(DomainEvent ...$events): void { @@ -38,17 +38,17 @@ private function publisher(): callable private function publishEvent(DomainEvent $event): void { - $body = DomainEventJsonSerializer::serialize($event); + $body = DomainEventJsonSerializer::serialize($event); $routingKey = $event::eventName(); - $messageId = $event->eventId(); + $messageId = $event->eventId(); $this->connection->exchange($this->exchangeName)->publish( $body, $routingKey, AMQP_NOPARAM, [ - 'message_id' => $messageId, - 'content_type' => 'application/json', + 'message_id' => $messageId, + 'content_type' => 'application/json', 'content_encoding' => 'utf-8', ] ); diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php index 15bf09e9a..e53ac7bb1 100644 --- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php +++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php @@ -6,6 +6,7 @@ use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber; use CodelyTv\Shared\Domain\Utils; + use function Lambdish\Phunctional\last; use function Lambdish\Phunctional\map; diff --git a/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php b/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php index b9e0bb1ab..b404f19cf 100644 --- a/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php +++ b/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php @@ -7,16 +7,16 @@ use CodelyTv\Shared\Domain\Bus\Event\DomainEvent; use CodelyTv\Shared\Domain\Bus\Event\EventBus; use CodelyTv\Shared\Infrastructure\Monitoring\PrometheusMonitor; + use function Lambdish\Phunctional\each; -final class WithPrometheusMonitoringEventBus implements EventBus +final readonly class WithPrometheusMonitoringEventBus implements EventBus { public function __construct( - private readonly PrometheusMonitor $monitor, - private readonly string $appName, - private readonly EventBus $bus - ) { - } + private PrometheusMonitor $monitor, + private string $appName, + private EventBus $bus + ) {} public function publish(DomainEvent ...$events): void { diff --git a/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php b/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php index e00526007..a00220d6a 100644 --- a/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php +++ b/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php @@ -7,6 +7,7 @@ use CodelyTv\Shared\Domain\Utils; use CodelyTv\Tests\Shared\Infrastructure\Doctrine\MySqlDatabaseCleaner; use Doctrine\ORM\EntityManager; + use function Lambdish\Phunctional\apply; use function Lambdish\Phunctional\each; diff --git a/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php b/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php index b671836cb..70c77eeb9 100644 --- a/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php +++ b/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php @@ -5,6 +5,7 @@ namespace CodelyTv\Shared\Infrastructure\Doctrine\Dbal; use Doctrine\DBAL\Types\Type; + use function Lambdish\Phunctional\each; final class DbalCustomTypesRegistrar diff --git a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php index f5a0cfcde..7bf97a4f3 100644 --- a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php +++ b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php @@ -6,13 +6,14 @@ use CodelyTv\Shared\Infrastructure\Doctrine\Dbal\DbalCustomTypesRegistrar; use Doctrine\DBAL\DriverManager; +use Doctrine\DBAL\Platforms\MariaDBPlatform; use Doctrine\DBAL\Schema\MySQLSchemaManager; use Doctrine\ORM\Configuration; -use Doctrine\DBAL\Platforms\MariaDBPlatform; use Doctrine\ORM\EntityManager; use Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver; use Doctrine\ORM\ORMSetup; use RuntimeException; + use function Lambdish\Phunctional\dissoc; final class DoctrineEntityManagerFactory @@ -22,14 +23,14 @@ final class DoctrineEntityManagerFactory ]; public static function create( - array $parameters, - array $contextPrefixes, - bool $isDevMode, + array $parameters, + array $contextPrefixes, + bool $isDevMode, string $schemaFile, - array $dbalCustomTypesClasses + array $dbalCustomTypesClasses ): EntityManager { if ($isDevMode) { - static::generateDatabaseIfNotExists($parameters, $schemaFile); + self::generateDatabaseIfNotExists($parameters, $schemaFile); } DbalCustomTypesRegistrar::register($dbalCustomTypesClasses); @@ -41,11 +42,11 @@ private static function generateDatabaseIfNotExists(array $parameters, string $s { self::ensureSchemaFileExists($schemaFile); - $databaseName = $parameters['dbname']; + $databaseName = $parameters['dbname']; $parametersWithoutDatabaseName = dissoc($parameters, 'dbname'); - $connection = DriverManager::getConnection($parametersWithoutDatabaseName); - $platform = new MariaDBPlatform(); - $schemaManager = new MySQLSchemaManager($connection, $platform); + $connection = DriverManager::getConnection($parametersWithoutDatabaseName); + $platform = new MariaDBPlatform(); + $schemaManager = new MySQLSchemaManager($connection, $platform); if (!self::databaseExists($databaseName, $schemaManager)) { $schemaManager->createDatabase($databaseName); diff --git a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php index 1ead42d3e..d338b38cd 100644 --- a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php +++ b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php @@ -6,19 +6,17 @@ use Elasticsearch\Client; -final class ElasticsearchClient +final readonly class ElasticsearchClient { - public function __construct(private readonly Client $client, private readonly string $indexPrefix) - { - } + public function __construct(private Client $client, private string $indexPrefix) {} public function persist(string $aggregateName, string $identifier, array $plainBody): void { $this->client->index( [ 'index' => sprintf('%s_%s', $this->indexPrefix, $aggregateName), - 'id' => $identifier, - 'body' => $plainBody, + 'id' => $identifier, + 'body' => $plainBody, ] ); } diff --git a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClientFactory.php b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClientFactory.php index d18c90694..13a038ed4 100644 --- a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClientFactory.php +++ b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClientFactory.php @@ -30,7 +30,7 @@ private function generateIndexIfNotExists( string $schemasFolder, string $environment ): void { - if ('prod' !== $environment) { + if ($environment !== 'prod') { return; } diff --git a/src/Shared/Infrastructure/Logger/MonologLogger.php b/src/Shared/Infrastructure/Logger/MonologLogger.php index 9dc205e6f..9dca53c91 100644 --- a/src/Shared/Infrastructure/Logger/MonologLogger.php +++ b/src/Shared/Infrastructure/Logger/MonologLogger.php @@ -6,11 +6,9 @@ use CodelyTv\Shared\Domain\Logger; -final class MonologLogger implements Logger +final readonly class MonologLogger implements Logger { - public function __construct(private readonly \Monolog\Logger $logger) - { - } + public function __construct(private \Monolog\Logger $logger) {} public function info(string $message, array $context = []): void { diff --git a/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php b/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php index 31e2a6adb..f504d288d 100644 --- a/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php +++ b/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php @@ -7,9 +7,9 @@ use Prometheus\CollectorRegistry; use Prometheus\Storage\APC; -final class PrometheusMonitor +final readonly class PrometheusMonitor { - private readonly CollectorRegistry $registry; + private CollectorRegistry $registry; public function __construct() { diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php index 40767ac0c..fd2930ab9 100644 --- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php +++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php @@ -12,14 +12,13 @@ use Doctrine\Common\Collections\Expr\Comparison; use Doctrine\Common\Collections\Expr\CompositeExpression; -final class DoctrineCriteriaConverter +final readonly class DoctrineCriteriaConverter { public function __construct( - private readonly Criteria $criteria, - private readonly array $criteriaToDoctrineFields = [], - private readonly array $hydrators = [] - ) { - } + private Criteria $criteria, + private array $criteriaToDoctrineFields = [], + private array $hydrators = [] + ) {} public static function convert( Criteria $criteria, diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php index 7ac1ea13f..a9c5545dd 100644 --- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php +++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php @@ -10,9 +10,7 @@ abstract class DoctrineRepository { - public function __construct(private readonly EntityManager $entityManager) - { - } + public function __construct(private readonly EntityManager $entityManager) {} protected function entityManager(): EntityManager { diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php index d9fd8b3ab..f4668c11f 100644 --- a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php +++ b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php @@ -9,30 +9,31 @@ use CodelyTv\Shared\Infrastructure\Doctrine\Dbal\DoctrineCustomType; use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Types\StringType; + use function Lambdish\Phunctional\last; abstract class UuidType extends StringType implements DoctrineCustomType { abstract protected function typeClassName(): string; - public static function customTypeName(): string + final public static function customTypeName(): string { return Utils::toSnakeCase(str_replace('Type', '', (string) last(explode('\\', static::class)))); } - public function getName(): string + final public function getName(): string { return self::customTypeName(); } - public function convertToPHPValue($value, AbstractPlatform $platform) + final public function convertToPHPValue($value, AbstractPlatform $platform) { $className = $this->typeClassName(); return new $className($value); } - public function convertToDatabaseValue($value, AbstractPlatform $platform) + final public function convertToDatabaseValue($value, AbstractPlatform $platform) { /** @var Uuid $value */ return $value->value(); diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php index 35aea009e..611585223 100644 --- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php +++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php @@ -10,18 +10,18 @@ final class ElasticQueryGenerator { - private const MUST_TYPE = 'must'; + private const MUST_TYPE = 'must'; private const MUST_NOT_TYPE = 'must_not'; - private const TERM_TERM = 'term'; - private const TERM_RANGE = 'range'; + private const TERM_TERM = 'term'; + private const TERM_RANGE = 'range'; private const TERM_WILDCARD = 'wildcard'; private static array $mustNotFields = [FilterOperator::NOT_EQUAL, FilterOperator::NOT_CONTAINS]; public function __invoke(array $query, Filter $filter): array { - $type = $this->typeFor($filter->operator()); - $termLevel = $this->termLevelFor($filter->operator()); + $type = $this->typeFor($filter->operator()); + $termLevel = $this->termLevelFor($filter->operator()); $valueTemplate = $filter->operator()->isContaining() ? '*%s*' : '%s'; return array_merge_recursive( @@ -29,10 +29,7 @@ public function __invoke(array $query, Filter $filter): array [ $type => [ $termLevel => [ - $filter->field()->value() => sprintf( - $valueTemplate, - strtolower($filter->value()->value()) - ), + $filter->field()->value() => sprintf($valueTemplate, strtolower($filter->value()->value())), ], ], ] @@ -47,9 +44,9 @@ private function typeFor(FilterOperator $operator): string private function termLevelFor(FilterOperator $operator): string { return match ($operator->value()) { - FilterOperator::EQUAL => self::TERM_TERM, - FilterOperator::NOT_EQUAL => '!=', - FilterOperator::GT, FilterOperator::LT => self::TERM_RANGE, + FilterOperator::EQUAL => self::TERM_TERM, + FilterOperator::NOT_EQUAL => '!=', + FilterOperator::GT, FilterOperator::LT => self::TERM_RANGE, FilterOperator::CONTAINS, FilterOperator::NOT_CONTAINS => self::TERM_WILDCARD, default => throw new Exception("Unexpected match value {$operator->value()}"), }; diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php index bd8a5373b..b541f941e 100644 --- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php +++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php @@ -5,6 +5,7 @@ namespace CodelyTv\Shared\Infrastructure\Persistence\Elasticsearch; use CodelyTv\Shared\Domain\Criteria\Criteria; + use function Lambdish\Phunctional\reduce; final class ElasticsearchCriteriaConverter @@ -38,7 +39,13 @@ private function formatSort(Criteria $criteria): array if ($criteria->hasOrder()) { $order = $criteria->order(); - return ['sort' => [$order->orderBy()->value() => ['order' => $order->orderType()->value()]]]; + return [ + 'sort' => [ + $order->orderBy()->value() => [ + 'order' => $order->orderType()->value(), + ], + ], + ]; } return []; diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php index 1949acdbe..bd72fc4cd 100644 --- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php +++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php @@ -7,18 +7,17 @@ use CodelyTv\Shared\Domain\Criteria\Criteria; use CodelyTv\Shared\Infrastructure\Elasticsearch\ElasticsearchClient; use Elasticsearch\Common\Exceptions\Missing404Exception; + use function Lambdish\Phunctional\get_in; use function Lambdish\Phunctional\map; abstract class ElasticsearchRepository { - public function __construct(private readonly ElasticsearchClient $client) - { - } + public function __construct(private readonly ElasticsearchClient $client) {} abstract protected function aggregateName(): string; - public function searchByCriteria(Criteria $criteria): array + final public function searchByCriteria(Criteria $criteria): array { $converter = new ElasticsearchCriteriaConverter(); diff --git a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php index a365d8c35..c93c9e9bc 100644 --- a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php +++ b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php @@ -13,7 +13,7 @@ final class AddJsonBodyToRequestListener { public function onKernelRequest(RequestEvent $event): void { - $request = $event->getRequest(); + $request = $event->getRequest(); $requestContents = $request->getContent(); if (!empty($requestContents) && $this->containsHeader($request, 'Content-Type', 'application/json')) { @@ -26,7 +26,7 @@ public function onKernelRequest(RequestEvent $event): void $jsonDataLowerCase[preg_replace_callback( '/_(.)/', static fn ($matches) => strtoupper($matches[1]), - $key + (string) $key )] = $value; } $request->request->replace($jsonDataLowerCase); diff --git a/src/Shared/Infrastructure/Symfony/ApiController.php b/src/Shared/Infrastructure/Symfony/ApiController.php index ce5a18c76..50fcdd989 100644 --- a/src/Shared/Infrastructure/Symfony/ApiController.php +++ b/src/Shared/Infrastructure/Symfony/ApiController.php @@ -9,6 +9,7 @@ use CodelyTv\Shared\Domain\Bus\Query\Query; use CodelyTv\Shared\Domain\Bus\Query\QueryBus; use CodelyTv\Shared\Domain\Bus\Query\Response; + use function Lambdish\Phunctional\each; abstract class ApiController diff --git a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php index 256d1e71a..a18ea1e20 100644 --- a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php +++ b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php @@ -10,11 +10,9 @@ use Symfony\Component\HttpKernel\Event\ExceptionEvent; use Throwable; -final class ApiExceptionListener +final readonly class ApiExceptionListener { - public function __construct(private readonly ApiExceptionsHttpStatusCodeMapping $exceptionHandler) - { - } + public function __construct(private ApiExceptionsHttpStatusCodeMapping $exceptionHandler) {} public function onException(ExceptionEvent $event): void { @@ -23,7 +21,7 @@ public function onException(ExceptionEvent $event): void $event->setResponse( new JsonResponse( [ - 'code' => $this->exceptionCodeFor($exception), + 'code' => $this->exceptionCodeFor($exception), 'message' => $exception->getMessage(), ], $this->exceptionHandler->statusCodeFor($exception::class) diff --git a/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php b/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php index 31a8b0586..2a8694347 100644 --- a/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php +++ b/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php @@ -7,6 +7,7 @@ use InvalidArgumentException; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; + use function Lambdish\Phunctional\get; final class ApiExceptionsHttpStatusCodeMapping @@ -14,7 +15,7 @@ final class ApiExceptionsHttpStatusCodeMapping private const DEFAULT_STATUS_CODE = Response::HTTP_INTERNAL_SERVER_ERROR; private array $exceptions = [ InvalidArgumentException::class => Response::HTTP_BAD_REQUEST, - NotFoundHttpException::class => Response::HTTP_NOT_FOUND, + NotFoundHttpException::class => Response::HTTP_NOT_FOUND, ]; public function register(string $exceptionClass, int $statusCode): void @@ -26,7 +27,7 @@ public function statusCodeFor(string $exceptionClass): int { $statusCode = get($exceptionClass, $this->exceptions, self::DEFAULT_STATUS_CODE); - if (null === $statusCode) { + if ($statusCode === null) { throw new InvalidArgumentException("There are no status code mapping for <$exceptionClass>"); } diff --git a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php index 6b4a74093..4443de0f5 100644 --- a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php +++ b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php @@ -12,11 +12,9 @@ use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\RequestEvent; -final class BasicHttpAuthMiddleware +final readonly class BasicHttpAuthMiddleware { - public function __construct(private readonly CommandBus $bus) - { - } + public function __construct(private CommandBus $bus) {} public function onKernelRequest(RequestEvent $event): void { @@ -34,7 +32,7 @@ public function onKernelRequest(RequestEvent $event): void private function hasIntroducedCredentials(?string $user): bool { - return null !== $user; + return $user !== null; } private function authenticate(string $user, string $pass, RequestEvent $event): void @@ -43,7 +41,7 @@ private function authenticate(string $user, string $pass, RequestEvent $event): $this->bus->dispatch(new AuthenticateUserCommand($user, $pass)); $this->addUserDataToRequest($user, $event); - } catch (InvalidAuthUsername | InvalidAuthCredentials) { + } catch (InvalidAuthCredentials|InvalidAuthUsername) { $event->setResponse(new JsonResponse(['error' => 'Invalid credentials'], Response::HTTP_FORBIDDEN)); } } @@ -56,7 +54,9 @@ private function addUserDataToRequest(string $user, RequestEvent $event): void private function askForCredentials(RequestEvent $event): void { $event->setResponse( - new Response('', Response::HTTP_UNAUTHORIZED, ['WWW-Authenticate' => 'Basic realm="CodelyTV"']) + new Response('', Response::HTTP_UNAUTHORIZED, [ +'WWW-Authenticate' => 'Basic realm="CodelyTV"', +]) ); } } diff --git a/src/Shared/Infrastructure/Symfony/WebController.php b/src/Shared/Infrastructure/Symfony/WebController.php index 81efc342d..26bbecf23 100644 --- a/src/Shared/Infrastructure/Symfony/WebController.php +++ b/src/Shared/Infrastructure/Symfony/WebController.php @@ -17,34 +17,34 @@ abstract class WebController extends ApiController { public function __construct( - private readonly Environment $twig, - private readonly RouterInterface $router, - private readonly RequestStack $requestStack, - QueryBus $queryBus, - CommandBus $commandBus, + private readonly Environment $twig, + private readonly RouterInterface $router, + private readonly RequestStack $requestStack, + QueryBus $queryBus, + CommandBus $commandBus, ApiExceptionsHttpStatusCodeMapping $exceptionHandler ) { parent::__construct($queryBus, $commandBus, $exceptionHandler); } - public function render(string $templatePath, array $arguments = []): SymfonyResponse + final public function render(string $templatePath, array $arguments = []): SymfonyResponse { return new SymfonyResponse($this->twig->render($templatePath, $arguments)); } - public function redirect(string $routeName): RedirectResponse + final public function redirect(string $routeName): RedirectResponse { return new RedirectResponse($this->router->generate($routeName), 302); } - public function redirectWithMessage(string $routeName, string $message): RedirectResponse + final public function redirectWithMessage(string $routeName, string $message): RedirectResponse { $this->addFlashFor('message', [$message]); return $this->redirect($routeName); } - public function redirectWithErrors( + final public function redirectWithErrors( string $routeName, ConstraintViolationListInterface $errors, Request $request diff --git a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php index 0d83c9376..a5fc8a61c 100644 --- a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php +++ b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php @@ -26,7 +26,7 @@ protected function setUp(): void /** @test */ public function it_should_authenticate_a_valid_user(): void { - $command = AuthenticateUserCommandMother::create(); + $command = AuthenticateUserCommandMother::create(); $authUser = AuthUserMother::fromCommand($command); $this->shouldSearch($authUser->username(), $authUser); @@ -39,7 +39,7 @@ public function it_should_throw_an_exception_when_the_user_does_not_exist(): voi { $this->expectException(InvalidAuthUsername::class); - $command = AuthenticateUserCommandMother::create(); + $command = AuthenticateUserCommandMother::create(); $username = AuthUsernameMother::create($command->username()); $this->shouldSearch($username); @@ -52,7 +52,7 @@ public function it_should_throw_an_exception_when_the_password_does_not_math(): { $this->expectException(InvalidAuthCredentials::class); - $command = AuthenticateUserCommandMother::create(); + $command = AuthenticateUserCommandMother::create(); $authUser = AuthUserMother::create(username: AuthUsernameMother::create($command->username())); $this->shouldSearch($authUser->username(), $authUser); diff --git a/tests/Backoffice/Auth/AuthModuleUnitTestCase.php b/tests/Backoffice/Auth/AuthModuleUnitTestCase.php index 547d8e93c..a5402858a 100644 --- a/tests/Backoffice/Auth/AuthModuleUnitTestCase.php +++ b/tests/Backoffice/Auth/AuthModuleUnitTestCase.php @@ -12,7 +12,7 @@ abstract class AuthModuleUnitTestCase extends UnitTestCase { - private AuthRepository|MockInterface|null $repository; + private AuthRepository|MockInterface|null $repository = null; protected function shouldSearch(AuthUsername $username, AuthUser $authUser = null): void { @@ -25,6 +25,6 @@ protected function shouldSearch(AuthUsername $username, AuthUser $authUser = nul protected function repository(): AuthRepository|MockInterface { - return $this->repository = $this->repository ?? $this->mock(AuthRepository::class); + return $this->repository ??= $this->mock(AuthRepository::class); } } diff --git a/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php b/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php index 85168553d..d6620c4ad 100644 --- a/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php +++ b/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php @@ -15,13 +15,11 @@ public static function nameContains(string $text): Criteria { return CriteriaMother::create( FiltersMother::createOne( - FilterMother::fromValues( - [ - 'field' => 'name', + FilterMother::fromValues([ + 'field' => 'name', 'operator' => 'CONTAINS', - 'value' => $text, - ] - ) + 'value' => $text, + ]) ) ); } diff --git a/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php b/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php index 490e9d922..10212414f 100644 --- a/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php +++ b/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php @@ -20,9 +20,9 @@ public function it_should_save_a_valid_course(): void /** @test */ public function it_should_search_all_existing_courses(): void { - $existingCourse = BackofficeCourseMother::create(); + $existingCourse = BackofficeCourseMother::create(); $anotherExistingCourse = BackofficeCourseMother::create(); - $existingCourses = [$existingCourse, $anotherExistingCourse]; + $existingCourses = [$existingCourse, $anotherExistingCourse]; $this->elasticRepository()->save($existingCourse); $this->elasticRepository()->save($anotherExistingCourse); @@ -33,9 +33,9 @@ public function it_should_search_all_existing_courses(): void /** @test */ public function it_should_search_all_existing_courses_with_an_empty_criteria(): void { - $existingCourse = BackofficeCourseMother::create(); + $existingCourse = BackofficeCourseMother::create(); $anotherExistingCourse = BackofficeCourseMother::create(); - $existingCourses = [$existingCourse, $anotherExistingCourse]; + $existingCourses = [$existingCourse, $anotherExistingCourse]; $this->elasticRepository()->save($existingCourse); $this->elasticRepository()->save($anotherExistingCourse); @@ -51,10 +51,10 @@ public function it_should_search_all_existing_courses_with_an_empty_criteria(): /** @test */ public function it_should_filter_by_criteria(): void { - $dddInPhpCourse = BackofficeCourseMother::create(name: 'DDD en PHP'); + $dddInPhpCourse = BackofficeCourseMother::create(name: 'DDD en PHP'); $dddInJavaCourse = BackofficeCourseMother::create(name: 'DDD en Java'); - $intellijCourse = BackofficeCourseMother::create(name: 'Exprimiendo Intellij'); - $dddCourses = [$dddInPhpCourse, $dddInJavaCourse]; + $intellijCourse = BackofficeCourseMother::create(name: 'Exprimiendo Intellij'); + $dddCourses = [$dddInPhpCourse, $dddInJavaCourse]; $nameContainsDddCriteria = BackofficeCourseCriteriaMother::nameContains('DDD'); diff --git a/tests/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepositoryTest.php b/tests/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepositoryTest.php index bb35da789..eb2f3b457 100644 --- a/tests/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepositoryTest.php +++ b/tests/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepositoryTest.php @@ -20,9 +20,9 @@ public function it_should_save_a_valid_course(): void /** @test */ public function it_should_search_all_existing_courses(): void { - $existingCourse = BackofficeCourseMother::create(); + $existingCourse = BackofficeCourseMother::create(); $anotherExistingCourse = BackofficeCourseMother::create(); - $existingCourses = [$existingCourse, $anotherExistingCourse]; + $existingCourses = [$existingCourse, $anotherExistingCourse]; $this->mySqlRepository()->save($existingCourse); $this->mySqlRepository()->save($anotherExistingCourse); @@ -33,9 +33,9 @@ public function it_should_search_all_existing_courses(): void /** @test */ public function it_should_search_all_existing_courses_with_an_empty_criteria(): void { - $existingCourse = BackofficeCourseMother::create(); + $existingCourse = BackofficeCourseMother::create(); $anotherExistingCourse = BackofficeCourseMother::create(); - $existingCourses = [$existingCourse, $anotherExistingCourse]; + $existingCourses = [$existingCourse, $anotherExistingCourse]; $this->mySqlRepository()->save($existingCourse); $this->mySqlRepository()->save($anotherExistingCourse); @@ -47,10 +47,10 @@ public function it_should_search_all_existing_courses_with_an_empty_criteria(): /** @test */ public function it_should_filter_by_criteria(): void { - $dddInPhpCourse = BackofficeCourseMother::create(name: 'DDD en PHP'); + $dddInPhpCourse = BackofficeCourseMother::create(name: 'DDD en PHP'); $dddInJavaCourse = BackofficeCourseMother::create(name: 'DDD en Java'); - $intellijCourse = BackofficeCourseMother::create(name: 'Exprimiendo Intellij'); - $dddCourses = [$dddInPhpCourse, $dddInJavaCourse]; + $intellijCourse = BackofficeCourseMother::create(name: 'Exprimiendo Intellij'); + $dddCourses = [$dddInPhpCourse, $dddInJavaCourse]; $nameContainsDddCriteria = BackofficeCourseCriteriaMother::nameContains('DDD'); diff --git a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php index c042ffc2e..4bee80f16 100644 --- a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php +++ b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php @@ -9,13 +9,12 @@ use CodelyTv\Tests\Shared\Infrastructure\Doctrine\MySqlDatabaseCleaner; use CodelyTv\Tests\Shared\Infrastructure\Elastic\ElasticDatabaseCleaner; use Doctrine\ORM\EntityManager; + use function Lambdish\Phunctional\apply; -final class BackofficeEnvironmentArranger implements EnvironmentArranger +final readonly class BackofficeEnvironmentArranger implements EnvironmentArranger { - public function __construct(private ElasticsearchClient $elasticsearchClient, private EntityManager $entityManager) - { - } + public function __construct(private ElasticsearchClient $elasticsearchClient, private EntityManager $entityManager) {} public function arrange(): void { @@ -23,7 +22,5 @@ public function arrange(): void apply(new MySqlDatabaseCleaner(), [$this->entityManager]); } - public function close(): void - { - } + public function close(): void {} } diff --git a/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php b/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php index 6a85c1f1a..fa17355db 100644 --- a/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php +++ b/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php @@ -26,7 +26,7 @@ public function it_should_create_a_valid_course(): void { $command = CreateCourseCommandMother::create(); - $course = CourseMother::fromRequest($command); + $course = CourseMother::fromRequest($command); $domainEvent = CourseCreatedDomainEventMother::fromCourse($course); $this->shouldSave($course); diff --git a/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php b/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php index 2815aa7fe..9481c0557 100644 --- a/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php +++ b/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php @@ -26,8 +26,8 @@ protected function setUp(): void /** @test */ public function it_should_rename_an_existing_course(): void { - $course = CourseMother::create(); - $newName = CourseNameMother::create(); + $course = CourseMother::create(); + $newName = CourseNameMother::create(); $renamedCourse = DuplicatorMother::with($course, ['name' => $newName]); $this->shouldSearch($course->id(), $course); diff --git a/tests/Mooc/Courses/CoursesModuleUnitTestCase.php b/tests/Mooc/Courses/CoursesModuleUnitTestCase.php index 99aec4245..3de440cdf 100644 --- a/tests/Mooc/Courses/CoursesModuleUnitTestCase.php +++ b/tests/Mooc/Courses/CoursesModuleUnitTestCase.php @@ -12,7 +12,7 @@ abstract class CoursesModuleUnitTestCase extends UnitTestCase { - private CourseRepository|MockInterface|null $repository; + private CourseRepository|MockInterface|null $repository = null; protected function shouldSave(Course $course): void { @@ -34,6 +34,6 @@ protected function shouldSearch(CourseId $id, ?Course $course): void protected function repository(): CourseRepository|MockInterface { - return $this->repository = $this->repository ?? $this->mock(CourseRepository::class); + return $this->repository ??= $this->mock(CourseRepository::class); } } diff --git a/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php b/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php index 630137874..9d6bf0573 100644 --- a/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php +++ b/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php @@ -25,8 +25,8 @@ protected function setUp(): void /** @test */ public function it_should_find_an_existing_courses_counter(): void { - $counter = CoursesCounterMother::create(); - $query = new FindCoursesCounterQuery(); + $counter = CoursesCounterMother::create(); + $query = new FindCoursesCounterQuery(); $response = CoursesCounterResponseMother::create($counter->total()); $this->shouldSearch($counter); diff --git a/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php b/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php index 9074bb70d..f7aa9b16d 100644 --- a/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php +++ b/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php @@ -21,11 +21,7 @@ protected function setUp(): void parent::setUp(); $this->subscriber = new IncrementCoursesCounterOnCourseCreated( - new CoursesCounterIncrementer( - $this->repository(), - $this->uuidGenerator(), - $this->eventBus() - ) + new CoursesCounterIncrementer($this->repository(), $this->uuidGenerator(), $this->eventBus()) ); } @@ -34,8 +30,8 @@ public function it_should_initialize_a_new_counter(): void { $event = CourseCreatedDomainEventMother::create(); - $courseId = CourseIdMother::create($event->aggregateId()); - $newCounter = CoursesCounterMother::withOne($courseId); + $courseId = CourseIdMother::create($event->aggregateId()); + $newCounter = CoursesCounterMother::withOne($courseId); $domainEvent = CoursesCounterIncrementedDomainEventMother::fromCounter($newCounter); $this->shouldSearch(null); @@ -51,10 +47,10 @@ public function it_should_increment_an_existing_counter(): void { $event = CourseCreatedDomainEventMother::create(); - $courseId = CourseIdMother::create($event->aggregateId()); - $existingCounter = CoursesCounterMother::create(); + $courseId = CourseIdMother::create($event->aggregateId()); + $existingCounter = CoursesCounterMother::create(); $incrementedCounter = CoursesCounterMother::incrementing($existingCounter, $courseId); - $domainEvent = CoursesCounterIncrementedDomainEventMother::fromCounter($incrementedCounter); + $domainEvent = CoursesCounterIncrementedDomainEventMother::fromCounter($incrementedCounter); $this->shouldSearch($existingCounter); $this->shouldSave($incrementedCounter); @@ -68,7 +64,7 @@ public function it_should_not_increment_an_already_incremented_course(): void { $event = CourseCreatedDomainEventMother::create(); - $courseId = CourseIdMother::create($event->aggregateId()); + $courseId = CourseIdMother::create($event->aggregateId()); $existingCounter = CoursesCounterMother::withOne($courseId); $this->shouldSearch($existingCounter); diff --git a/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php b/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php index d990439dd..366cb59c9 100644 --- a/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php +++ b/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php @@ -11,7 +11,7 @@ abstract class CoursesCounterModuleUnitTestCase extends UnitTestCase { - private CoursesCounterRepository|MockInterface|null $repository; + private CoursesCounterRepository|MockInterface|null $repository = null; protected function shouldSave(CoursesCounter $course): void { @@ -32,6 +32,6 @@ protected function shouldSearch(?CoursesCounter $counter): void protected function repository(): CoursesCounterRepository|MockInterface { - return $this->repository = $this->repository ?? $this->mock(CoursesCounterRepository::class); + return $this->repository ??= $this->mock(CoursesCounterRepository::class); } } diff --git a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php index c6be3379d..96a9024a0 100644 --- a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php +++ b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php @@ -7,20 +7,17 @@ use CodelyTv\Tests\Shared\Infrastructure\Arranger\EnvironmentArranger; use CodelyTv\Tests\Shared\Infrastructure\Doctrine\MySqlDatabaseCleaner; use Doctrine\ORM\EntityManager; + use function Lambdish\Phunctional\apply; -final class MoocEnvironmentArranger implements EnvironmentArranger +final readonly class MoocEnvironmentArranger implements EnvironmentArranger { - public function __construct(private EntityManager $entityManager) - { - } + public function __construct(private EntityManager $entityManager) {} public function arrange(): void { apply(new MySqlDatabaseCleaner(), [$this->entityManager]); } - public function close(): void - { - } + public function close(): void {} } diff --git a/tests/Shared/Domain/DuplicatorMother.php b/tests/Shared/Domain/DuplicatorMother.php index 2f23565ab..fc4260079 100644 --- a/tests/Shared/Domain/DuplicatorMother.php +++ b/tests/Shared/Domain/DuplicatorMother.php @@ -6,6 +6,7 @@ use ReflectionObject; use ReflectionProperty; + use function Lambdish\Phunctional\each; final class DuplicatorMother diff --git a/tests/Shared/Domain/IntegerMother.php b/tests/Shared/Domain/IntegerMother.php index ac6259f3b..b164ea31c 100644 --- a/tests/Shared/Domain/IntegerMother.php +++ b/tests/Shared/Domain/IntegerMother.php @@ -11,7 +11,7 @@ public static function create(): int return self::between(1); } - public static function between(int $min, $max = PHP_INT_MAX): int + public static function between(int $min, int $max = PHP_INT_MAX): int { return MotherCreator::random()->numberBetween($min, $max); } diff --git a/tests/Shared/Domain/MotherCreator.php b/tests/Shared/Domain/MotherCreator.php index 41eab9050..30a98bce7 100644 --- a/tests/Shared/Domain/MotherCreator.php +++ b/tests/Shared/Domain/MotherCreator.php @@ -9,10 +9,10 @@ final class MotherCreator { - private static ?Generator $faker; + private static ?Generator $faker = null; public static function random(): Generator { - return self::$faker = self::$faker ?? Factory::create(); + return self::$faker ??= Factory::create(); } } diff --git a/tests/Shared/Domain/RandomElementPicker.php b/tests/Shared/Domain/RandomElementPicker.php index baf41ecc8..2663ac72f 100644 --- a/tests/Shared/Domain/RandomElementPicker.php +++ b/tests/Shared/Domain/RandomElementPicker.php @@ -6,7 +6,7 @@ final class RandomElementPicker { - public static function from(...$elements): mixed + public static function from(mixed ...$elements): mixed { return MotherCreator::random()->randomElement($elements); } diff --git a/tests/Shared/Infrastructure/Behat/ApiContext.php b/tests/Shared/Infrastructure/Behat/ApiContext.php index 272d31ef7..30be7f565 100644 --- a/tests/Shared/Infrastructure/Behat/ApiContext.php +++ b/tests/Shared/Infrastructure/Behat/ApiContext.php @@ -13,13 +13,13 @@ final class ApiContext extends RawMinkContext { - private MinkHelper $sessionHelper; - private MinkSessionRequestHelper $request; + private readonly MinkHelper $sessionHelper; + private readonly MinkSessionRequestHelper $request; - public function __construct(private Session $minkSession) + public function __construct(private readonly Session $minkSession) { $this->sessionHelper = new MinkHelper($this->minkSession); - $this->request = new MinkSessionRequestHelper(new MinkHelper($minkSession)); + $this->request = new MinkSessionRequestHelper(new MinkHelper($minkSession)); } /** @@ -44,7 +44,7 @@ public function iSendARequestToWithBody($method, $url, PyStringNode $body): void public function theResponseContentShouldBe(PyStringNode $expectedResponse): void { $expected = $this->sanitizeOutput($expectedResponse->getRaw()); - $actual = $this->sanitizeOutput($this->sessionHelper->getResponse()); + $actual = $this->sanitizeOutput($this->sessionHelper->getResponse()); if ($expected !== $actual) { throw new RuntimeException( @@ -61,9 +61,7 @@ public function theResponseShouldBeEmpty(): void $actual = trim($this->sessionHelper->getResponse()); if (!empty($actual)) { - throw new RuntimeException( - sprintf("The outputs is not empty, Actual:\n%s", $actual) - ); + throw new RuntimeException(sprintf("The outputs is not empty, Actual:\n%s", $actual)); } } @@ -101,6 +99,6 @@ public function theResponseStatusCodeShouldBe($expectedResponseCode): void private function sanitizeOutput(string $output): false|string { - return json_encode(json_decode(trim($output), true)); + return json_encode(json_decode(trim($output), true, 512, JSON_THROW_ON_ERROR), JSON_THROW_ON_ERROR); } } diff --git a/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php b/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php index 2d70452cb..157041b44 100644 --- a/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php +++ b/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php @@ -10,14 +10,13 @@ use CodelyTv\Shared\Infrastructure\Bus\Event\InMemory\InMemorySymfonyEventBus; use CodelyTv\Shared\Infrastructure\Doctrine\DatabaseConnections; -final class ApplicationFeatureContext implements Context +final readonly class ApplicationFeatureContext implements Context { public function __construct( private DatabaseConnections $connections, private InMemorySymfonyEventBus $bus, private DomainEventJsonDeserializer $deserializer - ) { - } + ) {} /** @BeforeScenario */ public function cleanEnvironment(): void diff --git a/tests/Shared/Infrastructure/Bus/Command/FakeCommand.php b/tests/Shared/Infrastructure/Bus/Command/FakeCommand.php index bf13218ba..d009d2a79 100644 --- a/tests/Shared/Infrastructure/Bus/Command/FakeCommand.php +++ b/tests/Shared/Infrastructure/Bus/Command/FakeCommand.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\Bus\Command\Command; -final class FakeCommand implements Command -{ -} +final class FakeCommand implements Command {} diff --git a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php index 3586816a1..291e9eb14 100644 --- a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php +++ b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php @@ -40,8 +40,8 @@ public function it_should_raise_an_exception_dispatching_a_non_registered_comman private function commandHandler(): object { - return new class () { - public function __invoke(FakeCommand $command): void + return new class() { + public function __invoke(FakeCommand $command): never { throw new RuntimeException('This works fine!'); } diff --git a/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php b/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php index d2d4457e1..8b3f48364 100644 --- a/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php +++ b/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php @@ -16,14 +16,14 @@ final class MySqlDoctrineEventBusTest extends InfrastructureTestCase { - private MySqlDoctrineEventBus|null $bus; + private MySqlDoctrineEventBus|null $bus; private MySqlDoctrineDomainEventsConsumer|null $consumer; protected function setUp(): void { parent::setUp(); - $this->bus = new MySqlDoctrineEventBus($this->service(EntityManager::class)); + $this->bus = new MySqlDoctrineEventBus($this->service(EntityManager::class)); $this->consumer = new MySqlDoctrineDomainEventsConsumer( $this->service(EntityManager::class), $this->service(DomainEventMapping::class) @@ -33,14 +33,17 @@ protected function setUp(): void /** @test */ public function it_should_publish_and_consume_domain_events_from_msql(): void { - $domainEvent = CourseCreatedDomainEventMother::create(); + $domainEvent = CourseCreatedDomainEventMother::create(); $anotherDomainEvent = CoursesCounterIncrementedDomainEventMother::create(); $this->bus->publish($domainEvent, $anotherDomainEvent); $this->consumer->consume( - subscribers: fn (DomainEvent ...$expectedEvents) => $this->assertContainsEquals($domainEvent, $expectedEvents), - eventsToConsume: 2 + subscribers: fn (DomainEvent ...$expectedEvents) => $this->assertContainsEquals( + $domainEvent, + $expectedEvents + ), + eventsToConsume: 2 ); } diff --git a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php index 0934f42bc..5612e2c8a 100644 --- a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php +++ b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php @@ -22,12 +22,12 @@ final class RabbitMqEventBusTest extends InfrastructureTestCase { private $connection; - private $exchangeName; - private $configurer; - private $publisher; - private $consumer; - private $fakeSubscriber; - private $consumerHasBeenExecuted; + private string $exchangeName; + private RabbitMqConfigurer $configurer; + private RabbitMqEventBus $publisher; + private RabbitMqDomainEventsConsumer $consumer; + private TestAllWorksOnRabbitMqEventsPublished $fakeSubscriber; + private bool $consumerHasBeenExecuted; protected function setUp(): void { @@ -35,20 +35,20 @@ protected function setUp(): void $this->connection = $this->service(RabbitMqConnection::class); - $this->exchangeName = 'test_domain_events'; - $this->configurer = new RabbitMqConfigurer($this->connection); - $this->publisher = new RabbitMqEventBus( + $this->exchangeName = 'test_domain_events'; + $this->configurer = new RabbitMqConfigurer($this->connection); + $this->publisher = new RabbitMqEventBus( $this->connection, $this->exchangeName, $this->service(MySqlDoctrineEventBus::class) ); - $this->consumer = new RabbitMqDomainEventsConsumer( + $this->consumer = new RabbitMqDomainEventsConsumer( $this->connection, $this->service(DomainEventJsonDeserializer::class), $this->exchangeName, $maxRetries = 1 ); - $this->fakeSubscriber = new TestAllWorksOnRabbitMqEventsPublished(); + $this->fakeSubscriber = new TestAllWorksOnRabbitMqEventsPublished(); $this->consumerHasBeenExecuted = false; $this->cleanEnvironment($this->connection); @@ -145,7 +145,7 @@ private function assertConsumer(DomainEvent ...$expectedDomainEvents): callable private function failingConsumer(): callable { - return static function (DomainEvent $domainEvent): void { + return static function (DomainEvent $domainEvent): never { throw new RuntimeException('To test'); }; } diff --git a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php index 310d3ce58..70a8623e4 100644 --- a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php +++ b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php @@ -12,13 +12,8 @@ final class TestAllWorksOnRabbitMqEventsPublished implements DomainEventSubscrib { public static function subscribedTo(): array { - return [ - CourseCreatedDomainEvent::class, - CoursesCounterIncrementedDomainEvent::class, - ]; + return [CourseCreatedDomainEvent::class, CoursesCounterIncrementedDomainEvent::class, ]; } - public function __invoke(CourseCreatedDomainEvent|CoursesCounterIncrementedDomainEvent $event): void - { - } + public function __invoke(CourseCreatedDomainEvent|CoursesCounterIncrementedDomainEvent $event): void {} } diff --git a/tests/Shared/Infrastructure/Bus/Query/FakeQuery.php b/tests/Shared/Infrastructure/Bus/Query/FakeQuery.php index 0afc89517..4f5f2ba62 100644 --- a/tests/Shared/Infrastructure/Bus/Query/FakeQuery.php +++ b/tests/Shared/Infrastructure/Bus/Query/FakeQuery.php @@ -6,6 +6,4 @@ use CodelyTv\Shared\Domain\Bus\Query\Query; -final class FakeQuery implements Query -{ -} +final class FakeQuery implements Query {} diff --git a/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php b/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php index 36b437b5e..323c50493 100644 --- a/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php +++ b/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php @@ -6,11 +6,9 @@ use CodelyTv\Shared\Domain\Bus\Query\Response; -final class FakeResponse implements Response +final readonly class FakeResponse implements Response { - public function __construct(private int $number) - { - } + public function __construct(private int $number) {} public function number(): int { diff --git a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php index 48fd55d26..3dbb86fe8 100644 --- a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php +++ b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php @@ -40,15 +40,15 @@ public function it_should_raise_an_exception_dispatching_a_non_registered_query( private function queryHandler(): object { - return new class () { - public function __invoke(FakeQuery $query): void + return new class() { + public function __invoke(FakeQuery $query): never { throw new RuntimeException('This works fine!'); } }; } - private function query(): Query|MockInterface + private function query(): MockInterface|Query { return $this->mock(Query::class); } diff --git a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php index 19058ab66..2aa1c9afe 100644 --- a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php +++ b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php @@ -6,6 +6,7 @@ use Doctrine\DBAL\Connection; use Doctrine\ORM\EntityManagerInterface; + use function Lambdish\Phunctional\first; use function Lambdish\Phunctional\map; @@ -15,7 +16,7 @@ public function __invoke(EntityManagerInterface $entityManager): void { $connection = $entityManager->getConnection(); - $tables = $this->tables($connection); + $tables = $this->tables($connection); $truncateTablesSql = $this->truncateDatabaseSql($tables); $connection->exec($truncateTablesSql); diff --git a/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php b/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php index 651ede7f6..4dc86b3c3 100644 --- a/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php +++ b/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php @@ -5,6 +5,7 @@ namespace CodelyTv\Tests\Shared\Infrastructure\Elastic; use CodelyTv\Shared\Infrastructure\Elasticsearch\ElasticsearchClient; + use function Lambdish\Phunctional\each; final class ElasticDatabaseCleaner diff --git a/tests/Shared/Infrastructure/Mink/MinkHelper.php b/tests/Shared/Infrastructure/Mink/MinkHelper.php index 81d4407c5..51fb79319 100644 --- a/tests/Shared/Infrastructure/Mink/MinkHelper.php +++ b/tests/Shared/Infrastructure/Mink/MinkHelper.php @@ -9,19 +9,17 @@ use Symfony\Component\BrowserKit\AbstractBrowser; use Symfony\Component\DomCrawler\Crawler; -final class MinkHelper +final readonly class MinkHelper { - public function __construct(private Session $session) - { - } + public function __construct(private Session $session) {} public function sendRequest($method, $url, array $optionalParams = []): Crawler { $defaultOptionalParams = [ - 'parameters' => [], - 'files' => [], - 'server' => ['HTTP_ACCEPT' => 'application/json', 'CONTENT_TYPE' => 'application/json'], - 'content' => null, + 'parameters' => [], + 'files' => [], + 'server' => ['HTTP_ACCEPT' => 'application/json', 'CONTENT_TYPE' => 'application/json'], + 'content' => null, 'changeHistory' => true, ]; diff --git a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php index 9cc8525c6..6f02b11d7 100644 --- a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php +++ b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php @@ -7,11 +7,9 @@ use Behat\Gherkin\Node\PyStringNode; use Symfony\Component\DomCrawler\Crawler; -final class MinkSessionRequestHelper +final readonly class MinkSessionRequestHelper { - public function __construct(private $sessionHelper) - { - } + public function __construct(private MinkHelper $sessionHelper) {} public function sendRequest($method, $url, array $optionalParams = []): void { diff --git a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php index 056fe1e26..90ca771b3 100644 --- a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php +++ b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php @@ -6,10 +6,11 @@ use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\Constraint\CodelyTvConstraintIsSimilar; use Mockery\Matcher\MatcherAbstract; +use Stringable; -final class CodelyTvMatcherIsSimilar extends MatcherAbstract +final class CodelyTvMatcherIsSimilar extends MatcherAbstract implements Stringable { - private CodelyTvConstraintIsSimilar $constraint; + private readonly CodelyTvConstraintIsSimilar $constraint; public function __construct($value, $delta = 0.0) { diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php index afa3a6f18..78f9dd3d9 100644 --- a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php +++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php @@ -8,6 +8,7 @@ use CodelyTv\Tests\Shared\Domain\TestUtils; use SebastianBergmann\Comparator\Comparator; use SebastianBergmann\Comparator\ComparisonFailure; + use function Lambdish\Phunctional\all; use function Lambdish\Phunctional\any; use function Lambdish\Phunctional\instance_of; @@ -38,7 +39,7 @@ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = f private function contains(array $expectedArray, array $actualArray): bool { - $exists = fn (AggregateRoot $expected) => any( + $exists = fn (AggregateRoot $expected): bool => any( fn (AggregateRoot $actual) => TestUtils::isSimilar($expected, $actual), $actualArray ); diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php index 01317fa01..b475419ea 100644 --- a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php +++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php @@ -53,7 +53,7 @@ private function aggregateRootsAreTheSameClass(AggregateRoot $expected, Aggregat private function aggregateRootPropertiesAreSimilar(AggregateRoot $expected, AggregateRoot $actual): bool { $expectedReflected = new ReflectionObject($expected); - $actualReflected = new ReflectionObject($actual); + $actualReflected = new ReflectionObject($actual); foreach ($expectedReflected->getProperties() as $expectedReflectedProperty) { $actualReflectedProperty = $actualReflected->getProperty($expectedReflectedProperty->getName()); @@ -62,7 +62,7 @@ private function aggregateRootPropertiesAreSimilar(AggregateRoot $expected, Aggr $actualReflectedProperty->setAccessible(true); $expectedProperty = $expectedReflectedProperty->getValue($expected); - $actualProperty = $actualReflectedProperty->getValue($actual); + $actualProperty = $actualReflectedProperty->getValue($actual); if (!TestUtils::isSimilar($expectedProperty, $actualProperty)) { return false; diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php index a6ca2c917..ad064d3e1 100644 --- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php +++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php @@ -25,7 +25,7 @@ public function assertEquals( $ignoreCase = false, array &$processed = [] ): void { - $normalizedDelta = $delta === 0.0 ? 10 : $delta; + $normalizedDelta = $delta === 0.0 ? 10 : $delta; $intervalWithDelta = new DateInterval(sprintf('PT%sS', abs($normalizedDelta))); $expectedLower = clone $expected; diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php index 4e1ea83ff..05bd8bdc3 100644 --- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php +++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php @@ -16,7 +16,7 @@ final class DateTimeStringSimilarComparator extends ObjectComparator { public function accepts($expected, $actual): bool { - return (null !== $actual) + return ($actual !== null) && is_string($expected) && is_string($actual) && $this->isValidDateTimeString($expected) @@ -32,9 +32,9 @@ public function assertEquals( array &$processed = [] ): void { $expectedDate = new DateTimeImmutable($expected); - $actualDate = new DateTimeImmutable($actual); + $actualDate = new DateTimeImmutable($actual); - $normalizedDelta = $delta === 0.0 ? 10 : $delta; + $normalizedDelta = $delta === 0.0 ? 10 : $delta; $intervalWithDelta = new DateInterval(sprintf('PT%sS', abs($normalizedDelta))); if ($actualDate < $expectedDate->sub($intervalWithDelta) diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php index b7dd6773f..f1975a01d 100644 --- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php +++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php @@ -8,6 +8,7 @@ use CodelyTv\Tests\Shared\Domain\TestUtils; use SebastianBergmann\Comparator\Comparator; use SebastianBergmann\Comparator\ComparisonFailure; + use function Lambdish\Phunctional\all; use function Lambdish\Phunctional\any; use function Lambdish\Phunctional\instance_of; @@ -38,7 +39,7 @@ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = f private function contains(array $expectedArray, array $actualArray): bool { - $exists = static fn (DomainEvent $expected) => any( + $exists = static fn (DomainEvent $expected): bool => any( static fn (DomainEvent $actual) => TestUtils::isSimilar($expected, $actual), $actualArray ); diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php index 48a52274a..34f061ebf 100644 --- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php +++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php @@ -52,7 +52,7 @@ private function areTheSameClass(DomainEvent $expected, DomainEvent $actual): bo private function propertiesAreSimilar(DomainEvent $expected, DomainEvent $actual): bool { $expectedReflected = new ReflectionObject($expected); - $actualReflected = new ReflectionObject($actual); + $actualReflected = new ReflectionObject($actual); foreach ($expectedReflected->getProperties() as $expectedReflectedProperty) { if (!in_array($expectedReflectedProperty->getName(), self::$ignoredAttributes, false)) { @@ -62,7 +62,7 @@ private function propertiesAreSimilar(DomainEvent $expected, DomainEvent $actual $actualReflectedProperty->setAccessible(true); $expectedProperty = $expectedReflectedProperty->getValue($expected); - $actualProperty = $actualReflectedProperty->getValue($actual); + $actualProperty = $actualReflectedProperty->getValue($actual); if (!TestUtils::isSimilar($expectedProperty, $actualProperty)) { return false; diff --git a/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php b/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php index 7a19a089c..7c8847dcc 100644 --- a/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php +++ b/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php @@ -14,15 +14,14 @@ use PHPUnit\Framework\ExpectationFailedException; use SebastianBergmann\Comparator\ComparisonFailure; use SebastianBergmann\Comparator\Factory; + use function is_string; use function sprintf; // Based on \PHPUnit\Framework\Constraint\IsEqual final class CodelyTvConstraintIsSimilar extends Constraint { - public function __construct(private $value, private float $delta = 0.0) - { - } + public function __construct(private $value, private readonly float $delta = 0.0) {} public function evaluate($other, $description = '', $returnResult = false): bool { @@ -30,7 +29,7 @@ public function evaluate($other, $description = '', $returnResult = false): bool return true; } - $isValid = true; + $isValid = true; $comparatorFactory = new Factory(); $comparatorFactory->register(new AggregateRootArraySimilarComparator()); @@ -46,10 +45,7 @@ public function evaluate($other, $description = '', $returnResult = false): bool $comparator->assertEquals($this->value, $other, $this->delta); } catch (ComparisonFailure $f) { if (!$returnResult) { - throw new ExpectationFailedException( - trim($description . "\n" . $f->getMessage()), - $f - ); + throw new ExpectationFailedException(trim($description . "\n" . $f->getMessage()), $f); } $isValid = false; @@ -67,23 +63,13 @@ public function toString(): string return 'is equal to '; } - return sprintf( - "is equal to '%s'", - $this->value - ); + return sprintf("is equal to '%s'", $this->value); } if ($this->delta !== 0) { - $delta = sprintf( - ' with delta <%F>', - $this->delta - ); + $delta = sprintf(' with delta <%F>', $this->delta); } - return sprintf( - 'is equal to %s%s', - $this->exporter()->export($this->value), - $delta - ); + return sprintf('is equal to %s%s', $this->exporter()->export($this->value), $delta); } } diff --git a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php index f16af1891..757c4fda2 100644 --- a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php +++ b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php @@ -22,7 +22,7 @@ protected function setUp(): void parent::setUp(); } - protected function assertSimilar($expected, $actual): void + protected function assertSimilar(mixed $expected, mixed $actual): void { TestUtils::assertSimilar($expected, $actual); } diff --git a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php index ce26b3a80..54d0e3a45 100644 --- a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php +++ b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php @@ -18,8 +18,8 @@ abstract class UnitTestCase extends MockeryTestCase { - private EventBus|MockInterface|null $eventBus; - private UuidGenerator|MockInterface|null $uuidGenerator; + private EventBus|MockInterface|null $eventBus = null; + private MockInterface|UuidGenerator|null $uuidGenerator = null; protected function mock(string $className): MockInterface { @@ -44,7 +44,7 @@ protected function shouldNotPublishDomainEvent(): void protected function eventBus(): EventBus|MockInterface { - return $this->eventBus = $this->eventBus ?? $this->mock(EventBus::class); + return $this->eventBus ??= $this->mock(EventBus::class); } protected function shouldGenerateUuid(string $uuid): void @@ -56,9 +56,9 @@ protected function shouldGenerateUuid(string $uuid): void ->andReturn($uuid); } - protected function uuidGenerator(): UuidGenerator|MockInterface + protected function uuidGenerator(): MockInterface|UuidGenerator { - return $this->uuidGenerator = $this->uuidGenerator ?? $this->mock(UuidGenerator::class); + return $this->uuidGenerator ??= $this->mock(UuidGenerator::class); } protected function notify(DomainEvent $event, callable $subscriber): void