From 6da760a2c904898a62a5cc1ee3ce7a3cee3eb0b2 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Santamar=C3=ADa?=
Date: Tue, 6 Jul 2021 09:28:04 +0200
Subject: [PATCH 01/40] Fix psalm errors after update (#265)
---
.../src/Controller/Courses/CoursesGetController.php | 6 ++++--
.../Persistence/Doctrine/CourseIdsType.php | 1 -
.../Bus/CallableFirstParameterExtractor.php | 11 ++++++++++-
.../Bus/Event/MySql/MySqlDoctrineEventBus.php | 4 ++--
.../Infrastructure/Persistence/Doctrine/UuidType.php | 2 +-
5 files changed, 17 insertions(+), 7 deletions(-)
diff --git a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
index 0f57df285..578e04589 100644
--- a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
+++ b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
@@ -20,6 +20,8 @@ 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');
$offset = $request->query->get('offset');
@@ -27,8 +29,8 @@ public function __invoke(Request $request): JsonResponse
$response = $this->queryBus->ask(
new SearchBackofficeCoursesByCriteriaQuery(
(array) $request->query->get('filters'),
- $request->query->get('order_by'),
- $request->query->get('order'),
+ null === $orderBy ? null : (string) $orderBy,
+ null === $order ? null: (string) $order,
null === $limit ? null : (int) $limit,
null === $offset ? null : (int) $offset
)
diff --git a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
index d3646755f..9606fc65f 100644
--- a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
+++ b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
@@ -22,7 +22,6 @@ public function getName(): string
return self::customTypeName();
}
- /** @var CourseId[] $value */
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
return parent::convertToDatabaseValue(map(fn(CourseId $id) => $id->value(), $value), $platform);
diff --git a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
index 3753542f4..4d0ac9b07 100644
--- a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
+++ b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
@@ -5,8 +5,10 @@
namespace CodelyTv\Shared\Infrastructure\Bus;
use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber;
+use LogicException;
use ReflectionClass;
use ReflectionMethod;
+use ReflectionNamedType;
use function Lambdish\Phunctional\map;
use function Lambdish\Phunctional\reduce;
use function Lambdish\Phunctional\reindex;
@@ -60,7 +62,14 @@ public function extract($class): ?string
private function firstParameterClassFrom(ReflectionMethod $method): string
{
- return $method->getParameters()[0]->getType()->getName();
+ /** @var ReflectionNamedType $fistParameterType */
+ $fistParameterType = $method->getParameters()[0]->getType();
+
+ if (null === $fistParameterType) {
+ throw new LogicException('Missing type hint for the first parameter of __invoke');
+ }
+
+ return $fistParameterType->getName();
}
private function hasOnlyOneParameter(ReflectionMethod $method): bool
diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
index e34059237..003465fbc 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
@@ -21,9 +21,9 @@ public function __construct(EntityManager $entityManager)
$this->connection = $entityManager->getConnection();
}
- public function publish(DomainEvent ...$domainEvents): void
+ public function publish(DomainEvent ...$events): void
{
- each($this->publisher(), $domainEvents);
+ each($this->publisher(), $events);
}
private function publisher(): callable
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
index e116edbd2..76df29d11 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
@@ -32,9 +32,9 @@ public function convertToPHPValue($value, AbstractPlatform $platform)
return new $className($value);
}
- /** @var Uuid $value */
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
+ /** @var Uuid $value */
return $value->value();
}
}
From 0f6f3ed620daf4f446a5f4671c49bbb8c87871e4 Mon Sep 17 00:00:00 2001
From: Javier Ferrer
Date: Mon, 10 Jan 2022 19:31:25 +0100
Subject: [PATCH 02/40] Fix readme CI status badge
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 0d510980b..51bbcde86 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@
-
+
From 0e79862df4a856e94d2cef0dd66b9d10946ff24b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Mon, 14 Feb 2022 18:45:55 +0100
Subject: [PATCH 03/40] feat: upgrade to php 8.1 (#277)
* feat: upgrade to php 8.1
* feat: upgrade psalm version
* feat: upgrade pickle version
* feat: upgrade to stable php 8.1
* feat: update deps
* feat: add compatibility to symfony 5 and php 8
* feat: add compatibility proxy manager and php 8.1
---
Dockerfile | 6 +-
Makefile | 2 +-
apps/backoffice/backend/public/index.php | 2 +-
.../backend/src/BackofficeBackendKernel.php | 8 -
apps/backoffice/frontend/public/index.php | 2 +-
.../frontend/src/BackofficeFrontendKernel.php | 8 -
apps/mooc/backend/public/index.php | 2 +-
apps/mooc/backend/src/MoocBackendKernel.php | 8 -
composer.json | 38 +-
composer.lock | 3170 +++++++++--------
.../Infrastructure/Logger/MonologLogger.php | 2 +-
11 files changed, 1673 insertions(+), 1575 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index f9d6048a3..096c79bb9 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,7 @@
-FROM php:8.0-fpm-alpine
+FROM php:8.1.1-fpm-alpine
WORKDIR /app
-RUN wget https://github.com/FriendsOfPHP/pickle/releases/download/v0.7.2/pickle.phar \
+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
@@ -14,7 +14,7 @@ RUN apk --update upgrade \
zip \
pdo_mysql
-RUN pickle install apcu@5.1.20
+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
diff --git a/Makefile b/Makefile
index 5508edf8f..e79984f36 100644
--- a/Makefile
+++ b/Makefile
@@ -27,7 +27,7 @@ composer-require-module: INTERACTIVE=-ti --interactive
.PHONY: composer
composer composer-install composer-update composer-require composer-require-module: composer-env-file
@docker run --rm $(INTERACTIVE) --volume $(current-dir):/app --user $(id -u):$(id -g) \
- composer:2 $(CMD) \
+ composer:2.2.6 $(CMD) \
--ignore-platform-reqs \
--no-ansi
diff --git a/apps/backoffice/backend/public/index.php b/apps/backoffice/backend/public/index.php
index b2f76b290..8c109ee2d 100644
--- a/apps/backoffice/backend/public/index.php
+++ b/apps/backoffice/backend/public/index.php
@@ -1,7 +1,7 @@
load($confDir . '/services_' . $this->environment . self::CONFIG_EXTS, 'glob');
$loader->load($confDir . '/services/*' . self::CONFIG_EXTS, 'glob');
}
-
- protected function configureRoutes(RouteCollectionBuilder $routes): void
- {
- $confDir = $this->getProjectDir() . '/config';
-
- $routes->import($confDir . '/{routes}/*' . self::CONFIG_EXTS, '/', 'glob');
- }
}
diff --git a/apps/backoffice/frontend/public/index.php b/apps/backoffice/frontend/public/index.php
index 5e6452e04..af90aac44 100644
--- a/apps/backoffice/frontend/public/index.php
+++ b/apps/backoffice/frontend/public/index.php
@@ -1,7 +1,7 @@
load($confDir . '/services_' . $this->environment . self::CONFIG_EXTS, 'glob');
$loader->load($confDir . '/services/*' . self::CONFIG_EXTS, 'glob');
}
-
- protected function configureRoutes(RouteCollectionBuilder $routes): void
- {
- $confDir = $this->getProjectDir() . '/config';
-
- $routes->import($confDir . '/{routes}/*' . self::CONFIG_EXTS, '/', 'glob');
- }
}
diff --git a/apps/mooc/backend/public/index.php b/apps/mooc/backend/public/index.php
index 00bf627a9..9d02406aa 100644
--- a/apps/mooc/backend/public/index.php
+++ b/apps/mooc/backend/public/index.php
@@ -1,7 +1,7 @@
load($confDir . '/services_' . $this->environment . self::CONFIG_EXTS, 'glob');
$loader->load($confDir . '/services/*' . self::CONFIG_EXTS, 'glob');
}
-
- protected function configureRoutes(RouteCollectionBuilder $routes): void
- {
- $confDir = $this->getProjectDir() . '/config';
-
- $routes->import($confDir . '/{routes}/*' . self::CONFIG_EXTS, '/', 'glob');
- }
}
diff --git a/composer.json b/composer.json
index f545044a3..84eadf11b 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.0",
+ "php": "^8.1",
"ext-amqp": "*",
"ext-apcu": "*",
@@ -12,20 +12,23 @@
"ext-zend-opcache": "*",
"ext-pdo": "*",
- "symfony/framework-bundle": "^5.3",
- "symfony/messenger": "^5.3",
- "symfony/dotenv": "^5.3",
- "symfony/yaml": "^5.3",
- "symfony/twig-bundle": "^5.3",
- "symfony/validator": "^5.3",
+ "symfony/framework-bundle": "^5.4",
+ "symfony/messenger": "^5.4",
+ "symfony/dotenv": "^5.4",
+ "symfony/yaml": "^5.4",
+ "symfony/twig-bundle": "^5.4",
+ "symfony/validator": "^5.4",
+ "symfony/cache": "^5.4",
"lambdish/phunctional": "^2.0",
- "ramsey/uuid": "^3.9",
+ "ramsey/uuid": "^4.2",
"doctrine/dbal": "^2.10",
"doctrine/orm": "^2.7",
- "ocramius/proxy-manager": "2.8.1",
+
+ "ocramius/proxy-manager": "^2.13",
+ "laminas/laminas-zendframework-bridge": "^1.4",
"elasticsearch/elasticsearch": "^7.3",
"monolog/monolog": "^2.1",
@@ -37,10 +40,10 @@
"roave/security-advisories": "dev-master",
- "behat/behat": "^3.6",
- "friends-of-behat/mink-extension": "^2.4",
- "behat/mink-browserkit-driver": "^1.3",
- "friends-of-behat/symfony-extension": "^2.1",
+ "behat/behat": "^3.10",
+ "friends-of-behat/mink-extension": "^2.6",
+ "friends-of-behat/symfony-extension": "^2.3",
+ "behat/mink-browserkit-driver": "^2.0",
"phpunit/phpunit": "^9.2",
"mockery/mockery": "^1.4",
@@ -48,7 +51,7 @@
"fzaninotto/faker": "^1.9",
"symfony/debug": "^4.4",
- "vimeo/psalm": "^4.1"
+ "vimeo/psalm": "^4.10"
},
"autoload": {
"psr-4": {
@@ -66,5 +69,10 @@
"CodelyTv\\Tests\\": ["tests"]
}
},
- "minimum-stability": "RC"
+ "minimum-stability": "RC",
+ "config": {
+ "allow-plugins": {
+ "ocramius/package-versions": true
+ }
+ }
}
diff --git a/composer.lock b/composer.lock
index 3a830a86b..2511b3011 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,173 +4,87 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "fd5ca2317656ef5a38a2382763b46ac2",
+ "content-hash": "545aff6813f8015080116169f732d738",
"packages": [
{
- "name": "composer/package-versions-deprecated",
- "version": "1.8.2",
+ "name": "brick/math",
+ "version": "0.9.3",
"source": {
"type": "git",
- "url": "https://github.com/composer/package-versions-deprecated.git",
- "reference": "7a8001fe2c9befad9d001bf54ef0b4a17d950d0f"
+ "url": "https://github.com/brick/math.git",
+ "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7a8001fe2c9befad9d001bf54ef0b4a17d950d0f",
- "reference": "7a8001fe2c9befad9d001bf54ef0b4a17d950d0f",
+ "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae",
+ "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae",
"shasum": ""
},
"require": {
- "composer-plugin-api": "^1.1.0 || ^2.0",
- "php": "^7"
- },
- "replace": {
- "ocramius/package-versions": "1.8.99"
+ "ext-json": "*",
+ "php": "^7.1 || ^8.0"
},
"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"
- }
+ "php-coveralls/php-coveralls": "^2.2",
+ "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0",
+ "vimeo/psalm": "4.9.2"
},
+ "type": "library",
"autoload": {
"psr-4": {
- "PackageVersions\\": "src/PackageVersions"
+ "Brick\\Math\\": "src/"
}
},
"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": "Arbitrary-precision arithmetic library",
+ "keywords": [
+ "Arbitrary-precision",
+ "BigInteger",
+ "BigRational",
+ "arithmetic",
+ "bigdecimal",
+ "bignum",
+ "brick",
+ "math"
],
- "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.8.2"
+ "issues": "https://github.com/brick/math/issues",
+ "source": "https://github.com/brick/math/tree/0.9.3"
},
"funding": [
{
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
+ "url": "https://github.com/BenMorel",
"type": "github"
},
{
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "url": "https://tidelift.com/funding/github/packagist/brick/math",
"type": "tidelift"
}
],
- "time": "2020-07-10T14:10:26+00:00"
- },
- {
- "name": "doctrine/annotations",
- "version": "1.13.1",
- "source": {
- "type": "git",
- "url": "https://github.com/doctrine/annotations.git",
- "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/doctrine/annotations/zipball/e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f",
- "reference": "e6e7b7d5b45a2f2abc5460cc6396480b2b1d321f",
- "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.1"
- },
- "time": "2021-05-16T18:07:53+00:00"
+ "time": "2021-08-15T20:50:18+00:00"
},
{
"name": "doctrine/cache",
- "version": "2.0.3",
+ "version": "2.1.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
- "reference": "c9622c6820d3ede1e2315a6a377ea1076e421d88"
+ "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/c9622c6820d3ede1e2315a6a377ea1076e421d88",
- "reference": "c9622c6820d3ede1e2315a6a377ea1076e421d88",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce",
+ "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce",
"shasum": ""
},
"require": {
"php": "~7.1 || ^8.0"
},
"conflict": {
- "doctrine/common": ">2.2,<2.4",
- "psr/cache": ">=3"
+ "doctrine/common": ">2.2,<2.4"
},
"require-dev": {
"alcaeus/mongo-php-adapter": "^1.1",
@@ -179,8 +93,9 @@
"mongodb/mongodb": "^1.1",
"phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
"predis/predis": "~1.0",
- "psr/cache": "^1.0 || ^2.0",
- "symfony/cache": "^4.4 || ^5.2"
+ "psr/cache": "^1.0 || ^2.0 || ^3.0",
+ "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev",
+ "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev"
},
"suggest": {
"alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
@@ -232,7 +147,7 @@
],
"support": {
"issues": "https://github.com/doctrine/cache/issues",
- "source": "https://github.com/doctrine/cache/tree/2.0.3"
+ "source": "https://github.com/doctrine/cache/tree/2.1.1"
},
"funding": [
{
@@ -248,30 +163,30 @@
"type": "tidelift"
}
],
- "time": "2021-05-25T09:43:04+00:00"
+ "time": "2021-07-17T14:49:29+00:00"
},
{
"name": "doctrine/collections",
- "version": "1.6.7",
+ "version": "1.6.8",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
- "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a"
+ "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/55f8b799269a1a472457bd1a41b4f379d4cfba4a",
- "reference": "55f8b799269a1a472457bd1a41b4f379d4cfba4a",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/1958a744696c6bb3bb0d28db2611dc11610e78af",
+ "reference": "1958a744696c6bb3bb0d28db2611dc11610e78af",
"shasum": ""
},
"require": {
"php": "^7.1.3 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan-shim": "^0.9.2",
- "phpunit/phpunit": "^7.0",
- "vimeo/psalm": "^3.8.1"
+ "doctrine/coding-standard": "^9.0",
+ "phpstan/phpstan": "^0.12",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5",
+ "vimeo/psalm": "^4.2.1"
},
"type": "library",
"autoload": {
@@ -315,22 +230,22 @@
],
"support": {
"issues": "https://github.com/doctrine/collections/issues",
- "source": "https://github.com/doctrine/collections/tree/1.6.7"
+ "source": "https://github.com/doctrine/collections/tree/1.6.8"
},
- "time": "2020-07-27T17:53:49+00:00"
+ "time": "2021-08-10T18:51:53+00:00"
},
{
"name": "doctrine/common",
- "version": "3.1.2",
+ "version": "3.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
- "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a"
+ "reference": "295082d3750987065912816a9d536c2df735f637"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/common/zipball/a036d90c303f3163b5be8b8fde9b6755b2be4a3a",
- "reference": "a036d90c303f3163b5be8b8fde9b6755b2be4a3a",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/295082d3750987065912816a9d536c2df735f637",
+ "reference": "295082d3750987065912816a9d536c2df735f637",
"shasum": ""
},
"require": {
@@ -338,9 +253,9 @@
"php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0 || ^8.0",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
+ "doctrine/coding-standard": "^9.0",
+ "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",
@@ -391,7 +306,7 @@
],
"support": {
"issues": "https://github.com/doctrine/common/issues",
- "source": "https://github.com/doctrine/common/tree/3.1.2"
+ "source": "https://github.com/doctrine/common/tree/3.2.2"
},
"funding": [
{
@@ -407,20 +322,20 @@
"type": "tidelift"
}
],
- "time": "2021-02-10T20:18:51+00:00"
+ "time": "2022-02-02T09:15:57+00:00"
},
{
"name": "doctrine/dbal",
- "version": "2.13.2",
+ "version": "2.13.7",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4"
+ "reference": "6e22f6012b42d7932674857989fcf184e9e9b1c3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/8dd39d2ead4409ce652fd4f02621060f009ea5e4",
- "reference": "8dd39d2ead4409ce652fd4f02621060f009ea5e4",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/6e22f6012b42d7932674857989fcf184e9e9b1c3",
+ "reference": "6e22f6012b42d7932674857989fcf184e9e9b1c3",
"shasum": ""
},
"require": {
@@ -432,13 +347,14 @@
},
"require-dev": {
"doctrine/coding-standard": "9.0.0",
- "jetbrains/phpstorm-stubs": "2020.2",
- "phpstan/phpstan": "0.12.81",
- "phpunit/phpunit": "^7.5.20|^8.5|9.5.5",
- "squizlabs/php_codesniffer": "3.6.0",
+ "jetbrains/phpstorm-stubs": "2021.1",
+ "phpstan/phpstan": "1.3.0",
+ "phpunit/phpunit": "^7.5.20|^8.5|9.5.11",
+ "psalm/plugin-phpunit": "0.16.1",
+ "squizlabs/php_codesniffer": "3.6.2",
"symfony/cache": "^4.4",
"symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
- "vimeo/psalm": "4.6.4"
+ "vimeo/psalm": "4.16.1"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
@@ -499,7 +415,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/2.13.2"
+ "source": "https://github.com/doctrine/dbal/tree/2.13.7"
},
"funding": [
{
@@ -515,7 +431,7 @@
"type": "tidelift"
}
],
- "time": "2021-06-18T21:48:39+00:00"
+ "time": "2022-01-06T09:08:04+00:00"
},
{
"name": "doctrine/deprecations",
@@ -656,34 +572,30 @@
},
{
"name": "doctrine/inflector",
- "version": "2.0.3",
+ "version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210"
+ "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210",
- "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
+ "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^7.0",
- "phpstan/phpstan": "^0.11",
- "phpstan/phpstan-phpunit": "^0.11",
- "phpstan/phpstan-strict-rules": "^0.11",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "doctrine/coding-standard": "^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"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Inflector\\": "lib/Doctrine/Inflector"
@@ -731,7 +643,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.0.x"
+ "source": "https://github.com/doctrine/inflector/tree/2.0.4"
},
"funding": [
{
@@ -747,7 +659,7 @@
"type": "tidelift"
}
],
- "time": "2020-05-29T15:13:26+00:00"
+ "time": "2021-10-22T20:16:43+00:00"
},
{
"name": "doctrine/instantiator",
@@ -820,32 +732,28 @@
},
{
"name": "doctrine/lexer",
- "version": "1.2.1",
+ "version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
- "reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
+ "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
- "reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c",
+ "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0",
- "phpstan/phpstan": "^0.11.8",
- "phpunit/phpunit": "^8.2"
+ "doctrine/coding-standard": "^9.0",
+ "phpstan/phpstan": "1.3",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.11"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
@@ -880,7 +788,7 @@
],
"support": {
"issues": "https://github.com/doctrine/lexer/issues",
- "source": "https://github.com/doctrine/lexer/tree/1.2.1"
+ "source": "https://github.com/doctrine/lexer/tree/1.2.2"
},
"funding": [
{
@@ -896,48 +804,55 @@
"type": "tidelift"
}
],
- "time": "2020-05-25T17:44:05+00:00"
+ "time": "2022-01-12T08:27:12+00:00"
},
{
"name": "doctrine/orm",
- "version": "2.9.3",
+ "version": "2.11.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
- "reference": "82e77cf5089a1303733f75f0f0ed01be3ab9ec22"
+ "reference": "4b88ce787d3916c8366abf52f6c658a7a27ed3a6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/orm/zipball/82e77cf5089a1303733f75f0f0ed01be3ab9ec22",
- "reference": "82e77cf5089a1303733f75f0f0ed01be3ab9ec22",
+ "url": "https://api.github.com/repos/doctrine/orm/zipball/4b88ce787d3916c8366abf52f6c658a7a27ed3a6",
+ "reference": "4b88ce787d3916c8366abf52f6c658a7a27ed3a6",
"shasum": ""
},
"require": {
- "composer/package-versions-deprecated": "^1.8",
- "doctrine/annotations": "^1.13",
- "doctrine/cache": "^1.11.3|^2.0.3",
+ "composer-runtime-api": "^2",
+ "doctrine/cache": "^1.12.1 || ^2.1.1",
"doctrine/collections": "^1.5",
"doctrine/common": "^3.0.3",
- "doctrine/dbal": "^2.13.0",
+ "doctrine/dbal": "^2.13.1 || ^3.2",
"doctrine/deprecations": "^0.5.3",
"doctrine/event-manager": "^1.1",
- "doctrine/inflector": "^1.4|^2.0",
+ "doctrine/inflector": "^1.4 || ^2.0",
"doctrine/instantiator": "^1.3",
"doctrine/lexer": "^1.0",
"doctrine/persistence": "^2.2",
+ "ext-ctype": "*",
"ext-pdo": "*",
- "php": "^7.1|^8.0",
+ "php": "^7.1 || ^8.0",
"psr/cache": "^1 || ^2 || ^3",
- "symfony/console": "^3.0|^4.0|^5.0|^6.0"
+ "symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0",
+ "symfony/polyfill-php72": "^1.23",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "doctrine/annotations": "<1.13 || >= 2.0"
},
"require-dev": {
+ "doctrine/annotations": "^1.13",
"doctrine/coding-standard": "^9.0",
- "phpstan/phpstan": "^0.12.83",
- "phpunit/phpunit": "^7.5|^8.5|^9.4",
- "squizlabs/php_codesniffer": "3.6.0",
- "symfony/cache": "^4.4|^5.2",
- "symfony/yaml": "^3.4|^4.0|^5.0|^6.0",
- "vimeo/psalm": "4.7.0"
+ "phpbench/phpbench": "^0.16.10 || ^1.0",
+ "phpstan/phpstan": "1.4.3",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4",
+ "squizlabs/php_codesniffer": "3.6.2",
+ "symfony/cache": "^4.4 || ^5.4 || ^6.0",
+ "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0",
+ "vimeo/psalm": "4.19.0"
},
"suggest": {
"symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0",
@@ -986,44 +901,45 @@
],
"support": {
"issues": "https://github.com/doctrine/orm/issues",
- "source": "https://github.com/doctrine/orm/tree/2.9.3"
+ "source": "https://github.com/doctrine/orm/tree/2.11.1"
},
- "time": "2021-06-13T10:29:22+00:00"
+ "time": "2022-01-30T21:47:06+00:00"
},
{
"name": "doctrine/persistence",
- "version": "2.2.1",
+ "version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
- "reference": "d138f3ab5f761055cab1054070377cfd3222e368"
+ "reference": "f8af155c1e7963f3d2b4415097d55757bbaa53d8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/persistence/zipball/d138f3ab5f761055cab1054070377cfd3222e368",
- "reference": "d138f3ab5f761055cab1054070377cfd3222e368",
+ "url": "https://api.github.com/repos/doctrine/persistence/zipball/f8af155c1e7963f3d2b4415097d55757bbaa53d8",
+ "reference": "f8af155c1e7963f3d2b4415097d55757bbaa53d8",
"shasum": ""
},
"require": {
- "doctrine/annotations": "^1.0",
"doctrine/cache": "^1.11 || ^2.0",
"doctrine/collections": "^1.0",
"doctrine/deprecations": "^0.5.3",
"doctrine/event-manager": "^1.0",
"php": "^7.1 || ^8.0",
- "psr/cache": "^1.0|^2.0|^3.0"
+ "psr/cache": "^1.0 || ^2.0 || ^3.0"
},
"conflict": {
+ "doctrine/annotations": "<1.0 || >=2.0",
"doctrine/common": "<2.10@dev"
},
"require-dev": {
"composer/package-versions-deprecated": "^1.11",
+ "doctrine/annotations": "^1.0",
"doctrine/coding-standard": "^6.0 || ^9.0",
"doctrine/common": "^3.0",
- "phpstan/phpstan": "0.12.84",
+ "phpstan/phpstan": "1.2.0",
"phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0",
- "symfony/cache": "^4.4|^5.0",
- "vimeo/psalm": "4.7.0"
+ "symfony/cache": "^4.4 || ^5.0 || ^6.0",
+ "vimeo/psalm": "4.13.1"
},
"type": "library",
"autoload": {
@@ -1073,29 +989,29 @@
],
"support": {
"issues": "https://github.com/doctrine/persistence/issues",
- "source": "https://github.com/doctrine/persistence/tree/2.2.1"
+ "source": "https://github.com/doctrine/persistence/tree/2.3.0"
},
- "time": "2021-05-19T07:07:01+00:00"
+ "time": "2022-01-09T19:58:46+00:00"
},
{
"name": "elasticsearch/elasticsearch",
- "version": "v7.13.1",
+ "version": "v7.17.0",
"source": {
"type": "git",
"url": "https://github.com/elastic/elasticsearch-php.git",
- "reference": "45e17adacd3319958d6135e4ee3a21dbbe36a24b"
+ "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/45e17adacd3319958d6135e4ee3a21dbbe36a24b",
- "reference": "45e17adacd3319958d6135e4ee3a21dbbe36a24b",
+ "url": "https://api.github.com/repos/elastic/elasticsearch-php/zipball/1890f9d7fde076b5a3ddcf579a802af05b2e781b",
+ "reference": "1890f9d7fde076b5a3ddcf579a802af05b2e781b",
"shasum": ""
},
"require": {
"ext-json": ">=1.3.7",
"ezimuel/ringphp": "^1.1.2",
"php": "^7.3 || ^8.0",
- "psr/log": "~1.0"
+ "psr/log": "^1|^2|^3"
},
"require-dev": {
"ext-yaml": "*",
@@ -1121,7 +1037,8 @@
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "Apache-2.0"
+ "Apache-2.0",
+ "LGPL-2.1-only"
],
"authors": [
{
@@ -1139,9 +1056,9 @@
],
"support": {
"issues": "https://github.com/elastic/elasticsearch-php/issues",
- "source": "https://github.com/elastic/elasticsearch-php/tree/v7.13.1"
+ "source": "https://github.com/elastic/elasticsearch-php/tree/v7.17.0"
},
- "time": "2021-06-15T18:36:52+00:00"
+ "time": "2022-02-03T13:40:04+00:00"
},
{
"name": "endclothing/prometheus_client_php",
@@ -1247,16 +1164,16 @@
},
{
"name": "ezimuel/ringphp",
- "version": "1.1.2",
+ "version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/ezimuel/ringphp.git",
- "reference": "0b78f89d8e0bb9e380046c31adfa40347e9f663b"
+ "reference": "92b8161404ab1ad84059ebed41d9f757e897ce74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ezimuel/ringphp/zipball/0b78f89d8e0bb9e380046c31adfa40347e9f663b",
- "reference": "0b78f89d8e0bb9e380046c31adfa40347e9f663b",
+ "url": "https://api.github.com/repos/ezimuel/ringphp/zipball/92b8161404ab1ad84059ebed41d9f757e897ce74",
+ "reference": "92b8161404ab1ad84059ebed41d9f757e897ce74",
"shasum": ""
},
"require": {
@@ -1264,9 +1181,12 @@
"php": ">=5.4.0",
"react/promise": "~2.0"
},
+ "replace": {
+ "guzzlehttp/ringphp": "self.version"
+ },
"require-dev": {
"ext-curl": "*",
- "phpunit/phpunit": "~4.0"
+ "phpunit/phpunit": "~9.0"
},
"suggest": {
"ext-curl": "Guzzle will use specific adapters if cURL is present"
@@ -1295,9 +1215,9 @@
],
"description": "Fork of guzzle/RingPHP (abandoned) to be used with elasticsearch-php",
"support": {
- "source": "https://github.com/ezimuel/ringphp/tree/1.1.2"
+ "source": "https://github.com/ezimuel/ringphp/tree/1.2.0"
},
- "time": "2020-02-14T23:51:21+00:00"
+ "time": "2021-11-16T11:51:30+00:00"
},
{
"name": "guzzlehttp/guzzle",
@@ -1335,12 +1255,12 @@
}
},
"autoload": {
- "psr-4": {
- "GuzzleHttp\\": "src/"
- },
"files": [
"src/functions_include.php"
- ]
+ ],
+ "psr-4": {
+ "GuzzleHttp\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1372,16 +1292,16 @@
},
{
"name": "guzzlehttp/promises",
- "version": "1.4.1",
+ "version": "1.5.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d"
+ "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d",
- "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
+ "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da",
"shasum": ""
},
"require": {
@@ -1393,7 +1313,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.4-dev"
+ "dev-master": "1.5-dev"
}
},
"autoload": {
@@ -1409,10 +1329,25 @@
"MIT"
],
"authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
}
],
"description": "Guzzle promises library",
@@ -1421,22 +1356,36 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.4.1"
+ "source": "https://github.com/guzzle/promises/tree/1.5.1"
},
- "time": "2021-03-07T09:25:29+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-22T20:56:57+00:00"
},
{
"name": "guzzlehttp/psr7",
- "version": "1.8.2",
+ "version": "1.8.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "dc960a912984efb74d0a90222870c72c87f10c91"
+ "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91",
- "reference": "dc960a912984efb74d0a90222870c72c87f10c91",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
+ "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
"shasum": ""
},
"require": {
@@ -1461,25 +1410,46 @@
}
},
"autoload": {
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- },
"files": [
"src/functions_include.php"
- ]
+ ],
+ "psr-4": {
+ "GuzzleHttp\\Psr7\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
},
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
{
"name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
"homepage": "https://github.com/Tobion"
}
],
@@ -1496,9 +1466,23 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/1.8.2"
+ "source": "https://github.com/guzzle/psr7/tree/1.8.3"
},
- "time": "2021-04-26T09:17:50+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-05T13:56:00+00:00"
},
{
"name": "lambdish/phunctional",
@@ -1558,35 +1542,29 @@
},
{
"name": "laminas/laminas-code",
- "version": "3.5.1",
+ "version": "4.5.1",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-code.git",
- "reference": "b549b70c0bb6e935d497f84f750c82653326ac77"
+ "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-code/zipball/b549b70c0bb6e935d497f84f750c82653326ac77",
- "reference": "b549b70c0bb6e935d497f84f750c82653326ac77",
+ "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e",
+ "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e",
"shasum": ""
},
"require": {
- "laminas/laminas-eventmanager": "^3.3",
- "laminas/laminas-zendframework-bridge": "^1.1",
- "php": "^7.3 || ~8.0.0"
- },
- "conflict": {
- "phpspec/prophecy": "<1.9.0"
- },
- "replace": {
- "zendframework/zend-code": "^3.4.1"
+ "php": ">=7.4, <8.2"
},
"require-dev": {
- "doctrine/annotations": "^1.10.4",
+ "doctrine/annotations": "^1.13.2",
"ext-phar": "*",
- "laminas/laminas-coding-standard": "^1.0.0",
- "laminas/laminas-stdlib": "^3.3.0",
- "phpunit/phpunit": "^9.4.2"
+ "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"
},
"suggest": {
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
@@ -1596,7 +1574,10 @@
"autoload": {
"psr-4": {
"Laminas\\Code\\": "src/"
- }
+ },
+ "files": [
+ "polyfill/ReflectionEnumPolyfill.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1606,7 +1587,8 @@
"homepage": "https://laminas.dev",
"keywords": [
"code",
- "laminas"
+ "laminas",
+ "laminasframework"
],
"support": {
"chat": "https://laminas.dev/chat",
@@ -1622,93 +1604,27 @@
"type": "community_bridge"
}
],
- "time": "2020-11-30T20:16:31+00:00"
- },
- {
- "name": "laminas/laminas-eventmanager",
- "version": "3.3.1",
- "source": {
- "type": "git",
- "url": "https://github.com/laminas/laminas-eventmanager.git",
- "reference": "966c859b67867b179fde1eff0cd38df51472ce4a"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/966c859b67867b179fde1eff0cd38df51472ce4a",
- "reference": "966c859b67867b179fde1eff0cd38df51472ce4a",
- "shasum": ""
- },
- "require": {
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^7.3 || ^8.0"
- },
- "replace": {
- "zendframework/zend-eventmanager": "^3.2.1"
- },
- "require-dev": {
- "container-interop/container-interop": "^1.1",
- "laminas/laminas-coding-standard": "~1.0.0",
- "laminas/laminas-stdlib": "^2.7.3 || ^3.0",
- "phpbench/phpbench": "^0.17.1",
- "phpunit/phpunit": "^8.5.8"
- },
- "suggest": {
- "container-interop/container-interop": "^1.1, to use the lazy listeners feature",
- "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Laminas\\EventManager\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-3-Clause"
- ],
- "description": "Trigger and listen to events within a PHP application",
- "homepage": "https://laminas.dev",
- "keywords": [
- "event",
- "eventmanager",
- "events",
- "laminas"
- ],
- "support": {
- "chat": "https://laminas.dev/chat",
- "docs": "https://docs.laminas.dev/laminas-eventmanager/",
- "forum": "https://discourse.laminas.dev",
- "issues": "https://github.com/laminas/laminas-eventmanager/issues",
- "rss": "https://github.com/laminas/laminas-eventmanager/releases.atom",
- "source": "https://github.com/laminas/laminas-eventmanager"
- },
- "funding": [
- {
- "url": "https://funding.communitybridge.org/projects/laminas-project",
- "type": "community_bridge"
- }
- ],
- "time": "2021-03-08T15:24:29+00:00"
+ "time": "2021-12-19T18:06:55+00:00"
},
{
"name": "laminas/laminas-zendframework-bridge",
- "version": "1.3.0",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
- "reference": "13af2502d9bb6f7d33be2de4b51fb68c6cdb476e"
+ "reference": "88bf037259869891afce6504cacc4f8a07b24d0f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/13af2502d9bb6f7d33be2de4b51fb68c6cdb476e",
- "reference": "13af2502d9bb6f7d33be2de4b51fb68c6cdb476e",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/88bf037259869891afce6504cacc4f8a07b24d0f",
+ "reference": "88bf037259869891afce6504cacc4f8a07b24d0f",
"shasum": ""
},
"require": {
- "php": "^7.3 || ^8.0"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
},
"require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
+ "phpunit/phpunit": "^9.3",
"psalm/plugin-phpunit": "^0.15.1",
"squizlabs/php_codesniffer": "^3.5",
"vimeo/psalm": "^4.6"
@@ -1750,28 +1666,28 @@
"type": "community_bridge"
}
],
- "time": "2021-06-24T12:49:22+00:00"
+ "time": "2021-12-21T14:34:37+00:00"
},
{
"name": "monolog/monolog",
- "version": "2.2.0",
+ "version": "2.3.5",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084"
+ "reference": "fd4380d6fc37626e2f799f29d91195040137eba9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
- "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9",
+ "reference": "fd4380d6fc37626e2f799f29d91195040137eba9",
"shasum": ""
},
"require": {
"php": ">=7.2",
- "psr/log": "^1.0.1"
+ "psr/log": "^1.0.1 || ^2.0 || ^3.0"
},
"provide": {
- "psr/log-implementation": "1.0.0"
+ "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
},
"require-dev": {
"aws/aws-sdk-php": "^2.4.9 || ^3.0",
@@ -1779,14 +1695,14 @@
"elasticsearch/elasticsearch": "^7",
"graylog2/gelf-php": "^1.4.2",
"mongodb/mongodb": "^1.8",
- "php-amqplib/php-amqplib": "~2.4",
+ "php-amqplib/php-amqplib": "~2.4 || ^3",
"php-console/php-console": "^3.1.3",
"phpspec/prophecy": "^1.6.1",
- "phpstan/phpstan": "^0.12.59",
+ "phpstan/phpstan": "^0.12.91",
"phpunit/phpunit": "^8.5",
"predis/predis": "^1.1",
"rollbar/rollbar": "^1.3",
- "ruflin/elastica": ">=0.90 <7.0.1",
+ "ruflin/elastica": ">=0.90@dev",
"swiftmailer/swiftmailer": "^5.3|^6.0"
},
"suggest": {
@@ -1794,8 +1710,11 @@
"doctrine/couchdb": "Allow sending log messages to a CouchDB server",
"elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client",
"ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler",
"ext-mbstring": "Allow to work properly with unicode symbols",
"ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)",
+ "ext-openssl": "Required to send log messages using SSL",
+ "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)",
"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",
@@ -1834,7 +1753,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/2.2.0"
+ "source": "https://github.com/Seldaek/monolog/tree/2.3.5"
},
"funding": [
{
@@ -1846,43 +1765,45 @@
"type": "tidelift"
}
],
- "time": "2020-12-14T13:15:25+00:00"
+ "time": "2021-10-01T21:08:31+00:00"
},
{
"name": "ocramius/proxy-manager",
- "version": "2.8.1",
+ "version": "2.13.0",
"source": {
"type": "git",
"url": "https://github.com/Ocramius/ProxyManager.git",
- "reference": "371c8f2d9d1e888ce1f8f2137d9187252b07ee94"
+ "reference": "21e2b4aa7d7661e7641cc6362fc8635ddcfa8464"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/371c8f2d9d1e888ce1f8f2137d9187252b07ee94",
- "reference": "371c8f2d9d1e888ce1f8f2137d9187252b07ee94",
+ "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/21e2b4aa7d7661e7641cc6362fc8635ddcfa8464",
+ "reference": "21e2b4aa7d7661e7641cc6362fc8635ddcfa8464",
"shasum": ""
},
"require": {
- "laminas/laminas-code": "^3.4.1",
- "ocramius/package-versions": "^1.8.0,<1.10.0",
- "php": "~7.4.1",
- "webimpress/safe-writer": "^2.0.1"
+ "composer-runtime-api": "^2.1.0",
+ "laminas/laminas-code": "^4.3.0",
+ "php": "~7.4.1 || ~8.0.0",
+ "webimpress/safe-writer": "^2.2.0"
},
"conflict": {
"doctrine/annotations": "<1.6.1",
"laminas/laminas-stdlib": "<3.2.1",
+ "thecodingmachine/safe": "<1.3.3",
"zendframework/zend-stdlib": "<3.2.1"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0.0",
+ "codelicia/xulieta": "^0.1.6",
+ "doctrine/coding-standard": "^8.2.1",
"ext-phar": "*",
- "infection/infection": "^0.16.2",
- "nikic/php-parser": "^4.4.0",
- "phpbench/phpbench": "^0.17.0",
- "phpunit/phpunit": "^9.1.1",
- "slevomat/coding-standard": "^5.0.4",
- "squizlabs/php_codesniffer": "^3.5.4",
- "vimeo/psalm": "^3.11.1"
+ "infection/infection": "^0.21.5",
+ "nikic/php-parser": "^4.10.5",
+ "phpbench/phpbench": "^0.17.1 || 1.0.0-alpha2",
+ "phpunit/phpunit": "^9.5.4",
+ "slevomat/coding-standard": "^6.3.10",
+ "squizlabs/php_codesniffer": "^3.6.0",
+ "vimeo/psalm": "^4.4.1"
},
"suggest": {
"laminas/laminas-json": "To have the JsonRpc adapter (Remote Object feature)",
@@ -1923,7 +1844,7 @@
],
"support": {
"issues": "https://github.com/Ocramius/ProxyManager/issues",
- "source": "https://github.com/Ocramius/ProxyManager/tree/2.8.1"
+ "source": "https://github.com/Ocramius/ProxyManager/tree/2.13.0"
},
"funding": [
{
@@ -1935,57 +1856,7 @@
"type": "tidelift"
}
],
- "time": "2020-07-13T19:23:57+00:00"
- },
- {
- "name": "paragonie/random_compat",
- "version": "v9.99.99",
- "source": {
- "type": "git",
- "url": "https://github.com/paragonie/random_compat.git",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95",
- "shasum": ""
- },
- "require": {
- "php": "^7"
- },
- "require-dev": {
- "phpunit/phpunit": "4.*|5.*",
- "vimeo/psalm": "^1"
- },
- "suggest": {
- "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes."
- },
- "type": "library",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Paragon Initiative Enterprises",
- "email": "security@paragonie.com",
- "homepage": "https://paragonie.com"
- }
- ],
- "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7",
- "keywords": [
- "csprng",
- "polyfill",
- "pseudorandom",
- "random"
- ],
- "support": {
- "email": "info@paragonie.com",
- "issues": "https://github.com/paragonie/random_compat/issues",
- "source": "https://github.com/paragonie/random_compat"
- },
- "time": "2018-07-02T15:55:56+00:00"
+ "time": "2021-06-09T10:16:06+00:00"
},
{
"name": "psr/cache",
@@ -2038,20 +1909,20 @@
},
{
"name": "psr/container",
- "version": "1.1.1",
+ "version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/php-fig/container.git",
- "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
- "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
"shasum": ""
},
"require": {
- "php": ">=7.2.0"
+ "php": ">=7.4.0"
},
"type": "library",
"autoload": {
@@ -2080,9 +1951,9 @@
],
"support": {
"issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container/tree/1.1.1"
+ "source": "https://github.com/php-fig/container/tree/1.1.2"
},
- "time": "2021-03-05T17:36:06+00:00"
+ "time": "2021-11-05T16:50:12+00:00"
},
{
"name": "psr/event-dispatcher",
@@ -2189,30 +2060,30 @@
},
{
"name": "psr/log",
- "version": "1.1.4",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "Psr\\Log\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -2233,9 +2104,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/1.1.4"
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
},
- "time": "2021-05-03T11:20:27+00:00"
+ "time": "2021-07-14T16:46:02+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -2281,55 +2152,147 @@
},
"time": "2019-03-08T08:55:37+00:00"
},
+ {
+ "name": "ramsey/collection",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/ramsey/collection.git",
+ "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/ramsey/collection/zipball/cccc74ee5e328031b15640b51056ee8d3bb66c0a",
+ "reference": "cccc74ee5e328031b15640b51056ee8d3bb66c0a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ^8",
+ "symfony/polyfill-php81": "^1.23"
+ },
+ "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",
+ "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"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Ramsey\\Collection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ben Ramsey",
+ "email": "ben@benramsey.com",
+ "homepage": "https://benramsey.com"
+ }
+ ],
+ "description": "A PHP library for representing and manipulating collections.",
+ "keywords": [
+ "array",
+ "collection",
+ "hash",
+ "map",
+ "queue",
+ "set"
+ ],
+ "support": {
+ "issues": "https://github.com/ramsey/collection/issues",
+ "source": "https://github.com/ramsey/collection/tree/1.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/collection",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-10T03:01:02+00:00"
+ },
{
"name": "ramsey/uuid",
- "version": "3.9.3",
+ "version": "4.2.3",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92"
+ "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92",
- "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
+ "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
"shasum": ""
},
"require": {
+ "brick/math": "^0.8 || ^0.9",
"ext-json": "*",
- "paragonie/random_compat": "^1 | ^2 | 9.99.99",
- "php": "^5.4 | ^7 | ^8",
- "symfony/polyfill-ctype": "^1.8"
+ "php": "^7.2 || ^8.0",
+ "ramsey/collection": "^1.0",
+ "symfony/polyfill-ctype": "^1.8",
+ "symfony/polyfill-php80": "^1.14"
},
"replace": {
"rhumsaa/uuid": "self.version"
},
"require-dev": {
- "codeception/aspect-mock": "^1 | ^2",
- "doctrine/annotations": "^1.2",
- "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1",
- "jakub-onderka/php-parallel-lint": "^1",
- "mockery/mockery": "^0.9.11 | ^1",
+ "captainhook/captainhook": "^5.10",
+ "captainhook/plugin-composer": "^5.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
+ "doctrine/annotations": "^1.8",
+ "ergebnis/composer-normalize": "^2.15",
+ "mockery/mockery": "^1.3",
"moontoast/math": "^1.1",
"paragonie/random-lib": "^2",
- "php-mock/php-mock-phpunit": "^0.3 | ^1.1",
- "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5",
- "squizlabs/php_codesniffer": "^3.5"
+ "php-mock/php-mock": "^2.2",
+ "php-mock/php-mock-mockery": "^1.3",
+ "php-parallel-lint/php-parallel-lint": "^1.1",
+ "phpbench/phpbench": "^1.0",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-mockery": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^8.5 || ^9",
+ "slevomat/coding-standard": "^7.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.9"
},
"suggest": {
- "ext-ctype": "Provides support for PHP Ctype functions",
- "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator",
- "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator",
- "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator",
- "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).",
+ "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
+ "ext-ctype": "Enables faster processing of character classification using ctype functions.",
+ "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.",
+ "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.",
"paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter",
- "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid",
"ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type."
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.x-dev"
+ "dev-main": "4.x-dev"
+ },
+ "captainhook": {
+ "force-install": true
}
},
"autoload": {
@@ -2344,23 +2307,7 @@
"license": [
"MIT"
],
- "authors": [
- {
- "name": "Ben Ramsey",
- "email": "ben@benramsey.com",
- "homepage": "https://benramsey.com"
- },
- {
- "name": "Marijn Huizendveld",
- "email": "marijn.huizendveld@gmail.com"
- },
- {
- "name": "Thibaud Fabre",
- "email": "thibaud@aztech.io"
- }
- ],
- "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).",
- "homepage": "https://github.com/ramsey/uuid",
+ "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).",
"keywords": [
"guid",
"identifier",
@@ -2368,40 +2315,48 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "rss": "https://github.com/ramsey/uuid/releases.atom",
- "source": "https://github.com/ramsey/uuid",
- "wiki": "https://github.com/ramsey/uuid/wiki"
+ "source": "https://github.com/ramsey/uuid/tree/4.2.3"
},
- "time": "2020-02-21T04:36:14+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/ramsey",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-25T23:10:38+00:00"
},
{
"name": "react/promise",
- "version": "v2.8.0",
+ "version": "v2.9.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
- "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4"
+ "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4",
- "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4",
+ "url": "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910",
+ "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
- "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36"
+ "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36"
},
"type": "library",
"autoload": {
- "psr-4": {
- "React\\Promise\\": "src/"
- },
"files": [
"src/functions_include.php"
- ]
+ ],
+ "psr-4": {
+ "React\\Promise\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2410,7 +2365,23 @@
"authors": [
{
"name": "Jan Sorgalla",
- "email": "jsorgalla@gmail.com"
+ "email": "jsorgalla@gmail.com",
+ "homepage": "https://sorgalla.com/"
+ },
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering",
+ "homepage": "https://clue.engineering/"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "reactphp@ceesjankiewiet.nl",
+ "homepage": "https://wyrihaximus.net/"
+ },
+ {
+ "name": "Chris Boden",
+ "email": "cboden@gmail.com",
+ "homepage": "https://cboden.dev/"
}
],
"description": "A lightweight implementation of CommonJS Promises/A for PHP",
@@ -2420,36 +2391,46 @@
],
"support": {
"issues": "https://github.com/reactphp/promise/issues",
- "source": "https://github.com/reactphp/promise/tree/v2.8.0"
+ "source": "https://github.com/reactphp/promise/tree/v2.9.0"
},
- "time": "2020-05-12T15:16:56+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/WyriHaximus",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/clue",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-11T10:27:51+00:00"
},
{
"name": "symfony/amqp-messenger",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/amqp-messenger.git",
- "reference": "2d8f975c1d0a826feb044dcbe5424cb9c35ae9fd"
+ "reference": "e1bb5b0c812290643615b0ecebfe8debfd42ce5c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/2d8f975c1d0a826feb044dcbe5424cb9c35ae9fd",
- "reference": "2d8f975c1d0a826feb044dcbe5424cb9c35ae9fd",
+ "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/e1bb5b0c812290643615b0ecebfe8debfd42ce5c",
+ "reference": "e1bb5b0c812290643615b0ecebfe8debfd42ce5c",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/messenger": "^5.3"
+ "ext-amqp": "*",
+ "php": ">=8.0.2",
+ "symfony/messenger": "^5.4|^6.0"
},
"require-dev": {
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/property-access": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0"
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/property-access": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0"
},
- "type": "symfony-bridge",
+ "type": "symfony-messenger-bridge",
"autoload": {
"psr-4": {
"Symfony\\Component\\Messenger\\Bridge\\Amqp\\": ""
@@ -2475,7 +2456,7 @@
"description": "Symfony AMQP extension Messenger Bridge",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/amqp-messenger/tree/v5.3.2"
+ "source": "https://github.com/symfony/amqp-messenger/tree/v6.0.3"
},
"funding": [
{
@@ -2491,55 +2472,56 @@
"type": "tidelift"
}
],
- "time": "2021-06-17T12:34:27+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/cache",
- "version": "v5.3.0",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "44fd0f97d1fb198d344f22379dfc56af2221e608"
+ "reference": "4178f0a19ec3f1f76e7f1a07b8187cbe3d94b825"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/44fd0f97d1fb198d344f22379dfc56af2221e608",
- "reference": "44fd0f97d1fb198d344f22379dfc56af2221e608",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/4178f0a19ec3f1f76e7f1a07b8187cbe3d94b825",
+ "reference": "4178f0a19ec3f1f76e7f1a07b8187cbe3d94b825",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/cache": "^1.0|^2.0",
- "psr/log": "^1.1",
+ "psr/log": "^1.1|^2|^3",
"symfony/cache-contracts": "^1.1.7|^2",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-php80": "^1.15",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0"
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php73": "^1.9",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/var-exporter": "^4.4|^5.0|^6.0"
},
"conflict": {
- "doctrine/dbal": "<2.10",
+ "doctrine/dbal": "<2.13.1",
"symfony/dependency-injection": "<4.4",
"symfony/http-kernel": "<4.4",
"symfony/var-dumper": "<4.4"
},
"provide": {
"psr/cache-implementation": "1.0|2.0",
- "psr/simple-cache-implementation": "1.0",
+ "psr/simple-cache-implementation": "1.0|2.0",
"symfony/cache-implementation": "1.0|2.0"
},
"require-dev": {
"cache/integration-tests": "dev-master",
"doctrine/cache": "^1.6|^2.0",
- "doctrine/dbal": "^2.10|^3.0",
+ "doctrine/dbal": "^2.13.1|^3.0",
"predis/predis": "^1.1",
- "psr/simple-cache": "^1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/filesystem": "^4.4|^5.0",
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/messenger": "^4.4|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
+ "psr/simple-cache": "^1.0|^2.0",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/filesystem": "^4.4|^5.0|^6.0",
+ "symfony/http-kernel": "^4.4|^5.0|^6.0",
+ "symfony/messenger": "^4.4|^5.0|^6.0",
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
},
"type": "library",
"autoload": {
@@ -2571,7 +2553,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v5.3.0"
+ "source": "https://github.com/symfony/cache/tree/v5.4.3"
},
"funding": [
{
@@ -2587,20 +2569,20 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2022-01-26T16:28:35+00:00"
},
{
"name": "symfony/cache-contracts",
- "version": "v2.4.0",
+ "version": "v2.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache-contracts.git",
- "reference": "c0446463729b89dd4fa62e9aeecc80287323615d"
+ "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/c0446463729b89dd4fa62e9aeecc80287323615d",
- "reference": "c0446463729b89dd4fa62e9aeecc80287323615d",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ac2e168102a2e06a2624f0379bde94cd5854ced2",
+ "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2",
"shasum": ""
},
"require": {
@@ -2613,7 +2595,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.4-dev"
+ "dev-main": "2.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2650,7 +2632,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/cache-contracts/tree/v2.4.0"
+ "source": "https://github.com/symfony/cache-contracts/tree/v2.5.0"
},
"funding": [
{
@@ -2666,39 +2648,38 @@
"type": "tidelift"
}
],
- "time": "2021-03-23T23:28:01+00:00"
+ "time": "2021-08-17T14:20:01+00:00"
},
{
"name": "symfony/config",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "9c307728cfacbd50914f0db28aee1e0ecd82b99f"
+ "reference": "c14f32ae4cd2a3c29d8825c5093463ac08ade7d8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/9c307728cfacbd50914f0db28aee1e0ecd82b99f",
- "reference": "9c307728cfacbd50914f0db28aee1e0ecd82b99f",
+ "url": "https://api.github.com/repos/symfony/config/zipball/c14f32ae4cd2a3c29d8825c5093463ac08ade7d8",
+ "reference": "c14f32ae4cd2a3c29d8825c5093463ac08ade7d8",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/filesystem": "^4.4|^5.0",
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/filesystem": "^5.4|^6.0",
"symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-php80": "^1.15",
"symfony/polyfill-php81": "^1.22"
},
"conflict": {
"symfony/finder": "<4.4"
},
"require-dev": {
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/messenger": "^4.4|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/yaml": "^4.4|^5.0"
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
"symfony/yaml": "To use the yaml reference dumper"
@@ -2729,7 +2710,7 @@
"description": "Helps you find, load, combine, autofill and validate configuration values of any kind",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/config/tree/v5.3.2"
+ "source": "https://github.com/symfony/config/tree/v6.0.3"
},
"funding": [
{
@@ -2745,49 +2726,46 @@
"type": "tidelift"
}
],
- "time": "2021-06-12T10:15:17+00:00"
+ "time": "2022-01-03T09:53:43+00:00"
},
{
"name": "symfony/console",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1"
+ "reference": "22e8efd019c3270c4f79376234a3f8752cd25490"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
- "reference": "649730483885ff2ca99ca0560ef0e5f6b03f2ac1",
+ "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490",
+ "reference": "22e8efd019c3270c4f79376234a3f8752cd25490",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
+ "php": ">=8.0.2",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.8",
- "symfony/polyfill-php80": "^1.15",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/string": "^5.1"
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.4|^6.0"
},
"conflict": {
- "symfony/dependency-injection": "<4.4",
- "symfony/dotenv": "<5.1",
- "symfony/event-dispatcher": "<4.4",
- "symfony/lock": "<4.4",
- "symfony/process": "<4.4"
+ "symfony/dependency-injection": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/process": "<5.4"
},
"provide": {
- "psr/log-implementation": "1.0"
+ "psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/lock": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/var-dumper": "^4.4|^5.0"
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/lock": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/var-dumper": "^5.4|^6.0"
},
"suggest": {
"psr/log": "For using the console logger",
@@ -2827,7 +2805,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.3.2"
+ "source": "https://github.com/symfony/console/tree/v6.0.3"
},
"funding": [
{
@@ -2843,27 +2821,28 @@
"type": "tidelift"
}
],
- "time": "2021-06-12T09:42:48+00:00"
+ "time": "2022-01-26T17:23:29+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v5.3.2",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "ddbff73bc4fa3d5b415431d486770ab0e72f6516"
+ "reference": "974580fd67f14d65b045c11b09eb149cd4b13df5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ddbff73bc4fa3d5b415431d486770ab0e72f6516",
- "reference": "ddbff73bc4fa3d5b415431d486770ab0e72f6516",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/974580fd67f14d65b045c11b09eb149cd4b13df5",
+ "reference": "974580fd67f14d65b045c11b09eb149cd4b13df5",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/container": "^1.1.1",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-php80": "^1.15",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/polyfill-php81": "^1.22",
"symfony/service-contracts": "^1.1.6|^2"
},
"conflict": {
@@ -2878,9 +2857,9 @@
"symfony/service-implementation": "1.0|2.0"
},
"require-dev": {
- "symfony/config": "^5.3",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0"
+ "symfony/config": "^5.3|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/yaml": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/config": "",
@@ -2915,7 +2894,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v5.3.2"
+ "source": "https://github.com/symfony/dependency-injection/tree/v5.4.3"
},
"funding": [
{
@@ -2931,29 +2910,29 @@
"type": "tidelift"
}
],
- "time": "2021-06-12T09:17:04+00:00"
+ "time": "2022-01-26T16:28:35+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v2.4.0",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
+ "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
- "reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
+ "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=8.0.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.4-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2982,7 +2961,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.0"
},
"funding": [
{
@@ -2998,38 +2977,37 @@
"type": "tidelift"
}
],
- "time": "2021-03-23T23:28:01+00:00"
+ "time": "2021-11-01T23:48:49+00:00"
},
{
"name": "symfony/doctrine-messenger",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/doctrine-messenger.git",
- "reference": "beedb48475116c8c9c75fc6de70b35a656d4c442"
+ "reference": "3a51c50ecae4054b075ba23c7081be0bf536c785"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/beedb48475116c8c9c75fc6de70b35a656d4c442",
- "reference": "beedb48475116c8c9c75fc6de70b35a656d4c442",
+ "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/3a51c50ecae4054b075ba23c7081be0bf536c785",
+ "reference": "3a51c50ecae4054b075ba23c7081be0bf536c785",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/messenger": "^5.1",
- "symfony/service-contracts": "^1.1|^2"
+ "doctrine/dbal": "^2.13|^3.0",
+ "php": ">=8.0.2",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3"
},
"conflict": {
- "doctrine/dbal": "<2.10",
"doctrine/persistence": "<1.3"
},
"require-dev": {
- "doctrine/dbal": "^2.10|^3.0",
"doctrine/persistence": "^1.3|^2",
- "symfony/property-access": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0"
+ "symfony/property-access": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0"
},
- "type": "symfony-bridge",
+ "type": "symfony-messenger-bridge",
"autoload": {
"psr-4": {
"Symfony\\Component\\Messenger\\Bridge\\Doctrine\\": ""
@@ -3055,7 +3033,7 @@
"description": "Symfony Doctrine Messenger Bridge",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/doctrine-messenger/tree/v5.3.2"
+ "source": "https://github.com/symfony/doctrine-messenger/tree/v6.0.3"
},
"funding": [
{
@@ -3071,28 +3049,29 @@
"type": "tidelift"
}
],
- "time": "2021-06-04T22:34:10+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/dotenv",
- "version": "v5.3.0",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "1ac423fcc9548709077f90aca26c733cdb7e6e5c"
+ "reference": "84d1af2d39dd81b48eb1cd3af3f107eea7a275bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/1ac423fcc9548709077f90aca26c733cdb7e6e5c",
- "reference": "1ac423fcc9548709077f90aca26c733cdb7e6e5c",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/84d1af2d39dd81b48eb1cd3af3f107eea7a275bb",
+ "reference": "84d1af2d39dd81b48eb1cd3af3f107eea7a275bb",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1"
+ "symfony/deprecation-contracts": "^2.1|^3"
},
"require-dev": {
- "symfony/process": "^4.4|^5.0"
+ "symfony/console": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0"
},
"type": "library",
"autoload": {
@@ -3125,7 +3104,7 @@
"environment"
],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v5.3.0"
+ "source": "https://github.com/symfony/dotenv/tree/v5.4.3"
},
"funding": [
{
@@ -3141,33 +3120,35 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T12:52:38+00:00"
+ "time": "2022-01-26T16:19:10+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v5.3.0",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "0e6768b8c0dcef26df087df2bbbaa143867a59b2"
+ "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/0e6768b8c0dcef26df087df2bbbaa143867a59b2",
- "reference": "0e6768b8c0dcef26df087df2bbbaa143867a59b2",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b",
+ "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/log": "^1.0",
- "symfony/polyfill-php80": "^1.15",
- "symfony/var-dumper": "^4.4|^5.0"
+ "php": ">=8.0.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/var-dumper": "^5.4|^6.0"
},
"require-dev": {
- "symfony/deprecation-contracts": "^2.1",
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0"
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0"
},
+ "bin": [
+ "Resources/bin/patch-type-declarations"
+ ],
"type": "library",
"autoload": {
"psr-4": {
@@ -3194,7 +3175,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v5.3.0"
+ "source": "https://github.com/symfony/error-handler/tree/v6.0.3"
},
"funding": [
{
@@ -3210,44 +3191,42 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v5.3.0",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce"
+ "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67a5f354afa8e2f231081b3fa11a5912f933c3ce",
- "reference": "67a5f354afa8e2f231081b3fa11a5912f933c3ce",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934",
+ "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/event-dispatcher-contracts": "^2",
- "symfony/polyfill-php80": "^1.15"
+ "php": ">=8.0.2",
+ "symfony/event-dispatcher-contracts": "^2|^3"
},
"conflict": {
- "symfony/dependency-injection": "<4.4"
+ "symfony/dependency-injection": "<5.4"
},
"provide": {
"psr/event-dispatcher-implementation": "1.0",
- "symfony/event-dispatcher-implementation": "2.0"
+ "symfony/event-dispatcher-implementation": "2.0|3.0"
},
"require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/stopwatch": "^4.4|^5.0"
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "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/stopwatch": "^5.4|^6.0"
},
"suggest": {
"symfony/dependency-injection": "",
@@ -3279,7 +3258,7 @@
"description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/event-dispatcher/tree/v5.3.0"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.0.3"
},
"funding": [
{
@@ -3295,24 +3274,24 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v2.4.0",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11"
+ "reference": "aa5422287b75594b90ee9cd807caf8f0df491385"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/69fee1ad2332a7cbab3aca13591953da9cdb7a11",
- "reference": "69fee1ad2332a7cbab3aca13591953da9cdb7a11",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385",
+ "reference": "aa5422287b75594b90ee9cd807caf8f0df491385",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.0.2",
"psr/event-dispatcher": "^1"
},
"suggest": {
@@ -3321,7 +3300,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.4-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -3358,7 +3337,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.4.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0"
},
"funding": [
{
@@ -3374,25 +3353,26 @@
"type": "tidelift"
}
],
- "time": "2021-03-23T23:28:01+00:00"
+ "time": "2021-07-15T12:33:35+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v5.3.0",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "348116319d7fb7d1faa781d26a48922428013eb2"
+ "reference": "6ae49c4fda17322171a2b8dc5f70bc6edbc498e1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/348116319d7fb7d1faa781d26a48922428013eb2",
- "reference": "348116319d7fb7d1faa781d26a48922428013eb2",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/6ae49c4fda17322171a2b8dc5f70bc6edbc498e1",
+ "reference": "6ae49c4fda17322171a2b8dc5f70bc6edbc498e1",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-ctype": "~1.8"
+ "php": ">=8.0.2",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.8"
},
"type": "library",
"autoload": {
@@ -3420,7 +3400,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v5.3.0"
+ "source": "https://github.com/symfony/filesystem/tree/v6.0.3"
},
"funding": [
{
@@ -3436,24 +3416,24 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/finder",
- "version": "v5.3.0",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6"
+ "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
- "reference": "0ae3f047bed4edff6fd35b26a9a6bfdc92c953c6",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430",
+ "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=8.0.2"
},
"type": "library",
"autoload": {
@@ -3481,7 +3461,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v5.3.0"
+ "source": "https://github.com/symfony/finder/tree/v6.0.3"
},
"funding": [
{
@@ -3497,46 +3477,48 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T12:52:38+00:00"
+ "time": "2022-01-26T17:23:29+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v5.3.2",
+ "version": "v5.4.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "120e80e882debd7e705d53a3b054e1a0fae91fbc"
+ "reference": "d848b8ca3d87d0fcc9d0ccbc88cf8e128db0d4c7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/120e80e882debd7e705d53a3b054e1a0fae91fbc",
- "reference": "120e80e882debd7e705d53a3b054e1a0fae91fbc",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/d848b8ca3d87d0fcc9d0ccbc88cf8e128db0d4c7",
+ "reference": "d848b8ca3d87d0fcc9d0ccbc88cf8e128db0d4c7",
"shasum": ""
},
"require": {
"ext-xml": "*",
"php": ">=7.2.5",
- "symfony/cache": "^5.2",
- "symfony/config": "^5.3",
- "symfony/dependency-injection": "^5.3",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/error-handler": "^4.4.1|^5.0.1",
- "symfony/event-dispatcher": "^5.1",
- "symfony/filesystem": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/http-foundation": "^5.3",
- "symfony/http-kernel": "^5.3",
+ "symfony/cache": "^5.2|^6.0",
+ "symfony/config": "^5.3|^6.0",
+ "symfony/dependency-injection": "^5.3|^6.0",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/error-handler": "^4.4.1|^5.0.1|^6.0",
+ "symfony/event-dispatcher": "^5.1|^6.0",
+ "symfony/filesystem": "^4.4|^5.0|^6.0",
+ "symfony/finder": "^4.4|^5.0|^6.0",
+ "symfony/http-foundation": "^5.3|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.15",
- "symfony/routing": "^5.3"
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/polyfill-php81": "^1.22",
+ "symfony/routing": "^5.3|^6.0"
},
"conflict": {
+ "doctrine/annotations": "<1.13.1",
+ "doctrine/cache": "<1.11",
"doctrine/persistence": "<1.3",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"phpunit/phpunit": "<5.4.3",
"symfony/asset": "<5.3",
- "symfony/browser-kit": "<4.4",
"symfony/console": "<5.2.5",
"symfony/dom-crawler": "<4.4",
"symfony/dotenv": "<5.1",
@@ -3544,13 +3526,13 @@
"symfony/http-client": "<4.4",
"symfony/lock": "<4.4",
"symfony/mailer": "<5.2",
- "symfony/messenger": "<4.4",
+ "symfony/messenger": "<5.4",
"symfony/mime": "<4.4",
"symfony/property-access": "<5.3",
"symfony/property-info": "<4.4",
- "symfony/security-core": "<5.3",
"symfony/security-csrf": "<5.3",
"symfony/serializer": "<5.2",
+ "symfony/service-contracts": ">=3.0",
"symfony/stopwatch": "<4.4",
"symfony/translation": "<5.3",
"symfony/twig-bridge": "<4.4",
@@ -3560,72 +3542,40 @@
"symfony/workflow": "<5.2"
},
"require-dev": {
- "doctrine/annotations": "^1.10.4",
- "doctrine/cache": "^1.0|^2.0",
+ "doctrine/annotations": "^1.13.1",
+ "doctrine/cache": "^1.11|^2.0",
"doctrine/persistence": "^1.3|^2.0",
"paragonie/sodium_compat": "^1.8",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
- "symfony/allmysms-notifier": "^5.3",
- "symfony/asset": "^5.3",
- "symfony/browser-kit": "^4.4|^5.0",
- "symfony/clickatell-notifier": "^5.3",
- "symfony/console": "^5.2",
- "symfony/css-selector": "^4.4|^5.0",
- "symfony/discord-notifier": "^5.3",
- "symfony/dom-crawler": "^4.4|^5.0",
- "symfony/dotenv": "^5.1",
- "symfony/esendex-notifier": "^5.3",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/fake-chat-notifier": "^5.3",
- "symfony/fake-sms-notifier": "^5.3",
- "symfony/firebase-notifier": "^5.3",
- "symfony/form": "^5.2",
- "symfony/free-mobile-notifier": "^5.3",
- "symfony/gatewayapi-notifier": "^5.3",
- "symfony/gitter-notifier": "^5.3",
- "symfony/google-chat-notifier": "^5.3",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/infobip-notifier": "^5.3",
- "symfony/iqsms-notifier": "^5.3",
- "symfony/light-sms-notifier": "^5.3",
- "symfony/linked-in-notifier": "^5.3",
- "symfony/lock": "^4.4|^5.0",
- "symfony/mailer": "^5.2",
- "symfony/mattermost-notifier": "^5.3",
- "symfony/message-bird-notifier": "^5.3",
- "symfony/messenger": "^5.2",
- "symfony/microsoft-teams-notifier": "^5.3",
- "symfony/mime": "^4.4|^5.0",
- "symfony/mobyt-notifier": "^5.3",
- "symfony/nexmo-notifier": "^5.3",
- "symfony/notifier": "^5.3",
- "symfony/octopush-notifier": "^5.3",
- "symfony/ovh-cloud-notifier": "^5.3",
- "symfony/phpunit-bridge": "^5.3",
+ "symfony/asset": "^5.3|^6.0",
+ "symfony/browser-kit": "^5.4|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/css-selector": "^4.4|^5.0|^6.0",
+ "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0",
+ "symfony/dotenv": "^5.1|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/form": "^5.2|^6.0",
+ "symfony/http-client": "^4.4|^5.0|^6.0",
+ "symfony/lock": "^4.4|^5.0|^6.0",
+ "symfony/mailer": "^5.2|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/mime": "^4.4|^5.0|^6.0",
+ "symfony/notifier": "^5.4|^6.0",
+ "symfony/phpunit-bridge": "^5.3|^6.0",
"symfony/polyfill-intl-icu": "~1.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/property-info": "^4.4|^5.0",
- "symfony/rate-limiter": "^5.2",
- "symfony/rocket-chat-notifier": "^5.3",
- "symfony/security-bundle": "^5.3",
- "symfony/sendinblue-notifier": "^5.3",
- "symfony/serializer": "^5.2",
- "symfony/sinch-notifier": "^5.3",
- "symfony/slack-notifier": "^5.3",
- "symfony/sms-biuras-notifier": "^5.3",
- "symfony/smsapi-notifier": "^5.3",
- "symfony/spot-hit-notifier": "^5.3",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/string": "^5.0",
- "symfony/telegram-notifier": "^5.3",
- "symfony/translation": "^5.3",
- "symfony/twig-bundle": "^4.4|^5.0",
- "symfony/twilio-notifier": "^5.3",
- "symfony/validator": "^5.2",
- "symfony/web-link": "^4.4|^5.0",
- "symfony/workflow": "^5.2",
- "symfony/yaml": "^4.4|^5.0",
- "symfony/zulip-notifier": "^5.3",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/property-info": "^4.4|^5.0|^6.0",
+ "symfony/rate-limiter": "^5.2|^6.0",
+ "symfony/security-bundle": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0",
+ "symfony/stopwatch": "^4.4|^5.0|^6.0",
+ "symfony/string": "^5.0|^6.0",
+ "symfony/translation": "^5.3|^6.0",
+ "symfony/twig-bundle": "^4.4|^5.0|^6.0",
+ "symfony/validator": "^5.2|^6.0",
+ "symfony/web-link": "^4.4|^5.0|^6.0",
+ "symfony/workflow": "^5.2|^6.0",
+ "symfony/yaml": "^4.4|^5.0|^6.0",
"twig/twig": "^2.10|^3.0"
},
"suggest": {
@@ -3664,85 +3614,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/framework-bundle/tree/v5.3.2"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-06-17T13:29:40+00:00"
- },
- {
- "name": "symfony/http-client-contracts",
- "version": "v2.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/7e82f6084d7cae521a75ef2cb5c9457bbda785f4",
- "reference": "7e82f6084d7cae521a75ef2cb5c9457bbda785f4",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5"
- },
- "suggest": {
- "symfony/http-client-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "2.4-dev"
- },
- "thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\HttpClient\\": ""
- }
- },
- "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": "Generic abstractions related to HTTP clients",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/http-client-contracts/tree/v2.4.0"
+ "source": "https://github.com/symfony/framework-bundle/tree/v5.4.4"
},
"funding": [
{
@@ -3758,33 +3630,32 @@
"type": "tidelift"
}
],
- "time": "2021-04-11T23:07:08+00:00"
+ "time": "2022-01-29T17:49:40+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "7b6dd714d95106b831aaa7f3c9c612ab886516bd"
+ "reference": "ad157299ced81a637fade1efcadd688d6deba5c1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7b6dd714d95106b831aaa7f3c9c612ab886516bd",
- "reference": "7b6dd714d95106b831aaa7f3c9c612ab886516bd",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1",
+ "reference": "ad157299ced81a637fade1efcadd688d6deba5c1",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-mbstring": "~1.1",
- "symfony/polyfill-php80": "^1.15"
+ "php": ">=8.0.2",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.1"
},
"require-dev": {
"predis/predis": "~1.0",
- "symfony/cache": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/mime": "^4.4|^5.0"
+ "symfony/cache": "^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"
@@ -3815,7 +3686,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v5.3.2"
+ "source": "https://github.com/symfony/http-foundation/tree/v6.0.3"
},
"funding": [
{
@@ -3831,68 +3702,65 @@
"type": "tidelift"
}
],
- "time": "2021-06-12T10:15:17+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v5.3.2",
+ "version": "v6.0.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "e7021165d9dbfb4051296b8de827e92c8a7b5c87"
+ "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e7021165d9dbfb4051296b8de827e92c8a7b5c87",
- "reference": "e7021165d9dbfb4051296b8de827e92c8a7b5c87",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b",
+ "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/log": "~1.0",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/event-dispatcher": "^5.0",
- "symfony/http-client-contracts": "^1.1|^2",
- "symfony/http-foundation": "^5.3",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-php73": "^1.9",
- "symfony/polyfill-php80": "^1.15"
+ "php": ">=8.0.2",
+ "psr/log": "^1|^2|^3",
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/event-dispatcher": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/browser-kit": "<4.4",
- "symfony/cache": "<5.0",
- "symfony/config": "<5.0",
- "symfony/console": "<4.4",
- "symfony/dependency-injection": "<5.3",
- "symfony/doctrine-bridge": "<5.0",
- "symfony/form": "<5.0",
- "symfony/http-client": "<5.0",
- "symfony/mailer": "<5.0",
- "symfony/messenger": "<5.0",
- "symfony/translation": "<5.0",
- "symfony/twig-bridge": "<5.0",
- "symfony/validator": "<5.0",
+ "symfony/browser-kit": "<5.4",
+ "symfony/cache": "<5.4",
+ "symfony/config": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/doctrine-bridge": "<5.4",
+ "symfony/form": "<5.4",
+ "symfony/http-client": "<5.4",
+ "symfony/mailer": "<5.4",
+ "symfony/messenger": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/twig-bridge": "<5.4",
+ "symfony/validator": "<5.4",
"twig/twig": "<2.13"
},
"provide": {
- "psr/log-implementation": "1.0"
+ "psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
- "symfony/browser-kit": "^4.4|^5.0",
- "symfony/config": "^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/css-selector": "^4.4|^5.0",
- "symfony/dependency-injection": "^5.3",
- "symfony/dom-crawler": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/routing": "^4.4|^5.0",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/translation": "^4.4|^5.0",
- "symfony/translation-contracts": "^1.1|^2",
+ "symfony/browser-kit": "^5.4|^6.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/css-selector": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "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/process": "^5.4|^6.0",
+ "symfony/routing": "^5.4|^6.0",
+ "symfony/stopwatch": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/translation-contracts": "^1.1|^2|^3",
"twig/twig": "^2.13|^3.0.4"
},
"suggest": {
@@ -3927,7 +3795,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v5.3.2"
+ "source": "https://github.com/symfony/http-kernel/tree/v6.0.4"
},
"funding": [
{
@@ -3943,49 +3811,50 @@
"type": "tidelift"
}
],
- "time": "2021-06-17T14:18:27+00:00"
+ "time": "2022-01-29T18:12:46+00:00"
},
{
"name": "symfony/messenger",
- "version": "v5.3.2",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/messenger.git",
- "reference": "552b671a36b3f58e32e8c551a92559e571f60613"
+ "reference": "4319c25b76573cff46f112ee8cc83fffa4b97579"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/messenger/zipball/552b671a36b3f58e32e8c551a92559e571f60613",
- "reference": "552b671a36b3f58e32e8c551a92559e571f60613",
+ "url": "https://api.github.com/repos/symfony/messenger/zipball/4319c25b76573cff46f112ee8cc83fffa4b97579",
+ "reference": "4319c25b76573cff46f112ee8cc83fffa4b97579",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "psr/log": "~1.0",
- "symfony/amqp-messenger": "^5.1",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/doctrine-messenger": "^5.1",
- "symfony/polyfill-php80": "^1.15",
- "symfony/redis-messenger": "^5.1"
+ "psr/log": "^1|^2|^3",
+ "symfony/amqp-messenger": "^5.1|^6.0",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/doctrine-messenger": "^5.1|^6.0",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/redis-messenger": "^5.1|^6.0"
},
"conflict": {
"symfony/event-dispatcher": "<4.4",
"symfony/framework-bundle": "<4.4",
- "symfony/http-kernel": "<4.4"
+ "symfony/http-kernel": "<4.4",
+ "symfony/serializer": "<5.0"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/event-dispatcher": "^4.4|^5.0",
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
- "symfony/property-access": "^4.4|^5.0",
- "symfony/routing": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0",
- "symfony/service-contracts": "^1.1|^2",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/validator": "^4.4|^5.0"
+ "symfony/console": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.3|^6.0",
+ "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+ "symfony/http-kernel": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/property-access": "^4.4|^5.0|^6.0",
+ "symfony/routing": "^4.4|^5.0|^6.0",
+ "symfony/serializer": "^5.0|^6.0",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/stopwatch": "^4.4|^5.0|^6.0",
+ "symfony/validator": "^4.4|^5.0|^6.0"
},
"suggest": {
"enqueue/messenger-adapter": "For using the php-enqueue library as a transport."
@@ -4016,7 +3885,7 @@
"description": "Helps applications send and receive messages to/from other applications or via message queues",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/messenger/tree/v5.3.2"
+ "source": "https://github.com/symfony/messenger/tree/v5.4.3"
},
"funding": [
{
@@ -4032,11 +3901,11 @@
"type": "tidelift"
}
],
- "time": "2021-06-16T22:22:36+00:00"
+ "time": "2022-01-12T18:55:10+00:00"
},
{
"name": "symfony/polyfill-apcu",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-apcu.git",
@@ -4062,12 +3931,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Apcu\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Apcu\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -4093,7 +3962,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-apcu/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-apcu/tree/v1.24.0"
},
"funding": [
{
@@ -4113,21 +3982,24 @@
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
- "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
+ "provide": {
+ "ext-ctype": "*"
+ },
"suggest": {
"ext-ctype": "For best performance"
},
@@ -4172,7 +4044,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0"
},
"funding": [
{
@@ -4188,20 +4060,20 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2021-10-20T20:35:02+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab"
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/24b72c6baa32c746a4d0840147c9715e42bb68ab",
- "reference": "24b72c6baa32c746a4d0840147c9715e42bb68ab",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783",
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783",
"shasum": ""
},
"require": {
@@ -4221,12 +4093,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -4253,7 +4125,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0"
},
"funding": [
{
@@ -4269,20 +4141,20 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:17:38+00:00"
+ "time": "2021-11-23T21:10:46+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65"
+ "reference": "749045c69efb97c70d25d7463abba812e91f3a44"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65",
- "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
+ "reference": "749045c69efb97c70d25d7463abba812e91f3a44",
"shasum": ""
},
"require": {
@@ -4304,12 +4176,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Idn\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -4340,7 +4212,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0"
},
"funding": [
{
@@ -4356,11 +4228,11 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:27:20+00:00"
+ "time": "2021-09-14T14:02:44+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -4387,14 +4259,14 @@
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
}
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
- },
+ },
+ "autoload": {
"files": [
"bootstrap.php"
],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
"classmap": [
"Resources/stubs"
]
@@ -4424,7 +4296,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
},
"funding": [
{
@@ -4444,21 +4316,24 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1"
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
- "reference": "2df51500adbaebdc4c38dea4c89a2e131c45c8a1",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
"shasum": ""
},
"require": {
"php": ">=7.1"
},
+ "provide": {
+ "ext-mbstring": "*"
+ },
"suggest": {
"ext-mbstring": "For best performance"
},
@@ -4473,12 +4348,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Mbstring\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -4504,7 +4379,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
},
"funding": [
{
@@ -4520,11 +4395,11 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:27:20+00:00"
+ "time": "2021-11-30T18:21:41+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
@@ -4550,12 +4425,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php72\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php72\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -4580,7 +4455,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0"
},
"funding": [
{
@@ -4600,16 +4475,16 @@
},
{
"name": "symfony/polyfill-php73",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
+ "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
- "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5",
+ "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5",
"shasum": ""
},
"require": {
@@ -4626,12 +4501,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
"files": [
"bootstrap.php"
],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
"classmap": [
"Resources/stubs"
]
@@ -4659,7 +4534,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0"
},
"funding": [
{
@@ -4675,20 +4550,20 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2021-06-05T21:20:04+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0"
+ "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/eca0bf41ed421bed1b57c4958bab16aa86b757d0",
- "reference": "eca0bf41ed421bed1b57c4958bab16aa86b757d0",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9",
+ "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9",
"shasum": ""
},
"require": {
@@ -4705,12 +4580,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
- },
"files": [
"bootstrap.php"
],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
"classmap": [
"Resources/stubs"
]
@@ -4742,7 +4617,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0"
},
"funding": [
{
@@ -4758,20 +4633,20 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2021-09-13T13:58:33+00:00"
},
{
"name": "symfony/polyfill-php81",
- "version": "v1.23.0",
+ "version": "v1.24.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "e66119f3de95efc359483f810c4c3e6436279436"
+ "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/e66119f3de95efc359483f810c4c3e6436279436",
- "reference": "e66119f3de95efc359483f810c4c3e6436279436",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
+ "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
"shasum": ""
},
"require": {
@@ -4788,12 +4663,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Php81\\": ""
- },
"files": [
"bootstrap.php"
],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
"classmap": [
"Resources/stubs"
]
@@ -4821,7 +4696,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.23.0"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0"
},
"funding": [
{
@@ -4837,32 +4712,32 @@
"type": "tidelift"
}
],
- "time": "2021-05-21T13:25:03+00:00"
+ "time": "2021-09-13T13:58:11+00:00"
},
{
"name": "symfony/redis-messenger",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/redis-messenger.git",
- "reference": "caf341c2e11335d8db5a261bb199be13804ee983"
+ "reference": "2977b1f207baf2de559ba881acab5976db9cbe18"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/caf341c2e11335d8db5a261bb199be13804ee983",
- "reference": "caf341c2e11335d8db5a261bb199be13804ee983",
+ "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/2977b1f207baf2de559ba881acab5976db9cbe18",
+ "reference": "2977b1f207baf2de559ba881acab5976db9cbe18",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/messenger": "^5.1"
+ "ext-redis": "*",
+ "php": ">=8.0.2",
+ "symfony/messenger": "^5.4|^6.0"
},
"require-dev": {
- "symfony/property-access": "^4.4|^5.0",
- "symfony/serializer": "^4.4|^5.0"
+ "symfony/property-access": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0"
},
- "type": "symfony-bridge",
+ "type": "symfony-messenger-bridge",
"autoload": {
"psr-4": {
"Symfony\\Component\\Messenger\\Bridge\\Redis\\": ""
@@ -4888,7 +4763,7 @@
"description": "Symfony Redis extension Messenger Bridge",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/redis-messenger/tree/v5.3.2"
+ "source": "https://github.com/symfony/redis-messenger/tree/v6.0.3"
},
"funding": [
{
@@ -4904,41 +4779,39 @@
"type": "tidelift"
}
],
- "time": "2021-06-05T08:59:26+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/routing",
- "version": "v5.3.0",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "368e81376a8e049c37cb80ae87dbfbf411279199"
+ "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/368e81376a8e049c37cb80ae87dbfbf411279199",
- "reference": "368e81376a8e049c37cb80ae87dbfbf411279199",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099",
+ "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-php80": "^1.15"
+ "php": ">=8.0.2"
},
"conflict": {
"doctrine/annotations": "<1.12",
- "symfony/config": "<5.3",
- "symfony/dependency-injection": "<4.4",
- "symfony/yaml": "<4.4"
+ "symfony/config": "<5.4",
+ "symfony/dependency-injection": "<5.4",
+ "symfony/yaml": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.12",
- "psr/log": "~1.0",
- "symfony/config": "^5.3",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0"
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0",
+ "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",
@@ -4978,7 +4851,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v5.3.0"
+ "source": "https://github.com/symfony/routing/tree/v6.0.3"
},
"funding": [
{
@@ -4994,26 +4867,29 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v2.4.0",
+ "version": "v2.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb"
+ "reference": "d664541b99d6fb0247ec5ff32e87238582236204"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
- "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d664541b99d6fb0247ec5ff32e87238582236204",
+ "reference": "d664541b99d6fb0247ec5ff32e87238582236204",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"psr/container": "^1.1"
},
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
"suggest": {
"symfony/service-implementation": ""
},
@@ -5057,7 +4933,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v2.4.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v2.4.1"
},
"funding": [
{
@@ -5073,35 +4949,37 @@
"type": "tidelift"
}
],
- "time": "2021-04-01T10:43:52+00:00"
+ "time": "2021-11-04T16:37:19+00:00"
},
{
"name": "symfony/string",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "0732e97e41c0a590f77e231afc16a327375d50b0"
+ "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/0732e97e41c0a590f77e231afc16a327375d50b0",
- "reference": "0732e97e41c0a590f77e231afc16a327375d50b0",
+ "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2",
+ "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.0.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "~1.15"
+ "symfony/polyfill-mbstring": "~1.0"
+ },
+ "conflict": {
+ "symfony/translation-contracts": "<2.0"
},
"require-dev": {
- "symfony/error-handler": "^4.4|^5.0",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/translation-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0"
+ "symfony/error-handler": "^5.4|^6.0",
+ "symfony/http-client": "^5.4|^6.0",
+ "symfony/translation-contracts": "^2.0|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0"
},
"type": "library",
"autoload": {
@@ -5140,7 +5018,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.3.2"
+ "source": "https://github.com/symfony/string/tree/v6.0.3"
},
"funding": [
{
@@ -5156,24 +5034,24 @@
"type": "tidelift"
}
],
- "time": "2021-06-06T09:51:56+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v2.4.0",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "95c812666f3e91db75385749fe219c5e494c7f95"
+ "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/95c812666f3e91db75385749fe219c5e494c7f95",
- "reference": "95c812666f3e91db75385749fe219c5e494c7f95",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77",
+ "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=8.0.2"
},
"suggest": {
"symfony/translation-implementation": ""
@@ -5181,7 +5059,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.4-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5218,7 +5096,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v2.4.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.0.0"
},
"funding": [
{
@@ -5234,65 +5112,64 @@
"type": "tidelift"
}
],
- "time": "2021-03-23T23:28:01+00:00"
+ "time": "2021-09-07T12:43:40+00:00"
},
{
"name": "symfony/twig-bridge",
- "version": "v5.3.0",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "cbd8f87a3d2445e566db3fe75e34a0bcad70c222"
+ "reference": "31a4ec953c20299cc828eb6a1ccdf86d7ecbe22c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/cbd8f87a3d2445e566db3fe75e34a0bcad70c222",
- "reference": "cbd8f87a3d2445e566db3fe75e34a0bcad70c222",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/31a4ec953c20299cc828eb6a1ccdf86d7ecbe22c",
+ "reference": "31a4ec953c20299cc828eb6a1ccdf86d7ecbe22c",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.15",
- "symfony/translation-contracts": "^1.1|^2",
+ "php": ">=8.0.2",
+ "symfony/translation-contracts": "^1.1|^2|^3",
"twig/twig": "^2.13|^3.0.4"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
- "symfony/console": "<4.4",
- "symfony/form": "<5.3",
- "symfony/http-foundation": "<5.3",
- "symfony/http-kernel": "<4.4",
- "symfony/translation": "<5.2",
- "symfony/workflow": "<5.2"
+ "symfony/console": "<5.4",
+ "symfony/form": "<5.4",
+ "symfony/http-foundation": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/workflow": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.12",
"egulias/email-validator": "^2.1.10|^3",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
- "symfony/asset": "^4.4|^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/form": "^5.3",
- "symfony/http-foundation": "^5.3",
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/intl": "^4.4|^5.0",
- "symfony/mime": "^5.2",
+ "symfony/asset": "^5.4|^6.0",
+ "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": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/intl": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0",
"symfony/polyfill-intl-icu": "~1.0",
- "symfony/property-info": "^4.4|^5.1",
- "symfony/routing": "^4.4|^5.0",
+ "symfony/property-info": "^5.4|^6.0",
+ "symfony/routing": "^5.4|^6.0",
"symfony/security-acl": "^2.8|^3.0",
- "symfony/security-core": "^4.4|^5.0",
- "symfony/security-csrf": "^4.4|^5.0",
- "symfony/security-http": "^4.4|^5.0",
- "symfony/serializer": "^5.2",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/translation": "^5.2",
- "symfony/web-link": "^4.4|^5.0",
- "symfony/workflow": "^5.2",
- "symfony/yaml": "^4.4|^5.0",
+ "symfony/security-core": "^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/stopwatch": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/web-link": "^5.4|^6.0",
+ "symfony/workflow": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0",
"twig/cssinliner-extra": "^2.12|^3",
"twig/inky-extra": "^2.12|^3",
"twig/markdown-extra": "^2.12|^3"
@@ -5339,7 +5216,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v5.3.0"
+ "source": "https://github.com/symfony/twig-bridge/tree/v6.0.3"
},
"funding": [
{
@@ -5355,50 +5232,52 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/twig-bundle",
- "version": "v5.3.0",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
- "reference": "d386aaa46d1afe5afb51b39675fc2ab206159206"
+ "reference": "45ae3ee8155f93042a1033b166a7a3ed57b96a92"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/d386aaa46d1afe5afb51b39675fc2ab206159206",
- "reference": "d386aaa46d1afe5afb51b39675fc2ab206159206",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/45ae3ee8155f93042a1033b166a7a3ed57b96a92",
+ "reference": "45ae3ee8155f93042a1033b166a7a3ed57b96a92",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/config": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/http-kernel": "^5.0",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/http-foundation": "^4.4|^5.0|^6.0",
+ "symfony/http-kernel": "^5.0|^6.0",
"symfony/polyfill-ctype": "~1.8",
- "symfony/twig-bridge": "^5.3",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/twig-bridge": "^5.3|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"conflict": {
"symfony/dependency-injection": "<5.3",
"symfony/framework-bundle": "<5.0",
+ "symfony/service-contracts": ">=3.0",
"symfony/translation": "<5.0"
},
"require-dev": {
"doctrine/annotations": "^1.10.4",
"doctrine/cache": "^1.0|^2.0",
- "symfony/asset": "^4.4|^5.0",
- "symfony/dependency-injection": "^5.3",
- "symfony/expression-language": "^4.4|^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/form": "^4.4|^5.0",
- "symfony/framework-bundle": "^5.0",
- "symfony/routing": "^4.4|^5.0",
- "symfony/stopwatch": "^4.4|^5.0",
- "symfony/translation": "^5.0",
- "symfony/web-link": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0"
+ "symfony/asset": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^5.3|^6.0",
+ "symfony/expression-language": "^4.4|^5.0|^6.0",
+ "symfony/finder": "^4.4|^5.0|^6.0",
+ "symfony/form": "^4.4|^5.0|^6.0",
+ "symfony/framework-bundle": "^5.0|^6.0",
+ "symfony/routing": "^4.4|^5.0|^6.0",
+ "symfony/stopwatch": "^4.4|^5.0|^6.0",
+ "symfony/translation": "^5.0|^6.0",
+ "symfony/web-link": "^4.4|^5.0|^6.0",
+ "symfony/yaml": "^4.4|^5.0|^6.0"
},
"type": "symfony-bundle",
"autoload": {
@@ -5426,7 +5305,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bundle/tree/v5.3.0"
+ "source": "https://github.com/symfony/twig-bundle/tree/v5.4.3"
},
"funding": [
{
@@ -5442,33 +5321,36 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:43:10+00:00"
+ "time": "2022-01-02T09:53:40+00:00"
},
{
"name": "symfony/validator",
- "version": "v5.3.2",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "87621b2503601673b7e76aeffac3234ada8e1bf2"
+ "reference": "b420894e98f414b9ad5d4494650bf281f6dd6028"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/87621b2503601673b7e76aeffac3234ada8e1bf2",
- "reference": "87621b2503601673b7e76aeffac3234ada8e1bf2",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/b420894e98f414b9ad5d4494650bf281f6dd6028",
+ "reference": "b420894e98f414b9ad5d4494650bf281f6dd6028",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0",
"symfony/polyfill-php73": "~1.0",
- "symfony/polyfill-php80": "^1.15",
- "symfony/translation-contracts": "^1.1|^2"
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/polyfill-php81": "^1.22",
+ "symfony/translation-contracts": "^1.1|^2|^3"
},
"conflict": {
- "doctrine/lexer": "<1.0.2",
+ "doctrine/annotations": "<1.13",
+ "doctrine/cache": "<1.11",
+ "doctrine/lexer": "<1.1",
"phpunit/phpunit": "<5.4.3",
"symfony/dependency-injection": "<4.4",
"symfony/expression-language": "<5.1",
@@ -5479,24 +5361,24 @@
"symfony/yaml": "<4.4"
},
"require-dev": {
- "doctrine/annotations": "^1.10.4",
- "doctrine/cache": "^1.0|^2.0",
+ "doctrine/annotations": "^1.13",
+ "doctrine/cache": "^1.11|^2.0",
"egulias/email-validator": "^2.1.10|^3",
- "symfony/cache": "^4.4|^5.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/dependency-injection": "^4.4|^5.0",
- "symfony/expression-language": "^5.1",
- "symfony/finder": "^4.4|^5.0",
- "symfony/http-client": "^4.4|^5.0",
- "symfony/http-foundation": "^4.4|^5.0",
- "symfony/http-kernel": "^4.4|^5.0",
- "symfony/intl": "^4.4|^5.0",
- "symfony/mime": "^4.4|^5.0",
- "symfony/property-access": "^4.4|^5.0",
- "symfony/property-info": "^5.3",
- "symfony/translation": "^4.4|^5.0",
- "symfony/yaml": "^4.4|^5.0"
+ "symfony/cache": "^4.4|^5.0|^6.0",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/console": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/expression-language": "^5.1|^6.0",
+ "symfony/finder": "^4.4|^5.0|^6.0",
+ "symfony/http-client": "^4.4|^5.0|^6.0",
+ "symfony/http-foundation": "^4.4|^5.0|^6.0",
+ "symfony/http-kernel": "^4.4|^5.0|^6.0",
+ "symfony/intl": "^4.4|^5.0|^6.0",
+ "symfony/mime": "^4.4|^5.0|^6.0",
+ "symfony/property-access": "^4.4|^5.0|^6.0",
+ "symfony/property-info": "^5.3|^6.0",
+ "symfony/translation": "^4.4|^5.0|^6.0",
+ "symfony/yaml": "^4.4|^5.0|^6.0"
},
"suggest": {
"egulias/email-validator": "Strict (RFC compliant) email validation",
@@ -5536,7 +5418,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v5.3.2"
+ "source": "https://github.com/symfony/validator/tree/v5.4.3"
},
"funding": [
{
@@ -5552,35 +5434,35 @@
"type": "tidelift"
}
],
- "time": "2021-06-17T12:34:27+00:00"
+ "time": "2022-01-26T16:28:35+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "905a22c68b292ffb6f20d7636c36b220d1fba5ae"
+ "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/905a22c68b292ffb6f20d7636c36b220d1fba5ae",
- "reference": "905a22c68b292ffb6f20d7636c36b220d1fba5ae",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834",
+ "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.15"
+ "php": ">=8.0.2",
+ "symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
"phpunit/phpunit": "<5.4.3",
- "symfony/console": "<4.4"
+ "symfony/console": "<5.4"
},
"require-dev": {
"ext-iconv": "*",
- "symfony/console": "^4.4|^5.0",
- "symfony/process": "^4.4|^5.0",
+ "symfony/console": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/uid": "^5.4|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"suggest": {
@@ -5624,7 +5506,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v5.3.2"
+ "source": "https://github.com/symfony/var-dumper/tree/v6.0.3"
},
"funding": [
{
@@ -5640,28 +5522,27 @@
"type": "tidelift"
}
],
- "time": "2021-06-06T09:51:56+00:00"
+ "time": "2022-01-17T16:30:44+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "df663fb63bdcd7298373cbd431165ab031706cb2"
+ "reference": "1261b2d4a23081cb2b59a4caa311a5ac43b845b6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df663fb63bdcd7298373cbd431165ab031706cb2",
- "reference": "df663fb63bdcd7298373cbd431165ab031706cb2",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1261b2d4a23081cb2b59a4caa311a5ac43b845b6",
+ "reference": "1261b2d4a23081cb2b59a4caa311a5ac43b845b6",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.15"
+ "php": ">=8.0.2"
},
"require-dev": {
- "symfony/var-dumper": "^4.4.9|^5.0.9"
+ "symfony/var-dumper": "^5.4|^6.0"
},
"type": "library",
"autoload": {
@@ -5697,7 +5578,7 @@
"serialize"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v5.3.2"
+ "source": "https://github.com/symfony/var-exporter/tree/v6.0.3"
},
"funding": [
{
@@ -5713,32 +5594,32 @@
"type": "tidelift"
}
],
- "time": "2021-06-09T10:57:10+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/yaml",
- "version": "v5.3.2",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "71719ab2409401711d619765aa255f9d352a59b2"
+ "reference": "e80f87d2c9495966768310fc531b487ce64237a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/71719ab2409401711d619765aa255f9d352a59b2",
- "reference": "71719ab2409401711d619765aa255f9d352a59b2",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2",
+ "reference": "e80f87d2c9495966768310fc531b487ce64237a2",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
- "symfony/polyfill-ctype": "~1.8"
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/console": "<4.4"
+ "symfony/console": "<5.3"
},
"require-dev": {
- "symfony/console": "^4.4|^5.0"
+ "symfony/console": "^5.3|^6.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
@@ -5772,7 +5653,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v5.3.2"
+ "source": "https://github.com/symfony/yaml/tree/v5.4.3"
},
"funding": [
{
@@ -5788,20 +5669,20 @@
"type": "tidelift"
}
],
- "time": "2021-06-06T09:51:56+00:00"
+ "time": "2022-01-26T16:32:32+00:00"
},
{
"name": "twig/twig",
- "version": "v3.3.2",
+ "version": "v3.3.8",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790"
+ "reference": "972d8604a92b7054828b539f2febb0211dd5945c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/21578f00e83d4a82ecfa3d50752b609f13de6790",
- "reference": "21578f00e83d4a82ecfa3d50752b609f13de6790",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c",
+ "reference": "972d8604a92b7054828b539f2febb0211dd5945c",
"shasum": ""
},
"require": {
@@ -5811,7 +5692,7 @@
},
"require-dev": {
"psr/container": "^1.0",
- "symfony/phpunit-bridge": "^4.4.9|^5.0.9"
+ "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0"
},
"type": "library",
"extra": {
@@ -5852,7 +5733,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.3.2"
+ "source": "https://github.com/twigphp/Twig/tree/v3.3.8"
},
"funding": [
{
@@ -5864,7 +5745,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-16T12:14:13+00:00"
+ "time": "2022-02-04T06:59:48+00:00"
},
{
"name": "webimpress/safe-writer",
@@ -5929,27 +5810,27 @@
"packages-dev": [
{
"name": "amphp/amp",
- "version": "v2.5.2",
+ "version": "v2.6.1",
"source": {
"type": "git",
"url": "https://github.com/amphp/amp.git",
- "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9"
+ "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/amp/zipball/efca2b32a7580087adb8aabbff6be1dc1bb924a9",
- "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae",
+ "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae",
"shasum": ""
},
"require": {
- "php": ">=7"
+ "php": ">=7.1"
},
"require-dev": {
"amphp/php-cs-fixer-config": "dev-master",
"amphp/phpunit-util": "^1",
"ext-json": "*",
"jetbrains/phpstorm-stubs": "^2019.3",
- "phpunit/phpunit": "^6.0.9 | ^7",
+ "phpunit/phpunit": "^7 | ^8 | ^9",
"psalm/phar": "^3.11@dev",
"react/promise": "^2"
},
@@ -6006,7 +5887,7 @@
"support": {
"irc": "irc://irc.freenode.org/amphp",
"issues": "https://github.com/amphp/amp/issues",
- "source": "https://github.com/amphp/amp/tree/v2.5.2"
+ "source": "https://github.com/amphp/amp/tree/v2.6.1"
},
"funding": [
{
@@ -6014,7 +5895,7 @@
"type": "github"
}
],
- "time": "2021-01-10T17:06:37+00:00"
+ "time": "2021-09-23T18:43:08+00:00"
},
{
"name": "amphp/byte-stream",
@@ -6049,12 +5930,12 @@
}
},
"autoload": {
- "psr-4": {
- "Amp\\ByteStream\\": "lib"
- },
"files": [
"lib/functions.php"
- ]
+ ],
+ "psr-4": {
+ "Amp\\ByteStream\\": "lib"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -6095,36 +5976,37 @@
},
{
"name": "behat/behat",
- "version": "v3.8.1",
+ "version": "v3.10.0",
"source": {
"type": "git",
"url": "https://github.com/Behat/Behat.git",
- "reference": "fbb065457d523d9856d4b50775b4151a7598b510"
+ "reference": "a55661154079cf881ef643b303bfaf67bae3a09f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/Behat/zipball/fbb065457d523d9856d4b50775b4151a7598b510",
- "reference": "fbb065457d523d9856d4b50775b4151a7598b510",
+ "url": "https://api.github.com/repos/Behat/Behat/zipball/a55661154079cf881ef643b303bfaf67bae3a09f",
+ "reference": "a55661154079cf881ef643b303bfaf67bae3a09f",
"shasum": ""
},
"require": {
- "behat/gherkin": "^4.6.0",
+ "behat/gherkin": "^4.9.0",
"behat/transliterator": "^1.2",
"ext-mbstring": "*",
"php": "^7.2 || ^8.0",
"psr/container": "^1.0",
- "symfony/config": "^4.4 || ^5.0",
- "symfony/console": "^4.4 || ^5.0",
- "symfony/dependency-injection": "^4.4 || ^5.0",
- "symfony/event-dispatcher": "^4.4 || ^5.0",
- "symfony/translation": "^4.4 || ^5.0",
- "symfony/yaml": "^4.4 || ^5.0"
+ "symfony/config": "^4.4 || ^5.0 || ^6.0",
+ "symfony/console": "^4.4 || ^5.0 || ^6.0",
+ "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0",
+ "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0",
+ "symfony/translation": "^4.4 || ^5.0 || ^6.0",
+ "symfony/yaml": "^4.4 || ^5.0 || ^6.0"
},
"require-dev": {
"container-interop/container-interop": "^1.2",
"herrera-io/box": "~1.6.1",
"phpunit/phpunit": "^8.5 || ^9.0",
- "symfony/process": "^4.4 || ^5.0"
+ "symfony/process": "^4.4 || ^5.0 || ^6.0",
+ "vimeo/psalm": "^4.8"
},
"suggest": {
"ext-dom": "Needed to output test results in JUnit format."
@@ -6135,13 +6017,15 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.8.x-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
"Behat\\Behat\\": "src/Behat/Behat/",
- "Behat\\Testwork\\": "src/Behat/Testwork/"
+ "Behat\\Testwork\\": "src/Behat/Testwork/",
+ "Behat\\Step\\": "src/Behat/Step/",
+ "Behat\\Hook\\": "src/Behat/Hook/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -6173,31 +6057,30 @@
],
"support": {
"issues": "https://github.com/Behat/Behat/issues",
- "source": "https://github.com/Behat/Behat/tree/v3.8.1"
+ "source": "https://github.com/Behat/Behat/tree/v3.10.0"
},
- "time": "2020-11-07T15:55:18+00:00"
+ "time": "2021-11-02T20:09:40+00:00"
},
{
"name": "behat/gherkin",
- "version": "v4.8.0",
+ "version": "v4.9.0",
"source": {
"type": "git",
"url": "https://github.com/Behat/Gherkin.git",
- "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd"
+ "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/Gherkin/zipball/2391482cd003dfdc36b679b27e9f5326bd656acd",
- "reference": "2391482cd003dfdc36b679b27e9f5326bd656acd",
+ "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4",
+ "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4",
"shasum": ""
},
"require": {
"php": "~7.2|~8.0"
},
"require-dev": {
- "cucumber/cucumber": "dev-gherkin-16.0.0",
+ "cucumber/cucumber": "dev-gherkin-22.0.0",
"phpunit/phpunit": "~8|~9",
- "symfony/phpunit-bridge": "~3|~4|~5",
"symfony/yaml": "~3|~4|~5"
},
"suggest": {
@@ -6206,7 +6089,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.4-dev"
+ "dev-master": "4.x-dev"
}
},
"autoload": {
@@ -6237,32 +6120,33 @@
],
"support": {
"issues": "https://github.com/Behat/Gherkin/issues",
- "source": "https://github.com/Behat/Gherkin/tree/v4.8.0"
+ "source": "https://github.com/Behat/Gherkin/tree/v4.9.0"
},
- "time": "2021-02-04T12:44:21+00:00"
+ "time": "2021-10-12T13:05:09+00:00"
},
{
"name": "behat/mink",
- "version": "v1.8.1",
+ "version": "v1.9.0",
"source": {
"type": "git",
"url": "https://github.com/minkphp/Mink.git",
- "reference": "07c6a9fe3fa98c2de074b25d9ed26c22904e3887"
+ "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/minkphp/Mink/zipball/07c6a9fe3fa98c2de074b25d9ed26c22904e3887",
- "reference": "07c6a9fe3fa98c2de074b25d9ed26c22904e3887",
+ "url": "https://api.github.com/repos/minkphp/Mink/zipball/e35f4695de8800fc776af34ebf665ad58ebdd996",
+ "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996",
"shasum": ""
},
"require": {
- "php": ">=5.3.1",
+ "php": ">=5.4",
"symfony/css-selector": "^2.7|^3.0|^4.0|^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20",
- "symfony/debug": "^2.7|^3.0|^4.0",
- "symfony/phpunit-bridge": "^3.4.38 || ^5.0.5"
+ "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5 || ^9.5",
+ "symfony/debug": "^2.7|^3.0|^4.0|^5.0",
+ "symfony/phpunit-bridge": "^3.4.38 || ^4.4 || ^5.0.5",
+ "yoast/phpunit-polyfills": "^1.0"
},
"suggest": {
"behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)",
@@ -6274,7 +6158,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.8.x-dev"
+ "dev-master": "1.x-dev"
}
},
"autoload": {
@@ -6294,7 +6178,7 @@
}
],
"description": "Browser controller/emulator abstraction for PHP",
- "homepage": "http://mink.behat.org/",
+ "homepage": "https://mink.behat.org/",
"keywords": [
"browser",
"testing",
@@ -6302,39 +6186,43 @@
],
"support": {
"issues": "https://github.com/minkphp/Mink/issues",
- "source": "https://github.com/minkphp/Mink/tree/v1.8.1"
+ "source": "https://github.com/minkphp/Mink/tree/v1.9.0"
},
- "time": "2020-03-11T15:45:53+00:00"
+ "time": "2021-10-11T11:58:47+00:00"
},
{
"name": "behat/mink-browserkit-driver",
- "version": "v1.3.4",
+ "version": "v2.0.0",
"source": {
"type": "git",
"url": "https://github.com/minkphp/MinkBrowserKitDriver.git",
- "reference": "e3b90840022ebcd544c7b394a3c9597ae242cbee"
+ "reference": "0d3d9c3b375be6f3d44fd6d1e08ed28c104b3bd4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/e3b90840022ebcd544c7b394a3c9597ae242cbee",
- "reference": "e3b90840022ebcd544c7b394a3c9597ae242cbee",
+ "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/0d3d9c3b375be6f3d44fd6d1e08ed28c104b3bd4",
+ "reference": "0d3d9c3b375be6f3d44fd6d1e08ed28c104b3bd4",
"shasum": ""
},
"require": {
- "behat/mink": "^1.7.1@dev",
- "php": ">=5.3.6",
- "symfony/browser-kit": "~2.3|~3.0|~4.0",
- "symfony/dom-crawler": "~2.3|~3.0|~4.0"
+ "behat/mink": "^1.9.0@dev",
+ "php": ">=7.2",
+ "symfony/browser-kit": "^4.4 || ^5.0",
+ "symfony/dom-crawler": "^4.4 || ^5.0"
},
"require-dev": {
"mink/driver-testsuite": "dev-master",
- "symfony/debug": "^2.7|^3.0|^4.0",
- "symfony/http-kernel": "~2.3|~3.0|~4.0"
+ "phpunit/phpunit": "^8.5 || ^9.5",
+ "symfony/error-handler": "^4.4 || ^5.0",
+ "symfony/http-client": "^4.4 || ^5.0",
+ "symfony/http-kernel": "^4.4 || ^5.0",
+ "symfony/mime": "^4.4 || ^5.0",
+ "yoast/phpunit-polyfills": "^1.0"
},
"type": "mink-driver",
"extra": {
"branch-alias": {
- "dev-master": "1.3.x-dev"
+ "dev-master": "2.x-dev"
}
},
"autoload": {
@@ -6354,7 +6242,7 @@
}
],
"description": "Symfony2 BrowserKit driver for Mink framework",
- "homepage": "http://mink.behat.org/",
+ "homepage": "https://mink.behat.org/",
"keywords": [
"Mink",
"Symfony2",
@@ -6363,9 +6251,9 @@
],
"support": {
"issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues",
- "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v1.3.4"
+ "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v2.0.0"
},
- "time": "2020-03-11T09:49:45+00:00"
+ "time": "2021-12-13T10:31:49+00:00"
},
{
"name": "behat/transliterator",
@@ -6416,25 +6304,169 @@
},
"time": "2020-01-14T16:39:13+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": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/pcre/issues",
+ "source": "https://github.com/composer/pcre/tree/1.0.1"
+ },
+ "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-21T20:24:37+00:00"
+ },
{
"name": "composer/semver",
- "version": "3.2.5",
+ "version": "3.2.9",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9"
+ "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9",
- "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9",
+ "url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649",
+ "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
- "phpstan/phpstan": "^0.12.54",
+ "phpstan/phpstan": "^1.4",
"symfony/phpunit-bridge": "^4.2 || ^5"
},
"type": "library",
@@ -6479,7 +6511,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.2.5"
+ "source": "https://github.com/composer/semver/tree/3.2.9"
},
"funding": [
{
@@ -6495,29 +6527,31 @@
"type": "tidelift"
}
],
- "time": "2021-05-24T12:41:47+00:00"
+ "time": "2022-02-04T13:58:43+00:00"
},
{
"name": "composer/xdebug-handler",
- "version": "2.0.1",
+ "version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496"
+ "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/964adcdd3a28bf9ed5d9ac6450064e0d71ed7496",
- "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/12f1b79476638a5615ed00ea6adbb269cec96fd8",
+ "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8",
"shasum": ""
},
"require": {
- "php": "^5.3.2 || ^7.0 || ^8.0",
- "psr/log": "^1.0"
+ "composer/pcre": "^1",
+ "php": "^7.2.5 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
},
"require-dev": {
- "phpstan/phpstan": "^0.12.55",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^6.0"
},
"type": "library",
"autoload": {
@@ -6543,7 +6577,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/2.0.1"
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.1"
},
"funding": [
{
@@ -6559,7 +6593,7 @@
"type": "tidelift"
}
],
- "time": "2021-05-05T19:37:51+00:00"
+ "time": "2022-01-04T18:29:42+00:00"
},
{
"name": "dnoegel/php-xdg-base-dir",
@@ -6701,30 +6735,30 @@
},
{
"name": "friends-of-behat/mink-extension",
- "version": "v2.5.0",
+ "version": "v2.6.1",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfBehat/MinkExtension.git",
- "reference": "83119aa70be1f2c63061c29dced9d41775cd9db2"
+ "reference": "df04efb3e88833208c3a99a3efa3f7e9f03854db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfBehat/MinkExtension/zipball/83119aa70be1f2c63061c29dced9d41775cd9db2",
- "reference": "83119aa70be1f2c63061c29dced9d41775cd9db2",
+ "url": "https://api.github.com/repos/FriendsOfBehat/MinkExtension/zipball/df04efb3e88833208c3a99a3efa3f7e9f03854db",
+ "reference": "df04efb3e88833208c3a99a3efa3f7e9f03854db",
"shasum": ""
},
"require": {
"behat/behat": "^3.0.5",
"behat/mink": "^1.5",
- "php": ">=7.2",
- "symfony/config": "^3.4 || ^4.4 || ^5.0"
+ "php": ">=7.4",
+ "symfony/config": "^4.4 || ^5.0 || ^6.0"
},
"replace": {
"behat/mink-extension": "self.version"
},
"require-dev": {
"behat/mink-goutte-driver": "^1.1",
- "phpspec/phpspec": "^6.0 || ^7.0"
+ "phpspec/phpspec": "^6.0 || ^7.0 || 7.1.x-dev"
},
"type": "behat-extension",
"extra": {
@@ -6760,30 +6794,30 @@
"web"
],
"support": {
- "source": "https://github.com/FriendsOfBehat/MinkExtension/tree/v2.5.0"
+ "source": "https://github.com/FriendsOfBehat/MinkExtension/tree/v2.6.1"
},
- "time": "2021-01-21T09:27:44+00:00"
+ "time": "2021-12-24T13:19:26+00:00"
},
{
"name": "friends-of-behat/symfony-extension",
- "version": "v2.2.0",
+ "version": "v2.3.1",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfBehat/SymfonyExtension.git",
- "reference": "9954f5d4c34d5522ded781ba62b07e06fa71bd10"
+ "reference": "572c34e6483e70db0afd45111553332f95bc06ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfBehat/SymfonyExtension/zipball/9954f5d4c34d5522ded781ba62b07e06fa71bd10",
- "reference": "9954f5d4c34d5522ded781ba62b07e06fa71bd10",
+ "url": "https://api.github.com/repos/FriendsOfBehat/SymfonyExtension/zipball/572c34e6483e70db0afd45111553332f95bc06ca",
+ "reference": "572c34e6483e70db0afd45111553332f95bc06ca",
"shasum": ""
},
"require": {
"behat/behat": "^3.6.1",
- "php": "^7.3 || ^8.0",
- "symfony/dependency-injection": "^4.4 || ^5.1",
- "symfony/http-kernel": "^4.4 || ^5.1",
- "symfony/proxy-manager-bridge": "^4.4 || ^5.1"
+ "php": "^7.4 || ^8.0",
+ "symfony/dependency-injection": "^4.4 || ^5.3 || ^6.0",
+ "symfony/http-kernel": "^4.4 || ^5.3 || ^6.0",
+ "symfony/proxy-manager-bridge": "^4.4 || ^5.3 || ^6.0"
},
"require-dev": {
"behat/mink-selenium2-driver": "^1.3",
@@ -6792,12 +6826,12 @@
"friends-of-behat/mink-extension": "^2.5",
"friends-of-behat/page-object-extension": "^0.3.2",
"friends-of-behat/service-container-extension": "^1.1",
- "sylius-labs/coding-standard": "^3.2",
- "symfony/browser-kit": "^4.4 || ^5.1",
- "symfony/framework-bundle": "^4.4 || ^5.1",
- "symfony/process": "^4.4 || ^5.1",
- "symfony/yaml": "^4.4 || ^5.1",
- "vimeo/psalm": "4.4.1"
+ "sylius-labs/coding-standard": "^4.1.1",
+ "symfony/browser-kit": "^4.4 || ^5.3 || ^6.0",
+ "symfony/framework-bundle": "^4.4 || ^5.3 || ^6.0",
+ "symfony/process": "^4.4 || ^5.3 || ^6.0",
+ "symfony/yaml": "^4.4 || ^5.3 || ^6.0",
+ "vimeo/psalm": "4.15.0"
},
"suggest": {
"friends-of-behat/mink": "^1.9",
@@ -6829,9 +6863,9 @@
"description": "Integrates Behat with Symfony.",
"support": {
"issues": "https://github.com/FriendsOfBehat/SymfonyExtension/issues",
- "source": "https://github.com/FriendsOfBehat/SymfonyExtension/tree/v2.2.0"
+ "source": "https://github.com/FriendsOfBehat/SymfonyExtension/tree/v2.3.1"
},
- "time": "2021-02-04T15:45:42+00:00"
+ "time": "2021-12-24T13:14:59+00:00"
},
{
"name": "fzaninotto/faker",
@@ -6941,16 +6975,16 @@
},
{
"name": "mockery/mockery",
- "version": "1.4.3",
+ "version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea"
+ "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/d1339f64479af1bee0e82a0413813fe5345a54ea",
- "reference": "d1339f64479af1bee0e82a0413813fe5345a54ea",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac",
+ "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac",
"shasum": ""
},
"require": {
@@ -7007,9 +7041,9 @@
],
"support": {
"issues": "https://github.com/mockery/mockery/issues",
- "source": "https://github.com/mockery/mockery/tree/1.4.3"
+ "source": "https://github.com/mockery/mockery/tree/1.5.0"
},
- "time": "2021-02-24T09:51:49+00:00"
+ "time": "2022-01-20T13:18:17+00:00"
},
{
"name": "myclabs/deep-copy",
@@ -7028,9 +7062,6 @@
"require": {
"php": "^7.1 || ^8.0"
},
- "replace": {
- "myclabs/deep-copy": "self.version"
- },
"require-dev": {
"doctrine/collections": "^1.0",
"doctrine/common": "^2.6",
@@ -7038,12 +7069,12 @@
},
"type": "library",
"autoload": {
- "psr-4": {
- "DeepCopy\\": "src/DeepCopy/"
- },
"files": [
"src/DeepCopy/deep_copy.php"
- ]
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -7122,16 +7153,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v4.10.5",
+ "version": "v4.13.2",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "4432ba399e47c66624bc73c8c0f811e5c109576f"
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4432ba399e47c66624bc73c8c0f811e5c109576f",
- "reference": "4432ba399e47c66624bc73c8c0f811e5c109576f",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
"shasum": ""
},
"require": {
@@ -7172,9 +7203,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.5"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
},
- "time": "2021-05-03T19:11:20+00:00"
+ "time": "2021-11-30T19:35:32+00:00"
},
{
"name": "openlss/lib-array2xml",
@@ -7231,16 +7262,16 @@
},
{
"name": "phar-io/manifest",
- "version": "2.0.1",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
- "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
"shasum": ""
},
"require": {
@@ -7285,22 +7316,22 @@
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": {
"issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/master"
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
},
- "time": "2020-06-27T14:33:11+00:00"
+ "time": "2021-07-20T11:28:43+00:00"
},
{
"name": "phar-io/version",
- "version": "3.1.0",
+ "version": "3.1.1",
"source": {
"type": "git",
"url": "https://github.com/phar-io/version.git",
- "reference": "bae7c545bef187884426f042434e561ab1ddb182"
+ "reference": "15a90844ad40f127afd244c0cad228de2a80052a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
- "reference": "bae7c545bef187884426f042434e561ab1ddb182",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a",
+ "reference": "15a90844ad40f127afd244c0cad228de2a80052a",
"shasum": ""
},
"require": {
@@ -7336,9 +7367,9 @@
"description": "Library for handling version information and constraints",
"support": {
"issues": "https://github.com/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.1.0"
+ "source": "https://github.com/phar-io/version/tree/3.1.1"
},
- "time": "2021-02-23T14:00:09+00:00"
+ "time": "2022-02-07T21:56:48+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -7395,16 +7426,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.2.2",
+ "version": "5.3.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
- "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
"shasum": ""
},
"require": {
@@ -7415,7 +7446,8 @@
"webmozart/assert": "^1.9.1"
},
"require-dev": {
- "mockery/mockery": "~1.3.2"
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
},
"type": "library",
"extra": {
@@ -7445,22 +7477,22 @@
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
},
- "time": "2020-09-03T19:13:55+00:00"
+ "time": "2021-10-19T17:43:47+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.4.0",
+ "version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
- "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
"shasum": ""
},
"require": {
@@ -7468,7 +7500,8 @@
"phpdocumentor/reflection-common": "^2.0"
},
"require-dev": {
- "ext-tokenizer": "*"
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
},
"type": "library",
"extra": {
@@ -7494,39 +7527,39 @@
"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.4.0"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
},
- "time": "2020-09-17T18:55:26+00:00"
+ "time": "2022-01-04T19:58:01+00:00"
},
{
"name": "phpspec/prophecy",
- "version": "1.13.0",
+ "version": "v1.15.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
- "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
- "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
"shasum": ""
},
"require": {
"doctrine/instantiator": "^1.2",
- "php": "^7.2 || ~8.0, <8.1",
+ "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"
},
"require-dev": {
- "phpspec/phpspec": "^6.0",
+ "phpspec/phpspec": "^6.0 || ^7.0",
"phpunit/phpunit": "^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.11.x-dev"
+ "dev-master": "1.x-dev"
}
},
"autoload": {
@@ -7561,29 +7594,29 @@
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
+ "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
},
- "time": "2021-03-17T13:42:18+00:00"
+ "time": "2021-12-08T12:19:24+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.6",
+ "version": "9.2.10",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "f6293e1b30a2354e8428e004689671b83871edde"
+ "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde",
- "reference": "f6293e1b30a2354e8428e004689671b83871edde",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687",
+ "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.10.2",
+ "nikic/php-parser": "^4.13.0",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -7632,7 +7665,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10"
},
"funding": [
{
@@ -7640,20 +7673,20 @@
"type": "github"
}
],
- "time": "2021-03-28T07:26:59+00:00"
+ "time": "2021-12-05T09:12:13+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "3.0.5",
+ "version": "3.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
- "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
"shasum": ""
},
"require": {
@@ -7692,7 +7725,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
},
"funding": [
{
@@ -7700,7 +7733,7 @@
"type": "github"
}
],
- "time": "2020-09-28T05:57:25+00:00"
+ "time": "2021-12-02T12:48:52+00:00"
},
{
"name": "phpunit/php-invoker",
@@ -7885,16 +7918,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.6",
+ "version": "9.5.13",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb"
+ "reference": "597cb647654ede35e43b137926dfdfef0fb11743"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb",
- "reference": "fb9b8333f14e3dce976a60ef6a7e05c7c7ed8bfb",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743",
+ "reference": "597cb647654ede35e43b137926dfdfef0fb11743",
"shasum": ""
},
"require": {
@@ -7906,11 +7939,11 @@
"ext-xml": "*",
"ext-xmlwriter": "*",
"myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.1",
+ "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.3",
+ "phpunit/php-code-coverage": "^9.2.7",
"phpunit/php-file-iterator": "^3.0.5",
"phpunit/php-invoker": "^3.1.1",
"phpunit/php-text-template": "^2.0.3",
@@ -7945,11 +7978,11 @@
}
},
"autoload": {
- "classmap": [
- "src/"
- ],
"files": [
"src/Framework/Assert/Functions.php"
+ ],
+ "classmap": [
+ "src/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -7972,11 +8005,11 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.6"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13"
},
"funding": [
{
- "url": "https://phpunit.de/donate.html",
+ "url": "https://phpunit.de/sponsors.html",
"type": "custom"
},
{
@@ -7984,7 +8017,7 @@
"type": "github"
}
],
- "time": "2021-06-23T05:14:38+00:00"
+ "time": "2022-01-24T07:33:35+00:00"
},
{
"name": "roave/security-advisories",
@@ -7992,46 +8025,61 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "ac0d045cdd1a9f1c87a0225a1dcda2bfb71be924"
+ "reference": "a74c203357d9b250a4019bc18e9a23a050e16bef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ac0d045cdd1a9f1c87a0225a1dcda2bfb71be924",
- "reference": "ac0d045cdd1a9f1c87a0225a1dcda2bfb71be924",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/a74c203357d9b250a4019bc18e9a23a050e16bef",
+ "reference": "a74c203357d9b250a4019bc18e9a23a050e16bef",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
- "adodb/adodb-php": "<5.20.12",
+ "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
+ "akaunting/akaunting": "<2.1.13",
"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",
"amphp/http": "<1.0.1",
"amphp/http-client": ">=4,<4.4",
+ "anchorcms/anchor-cms": "<=0.12.7",
"api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6",
+ "area17/twill": "<1.2.5|>=2,<2.5.3",
"asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
"aws/aws-sdk-php": ">=3,<3.2.1",
"bagisto/bagisto": "<0.1.5",
"barrelstrength/sprout-base-email": "<1.2.7",
"barrelstrength/sprout-forms": "<3.9",
- "baserproject/basercms": "<4.4.5",
+ "baserproject/basercms": "<4.5.4",
+ "billz/raspap-webgui": "<=2.6.6",
"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",
"bolt/bolt": "<3.7.2",
"bolt/core": "<4.1.13",
+ "bottelet/flarepoint": "<2.2.1",
"brightlocal/phpwhois": "<=4.2.5",
- "buddypress/buddypress": "<5.1.2",
+ "buddypress/buddypress": "<7.2.1",
"bugsnag/bugsnag-laravel": ">=2,<2.0.2",
- "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.5.18|>=3.6,<3.6.15|>=3.7,<3.7.7",
+ "bytefury/crater": "<6.0.2",
+ "cachethq/cachet": "<2.5.1",
+ "cakephp/cakephp": "<4.0.6",
+ "cardgate/magento2": "<2.0.33",
"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",
"cesnet/simplesamlphp-module-proxystatistics": "<3.1",
+ "codeception/codeception": "<3.1.3|>=4,<4.1.22",
"codeigniter/framework": "<=3.0.6",
- "composer/composer": "<1.10.22|>=2-alpha.1,<2.0.13",
+ "codeigniter4/framework": "<4.1.8",
+ "codiad/codiad": "<=2.8.4",
+ "composer/composer": "<1.10.23|>=2-alpha.1,<2.1.9",
+ "concrete5/concrete5": "<8.5.5",
+ "concrete5/core": "<8.5.7",
"contao-components/mediaelement": ">=2.14.2,<2.21.1",
"contao/core": ">=2,<3.5.39",
- "contao/core-bundle": ">=4,<4.4.52|>=4.5,<4.9.16|>=4.10,<4.11.5|= 4.10.0",
+ "contao/core-bundle": "<4.9.18|>=4.10,<4.11.7|= 4.10.0",
"contao/listing-bundle": ">=4,<4.4.8",
+ "craftcms/cms": "<3.7.14",
"croogo/croogo": "<3.0.7",
"datadog/dd-trace": ">=0.30,<0.30.2",
"david-garcia/phpwhois": "<=4.3.1",
@@ -8040,150 +8088,193 @@
"doctrine/annotations": ">=1,<1.2.7",
"doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
"doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
- "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2",
+ "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4",
"doctrine/doctrine-bundle": "<1.5.2",
"doctrine/doctrine-module": "<=0.7.1",
"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": "<11.0.4",
+ "dolibarr/dolibarr": "<=14.0.5|>= 3.3.beta1, < 13.0.2",
"dompdf/dompdf": ">=0.6,<0.6.2",
- "drupal/core": ">=7,<7.80|>=8,<8.9.14|>=9,<9.0.12|>=9.1,<9.1.7",
- "drupal/drupal": ">=7,<7.80|>=8,<8.9.14|>=9,<9.0.12|>=9.1,<9.1.7",
+ "drupal/core": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
+ "drupal/drupal": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
"dweeves/magmi": "<=0.7.24",
+ "ecodev/newsletter": "<=4",
+ "elgg/elgg": "<3.3.24|>=4,<4.0.5",
"endroid/qr-code-bundle": "<3.4.2",
"enshrined/svg-sanitize": "<0.13.1",
"erusev/parsedown": "<1.7.2",
+ "ether/logs": "<3.0.4",
"ezsystems/demobundle": ">=5.4,<5.4.6.1",
"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/ezplatform": ">=1.7,<1.7.9.1|>=1.13,<1.13.5.1|>=2.5,<2.5.4",
- "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6",
+ "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.25",
"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.1",
- "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<=1.3.1",
+ "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
+ "ezsystems/ezplatform-richtext": ">=2.3,<=2.3.7",
"ezsystems/ezplatform-user": ">=1,<1.0.1",
- "ezsystems/ezpublish-kernel": "<=6.13.8.1|>=7,<=7.5.15.1",
- "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.14.2|>=2011,<2017.12.7.3|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3|>=2019.3,<2019.3.5.1",
+ "ezsystems/ezpublish-kernel": "<=6.13.8.1|>=7,<7.5.26",
+ "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.3.5.1",
"ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3",
"ezsystems/repository-forms": ">=2.3,<2.3.2.1",
"ezyang/htmlpurifier": "<4.1.1",
- "facade/ignition": "<1.16.14|>=2,<2.4.2|>=2.5,<2.5.2",
+ "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
"feehi/cms": "<=2.1.1",
+ "feehi/feehicms": "<=0.1.3",
"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",
"fluidtypo3/vhs": "<5.1.1",
"fooman/tcpdf": "<6.2.22",
- "forkcms/forkcms": "<5.8.3",
+ "forkcms/forkcms": "<=5.9.2",
"fossar/tcpdf-parser": "<6.2.22",
- "francoisjacquet/rosariosis": "<6.5.1",
+ "francoisjacquet/rosariosis": "<8.1.1",
"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",
"fuel/core": "<1.8.1",
- "getgrav/grav": "<=1.7.10",
- "getkirby/cms": "<3.5.4",
+ "gaoming13/wechat-php-sdk": "<=1.10.2",
+ "getgrav/grav": "<1.7.28",
+ "getkirby/cms": "<3.5.8",
"getkirby/panel": "<2.5.14",
+ "gilacms/gila": "<=1.11.4",
+ "globalpayments/php-sdk": "<2",
+ "google/protobuf": "<3.15",
"gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3",
"gree/jose": "<=2.2",
"gregwar/rst": "<1.0.3",
+ "grumpydictator/firefly-iii": "<5.6.5",
"guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1",
+ "helloxz/imgurl": "<=2.31",
+ "hillelcoren/invoice-ninja": "<5.3.35",
+ "hjue/justwriting": "<=1",
+ "hov/jobfair": "<1.0.13|>=2,<2.0.2",
+ "ibexa/post-install": "<=1.0.4",
+ "icecoder/icecoder": "<=8.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,<8.40",
+ "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": ">=7,<7.1.2",
+ "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75",
"impresscms/impresscms": "<=1.4.2",
+ "in2code/femanager": "<5.5.1|>=6,<6.3.1",
"intelliants/subrion": "<=4.2.1",
"ivankristianto/phpwhois": "<=4.3",
- "james-heinrich/getid3": "<1.9.9",
+ "jackalope/jackalope-doctrine-dbal": "<1.7.4",
+ "james-heinrich/getid3": "<1.9.21",
"joomla/archive": "<1.1.10",
"joomla/session": "<1.3.1",
+ "jsdecena/laracom": "<2.0.9",
"jsmitty12/phpwhois": "<5.1",
"kazist/phpwhois": "<=4.2.6",
+ "kevinpapst/kimai2": "<1.16.7",
"kitodo/presentation": "<3.1.2",
"klaviyo/magento2-extension": ">=1,<3",
"kreait/firebase-php": ">=3.2,<3.8.1",
"la-haute-societe/tcpdf": "<6.2.22",
+ "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1",
"laminas/laminas-http": "<2.14.2",
- "laravel/framework": "<6.20.26|>=7,<8.40",
+ "laravel/framework": "<6.20.42|>=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",
+ "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",
"lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
- "librenms/librenms": "<21.1",
+ "librenms/librenms": "<=21.11",
+ "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",
"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",
"marcwillmann/turn": "<0.3.3",
- "mautic/core": "<3.3.2|= 2.13.1",
+ "mautic/core": "<4|= 2.13.1",
"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.2.11",
+ "miniorange/miniorange-saml": "<1.4.3",
"mittwald/typo3_forum": "<1.2.1",
+ "modx/revolution": "<2.8",
"monolog/monolog": ">=1.8,<1.12",
- "moodle/moodle": "<3.5.17|>=3.7,<3.7.9|>=3.8,<3.8.8|>=3.9,<3.9.5|>=3.10,<3.10.2",
+ "moodle/moodle": "<3.9.11|>=3.10-beta,<3.10.8|>=3.11,<3.11.5",
+ "mustache/mustache": ">=2,<2.14.1",
"namshi/jose": "<2.2",
+ "neoan3-apps/template": "<1.1.1",
"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,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.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",
"nukeviet/nukeviet": "<4.3.4",
"nystudio107/craft-seomatic": "<3.3",
"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",
+ "october/october": ">=1.0.319,<1.0.466|>=2.1,<2.1.12",
"october/rain": "<1.0.472|>=1.1,<1.1.2",
+ "october/system": "<1.0.473|>=1.1,<1.1.6|>=2.1,<2.1.12",
"onelogin/php-saml": "<2.10.4",
"oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
"opencart/opencart": "<=3.0.3.2",
"openid/php-openid": "<2.3",
- "openmage/magento-lts": "<=19.4.12|>=20,<=20.0.8",
+ "openmage/magento-lts": "<19.4.15|>=20,<20.0.13",
"orchid/platform": ">=9,<9.4.4",
- "oro/crm": ">=1.7,<1.7.4",
- "oro/platform": ">=1.7,<1.7.4",
+ "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",
"padraic/humbug_get_contents": "<1.1.2",
"pagarme/pagarme-php": ">=0,<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.12",
+ "pear/archive_tar": "<1.4.14",
+ "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
"personnummer/personnummer": "<3.0.2",
"phanan/koel": "<5.1.4",
- "phpfastcache/phpfastcache": ">=5,<5.0.13",
+ "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
"phpmailer/phpmailer": "<6.5",
"phpmussel/phpmussel": ">=1,<1.6",
- "phpmyadmin/phpmyadmin": "<4.9.6|>=5,<5.0.3",
+ "phpmyadmin/phpmyadmin": "<4.9.8|>=5,<5.0.3|>=5.1,<5.1.2",
"phpoffice/phpexcel": "<1.8.2",
"phpoffice/phpspreadsheet": "<1.16",
"phpseclib/phpseclib": "<2.0.31|>=3,<3.0.7",
+ "phpservermon/phpservermon": "<=3.5.2",
"phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
"phpwhois/phpwhois": "<=4.2.5",
"phpxmlrpc/extras": "<0.6.1",
- "pimcore/pimcore": "<6.8.8",
- "pocketmine/pocketmine-mp": "<3.15.4",
+ "pimcore/pimcore": "<=10.3",
+ "pocketmine/pocketmine-mp": "<4.0.7",
"pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.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/ps_emailsubscription": "<2.6.1",
"prestashop/ps_facetedsearch": "<3.4.1",
+ "prestashop/ps_linklist": "<3.1",
"privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2",
"propel/propel": ">=2-alpha.1,<=2-alpha.7",
"propel/propel1": ">=1,<=1.7.1",
- "pterodactyl/panel": "<0.7.19|>=1-rc.0,<=1-rc.6",
+ "pterodactyl/panel": "<1.7",
+ "ptrofimov/beanstalk_console": "<1.7.14",
"pusher/pusher-php-server": "<2.2.1",
"pwweb/laravel-core": "<=0.3.6-beta",
"rainlab/debugbar-plugin": "<3.1",
+ "remdex/livehelperchat": "<3.93",
"rmccue/requests": ">=1.6,<1.8",
"robrichards/xmlseclibs": "<3.0.4",
"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",
@@ -8191,17 +8282,18 @@
"scheb/two-factor-bundle": ">=0,<3.26|>=4,<4.11",
"sensiolabs/connect": "<4.2.3",
"serluck/phpwhois": "<=4.2.6",
- "shopware/core": "<=6.3.5.2",
- "shopware/platform": "<=6.3.5.2",
+ "shopware/core": "<=6.4.6",
+ "shopware/platform": "<=6.4.6",
"shopware/production": "<=6.3.5.2",
- "shopware/shopware": "<=5.6.9",
- "silverstripe/admin": ">=1.0.3,<1.0.4|>=1.1,<1.1.1",
+ "shopware/shopware": "<5.7.7",
+ "showdoc/showdoc": "<=2.10.2",
+ "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/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.7.4",
- "silverstripe/graphql": "<=3.5|>=4-alpha.1,<4-alpha.2",
+ "silverstripe/framework": "<4.10.1",
+ "silverstripe/graphql": "<3.5.2|>=4-alpha.1,<4-alpha.2",
"silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1",
"silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4",
"silverstripe/subsites": ">=2,<2.1.1",
@@ -8213,31 +8305,36 @@
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"simplito/elliptic-php": "<1.0.6",
"slim/slim": "<2.6",
- "smarty/smarty": "<3.1.39",
+ "smarty/smarty": "<3.1.43|>=4,<4.0.3",
+ "snipe/snipe-it": "<=5.3.7",
"socalnick/scn-social-auth": "<1.15.2",
"socialiteproviders/steam": "<1.1",
+ "spipu/html2pdf": "<5.2.4",
"spoonity/tcpdf": "<6.2.22",
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
- "ssddanbrown/bookstack": "<0.29.2",
+ "ssddanbrown/bookstack": "<21.12.1",
"stormpath/sdk": ">=0,<9.9.99",
"studio-42/elfinder": "<2.1.59",
- "sulu/sulu": "<1.6.34|>=2,<2.0.10|>=2.1,<2.1.1",
+ "subrion/cms": "<=4.2.1",
+ "sulu/sulu": "= 2.4.0-RC1|<1.6.44|>=2,<2.2.18|>=2.3,<2.3.8",
"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",
"sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
+ "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
"sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
- "sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3",
+ "sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3|>=1.9,<1.9.5",
"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-versionedfiles": "<=2.0.3",
+ "symfont/process": ">=0,<4",
"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",
+ "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/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",
+ "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/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",
@@ -8247,13 +8344,13 @@
"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",
+ "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-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,<3.4.48|>=4,<4.4.23|>=5,<5.2.8|>=5.3,<5.3.2",
- "symfony/serializer": ">=2,<2.0.11",
- "symfony/symfony": ">=2,<3.4.49|>=4,<4.4.24|>=5,<5.2.9|>=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/translation": ">=2,<2.0.17",
"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",
@@ -8262,16 +8359,21 @@
"t3/dce": ">=2.2,<2.6.2",
"t3g/svg-sanitizer": "<1.0.3",
"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",
"theonedemon/phpwhois": "<=4.2.5",
+ "tinymce/tinymce": "<5.10",
"titon/framework": ">=0,<9.9.99",
+ "topthink/framework": "<6.0.9",
+ "topthink/think": "<=6.0.9",
+ "topthink/thinkphp": "<=3.2.3",
"tribalsystems/zenario": "<8.8.53370",
"truckersmp/phpwhois": "<=4.3.1",
- "twig/twig": "<1.38|>=2,<2.7",
- "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.25|>=10,<10.4.14|>=11,<11.1.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",
"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.50|>=8,<=8.7.39|>=9,<9.5.25|>=10,<10.4.14|>=11,<11.1.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-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
"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/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",
@@ -8279,25 +8381,32 @@
"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",
+ "userfrosting/userfrosting": ">=0.3.1,<4.6.3",
"usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
+ "vanilla/safecurl": "<0.9.2",
"verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
"vrana/adminer": "<4.7.9",
"wallabag/tcpdf": "<6.2.22",
+ "wanglelecc/laracms": "<=1.0.3",
+ "web-auth/webauthn-framework": ">=3.3,<3.3.4",
+ "webcoast/deferred-image-processing": "<1.0.2",
"wikimedia/parsoid": "<0.12.2",
"willdurand/js-translation-bundle": "<2.1.1",
"wp-cli/wp-cli": "<2.5",
+ "yetiforce/yetiforce-crm": "<=6.3",
"yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2",
"yiisoft/yii": ">=1.1.14,<1.1.15",
"yiisoft/yii2": "<2.0.38",
"yiisoft/yii2-bootstrap": "<2.0.4",
- "yiisoft/yii2-dev": "<2.0.15",
+ "yiisoft/yii2-dev": "<2.0.43",
"yiisoft/yii2-elasticsearch": "<2.0.5",
"yiisoft/yii2-gii": "<2.0.4",
"yiisoft/yii2-jui": "<2.0.4",
"yiisoft/yii2-redis": "<2.0.8",
- "yoast-seo-for-typo3/yoast_seo": "<7.2.1",
- "yourls/yourls": "<1.7.4",
+ "yoast-seo-for-typo3/yoast_seo": "<7.2.3",
+ "yourls/yourls": "<=1.8.2",
"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",
@@ -8358,7 +8467,7 @@
"type": "tidelift"
}
],
- "time": "2021-06-24T09:02:34+00:00"
+ "time": "2022-02-11T21:12:37+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -8789,16 +8898,16 @@
},
{
"name": "sebastian/exporter",
- "version": "4.0.3",
+ "version": "4.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
- "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
"shasum": ""
},
"require": {
@@ -8847,14 +8956,14 @@
}
],
"description": "Provides the functionality to export PHP variables for visualization",
- "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
"keywords": [
"export",
"exporter"
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
},
"funding": [
{
@@ -8862,20 +8971,20 @@
"type": "github"
}
],
- "time": "2020-09-28T05:24:23+00:00"
+ "time": "2021-11-11T14:18:36+00:00"
},
{
"name": "sebastian/global-state",
- "version": "5.0.3",
+ "version": "5.0.5",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49"
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49",
- "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
"shasum": ""
},
"require": {
@@ -8918,7 +9027,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
- "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
},
"funding": [
{
@@ -8926,7 +9035,7 @@
"type": "github"
}
],
- "time": "2021-06-11T13:31:12+00:00"
+ "time": "2022-02-14T08:28:10+00:00"
},
{
"name": "sebastian/lines-of-code",
@@ -9326,27 +9435,28 @@
},
{
"name": "symfony/browser-kit",
- "version": "v4.4.25",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "729b1f0eca3ef18ea4e1a29b166145aff75d8fa1"
+ "reference": "18e73179c6a33d520de1b644941eba108dd811ad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/729b1f0eca3ef18ea4e1a29b166145aff75d8fa1",
- "reference": "729b1f0eca3ef18ea4e1a29b166145aff75d8fa1",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/18e73179c6a33d520de1b644941eba108dd811ad",
+ "reference": "18e73179c6a33d520de1b644941eba108dd811ad",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
- "symfony/dom-crawler": "^3.4|^4.0|^5.0"
+ "php": ">=7.2.5",
+ "symfony/dom-crawler": "^4.4|^5.0|^6.0",
+ "symfony/polyfill-php80": "^1.16"
},
"require-dev": {
- "symfony/css-selector": "^3.4|^4.0|^5.0",
- "symfony/http-client": "^4.3|^5.0",
- "symfony/mime": "^4.3|^5.0",
- "symfony/process": "^3.4|^4.0|^5.0"
+ "symfony/css-selector": "^4.4|^5.0|^6.0",
+ "symfony/http-client": "^4.4|^5.0|^6.0",
+ "symfony/mime": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/process": ""
@@ -9377,7 +9487,7 @@
"description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/browser-kit/tree/v4.4.25"
+ "source": "https://github.com/symfony/browser-kit/tree/v5.4.3"
},
"funding": [
{
@@ -9393,24 +9503,25 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:39:37+00:00"
+ "time": "2022-01-02T09:53:40+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v5.3.0",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814"
+ "reference": "b0a190285cd95cb019237851205b8140ef6e368e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/fcd0b29a7a0b1bb5bfbedc6231583d77fea04814",
- "reference": "fcd0b29a7a0b1bb5bfbedc6231583d77fea04814",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e",
+ "reference": "b0a190285cd95cb019237851205b8140ef6e368e",
"shasum": ""
},
"require": {
- "php": ">=7.2.5"
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
},
"type": "library",
"autoload": {
@@ -9442,7 +9553,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.3.0"
+ "source": "https://github.com/symfony/css-selector/tree/v5.4.3"
},
"funding": [
{
@@ -9458,26 +9569,25 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:40:38+00:00"
+ "time": "2022-01-02T09:53:40+00:00"
},
{
"name": "symfony/debug",
- "version": "v4.4.25",
+ "version": "v4.4.37",
"source": {
"type": "git",
"url": "https://github.com/symfony/debug.git",
- "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f"
+ "reference": "5de6c6e7f52b364840e53851c126be4d71e60470"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/a8d2d5c94438548bff9f998ca874e202bb29d07f",
- "reference": "a8d2d5c94438548bff9f998ca874e202bb29d07f",
+ "url": "https://api.github.com/repos/symfony/debug/zipball/5de6c6e7f52b364840e53851c126be4d71e60470",
+ "reference": "5de6c6e7f52b364840e53851c126be4d71e60470",
"shasum": ""
},
"require": {
"php": ">=7.1.3",
- "psr/log": "~1.0",
- "symfony/polyfill-php80": "^1.15"
+ "psr/log": "^1|^2|^3"
},
"conflict": {
"symfony/http-kernel": "<3.4"
@@ -9511,7 +9621,7 @@
"description": "Provides tools to ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/debug/tree/v4.4.25"
+ "source": "https://github.com/symfony/debug/tree/v4.4.37"
},
"funding": [
{
@@ -9527,33 +9637,35 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T17:39:37+00:00"
+ "time": "2022-01-02T09:41:36+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v4.4.25",
+ "version": "v5.4.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef"
+ "reference": "2634381fdf27a2a0a8ac8eb404025eb656c65d0c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/41d15bb6d6b95d2be763c514bb2494215d9c5eef",
- "reference": "41d15bb6d6b95d2be763c514bb2494215d9c5eef",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2634381fdf27a2a0a8ac8eb404025eb656c65d0c",
+ "reference": "2634381fdf27a2a0a8ac8eb404025eb656c65d0c",
"shasum": ""
},
"require": {
- "php": ">=7.1.3",
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.0"
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"masterminds/html5": "<2.6"
},
"require-dev": {
"masterminds/html5": "^2.6",
- "symfony/css-selector": "^3.4|^4.0|^5.0"
+ "symfony/css-selector": "^4.4|^5.0|^6.0"
},
"suggest": {
"symfony/css-selector": ""
@@ -9584,7 +9696,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v4.4.25"
+ "source": "https://github.com/symfony/dom-crawler/tree/v5.4.3"
},
"funding": [
{
@@ -9600,33 +9712,33 @@
"type": "tidelift"
}
],
- "time": "2021-05-26T11:20:16+00:00"
+ "time": "2022-01-02T09:53:40+00:00"
},
{
"name": "symfony/proxy-manager-bridge",
- "version": "v5.2.1",
+ "version": "v4.4.18",
"source": {
"type": "git",
"url": "https://github.com/symfony/proxy-manager-bridge.git",
- "reference": "fba051ee1cb00d1d40672ee2da842ba23c572576"
+ "reference": "373d72703ef24b6a22c8592f53c7f0e333d9f038"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/fba051ee1cb00d1d40672ee2da842ba23c572576",
- "reference": "fba051ee1cb00d1d40672ee2da842ba23c572576",
+ "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/373d72703ef24b6a22c8592f53c7f0e333d9f038",
+ "reference": "373d72703ef24b6a22c8592f53c7f0e333d9f038",
"shasum": ""
},
"require": {
"composer/package-versions-deprecated": "^1.8",
"ocramius/proxy-manager": "~2.1",
- "php": ">=7.2.5",
- "symfony/dependency-injection": "^5.0"
+ "php": ">=7.1.3",
+ "symfony/dependency-injection": "^4.0|^5.0"
},
"conflict": {
"zendframework/zend-eventmanager": "2.6.0"
},
"require-dev": {
- "symfony/config": "^4.4|^5.0"
+ "symfony/config": "^3.4|^4.0|^5.0"
},
"type": "symfony-bridge",
"autoload": {
@@ -9654,7 +9766,7 @@
"description": "Symfony ProxyManager Bridge",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/proxy-manager-bridge/tree/v5.2.1"
+ "source": "https://github.com/symfony/proxy-manager-bridge/tree/v4.4.18"
},
"funding": [
{
@@ -9670,50 +9782,50 @@
"type": "tidelift"
}
],
- "time": "2020-11-12T22:25:33+00:00"
+ "time": "2020-11-12T13:19:35+00:00"
},
{
"name": "symfony/translation",
- "version": "v5.3.2",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "7e2603bcc598e14804c4d2359d8dc4ee3c40391b"
+ "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/7e2603bcc598e14804c4d2359d8dc4ee3c40391b",
- "reference": "7e2603bcc598e14804c4d2359d8dc4ee3c40391b",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d",
+ "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1",
+ "php": ">=8.0.2",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.15",
- "symfony/translation-contracts": "^2.3"
+ "symfony/translation-contracts": "^2.3|^3.0"
},
"conflict": {
- "symfony/config": "<4.4",
- "symfony/dependency-injection": "<5.0",
- "symfony/http-kernel": "<5.0",
- "symfony/twig-bundle": "<5.0",
- "symfony/yaml": "<4.4"
+ "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"
+ "symfony/translation-implementation": "2.3|3.0"
},
"require-dev": {
- "psr/log": "~1.0",
- "symfony/config": "^4.4|^5.0",
- "symfony/console": "^4.4|^5.0",
- "symfony/dependency-injection": "^5.0",
- "symfony/finder": "^4.4|^5.0",
- "symfony/http-kernel": "^5.0",
- "symfony/intl": "^4.4|^5.0",
+ "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/service-contracts": "^1.1.2|^2",
- "symfony/yaml": "^4.4|^5.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",
@@ -9749,7 +9861,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v5.3.2"
+ "source": "https://github.com/symfony/translation/tree/v6.0.3"
},
"funding": [
{
@@ -9765,20 +9877,20 @@
"type": "tidelift"
}
],
- "time": "2021-06-06T09:51:56+00:00"
+ "time": "2022-01-07T00:29:03+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.0",
+ "version": "1.2.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
- "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
"shasum": ""
},
"require": {
@@ -9807,7 +9919,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/master"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
},
"funding": [
{
@@ -9815,20 +9927,20 @@
"type": "github"
}
],
- "time": "2020-07-12T23:59:07+00:00"
+ "time": "2021-07-28T10:34:58+00:00"
},
{
"name": "vimeo/psalm",
- "version": "4.8.1",
+ "version": "4.20.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "f73f2299dbc59a3e6c4d66cff4605176e728ee69"
+ "reference": "f82a70e7edfc6cf2705e9374c8a0b6a974a779ed"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/f73f2299dbc59a3e6c4d66cff4605176e728ee69",
- "reference": "f73f2299dbc59a3e6c4d66cff4605176e728ee69",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/f82a70e7edfc6cf2705e9374c8a0b6a974a779ed",
+ "reference": "f82a70e7edfc6cf2705e9374c8a0b6a974a779ed",
"shasum": ""
},
"require": {
@@ -9836,8 +9948,9 @@
"amphp/byte-stream": "^1.5",
"composer/package-versions-deprecated": "^1.8.0",
"composer/semver": "^1.4 || ^2.0 || ^3.0",
- "composer/xdebug-handler": "^1.1 || ^2.0",
+ "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0",
"dnoegel/php-xdg-base-dir": "^0.1.1",
+ "ext-ctype": "*",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
@@ -9847,11 +9960,11 @@
"felixfbecker/advanced-json-rpc": "^3.0.3",
"felixfbecker/language-server-protocol": "^1.5",
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
- "nikic/php-parser": "^4.10.5",
+ "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",
+ "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0",
"webmozart/path-util": "^2.3"
},
"provide": {
@@ -9869,12 +9982,12 @@
"psalm/plugin-phpunit": "^0.16",
"slevomat/coding-standard": "^7.0",
"squizlabs/php_codesniffer": "^3.5",
- "symfony/process": "^4.3 || ^5.0",
- "weirdan/phpunit-appveyor-reporter": "^1.0.0",
+ "symfony/process": "^4.3 || ^5.0 || ^6.0",
"weirdan/prophecy-shim": "^1.0 || ^2.0"
},
"suggest": {
- "ext-igbinary": "^2.0.5"
+ "ext-curl": "In order to send data to shepherd",
+ "ext-igbinary": "^2.0.5 is required, used to serialize caching data"
},
"bin": [
"psalm",
@@ -9893,13 +10006,13 @@
}
},
"autoload": {
- "psr-4": {
- "Psalm\\": "src/Psalm/"
- },
"files": [
"src/functions.php",
"src/spl_object_id.php"
- ]
+ ],
+ "psr-4": {
+ "Psalm\\": "src/Psalm/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -9918,9 +10031,9 @@
],
"support": {
"issues": "https://github.com/vimeo/psalm/issues",
- "source": "https://github.com/vimeo/psalm/tree/4.8.1"
+ "source": "https://github.com/vimeo/psalm/tree/4.20.0"
},
- "time": "2021-06-20T23:03:20+00:00"
+ "time": "2022-02-03T17:03:47+00:00"
},
{
"name": "webmozart/assert",
@@ -10028,6 +10141,7 @@
"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"
}
],
@@ -10039,7 +10153,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^8.0",
+ "php": "^8.1",
"ext-amqp": "*",
"ext-apcu": "*",
"ext-json": "*",
@@ -10049,5 +10163,5 @@
"platform-dev": {
"ext-xdebug": "*"
},
- "plugin-api-version": "2.0.0"
+ "plugin-api-version": "2.2.0"
}
diff --git a/src/Shared/Infrastructure/Logger/MonologLogger.php b/src/Shared/Infrastructure/Logger/MonologLogger.php
index 2235cc240..9dc205e6f 100644
--- a/src/Shared/Infrastructure/Logger/MonologLogger.php
+++ b/src/Shared/Infrastructure/Logger/MonologLogger.php
@@ -8,7 +8,7 @@
final class MonologLogger implements Logger
{
- public function __construct(private \Monolog\Logger $logger)
+ public function __construct(private readonly \Monolog\Logger $logger)
{
}
From 04c58832b83fa8b2de4ace0438c152f852f38963 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Vincent=20Brout=C3=A9?=
Date: Wed, 2 Mar 2022 18:27:57 +0100
Subject: [PATCH 04/40] Fix Prometheus configuration (#300)
---
etc/prometheus/prometheus.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/etc/prometheus/prometheus.yml b/etc/prometheus/prometheus.yml
index 47442dea6..db505fd9d 100644
--- a/etc/prometheus/prometheus.yml
+++ b/etc/prometheus/prometheus.yml
@@ -8,14 +8,14 @@ scrape_configs:
- job_name: 'backoffice_backend'
scrape_interval: 5s
static_configs:
- - targets: ['codelytv-php_ddd_skeleton-backoffice_backend-nginx:80']
+ - targets: ['codelytv-php_ddd_skeleton-backoffice_backend-php:8040']
- job_name: 'backoffice_frontend'
scrape_interval: 5s
static_configs:
- - targets: ['codelytv-php_ddd_skeleton-backoffice_frontend-nginx:80']
+ - targets: ['codelytv-php_ddd_skeleton-backoffice_frontend-php:8041']
- job_name: 'mooc_backend'
scrape_interval: 5s
static_configs:
- - targets: ['codelytv-php_ddd_skeleton-mooc_backend-nginx:80']
+ - targets: ['codelytv-php_ddd_skeleton-mooc_backend-php:8030']
From ef615b7b55c7b9124eb1ae3a6d50a60146d2d09e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B3natan=20N=C3=BA=C3=B1ez?=
Date: Fri, 8 Apr 2022 09:39:52 +0200
Subject: [PATCH 05/40] fix: run fpm as current host user instead of www-data
(#292)
---
Dockerfile | 7 ++++++-
Makefile | 4 ++--
docker-compose.yml | 3 +++
3 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 096c79bb9..41f981d1c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -27,6 +27,11 @@ RUN docker-php-ext-enable \
apcu \
opcache
-RUN curl -sS https://get.symfony.com/cli/installer | bash && mv /root/.symfony/bin/symfony /usr/local/bin/symfony
+RUN curl -sS https://get.symfony.com/cli/installer | bash -s - --install-dir /usr/local/bin
COPY etc/infrastructure/php/ /usr/local/etc/php/
+
+# allow non-root users have home
+RUN mkdir -p /opt/home
+RUN chmod 777 /opt/home
+ENV HOME /opt/home
diff --git a/Makefile b/Makefile
index e79984f36..f3139b75b 100644
--- a/Makefile
+++ b/Makefile
@@ -27,7 +27,7 @@ composer-require-module: INTERACTIVE=-ti --interactive
.PHONY: composer
composer composer-install composer-update composer-require composer-require-module: composer-env-file
@docker run --rm $(INTERACTIVE) --volume $(current-dir):/app --user $(id -u):$(id -g) \
- composer:2.2.6 $(CMD) \
+ composer:2.2 $(CMD) \
--ignore-platform-reqs \
--no-ansi
@@ -69,7 +69,7 @@ destroy: CMD=down
# Usage: `make doco CMD="build --parallel --pull --force-rm --no-cache"`
.PHONY: doco
doco start stop destroy: composer-env-file
- @docker-compose $(CMD)
+ UID=${shell id -u} GID=${shell id -g} docker-compose $(CMD)
.PHONY: rebuild
rebuild: composer-env-file
diff --git a/docker-compose.yml b/docker-compose.yml
index 5c6782794..69e1555b2 100755
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -53,6 +53,7 @@ services:
backoffice_backend_php:
container_name: codelytv-php_ddd_skeleton-backoffice_backend-php
+ user: "${UID}:${GID}"
build:
context: .
dockerfile: Dockerfile
@@ -70,6 +71,7 @@ services:
backoffice_frontend_php:
container_name: codelytv-php_ddd_skeleton-backoffice_frontend-php
+ user: "${UID}:${GID}"
build:
context: .
dockerfile: Dockerfile
@@ -88,6 +90,7 @@ services:
mooc_backend_php:
container_name: codelytv-php_ddd_skeleton-mooc_backend-php
+ user: "${UID}:${GID}"
build:
context: .
dockerfile: Dockerfile
From 51f2023df3fe62544b9bd9a6ace87ef86b744bfe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B3natan=20N=C3=BA=C3=B1ez?=
Date: Fri, 8 Apr 2022 09:48:35 +0200
Subject: [PATCH 06/40] fix: restore psr log to v2 (#304)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Rafa Gómez
---
composer.lock | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/composer.lock b/composer.lock
index 2511b3011..41fcf01c3 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "545aff6813f8015080116169f732d738",
+ "content-hash": "beba92301f511169a995c29b17ab044e",
"packages": [
{
"name": "brick/math",
@@ -2060,16 +2060,16 @@
},
{
"name": "psr/log",
- "version": "3.0.0",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
"shasum": ""
},
"require": {
@@ -2078,7 +2078,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
@@ -2104,9 +2104,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/3.0.0"
+ "source": "https://github.com/php-fig/log/tree/2.0.0"
},
- "time": "2021-07-14T16:46:02+00:00"
+ "time": "2021-07-14T16:41:46+00:00"
},
{
"name": "ralouphie/getallheaders",
From b2b2b81b335800d0fb4c84dbd15492c9d38e04db Mon Sep 17 00:00:00 2001
From: Mika
Date: Thu, 9 Jun 2022 20:26:58 +0200
Subject: [PATCH 07/40] Update README.md (new logo) (#310)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
New logo replacement in the documentation 🐱👤 <🍍>
---
README.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index 51bbcde86..dd94d40cc 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
-
-
+
+
From 98ec9630645b14b53b1fc1a077ea616284d6f9bf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Thu, 16 Jun 2022 12:38:04 +0200
Subject: [PATCH 08/40] feat: update to symfony 6 (#311)
* feat: update to symfony 6
* ci: ignore composer.lock labeling the pr
* feat: migrate to the latest doctrine version
* feat: update docker images
* feat: update symfony session component
* feat: update to elasticsearch 8
feat: update to elasticsearch 8
* ci: wait until elastic is up
---
.env | 10 +-
.github/workflows/ci.yml | 7 +
.github/workflows/labeler.yml | 3 +-
Dockerfile | 2 +-
Makefile | 26 +-
apps/backoffice/backend/bin/console | 4 +-
apps/backoffice/frontend/bin/console | 4 +-
apps/backoffice/frontend/config/services.yaml | 4 +
.../Courses/CoursesPostWebController.php | 6 +-
apps/mooc/backend/bin/console | 4 +-
.../Courses/CoursesPutController.php | 4 +-
composer.json | 50 +-
composer.lock | 2699 ++++++++---------
docker-compose.yml | 36 +-
.../Doctrine/DoctrineEntityManagerFactory.php | 24 +-
.../Infrastructure/Symfony/FlashSession.php | 6 +-
.../Infrastructure/Symfony/WebController.php | 14 +-
.../PhpUnit/InfrastructureTestCase.php | 4 +-
18 files changed, 1336 insertions(+), 1571 deletions(-)
diff --git a/.env b/.env
index b0800653e..8099dcd37 100644
--- a/.env
+++ b/.env
@@ -8,7 +8,7 @@ APP_SECRET=29ac4a5187930cd4b689aa0f3ee7cbc0
#--------------------------------#
# MySql
MOOC_DATABASE_DRIVER=pdo_mysql
-MOOC_DATABASE_HOST=codelytv-php_ddd_skeleton-mooc-mysql
+MOOC_DATABASE_HOST=codely-php_ddd_skeleton-mooc-mysql
MOOC_DATABASE_PORT=3306
MOOC_DATABASE_NAME=mooc
MOOC_DATABASE_USER=root
@@ -18,22 +18,22 @@ MOOC_DATABASE_PASSWORD=
#--------------------------------#
# MySql
BACKOFFICE_DATABASE_DRIVER=pdo_mysql
-BACKOFFICE_DATABASE_HOST=codelytv-php_ddd_skeleton-mooc-mysql
+BACKOFFICE_DATABASE_HOST=codely-php_ddd_skeleton-mooc-mysql
BACKOFFICE_DATABASE_PORT=3306
BACKOFFICE_DATABASE_NAME=mooc
BACKOFFICE_DATABASE_USER=root
BACKOFFICE_DATABASE_PASSWORD=
# Elasticsearch
-BACKOFFICE_ELASTICSEARCH_HOST=codelytv-php_ddd_skeleton-backoffice-elastic
+BACKOFFICE_ELASTICSEARCH_HOST=codely-php_ddd_skeleton-backoffice-elastic
BACKOFFICE_ELASTICSEARCH_INDEX_PREFIX=backoffice
# COMMON #
#--------------------------------#
# RabbitMQ
-RABBITMQ_HOST=codelytv-php_ddd_skeleton-rabbitmq
+RABBITMQ_HOST=codely-php_ddd_skeleton-rabbitmq
RABBITMQ_PORT=5672
-RABBITMQ_LOGIN=codelytv
+RABBITMQ_LOGIN=codely
RABBITMQ_PASSWORD=c0d3ly
RABBITMQ_EXCHANGE=domain_events
RABBITMQ_MAX_RETRIES=5
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9af60fcdc..a9e05ac1f 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -32,6 +32,13 @@ jobs:
sleep 2
done
+ - name: 🧪 Wait for the elasticsearch to get up
+ run: |
+ while ! make ping-elasticsearch &>/dev/null; do
+ echo "Waiting for elasticsearch connection..."
+ sleep 2
+ done
+
- name: 🐰 Wait for the message broker to get up
run: |
while ! make ping-rabbitmq &>/dev/null; do
diff --git a/.github/workflows/labeler.yml b/.github/workflows/labeler.yml
index 5ff07378c..e99bf3b81 100644
--- a/.github/workflows/labeler.yml
+++ b/.github/workflows/labeler.yml
@@ -7,7 +7,7 @@ jobs:
runs-on: ubuntu-latest
name: Label the PR size
steps:
- - uses: codelytv/pr-size-labeler@v1.3.0
+ - uses: codelytv/pr-size-labeler@v1.8.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
xs_max_size: '10'
@@ -15,3 +15,4 @@ jobs:
m_max_size: '600'
l_max_size: '1400'
fail_if_xl: 'true'
+ files_to_ignore: 'composer.lock'
diff --git a/Dockerfile b/Dockerfile
index 41f981d1c..5e677d79f 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,4 +1,4 @@
-FROM php:8.1.1-fpm-alpine
+FROM php:8.1.6-fpm-alpine
WORKDIR /app
RUN wget https://github.com/FriendsOfPHP/pickle/releases/download/v0.7.9/pickle.phar \
diff --git a/Makefile b/Makefile
index f3139b75b..afff5a540 100644
--- a/Makefile
+++ b/Makefile
@@ -27,7 +27,7 @@ composer-require-module: INTERACTIVE=-ti --interactive
.PHONY: composer
composer composer-install composer-update composer-require composer-require-module: composer-env-file
@docker run --rm $(INTERACTIVE) --volume $(current-dir):/app --user $(id -u):$(id -g) \
- composer:2.2 $(CMD) \
+ composer:2.3.7 $(CMD) \
--ignore-platform-reqs \
--no-ansi
@@ -38,14 +38,14 @@ reload: composer-env-file
.PHONY: test
test: composer-env-file
- docker exec codelytv-php_ddd_skeleton-mooc_backend-php ./vendor/bin/phpunit --testsuite mooc
- docker exec codelytv-php_ddd_skeleton-mooc_backend-php ./vendor/bin/phpunit --testsuite shared
- docker exec codelytv-php_ddd_skeleton-mooc_backend-php ./vendor/bin/behat -p mooc_backend --format=progress -v
- docker exec codelytv-php_ddd_skeleton-backoffice_backend-php ./vendor/bin/phpunit --testsuite backoffice
+ docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/phpunit --testsuite mooc
+ docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/phpunit --testsuite shared
+ docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/behat -p mooc_backend --format=progress -v
+ docker exec codely-php_ddd_skeleton-backoffice_backend-php ./vendor/bin/phpunit --testsuite backoffice
.PHONY: static-analysis
static-analysis: composer-env-file
- docker exec codelytv-php_ddd_skeleton-mooc_backend-php ./vendor/bin/psalm
+ docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/psalm
.PHONY: run-tests
run-tests: composer-env-file
@@ -79,14 +79,18 @@ rebuild: composer-env-file
.PHONY: ping-mysql
ping-mysql:
- @docker exec codelytv-php_ddd_skeleton-mooc-mysql mysqladmin --user=root --password= --host "127.0.0.1" ping --silent
+ @docker exec codely-php_ddd_skeleton-mooc-mysql mysqladmin --user=root --password= --host "127.0.0.1" ping --silent
+
+.PHONY: ping-elasticsearch
+ping-elasticsearch:
+ @curl -I -XHEAD localhost:9200
.PHONY: ping-rabbitmq
ping-rabbitmq:
- @docker exec codelytv-php_ddd_skeleton-rabbitmq rabbitmqctl ping --silent
+ @docker exec codely-php_ddd_skeleton-rabbitmq rabbitmqctl ping --silent
clean-cache:
@rm -rf apps/*/*/var
- @docker exec codelytv-php_ddd_skeleton-backoffice_backend-php ./apps/backoffice/backend/bin/console cache:warmup
- @docker exec codelytv-php_ddd_skeleton-backoffice_frontend-php ./apps/backoffice/frontend/bin/console cache:warmup
- @docker exec codelytv-php_ddd_skeleton-mooc_backend-php ./apps/mooc/backend/bin/console cache:warmup
+ @docker exec codely-php_ddd_skeleton-backoffice_backend-php ./apps/backoffice/backend/bin/console cache:warmup
+ @docker exec codely-php_ddd_skeleton-backoffice_frontend-php ./apps/backoffice/frontend/bin/console cache:warmup
+ @docker exec codely-php_ddd_skeleton-mooc_backend-php ./apps/mooc/backend/bin/console cache:warmup
diff --git a/apps/backoffice/backend/bin/console b/apps/backoffice/backend/bin/console
index 91327c2e6..ac7f81a9a 100755
--- a/apps/backoffice/backend/bin/console
+++ b/apps/backoffice/backend/bin/console
@@ -4,7 +4,7 @@
use CodelyTv\Apps\Backoffice\Backend\BackofficeBackendKernel;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
-use Symfony\Component\Debug\Debug;
+use Symfony\Component\ErrorHandler\Debug;
if (false === in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
echo 'Warning: The console should be invoked via the CLI version of PHP, not the ' . PHP_SAPI . ' SAPI' . PHP_EOL;
@@ -12,7 +12,7 @@ if (false === in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
set_time_limit(0);
-require dirname(__DIR__) . '../../../../vendor/autoload.php';
+require dirname(__DIR__) . '../../../vendor/autoload.php';
if (!class_exists(Application::class)) {
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
diff --git a/apps/backoffice/frontend/bin/console b/apps/backoffice/frontend/bin/console
index 70eea8863..5e2d7ebf2 100755
--- a/apps/backoffice/frontend/bin/console
+++ b/apps/backoffice/frontend/bin/console
@@ -4,7 +4,7 @@
use CodelyTv\Apps\Backoffice\Frontend\BackofficeFrontendKernel;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
-use Symfony\Component\Debug\Debug;
+use Symfony\Component\ErrorHandler\Debug;
if (false === in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
echo 'Warning: The console should be invoked via the CLI version of PHP, not the ' . PHP_SAPI . ' SAPI' . PHP_EOL;
@@ -12,7 +12,7 @@ if (false === in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
set_time_limit(0);
-require dirname(__DIR__) . '../../../../vendor/autoload.php';
+require dirname(__DIR__) . '../../../vendor/autoload.php';
if (!class_exists(Application::class)) {
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
diff --git a/apps/backoffice/frontend/config/services.yaml b/apps/backoffice/frontend/config/services.yaml
index 99bad2baa..23de22805 100644
--- a/apps/backoffice/frontend/config/services.yaml
+++ b/apps/backoffice/frontend/config/services.yaml
@@ -2,6 +2,10 @@ imports:
- { resource: ../../../../src/Backoffice/Shared/Infrastructure/Symfony/DependencyInjection/backoffice_services.yaml }
- { resource: ../../../../src/Mooc/Shared/Infrastructure/Symfony/DependencyInjection/mooc_services.yaml }
+framework:
+ session:
+ handler_id: null
+
services:
_defaults:
autoconfigure: true
diff --git a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php
index d77b9633b..0b76138b7 100644
--- a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php
+++ b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php
@@ -47,9 +47,9 @@ private function createCourse(Request $request): RedirectResponse
{
$this->dispatch(
new CreateCourseCommand(
- $request->request->getAlpha('id'),
- $request->request->getAlpha('name'),
- $request->request->getAlpha('duration')
+ (string) $request->request->get('id'),
+ (string) $request->request->get('name'),
+ (string) $request->request->get('duration')
)
);
diff --git a/apps/mooc/backend/bin/console b/apps/mooc/backend/bin/console
index 7fc1ba297..c794905a3 100755
--- a/apps/mooc/backend/bin/console
+++ b/apps/mooc/backend/bin/console
@@ -4,7 +4,7 @@
use CodelyTv\Apps\Mooc\Backend\MoocBackendKernel;
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
-use Symfony\Component\Debug\Debug;
+use Symfony\Component\ErrorHandler\Debug;
if (false === in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
echo 'Warning: The console should be invoked via the CLI version of PHP, not the ' . PHP_SAPI . ' SAPI' . PHP_EOL;
@@ -12,7 +12,7 @@ if (false === in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
set_time_limit(0);
-require dirname(__DIR__) . '../../../../vendor/autoload.php';
+require dirname(__DIR__) . '../../../vendor/autoload.php';
if (!class_exists(Application::class)) {
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
diff --git a/apps/mooc/backend/src/Controller/Courses/CoursesPutController.php b/apps/mooc/backend/src/Controller/Courses/CoursesPutController.php
index 6cc34a3d0..2171caa33 100644
--- a/apps/mooc/backend/src/Controller/Courses/CoursesPutController.php
+++ b/apps/mooc/backend/src/Controller/Courses/CoursesPutController.php
@@ -16,8 +16,8 @@ public function __invoke(string $id, Request $request): Response
$this->dispatch(
new CreateCourseCommand(
$id,
- $request->request->getAlpha('name'),
- $request->request->getAlpha('duration')
+ (string) $request->request->get('name'),
+ (string) $request->request->get('duration')
)
);
diff --git a/composer.json b/composer.json
index 84eadf11b..81cb056d8 100644
--- a/composer.json
+++ b/composer.json
@@ -12,46 +12,46 @@
"ext-zend-opcache": "*",
"ext-pdo": "*",
- "symfony/framework-bundle": "^5.4",
- "symfony/messenger": "^5.4",
- "symfony/dotenv": "^5.4",
- "symfony/yaml": "^5.4",
- "symfony/twig-bundle": "^5.4",
- "symfony/validator": "^5.4",
- "symfony/cache": "^5.4",
+ "symfony/framework-bundle": "^6",
+ "symfony/messenger": "^6",
+ "symfony/dotenv": "^6",
+ "symfony/yaml": "^6",
+ "symfony/twig-bundle": "^6",
+ "symfony/validator": "^6",
+ "symfony/cache": "^6",
- "lambdish/phunctional": "^2.0",
+ "lambdish/phunctional": "^2",
- "ramsey/uuid": "^4.2",
+ "ramsey/uuid": "^4",
- "doctrine/dbal": "^2.10",
- "doctrine/orm": "^2.7",
+ "doctrine/dbal": "^3",
+ "doctrine/orm": "^2",
- "ocramius/proxy-manager": "^2.13",
- "laminas/laminas-zendframework-bridge": "^1.4",
+ "ocramius/proxy-manager": "^2",
+ "laminas/laminas-zendframework-bridge": "^1",
- "elasticsearch/elasticsearch": "^7.3",
- "monolog/monolog": "^2.1",
+ "elasticsearch/elasticsearch": "^7",
+ "monolog/monolog": "^3",
- "endclothing/prometheus_client_php": "^1.0"
+ "endclothing/prometheus_client_php": "^1"
},
"require-dev": {
"ext-xdebug": "*",
"roave/security-advisories": "dev-master",
- "behat/behat": "^3.10",
- "friends-of-behat/mink-extension": "^2.6",
- "friends-of-behat/symfony-extension": "^2.3",
- "behat/mink-browserkit-driver": "^2.0",
+ "behat/behat": "^3",
+ "friends-of-behat/mink-extension": "^2",
+ "friends-of-behat/symfony-extension": "^2",
+ "behat/mink-browserkit-driver": "^2",
- "phpunit/phpunit": "^9.2",
- "mockery/mockery": "^1.4",
+ "phpunit/phpunit": "^9",
+ "mockery/mockery": "^1",
- "fzaninotto/faker": "^1.9",
+ "fakerphp/faker": "^1",
- "symfony/debug": "^4.4",
- "vimeo/psalm": "^4.10"
+ "symfony/error-handler": "^6",
+ "vimeo/psalm": "^4"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index 41fcf01c3..37ab41f90 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "beba92301f511169a995c29b17ab044e",
+ "content-hash": "c9b951def3b3da28de23e2cc96b22bf5",
"packages": [
{
"name": "brick/math",
@@ -68,16 +68,16 @@
},
{
"name": "doctrine/cache",
- "version": "2.1.1",
+ "version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/cache.git",
- "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce"
+ "reference": "1ca8f21980e770095a31456042471a57bc4c68fb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/cache/zipball/331b4d5dbaeab3827976273e9356b3b453c300ce",
- "reference": "331b4d5dbaeab3827976273e9356b3b453c300ce",
+ "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb",
+ "reference": "1ca8f21980e770095a31456042471a57bc4c68fb",
"shasum": ""
},
"require": {
@@ -87,18 +87,12 @@
"doctrine/common": ">2.2,<2.4"
},
"require-dev": {
- "alcaeus/mongo-php-adapter": "^1.1",
"cache/integration-tests": "dev-master",
- "doctrine/coding-standard": "^8.0",
- "mongodb/mongodb": "^1.1",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0",
- "predis/predis": "~1.0",
+ "doctrine/coding-standard": "^9",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"psr/cache": "^1.0 || ^2.0 || ^3.0",
- "symfony/cache": "^4.4 || ^5.2 || ^6.0@dev",
- "symfony/var-exporter": "^4.4 || ^5.2 || ^6.0@dev"
- },
- "suggest": {
- "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver"
+ "symfony/cache": "^4.4 || ^5.4 || ^6",
+ "symfony/var-exporter": "^4.4 || ^5.4 || ^6"
},
"type": "library",
"autoload": {
@@ -147,7 +141,7 @@
],
"support": {
"issues": "https://github.com/doctrine/cache/issues",
- "source": "https://github.com/doctrine/cache/tree/2.1.1"
+ "source": "https://github.com/doctrine/cache/tree/2.2.0"
},
"funding": [
{
@@ -163,7 +157,7 @@
"type": "tidelift"
}
],
- "time": "2021-07-17T14:49:29+00:00"
+ "time": "2022-05-20T20:07:39+00:00"
},
{
"name": "doctrine/collections",
@@ -236,20 +230,20 @@
},
{
"name": "doctrine/common",
- "version": "3.2.2",
+ "version": "3.3.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
- "reference": "295082d3750987065912816a9d536c2df735f637"
+ "reference": "c824e95d4c83b7102d8bc60595445a6f7d540f96"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/common/zipball/295082d3750987065912816a9d536c2df735f637",
- "reference": "295082d3750987065912816a9d536c2df735f637",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/c824e95d4c83b7102d8bc60595445a6f7d540f96",
+ "reference": "c824e95d4c83b7102d8bc60595445a6f7d540f96",
"shasum": ""
},
"require": {
- "doctrine/persistence": "^2.0",
+ "doctrine/persistence": "^2.0 || ^3.0",
"php": "^7.1 || ^8.0"
},
"require-dev": {
@@ -306,7 +300,7 @@
],
"support": {
"issues": "https://github.com/doctrine/common/issues",
- "source": "https://github.com/doctrine/common/tree/3.2.2"
+ "source": "https://github.com/doctrine/common/tree/3.3.0"
},
"funding": [
{
@@ -322,39 +316,42 @@
"type": "tidelift"
}
],
- "time": "2022-02-02T09:15:57+00:00"
+ "time": "2022-02-05T18:28:51+00:00"
},
{
"name": "doctrine/dbal",
- "version": "2.13.7",
+ "version": "3.3.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "6e22f6012b42d7932674857989fcf184e9e9b1c3"
+ "reference": "9e7f76dd1cde81c62574fdffa5a9c655c847ad21"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/6e22f6012b42d7932674857989fcf184e9e9b1c3",
- "reference": "6e22f6012b42d7932674857989fcf184e9e9b1c3",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/9e7f76dd1cde81c62574fdffa5a9c655c847ad21",
+ "reference": "9e7f76dd1cde81c62574fdffa5a9c655c847ad21",
"shasum": ""
},
"require": {
- "doctrine/cache": "^1.0|^2.0",
- "doctrine/deprecations": "^0.5.3",
+ "composer-runtime-api": "^2",
+ "doctrine/cache": "^1.11|^2.0",
+ "doctrine/deprecations": "^0.5.3|^1",
"doctrine/event-manager": "^1.0",
- "ext-pdo": "*",
- "php": "^7.1 || ^8"
+ "php": "^7.3 || ^8.0",
+ "psr/cache": "^1|^2|^3",
+ "psr/log": "^1|^2|^3"
},
"require-dev": {
"doctrine/coding-standard": "9.0.0",
- "jetbrains/phpstorm-stubs": "2021.1",
- "phpstan/phpstan": "1.3.0",
- "phpunit/phpunit": "^7.5.20|^8.5|9.5.11",
+ "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": "^4.4",
- "symfony/console": "^2.0.5|^3.0|^4.0|^5.0",
- "vimeo/psalm": "4.16.1"
+ "symfony/cache": "^5.2|^6.0",
+ "symfony/console": "^2.7|^3.0|^4.0|^5.0|^6.0",
+ "vimeo/psalm": "4.23.0"
},
"suggest": {
"symfony/console": "For helpful console commands such as SQL execution and import of files."
@@ -365,7 +362,7 @@
"type": "library",
"autoload": {
"psr-4": {
- "Doctrine\\DBAL\\": "lib/Doctrine/DBAL"
+ "Doctrine\\DBAL\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -408,14 +405,13 @@
"queryobject",
"sasql",
"sql",
- "sqlanywhere",
"sqlite",
"sqlserver",
"sqlsrv"
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/2.13.7"
+ "source": "https://github.com/doctrine/dbal/tree/3.3.6"
},
"funding": [
{
@@ -431,29 +427,29 @@
"type": "tidelift"
}
],
- "time": "2022-01-06T09:08:04+00:00"
+ "time": "2022-05-02T17:21:01+00:00"
},
{
"name": "doctrine/deprecations",
- "version": "v0.5.3",
+ "version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
- "reference": "9504165960a1f83cc1480e2be1dd0a0478561314"
+ "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/9504165960a1f83cc1480e2be1dd0a0478561314",
- "reference": "9504165960a1f83cc1480e2be1dd0a0478561314",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
+ "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de",
"shasum": ""
},
"require": {
"php": "^7.1|^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^6.0|^7.0|^8.0",
- "phpunit/phpunit": "^7.0|^8.0|^9.0",
- "psr/log": "^1.0"
+ "doctrine/coding-standard": "^9",
+ "phpunit/phpunit": "^7.5|^8.5|^9.5",
+ "psr/log": "^1|^2|^3"
},
"suggest": {
"psr/log": "Allows logging deprecations via PSR-3 logger implementation"
@@ -472,9 +468,9 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/v0.5.3"
+ "source": "https://github.com/doctrine/deprecations/tree/v1.0.0"
},
- "time": "2021-03-21T12:59:47+00:00"
+ "time": "2022-05-02T15:47:09+00:00"
},
{
"name": "doctrine/event-manager",
@@ -663,29 +659,30 @@
},
{
"name": "doctrine/instantiator",
- "version": "1.4.0",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/instantiator.git",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
- "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc",
+ "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
"require-dev": {
- "doctrine/coding-standard": "^8.0",
+ "doctrine/coding-standard": "^9",
"ext-pdo": "*",
"ext-phar": "*",
- "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
- "phpstan/phpstan": "^0.12",
- "phpstan/phpstan-phpunit": "^0.12",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "phpbench/phpbench": "^0.16 || ^1",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-phpunit": "^1",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "vimeo/psalm": "^4.22"
},
"type": "library",
"autoload": {
@@ -712,7 +709,7 @@
],
"support": {
"issues": "https://github.com/doctrine/instantiator/issues",
- "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.1"
},
"funding": [
{
@@ -728,20 +725,20 @@
"type": "tidelift"
}
],
- "time": "2020-11-10T18:47:58+00:00"
+ "time": "2022-03-03T08:28:38+00:00"
},
{
"name": "doctrine/lexer",
- "version": "1.2.2",
+ "version": "1.2.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
- "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c"
+ "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c",
- "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229",
+ "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229",
"shasum": ""
},
"require": {
@@ -749,7 +746,7 @@
},
"require-dev": {
"doctrine/coding-standard": "^9.0",
- "phpstan/phpstan": "1.3",
+ "phpstan/phpstan": "^1.3",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
"vimeo/psalm": "^4.11"
},
@@ -788,7 +785,7 @@
],
"support": {
"issues": "https://github.com/doctrine/lexer/issues",
- "source": "https://github.com/doctrine/lexer/tree/1.2.2"
+ "source": "https://github.com/doctrine/lexer/tree/1.2.3"
},
"funding": [
{
@@ -804,20 +801,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-12T08:27:12+00:00"
+ "time": "2022-02-28T11:07:21+00:00"
},
{
"name": "doctrine/orm",
- "version": "2.11.1",
+ "version": "2.12.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
- "reference": "4b88ce787d3916c8366abf52f6c658a7a27ed3a6"
+ "reference": "8291a7f09b12d14783ed6537b4586583d155869e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/orm/zipball/4b88ce787d3916c8366abf52f6c658a7a27ed3a6",
- "reference": "4b88ce787d3916c8366abf52f6c658a7a27ed3a6",
+ "url": "https://api.github.com/repos/doctrine/orm/zipball/8291a7f09b12d14783ed6537b4586583d155869e",
+ "reference": "8291a7f09b12d14783ed6537b4586583d155869e",
"shasum": ""
},
"require": {
@@ -826,19 +823,18 @@
"doctrine/collections": "^1.5",
"doctrine/common": "^3.0.3",
"doctrine/dbal": "^2.13.1 || ^3.2",
- "doctrine/deprecations": "^0.5.3",
+ "doctrine/deprecations": "^0.5.3 || ^1",
"doctrine/event-manager": "^1.1",
"doctrine/inflector": "^1.4 || ^2.0",
"doctrine/instantiator": "^1.3",
- "doctrine/lexer": "^1.0",
- "doctrine/persistence": "^2.2",
+ "doctrine/lexer": "^1.2.3",
+ "doctrine/persistence": "^2.4 || ^3",
"ext-ctype": "*",
- "ext-pdo": "*",
"php": "^7.1 || ^8.0",
"psr/cache": "^1 || ^2 || ^3",
"symfony/console": "^3.0 || ^4.0 || ^5.0 || ^6.0",
"symfony/polyfill-php72": "^1.23",
- "symfony/polyfill-php80": "^1.15"
+ "symfony/polyfill-php80": "^1.16"
},
"conflict": {
"doctrine/annotations": "<1.13 || >= 2.0"
@@ -847,12 +843,13 @@
"doctrine/annotations": "^1.13",
"doctrine/coding-standard": "^9.0",
"phpbench/phpbench": "^0.16.10 || ^1.0",
- "phpstan/phpstan": "1.4.3",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4",
+ "phpstan/phpstan": "~1.4.10 || 1.6.3",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "psr/log": "^1 || ^2 || ^3",
"squizlabs/php_codesniffer": "3.6.2",
"symfony/cache": "^4.4 || ^5.4 || ^6.0",
"symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0",
- "vimeo/psalm": "4.19.0"
+ "vimeo/psalm": "4.23.0"
},
"suggest": {
"symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0",
@@ -901,51 +898,50 @@
],
"support": {
"issues": "https://github.com/doctrine/orm/issues",
- "source": "https://github.com/doctrine/orm/tree/2.11.1"
+ "source": "https://github.com/doctrine/orm/tree/2.12.2"
},
- "time": "2022-01-30T21:47:06+00:00"
+ "time": "2022-05-02T19:10:07+00:00"
},
{
"name": "doctrine/persistence",
- "version": "2.3.0",
+ "version": "3.0.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
- "reference": "f8af155c1e7963f3d2b4415097d55757bbaa53d8"
+ "reference": "25ec98a8cbd1f850e60fdb62c0ef77c162da8704"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/persistence/zipball/f8af155c1e7963f3d2b4415097d55757bbaa53d8",
- "reference": "f8af155c1e7963f3d2b4415097d55757bbaa53d8",
+ "url": "https://api.github.com/repos/doctrine/persistence/zipball/25ec98a8cbd1f850e60fdb62c0ef77c162da8704",
+ "reference": "25ec98a8cbd1f850e60fdb62c0ef77c162da8704",
"shasum": ""
},
"require": {
- "doctrine/cache": "^1.11 || ^2.0",
"doctrine/collections": "^1.0",
- "doctrine/deprecations": "^0.5.3",
"doctrine/event-manager": "^1.0",
- "php": "^7.1 || ^8.0",
+ "php": "^7.2 || ^8.0",
"psr/cache": "^1.0 || ^2.0 || ^3.0"
},
"conflict": {
- "doctrine/annotations": "<1.0 || >=2.0",
- "doctrine/common": "<2.10@dev"
+ "doctrine/annotations": "<1.7 || >=2.0",
+ "doctrine/common": "<2.10"
},
"require-dev": {
"composer/package-versions-deprecated": "^1.11",
- "doctrine/annotations": "^1.0",
- "doctrine/coding-standard": "^6.0 || ^9.0",
+ "doctrine/annotations": "^1.7",
+ "doctrine/coding-standard": "^9.0",
"doctrine/common": "^3.0",
- "phpstan/phpstan": "1.2.0",
- "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0",
- "symfony/cache": "^4.4 || ^5.0 || ^6.0",
- "vimeo/psalm": "4.13.1"
+ "phpstan/phpstan": "1.5.0",
+ "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"
},
"type": "library",
"autoload": {
"psr-4": {
- "Doctrine\\Common\\": "lib/Doctrine/Common",
- "Doctrine\\Persistence\\": "lib/Doctrine/Persistence"
+ "Doctrine\\Persistence\\": "src/Persistence"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -979,7 +975,7 @@
}
],
"description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.",
- "homepage": "https://doctrine-project.org/projects/persistence.html",
+ "homepage": "https://www.doctrine-project.org/projects/persistence.html",
"keywords": [
"mapper",
"object",
@@ -989,9 +985,23 @@
],
"support": {
"issues": "https://github.com/doctrine/persistence/issues",
- "source": "https://github.com/doctrine/persistence/tree/2.3.0"
+ "source": "https://github.com/doctrine/persistence/tree/3.0.2"
},
- "time": "2022-01-09T19:58:46+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%2Fpersistence",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-05-06T06:10:05+00:00"
},
{
"name": "elasticsearch/elasticsearch",
@@ -1219,18 +1229,100 @@
},
"time": "2021-11-16T11:51:30+00:00"
},
+ {
+ "name": "friendsofphp/proxy-manager-lts",
+ "version": "v1.0.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git",
+ "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/8419f0158715b30d4b99a5bd37c6a39671994ad7",
+ "reference": "8419f0158715b30d4b99a5bd37c6a39671994ad7",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-code": "~3.4.1|^4.0",
+ "php": ">=7.1",
+ "symfony/filesystem": "^4.4.17|^5.0|^6.0"
+ },
+ "conflict": {
+ "laminas/laminas-stdlib": "<3.2.1",
+ "zendframework/zend-stdlib": "<3.2.1"
+ },
+ "replace": {
+ "ocramius/proxy-manager": "^2.1"
+ },
+ "require-dev": {
+ "ext-phar": "*",
+ "symfony/phpunit-bridge": "^5.4|^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "name": "ocramius/proxy-manager",
+ "url": "https://github.com/Ocramius/ProxyManager"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "ProxyManager\\": "src/ProxyManager"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ }
+ ],
+ "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager",
+ "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts",
+ "keywords": [
+ "aop",
+ "lazy loading",
+ "proxy",
+ "proxy pattern",
+ "service proxies"
+ ],
+ "support": {
+ "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues",
+ "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.12"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Ocramius",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-05-05T09:31:05+00:00"
+ },
{
"name": "guzzlehttp/guzzle",
- "version": "6.5.5",
+ "version": "6.5.7",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e"
+ "reference": "724562fa861e21a4071c652c8a159934e4f05592"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
- "reference": "9d4290de1cfd701f38099ef7e183b64b4b7b0c5e",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/724562fa861e21a4071c652c8a159934e4f05592",
+ "reference": "724562fa861e21a4071c652c8a159934e4f05592",
"shasum": ""
},
"require": {
@@ -1267,10 +1359,40 @@
"MIT"
],
"authors": [
+ {
+ "name": "Graham Campbell",
+ "email": "hello@gjcampbell.co.uk",
+ "homepage": "https://github.com/GrahamCampbell"
+ },
{
"name": "Michael Dowling",
"email": "mtdowling@gmail.com",
"homepage": "https://github.com/mtdowling"
+ },
+ {
+ "name": "Jeremy Lindblom",
+ "email": "jeremeamia@gmail.com",
+ "homepage": "https://github.com/jeremeamia"
+ },
+ {
+ "name": "George Mponos",
+ "email": "gmponos@gmail.com",
+ "homepage": "https://github.com/gmponos"
+ },
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com",
+ "homepage": "https://github.com/Nyholm"
+ },
+ {
+ "name": "Márk Sági-Kazár",
+ "email": "mark.sagikazar@gmail.com",
+ "homepage": "https://github.com/sagikazarmark"
+ },
+ {
+ "name": "Tobias Schultze",
+ "email": "webmaster@tubo-world.de",
+ "homepage": "https://github.com/Tobion"
}
],
"description": "Guzzle is a PHP HTTP client library",
@@ -1286,9 +1408,23 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/6.5"
+ "source": "https://github.com/guzzle/guzzle/tree/6.5.7"
},
- "time": "2020-06-16T21:01:06+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/GrahamCampbell",
+ "type": "github"
+ },
+ {
+ "url": "https://github.com/Nyholm",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-06-09T21:36:50+00:00"
},
{
"name": "guzzlehttp/promises",
@@ -1317,12 +1453,12 @@
}
},
"autoload": {
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- },
"files": [
"src/functions_include.php"
- ]
+ ],
+ "psr-4": {
+ "GuzzleHttp\\Promise\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1376,16 +1512,16 @@
},
{
"name": "guzzlehttp/psr7",
- "version": "1.8.3",
+ "version": "1.8.5",
"source": {
"type": "git",
"url": "https://github.com/guzzle/psr7.git",
- "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85"
+ "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
- "reference": "1afdd860a2566ed3c2b0b4a3de6e23434a79ec85",
+ "url": "https://api.github.com/repos/guzzle/psr7/zipball/337e3ad8e5716c15f9657bd214d16cc5e69df268",
+ "reference": "337e3ad8e5716c15f9657bd214d16cc5e69df268",
"shasum": ""
},
"require": {
@@ -1466,7 +1602,7 @@
],
"support": {
"issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/1.8.3"
+ "source": "https://github.com/guzzle/psr7/tree/1.8.5"
},
"funding": [
{
@@ -1482,7 +1618,7 @@
"type": "tidelift"
}
],
- "time": "2021-10-05T13:56:00+00:00"
+ "time": "2022-03-20T21:51:18+00:00"
},
{
"name": "lambdish/phunctional",
@@ -1542,16 +1678,16 @@
},
{
"name": "laminas/laminas-code",
- "version": "4.5.1",
+ "version": "4.5.2",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-code.git",
- "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e"
+ "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-code/zipball/6fd96d4d913571a2cd056a27b123fa28cb90ac4e",
- "reference": "6fd96d4d913571a2cd056a27b123fa28cb90ac4e",
+ "url": "https://api.github.com/repos/laminas/laminas-code/zipball/da01fb74c08f37e20e7ae49f1e3ee09aa401ebad",
+ "reference": "da01fb74c08f37e20e7ae49f1e3ee09aa401ebad",
"shasum": ""
},
"require": {
@@ -1572,12 +1708,12 @@
},
"type": "library",
"autoload": {
- "psr-4": {
- "Laminas\\Code\\": "src/"
- },
"files": [
"polyfill/ReflectionEnumPolyfill.php"
- ]
+ ],
+ "psr-4": {
+ "Laminas\\Code\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -1604,30 +1740,30 @@
"type": "community_bridge"
}
],
- "time": "2021-12-19T18:06:55+00:00"
+ "time": "2022-06-06T11:26:02+00:00"
},
{
"name": "laminas/laminas-zendframework-bridge",
- "version": "1.4.1",
+ "version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
- "reference": "88bf037259869891afce6504cacc4f8a07b24d0f"
+ "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/88bf037259869891afce6504cacc4f8a07b24d0f",
- "reference": "88bf037259869891afce6504cacc4f8a07b24d0f",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/7f049390b756d34ba5940a8fb47634fbb51f79ab",
+ "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab",
"shasum": ""
},
"require": {
- "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ "php": ">=7.4, <8.2"
},
"require-dev": {
- "phpunit/phpunit": "^9.3",
- "psalm/plugin-phpunit": "^0.15.1",
- "squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^4.6"
+ "phpunit/phpunit": "^9.5.14",
+ "psalm/plugin-phpunit": "^0.15.2",
+ "squizlabs/php_codesniffer": "^3.6.2",
+ "vimeo/psalm": "^4.21.0"
},
"type": "library",
"extra": {
@@ -1666,44 +1802,48 @@
"type": "community_bridge"
}
],
- "time": "2021-12-21T14:34:37+00:00"
+ "time": "2022-02-22T22:17:01+00:00"
},
{
"name": "monolog/monolog",
- "version": "2.3.5",
+ "version": "3.1.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "fd4380d6fc37626e2f799f29d91195040137eba9"
+ "reference": "0c375495d40df0207e5833dca333f963b171ff43"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd4380d6fc37626e2f799f29d91195040137eba9",
- "reference": "fd4380d6fc37626e2f799f29d91195040137eba9",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/0c375495d40df0207e5833dca333f963b171ff43",
+ "reference": "0c375495d40df0207e5833dca333f963b171ff43",
"shasum": ""
},
"require": {
- "php": ">=7.2",
- "psr/log": "^1.0.1 || ^2.0 || ^3.0"
+ "php": ">=8.1",
+ "psr/log": "^2.0 || ^3.0"
},
"provide": {
- "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0"
+ "psr/log-implementation": "3.0.0"
},
"require-dev": {
- "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "aws/aws-sdk-php": "^3.0",
"doctrine/couchdb": "~1.0@dev",
- "elasticsearch/elasticsearch": "^7",
+ "elasticsearch/elasticsearch": "^7 || ^8",
+ "ext-json": "*",
"graylog2/gelf-php": "^1.4.2",
+ "guzzlehttp/guzzle": "^7.4",
+ "guzzlehttp/psr7": "^2.2",
"mongodb/mongodb": "^1.8",
"php-amqplib/php-amqplib": "~2.4 || ^3",
"php-console/php-console": "^3.1.3",
- "phpspec/prophecy": "^1.6.1",
- "phpstan/phpstan": "^0.12.91",
- "phpunit/phpunit": "^8.5",
+ "phpstan/phpstan": "^1.4",
+ "phpstan/phpstan-deprecation-rules": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "phpunit/phpunit": "^9.5.16",
"predis/predis": "^1.1",
- "rollbar/rollbar": "^1.3",
- "ruflin/elastica": ">=0.90@dev",
- "swiftmailer/swiftmailer": "^5.3|^6.0"
+ "ruflin/elastica": "^7",
+ "symfony/mailer": "^5.4 || ^6",
+ "symfony/mime": "^5.4 || ^6"
},
"suggest": {
"aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
@@ -1725,7 +1865,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.x-dev"
+ "dev-main": "3.x-dev"
}
},
"autoload": {
@@ -1753,7 +1893,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/2.3.5"
+ "source": "https://github.com/Seldaek/monolog/tree/3.1.0"
},
"funding": [
{
@@ -1765,111 +1905,20 @@
"type": "tidelift"
}
],
- "time": "2021-10-01T21:08:31+00:00"
- },
- {
- "name": "ocramius/proxy-manager",
- "version": "2.13.0",
- "source": {
- "type": "git",
- "url": "https://github.com/Ocramius/ProxyManager.git",
- "reference": "21e2b4aa7d7661e7641cc6362fc8635ddcfa8464"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/21e2b4aa7d7661e7641cc6362fc8635ddcfa8464",
- "reference": "21e2b4aa7d7661e7641cc6362fc8635ddcfa8464",
- "shasum": ""
- },
- "require": {
- "composer-runtime-api": "^2.1.0",
- "laminas/laminas-code": "^4.3.0",
- "php": "~7.4.1 || ~8.0.0",
- "webimpress/safe-writer": "^2.2.0"
- },
- "conflict": {
- "doctrine/annotations": "<1.6.1",
- "laminas/laminas-stdlib": "<3.2.1",
- "thecodingmachine/safe": "<1.3.3",
- "zendframework/zend-stdlib": "<3.2.1"
- },
- "require-dev": {
- "codelicia/xulieta": "^0.1.6",
- "doctrine/coding-standard": "^8.2.1",
- "ext-phar": "*",
- "infection/infection": "^0.21.5",
- "nikic/php-parser": "^4.10.5",
- "phpbench/phpbench": "^0.17.1 || 1.0.0-alpha2",
- "phpunit/phpunit": "^9.5.4",
- "slevomat/coding-standard": "^6.3.10",
- "squizlabs/php_codesniffer": "^3.6.0",
- "vimeo/psalm": "^4.4.1"
- },
- "suggest": {
- "laminas/laminas-json": "To have the JsonRpc adapter (Remote Object feature)",
- "laminas/laminas-soap": "To have the Soap adapter (Remote Object feature)",
- "laminas/laminas-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)",
- "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "ProxyManager\\": "src/ProxyManager"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "http://ocramius.github.io/"
- }
- ],
- "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies",
- "homepage": "https://github.com/Ocramius/ProxyManager",
- "keywords": [
- "aop",
- "lazy loading",
- "proxy",
- "proxy pattern",
- "service proxies"
- ],
- "support": {
- "issues": "https://github.com/Ocramius/ProxyManager/issues",
- "source": "https://github.com/Ocramius/ProxyManager/tree/2.13.0"
- },
- "funding": [
- {
- "url": "https://github.com/Ocramius",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
- "type": "tidelift"
- }
- ],
- "time": "2021-06-09T10:16:06+00:00"
+ "time": "2022-06-09T09:09:00+00:00"
},
{
"name": "psr/cache",
- "version": "2.0.0",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/cache.git",
- "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b"
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b",
- "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
+ "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf",
"shasum": ""
},
"require": {
@@ -1903,9 +1952,9 @@
"psr-6"
],
"support": {
- "source": "https://github.com/php-fig/cache/tree/2.0.0"
+ "source": "https://github.com/php-fig/cache/tree/3.0.0"
},
- "time": "2021-02-03T23:23:37+00:00"
+ "time": "2021-02-03T23:26:27+00:00"
},
{
"name": "psr/container",
@@ -2060,16 +2109,16 @@
},
{
"name": "psr/log",
- "version": "2.0.0",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
- "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
"shasum": ""
},
"require": {
@@ -2078,7 +2127,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0.x-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
@@ -2104,9 +2153,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/2.0.0"
+ "source": "https://github.com/php-fig/log/tree/3.0.0"
},
- "time": "2021-07-14T16:41:46+00:00"
+ "time": "2021-07-14T16:46:02+00:00"
},
{
"name": "ralouphie/getallheaders",
@@ -2233,25 +2282,24 @@
},
{
"name": "ramsey/uuid",
- "version": "4.2.3",
+ "version": "4.3.1",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df"
+ "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
- "reference": "fc9bb7fb5388691fd7373cd44dcb4d63bbcf24df",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/8505afd4fea63b81a85d3b7b53ac3cb8dc347c28",
+ "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28",
"shasum": ""
},
"require": {
"brick/math": "^0.8 || ^0.9",
+ "ext-ctype": "*",
"ext-json": "*",
- "php": "^7.2 || ^8.0",
- "ramsey/collection": "^1.0",
- "symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-php80": "^1.14"
+ "php": "^8.0",
+ "ramsey/collection": "^1.0"
},
"replace": {
"rhumsaa/uuid": "self.version"
@@ -2288,20 +2336,17 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "4.x-dev"
- },
"captainhook": {
"force-install": true
}
},
"autoload": {
- "psr-4": {
- "Ramsey\\Uuid\\": "src/"
- },
"files": [
"src/functions.php"
- ]
+ ],
+ "psr-4": {
+ "Ramsey\\Uuid\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -2315,7 +2360,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.2.3"
+ "source": "https://github.com/ramsey/uuid/tree/4.3.1"
},
"funding": [
{
@@ -2327,7 +2372,7 @@
"type": "tidelift"
}
],
- "time": "2021-09-25T23:10:38+00:00"
+ "time": "2022-03-27T21:42:02+00:00"
},
{
"name": "react/promise",
@@ -2406,128 +2451,58 @@
"time": "2022-02-11T10:27:51+00:00"
},
{
- "name": "symfony/amqp-messenger",
- "version": "v6.0.3",
+ "name": "symfony/cache",
+ "version": "v6.1.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/amqp-messenger.git",
- "reference": "e1bb5b0c812290643615b0ecebfe8debfd42ce5c"
+ "url": "https://github.com/symfony/cache.git",
+ "reference": "364fc90734230d936ac2db8e897cc03ec8497bbb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/e1bb5b0c812290643615b0ecebfe8debfd42ce5c",
- "reference": "e1bb5b0c812290643615b0ecebfe8debfd42ce5c",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/364fc90734230d936ac2db8e897cc03ec8497bbb",
+ "reference": "364fc90734230d936ac2db8e897cc03ec8497bbb",
"shasum": ""
},
"require": {
- "ext-amqp": "*",
- "php": ">=8.0.2",
- "symfony/messenger": "^5.4|^6.0"
- },
- "require-dev": {
- "symfony/event-dispatcher": "^5.4|^6.0",
- "symfony/process": "^5.4|^6.0",
- "symfony/property-access": "^5.4|^6.0",
- "symfony/serializer": "^5.4|^6.0"
- },
- "type": "symfony-messenger-bridge",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony AMQP extension Messenger Bridge",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/amqp-messenger/tree/v6.0.3"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2022-01-02T09:55:41+00:00"
- },
- {
- "name": "symfony/cache",
- "version": "v5.4.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/cache.git",
- "reference": "4178f0a19ec3f1f76e7f1a07b8187cbe3d94b825"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/4178f0a19ec3f1f76e7f1a07b8187cbe3d94b825",
- "reference": "4178f0a19ec3f1f76e7f1a07b8187cbe3d94b825",
- "shasum": ""
- },
- "require": {
- "php": ">=7.2.5",
- "psr/cache": "^1.0|^2.0",
- "psr/log": "^1.1|^2|^3",
- "symfony/cache-contracts": "^1.1.7|^2",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-php73": "^1.9",
- "symfony/polyfill-php80": "^1.16",
- "symfony/service-contracts": "^1.1|^2|^3",
- "symfony/var-exporter": "^4.4|^5.0|^6.0"
+ "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"
},
"conflict": {
"doctrine/dbal": "<2.13.1",
- "symfony/dependency-injection": "<4.4",
- "symfony/http-kernel": "<4.4",
- "symfony/var-dumper": "<4.4"
+ "symfony/dependency-injection": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/var-dumper": "<5.4"
},
"provide": {
- "psr/cache-implementation": "1.0|2.0",
- "psr/simple-cache-implementation": "1.0|2.0",
- "symfony/cache-implementation": "1.0|2.0"
+ "psr/cache-implementation": "2.0|3.0",
+ "psr/simple-cache-implementation": "1.0|2.0|3.0",
+ "symfony/cache-implementation": "1.1|2.0|3.0"
},
"require-dev": {
"cache/integration-tests": "dev-master",
- "doctrine/cache": "^1.6|^2.0",
"doctrine/dbal": "^2.13.1|^3.0",
"predis/predis": "^1.1",
- "psr/simple-cache": "^1.0|^2.0",
- "symfony/config": "^4.4|^5.0|^6.0",
- "symfony/dependency-injection": "^4.4|^5.0|^6.0",
- "symfony/filesystem": "^4.4|^5.0|^6.0",
- "symfony/http-kernel": "^4.4|^5.0|^6.0",
- "symfony/messenger": "^4.4|^5.0|^6.0",
- "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ "psr/simple-cache": "^1.0|^2.0|^3.0",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/filesystem": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/messenger": "^5.4|^6.0",
+ "symfony/var-dumper": "^5.4|^6.0"
},
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Cache\\": ""
},
+ "classmap": [
+ "Traits/ValueWrapper.php"
+ ],
"exclude-from-classmap": [
"/Tests/"
]
@@ -2553,7 +2528,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v5.4.3"
+ "source": "https://github.com/symfony/cache/tree/v6.1.1"
},
"funding": [
{
@@ -2569,25 +2544,25 @@
"type": "tidelift"
}
],
- "time": "2022-01-26T16:28:35+00:00"
+ "time": "2022-06-06T19:15:01+00:00"
},
{
"name": "symfony/cache-contracts",
- "version": "v2.5.0",
+ "version": "v3.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache-contracts.git",
- "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2"
+ "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ac2e168102a2e06a2624f0379bde94cd5854ced2",
- "reference": "ac2e168102a2e06a2624f0379bde94cd5854ced2",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/2eab7fa459af6d75c6463e63e633b667a9b761d3",
+ "reference": "2eab7fa459af6d75c6463e63e633b667a9b761d3",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/cache": "^1.0|^2.0|^3.0"
+ "php": ">=8.1",
+ "psr/cache": "^3.0"
},
"suggest": {
"symfony/cache-implementation": ""
@@ -2595,7 +2570,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.1-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2632,7 +2607,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/cache-contracts/tree/v2.5.0"
+ "source": "https://github.com/symfony/cache-contracts/tree/v3.1.0"
},
"funding": [
{
@@ -2648,31 +2623,30 @@
"type": "tidelift"
}
],
- "time": "2021-08-17T14:20:01+00:00"
+ "time": "2022-02-25T11:15:52+00:00"
},
{
"name": "symfony/config",
- "version": "v6.0.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "c14f32ae4cd2a3c29d8825c5093463ac08ade7d8"
+ "reference": "ed8d12417bcacd2d969750feb1fe1aab1c11e613"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/c14f32ae4cd2a3c29d8825c5093463ac08ade7d8",
- "reference": "c14f32ae4cd2a3c29d8825c5093463ac08ade7d8",
+ "url": "https://api.github.com/repos/symfony/config/zipball/ed8d12417bcacd2d969750feb1fe1aab1c11e613",
+ "reference": "ed8d12417bcacd2d969750feb1fe1aab1c11e613",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/filesystem": "^5.4|^6.0",
- "symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-php81": "^1.22"
+ "symfony/polyfill-ctype": "~1.8"
},
"conflict": {
- "symfony/finder": "<4.4"
+ "symfony/finder": "<5.4"
},
"require-dev": {
"symfony/event-dispatcher": "^5.4|^6.0",
@@ -2710,7 +2684,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.0.3"
+ "source": "https://github.com/symfony/config/tree/v6.1.0"
},
"funding": [
{
@@ -2726,24 +2700,25 @@
"type": "tidelift"
}
],
- "time": "2022-01-03T09:53:43+00:00"
+ "time": "2022-05-17T12:56:32+00:00"
},
{
"name": "symfony/console",
- "version": "v6.0.3",
+ "version": "v6.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "22e8efd019c3270c4f79376234a3f8752cd25490"
+ "reference": "6187424023fbffcd757789aeb517c9161b1eabee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/22e8efd019c3270c4f79376234a3f8752cd25490",
- "reference": "22e8efd019c3270c4f79376234a3f8752cd25490",
+ "url": "https://api.github.com/repos/symfony/console/zipball/6187424023fbffcd757789aeb517c9161b1eabee",
+ "reference": "6187424023fbffcd757789aeb517c9161b1eabee",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^1.1|^2|^3",
"symfony/string": "^5.4|^6.0"
@@ -2805,7 +2780,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.0.3"
+ "source": "https://github.com/symfony/console/tree/v6.1.1"
},
"funding": [
{
@@ -2821,45 +2796,43 @@
"type": "tidelift"
}
],
- "time": "2022-01-26T17:23:29+00:00"
+ "time": "2022-06-08T14:02:09+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v5.4.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "974580fd67f14d65b045c11b09eb149cd4b13df5"
+ "reference": "fc1fcd2b153f585934e80055bb3254913def2a6e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/974580fd67f14d65b045c11b09eb149cd4b13df5",
- "reference": "974580fd67f14d65b045c11b09eb149cd4b13df5",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/fc1fcd2b153f585934e80055bb3254913def2a6e",
+ "reference": "fc1fcd2b153f585934e80055bb3254913def2a6e",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/container": "^1.1.1",
+ "php": ">=8.1",
+ "psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.1|^3",
- "symfony/polyfill-php80": "^1.16",
- "symfony/polyfill-php81": "^1.22",
- "symfony/service-contracts": "^1.1.6|^2"
+ "symfony/service-contracts": "^1.1.6|^2.0|^3.0"
},
"conflict": {
"ext-psr": "<1.1|>=2",
- "symfony/config": "<5.3",
- "symfony/finder": "<4.4",
- "symfony/proxy-manager-bridge": "<4.4",
- "symfony/yaml": "<4.4"
+ "symfony/config": "<6.1",
+ "symfony/finder": "<5.4",
+ "symfony/proxy-manager-bridge": "<5.4",
+ "symfony/yaml": "<5.4"
},
"provide": {
- "psr/container-implementation": "1.0",
- "symfony/service-implementation": "1.0|2.0"
+ "psr/container-implementation": "1.1|2.0",
+ "symfony/service-implementation": "1.1|2.0|3.0"
},
"require-dev": {
- "symfony/config": "^5.3|^6.0",
- "symfony/expression-language": "^4.4|^5.0|^6.0",
- "symfony/yaml": "^4.4|^5.0|^6.0"
+ "symfony/config": "^6.1",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
"symfony/config": "",
@@ -2894,7 +2867,7 @@
"description": "Allows you to standardize and centralize the way objects are constructed in your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dependency-injection/tree/v5.4.3"
+ "source": "https://github.com/symfony/dependency-injection/tree/v6.1.0"
},
"funding": [
{
@@ -2910,29 +2883,29 @@
"type": "tidelift"
}
],
- "time": "2022-01-26T16:28:35+00:00"
+ "time": "2022-05-27T06:40:20+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.0.0",
+ "version": "v3.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced"
+ "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
- "reference": "c726b64c1ccfe2896cb7df2e1331c357ad1c8ced",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918",
+ "reference": "07f1b9cc2ffee6aaafcf4b710fbc38ff736bd918",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "3.1-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2961,7 +2934,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.0.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.1.0"
},
"funding": [
{
@@ -2977,101 +2950,31 @@
"type": "tidelift"
}
],
- "time": "2021-11-01T23:48:49+00:00"
- },
- {
- "name": "symfony/doctrine-messenger",
- "version": "v6.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/doctrine-messenger.git",
- "reference": "3a51c50ecae4054b075ba23c7081be0bf536c785"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/3a51c50ecae4054b075ba23c7081be0bf536c785",
- "reference": "3a51c50ecae4054b075ba23c7081be0bf536c785",
- "shasum": ""
- },
- "require": {
- "doctrine/dbal": "^2.13|^3.0",
- "php": ">=8.0.2",
- "symfony/messenger": "^5.4|^6.0",
- "symfony/service-contracts": "^1.1|^2|^3"
- },
- "conflict": {
- "doctrine/persistence": "<1.3"
- },
- "require-dev": {
- "doctrine/persistence": "^1.3|^2",
- "symfony/property-access": "^5.4|^6.0",
- "symfony/serializer": "^5.4|^6.0"
- },
- "type": "symfony-messenger-bridge",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Messenger\\Bridge\\Doctrine\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Doctrine Messenger Bridge",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/doctrine-messenger/tree/v6.0.3"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-02-25T11:15:52+00:00"
},
{
"name": "symfony/dotenv",
- "version": "v5.4.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "84d1af2d39dd81b48eb1cd3af3f107eea7a275bb"
+ "reference": "568c11bcedf419e7e61f663912c3547b54de51df"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/84d1af2d39dd81b48eb1cd3af3f107eea7a275bb",
- "reference": "84d1af2d39dd81b48eb1cd3af3f107eea7a275bb",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/568c11bcedf419e7e61f663912c3547b54de51df",
+ "reference": "568c11bcedf419e7e61f663912c3547b54de51df",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3"
+ "php": ">=8.1"
+ },
+ "conflict": {
+ "symfony/console": "<5.4"
},
"require-dev": {
- "symfony/console": "^4.4|^5.0|^6.0",
- "symfony/process": "^4.4|^5.0|^6.0"
+ "symfony/console": "^5.4|^6.0",
+ "symfony/process": "^5.4|^6.0"
},
"type": "library",
"autoload": {
@@ -3104,7 +3007,7 @@
"environment"
],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v5.4.3"
+ "source": "https://github.com/symfony/dotenv/tree/v6.1.0"
},
"funding": [
{
@@ -3120,24 +3023,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-26T16:19:10+00:00"
+ "time": "2022-04-01T07:15:35+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v6.0.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b"
+ "reference": "d02c662651e5de760bb7d5e94437113309e8f8a0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/20343b3bad7ebafa38138ddcb97290a24722b57b",
- "reference": "20343b3bad7ebafa38138ddcb97290a24722b57b",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/d02c662651e5de760bb7d5e94437113309e8f8a0",
+ "reference": "d02c662651e5de760bb7d5e94437113309e8f8a0",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"psr/log": "^1|^2|^3",
"symfony/var-dumper": "^5.4|^6.0"
},
@@ -3175,7 +3078,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.0.3"
+ "source": "https://github.com/symfony/error-handler/tree/v6.1.0"
},
"funding": [
{
@@ -3191,24 +3094,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-05-23T10:32:57+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v6.0.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934"
+ "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/6472ea2dd415e925b90ca82be64b8bc6157f3934",
- "reference": "6472ea2dd415e925b90ca82be64b8bc6157f3934",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a0449a7ad7daa0f7c0acd508259f80544ab5a347",
+ "reference": "a0449a7ad7daa0f7c0acd508259f80544ab5a347",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/event-dispatcher-contracts": "^2|^3"
},
"conflict": {
@@ -3258,7 +3161,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.0.3"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.1.0"
},
"funding": [
{
@@ -3274,24 +3177,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-05-05T16:51:07+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.0.0",
+ "version": "v3.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "aa5422287b75594b90ee9cd807caf8f0df491385"
+ "reference": "02ff5eea2f453731cfbc6bc215e456b781480448"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385",
- "reference": "aa5422287b75594b90ee9cd807caf8f0df491385",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/02ff5eea2f453731cfbc6bc215e456b781480448",
+ "reference": "02ff5eea2f453731cfbc6bc215e456b781480448",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"psr/event-dispatcher": "^1"
},
"suggest": {
@@ -3300,7 +3203,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "3.1-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -3337,7 +3240,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.1.0"
},
"funding": [
{
@@ -3353,24 +3256,24 @@
"type": "tidelift"
}
],
- "time": "2021-07-15T12:33:35+00:00"
+ "time": "2022-02-25T11:15:52+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v6.0.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "6ae49c4fda17322171a2b8dc5f70bc6edbc498e1"
+ "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/6ae49c4fda17322171a2b8dc5f70bc6edbc498e1",
- "reference": "6ae49c4fda17322171a2b8dc5f70bc6edbc498e1",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/3132d2f43ca799c2aa099f9738d98228c56baa5d",
+ "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
@@ -3400,7 +3303,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v6.0.3"
+ "source": "https://github.com/symfony/filesystem/tree/v6.1.0"
},
"funding": [
{
@@ -3416,24 +3319,27 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-05-21T13:34:40+00:00"
},
{
"name": "symfony/finder",
- "version": "v6.0.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430"
+ "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/8661b74dbabc23223f38c9b99d3f8ade71170430",
- "reference": "8661b74dbabc23223f38c9b99d3f8ade71170430",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/45b8beb69d6eb3b05a65689ebfd4222326773f8f",
+ "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "symfony/filesystem": "^6.0"
},
"type": "library",
"autoload": {
@@ -3461,7 +3367,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v6.0.3"
+ "source": "https://github.com/symfony/finder/tree/v6.1.0"
},
"funding": [
{
@@ -3477,105 +3383,103 @@
"type": "tidelift"
}
],
- "time": "2022-01-26T17:23:29+00:00"
+ "time": "2022-04-15T08:08:08+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v5.4.4",
+ "version": "v6.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "d848b8ca3d87d0fcc9d0ccbc88cf8e128db0d4c7"
+ "reference": "260d97823252318eb3b525dd8c0bee2cc5dbfd7f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/d848b8ca3d87d0fcc9d0ccbc88cf8e128db0d4c7",
- "reference": "d848b8ca3d87d0fcc9d0ccbc88cf8e128db0d4c7",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/260d97823252318eb3b525dd8c0bee2cc5dbfd7f",
+ "reference": "260d97823252318eb3b525dd8c0bee2cc5dbfd7f",
"shasum": ""
},
"require": {
+ "composer-runtime-api": ">=2.1",
"ext-xml": "*",
- "php": ">=7.2.5",
- "symfony/cache": "^5.2|^6.0",
- "symfony/config": "^5.3|^6.0",
- "symfony/dependency-injection": "^5.3|^6.0",
+ "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/error-handler": "^4.4.1|^5.0.1|^6.0",
- "symfony/event-dispatcher": "^5.1|^6.0",
- "symfony/filesystem": "^4.4|^5.0|^6.0",
- "symfony/finder": "^4.4|^5.0|^6.0",
- "symfony/http-foundation": "^5.3|^6.0",
- "symfony/http-kernel": "^5.4|^6.0",
+ "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/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.16",
- "symfony/polyfill-php81": "^1.22",
- "symfony/routing": "^5.3|^6.0"
+ "symfony/routing": "^5.4|^6.0"
},
"conflict": {
"doctrine/annotations": "<1.13.1",
- "doctrine/cache": "<1.11",
"doctrine/persistence": "<1.3",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"phpunit/phpunit": "<5.4.3",
- "symfony/asset": "<5.3",
- "symfony/console": "<5.2.5",
- "symfony/dom-crawler": "<4.4",
- "symfony/dotenv": "<5.1",
- "symfony/form": "<5.2",
- "symfony/http-client": "<4.4",
- "symfony/lock": "<4.4",
- "symfony/mailer": "<5.2",
+ "symfony/asset": "<5.4",
+ "symfony/console": "<5.4",
+ "symfony/dom-crawler": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/form": "<5.4",
+ "symfony/http-client": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/mailer": "<5.4",
"symfony/messenger": "<5.4",
- "symfony/mime": "<4.4",
- "symfony/property-access": "<5.3",
- "symfony/property-info": "<4.4",
- "symfony/security-csrf": "<5.3",
- "symfony/serializer": "<5.2",
- "symfony/service-contracts": ">=3.0",
- "symfony/stopwatch": "<4.4",
- "symfony/translation": "<5.3",
- "symfony/twig-bridge": "<4.4",
- "symfony/twig-bundle": "<4.4",
- "symfony/validator": "<5.2",
- "symfony/web-profiler-bundle": "<4.4",
- "symfony/workflow": "<5.2"
+ "symfony/mime": "<5.4",
+ "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/stopwatch": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/twig-bridge": "<5.4",
+ "symfony/twig-bundle": "<5.4",
+ "symfony/validator": "<5.4",
+ "symfony/web-profiler-bundle": "<5.4",
+ "symfony/workflow": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.13.1",
- "doctrine/cache": "^1.11|^2.0",
- "doctrine/persistence": "^1.3|^2.0",
- "paragonie/sodium_compat": "^1.8",
+ "doctrine/persistence": "^1.3|^2|^3",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
- "symfony/asset": "^5.3|^6.0",
+ "symfony/asset": "^5.4|^6.0",
"symfony/browser-kit": "^5.4|^6.0",
- "symfony/console": "^5.4|^6.0",
- "symfony/css-selector": "^4.4|^5.0|^6.0",
- "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0",
- "symfony/dotenv": "^5.1|^6.0",
- "symfony/expression-language": "^4.4|^5.0|^6.0",
- "symfony/form": "^5.2|^6.0",
- "symfony/http-client": "^4.4|^5.0|^6.0",
- "symfony/lock": "^4.4|^5.0|^6.0",
- "symfony/mailer": "^5.2|^6.0",
- "symfony/messenger": "^5.4|^6.0",
- "symfony/mime": "^4.4|^5.0|^6.0",
+ "symfony/console": "^5.4.9|^6.0.9",
+ "symfony/css-selector": "^5.4|^6.0",
+ "symfony/dom-crawler": "^5.4|^6.0",
+ "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/lock": "^5.4|^6.0",
+ "symfony/mailer": "^5.4|^6.0",
+ "symfony/messenger": "^6.1",
+ "symfony/mime": "^5.4|^6.0",
"symfony/notifier": "^5.4|^6.0",
- "symfony/phpunit-bridge": "^5.3|^6.0",
"symfony/polyfill-intl-icu": "~1.0",
- "symfony/process": "^4.4|^5.0|^6.0",
- "symfony/property-info": "^4.4|^5.0|^6.0",
- "symfony/rate-limiter": "^5.2|^6.0",
+ "symfony/process": "^5.4|^6.0",
+ "symfony/property-info": "^5.4|^6.0",
+ "symfony/rate-limiter": "^5.4|^6.0",
"symfony/security-bundle": "^5.4|^6.0",
- "symfony/serializer": "^5.4|^6.0",
- "symfony/stopwatch": "^4.4|^5.0|^6.0",
- "symfony/string": "^5.0|^6.0",
- "symfony/translation": "^5.3|^6.0",
- "symfony/twig-bundle": "^4.4|^5.0|^6.0",
- "symfony/validator": "^5.2|^6.0",
- "symfony/web-link": "^4.4|^5.0|^6.0",
- "symfony/workflow": "^5.2|^6.0",
- "symfony/yaml": "^4.4|^5.0|^6.0",
+ "symfony/semaphore": "^5.4|^6.0",
+ "symfony/serializer": "^6.1",
+ "symfony/stopwatch": "^5.4|^6.0",
+ "symfony/string": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/twig-bundle": "^5.4|^6.0",
+ "symfony/uid": "^5.4|^6.0",
+ "symfony/validator": "^5.4|^6.0",
+ "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": {
@@ -3614,7 +3518,7 @@
"description": "Provides a tight integration between Symfony components and the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/framework-bundle/tree/v5.4.4"
+ "source": "https://github.com/symfony/framework-bundle/tree/v6.1.1"
},
"funding": [
{
@@ -3630,24 +3534,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-29T17:49:40+00:00"
+ "time": "2022-06-09T10:53:06+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v6.0.3",
+ "version": "v6.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "ad157299ced81a637fade1efcadd688d6deba5c1"
+ "reference": "a58dc88d56e04e57993d96c1407a17407610e1df"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ad157299ced81a637fade1efcadd688d6deba5c1",
- "reference": "ad157299ced81a637fade1efcadd688d6deba5c1",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/a58dc88d56e04e57993d96c1407a17407610e1df",
+ "reference": "a58dc88d56e04e57993d96c1407a17407610e1df",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-mbstring": "~1.1"
},
@@ -3686,7 +3590,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.0.3"
+ "source": "https://github.com/symfony/http-foundation/tree/v6.1.1"
},
"funding": [
{
@@ -3702,26 +3606,26 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-05-31T14:28:03+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v6.0.4",
+ "version": "v6.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b"
+ "reference": "86c4d6f6c5b6cd012df41e3b950c924b3ffdc019"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9dce179ce52b0f4f669c07fd5e465e5d809a5d3b",
- "reference": "9dce179ce52b0f4f669c07fd5e465e5d809a5d3b",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/86c4d6f6c5b6cd012df41e3b950c924b3ffdc019",
+ "reference": "86c4d6f6c5b6cd012df41e3b950c924b3ffdc019",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"psr/log": "^1|^2|^3",
- "symfony/error-handler": "^5.4|^6.0",
+ "symfony/error-handler": "^6.1",
"symfony/event-dispatcher": "^5.4|^6.0",
"symfony/http-foundation": "^5.4|^6.0",
"symfony/polyfill-ctype": "^1.8"
@@ -3729,9 +3633,9 @@
"conflict": {
"symfony/browser-kit": "<5.4",
"symfony/cache": "<5.4",
- "symfony/config": "<5.4",
+ "symfony/config": "<6.1",
"symfony/console": "<5.4",
- "symfony/dependency-injection": "<5.4",
+ "symfony/dependency-injection": "<6.1",
"symfony/doctrine-bridge": "<5.4",
"symfony/form": "<5.4",
"symfony/http-client": "<5.4",
@@ -3748,10 +3652,10 @@
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
"symfony/browser-kit": "^5.4|^6.0",
- "symfony/config": "^5.4|^6.0",
+ "symfony/config": "^6.1",
"symfony/console": "^5.4|^6.0",
"symfony/css-selector": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/dependency-injection": "^6.1",
"symfony/dom-crawler": "^5.4|^6.0",
"symfony/expression-language": "^5.4|^6.0",
"symfony/finder": "^5.4|^6.0",
@@ -3761,6 +3665,7 @@
"symfony/stopwatch": "^5.4|^6.0",
"symfony/translation": "^5.4|^6.0",
"symfony/translation-contracts": "^1.1|^2|^3",
+ "symfony/uid": "^5.4|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"suggest": {
@@ -3795,7 +3700,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.0.4"
+ "source": "https://github.com/symfony/http-kernel/tree/v6.1.1"
},
"funding": [
{
@@ -3811,50 +3716,46 @@
"type": "tidelift"
}
],
- "time": "2022-01-29T18:12:46+00:00"
+ "time": "2022-06-09T17:31:33+00:00"
},
{
"name": "symfony/messenger",
- "version": "v5.4.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/messenger.git",
- "reference": "4319c25b76573cff46f112ee8cc83fffa4b97579"
+ "reference": "e4e204ce4f2e90b54320c9043a0898d925dcd118"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/messenger/zipball/4319c25b76573cff46f112ee8cc83fffa4b97579",
- "reference": "4319c25b76573cff46f112ee8cc83fffa4b97579",
+ "url": "https://api.github.com/repos/symfony/messenger/zipball/e4e204ce4f2e90b54320c9043a0898d925dcd118",
+ "reference": "e4e204ce4f2e90b54320c9043a0898d925dcd118",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "psr/log": "^1|^2|^3",
- "symfony/amqp-messenger": "^5.1|^6.0",
- "symfony/deprecation-contracts": "^2.1|^3",
- "symfony/doctrine-messenger": "^5.1|^6.0",
- "symfony/polyfill-php80": "^1.16",
- "symfony/redis-messenger": "^5.1|^6.0"
+ "php": ">=8.1",
+ "psr/log": "^1|^2|^3"
},
"conflict": {
- "symfony/event-dispatcher": "<4.4",
- "symfony/framework-bundle": "<4.4",
- "symfony/http-kernel": "<4.4",
- "symfony/serializer": "<5.0"
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/event-dispatcher-contracts": "<2",
+ "symfony/framework-bundle": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/serializer": "<5.4"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
"symfony/console": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.3|^6.0",
- "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
- "symfony/http-kernel": "^4.4|^5.0|^6.0",
- "symfony/process": "^4.4|^5.0|^6.0",
- "symfony/property-access": "^4.4|^5.0|^6.0",
- "symfony/routing": "^4.4|^5.0|^6.0",
- "symfony/serializer": "^5.0|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "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/routing": "^5.4|^6.0",
+ "symfony/serializer": "^5.4|^6.0",
"symfony/service-contracts": "^1.1|^2|^3",
- "symfony/stopwatch": "^4.4|^5.0|^6.0",
- "symfony/validator": "^4.4|^5.0|^6.0"
+ "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."
@@ -3885,7 +3786,7 @@
"description": "Helps applications send and receive messages to/from other applications or via message queues",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/messenger/tree/v5.4.3"
+ "source": "https://github.com/symfony/messenger/tree/v6.1.0"
},
"funding": [
{
@@ -3901,20 +3802,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-12T18:55:10+00:00"
+ "time": "2022-05-11T12:12:29+00:00"
},
{
"name": "symfony/polyfill-apcu",
- "version": "v1.24.0",
+ "version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-apcu.git",
- "reference": "80f7fb64c5b64ebcba76f40215e63808a2062a18"
+ "reference": "43273a33c46f9d5a08dac76859f63d6814242e81"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/80f7fb64c5b64ebcba76f40215e63808a2062a18",
- "reference": "80f7fb64c5b64ebcba76f40215e63808a2062a18",
+ "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/43273a33c46f9d5a08dac76859f63d6814242e81",
+ "reference": "43273a33c46f9d5a08dac76859f63d6814242e81",
"shasum": ""
},
"require": {
@@ -3923,7 +3824,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -3962,7 +3863,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-apcu/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-apcu/tree/v1.26.0"
},
"funding": [
{
@@ -3978,20 +3879,20 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.24.0",
+ "version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "30885182c981ab175d4d034db0f6f469898070ab"
+ "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
- "reference": "30885182c981ab175d4d034db0f6f469898070ab",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
+ "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4",
"shasum": ""
},
"require": {
@@ -4006,7 +3907,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4014,12 +3915,12 @@
}
},
"autoload": {
- "psr-4": {
- "Symfony\\Polyfill\\Ctype\\": ""
- },
"files": [
"bootstrap.php"
- ]
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -4044,7 +3945,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0"
},
"funding": [
{
@@ -4060,20 +3961,20 @@
"type": "tidelift"
}
],
- "time": "2021-10-20T20:35:02+00:00"
+ "time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.24.0",
+ "version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "81b86b50cf841a64252b439e738e97f4a34e2783"
+ "reference": "433d05519ce6990bf3530fba6957499d327395c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783",
- "reference": "81b86b50cf841a64252b439e738e97f4a34e2783",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2",
+ "reference": "433d05519ce6990bf3530fba6957499d327395c2",
"shasum": ""
},
"require": {
@@ -4085,7 +3986,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4125,7 +4026,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0"
},
"funding": [
{
@@ -4141,20 +4042,20 @@
"type": "tidelift"
}
],
- "time": "2021-11-23T21:10:46+00:00"
+ "time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.24.0",
+ "version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "749045c69efb97c70d25d7463abba812e91f3a44"
+ "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44",
- "reference": "749045c69efb97c70d25d7463abba812e91f3a44",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
+ "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8",
"shasum": ""
},
"require": {
@@ -4168,7 +4069,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4212,7 +4113,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0"
},
"funding": [
{
@@ -4228,20 +4129,20 @@
"type": "tidelift"
}
],
- "time": "2021-09-14T14:02:44+00:00"
+ "time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.24.0",
+ "version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ "reference": "219aa369ceff116e673852dce47c3a41794c14bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
- "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd",
+ "reference": "219aa369ceff116e673852dce47c3a41794c14bd",
"shasum": ""
},
"require": {
@@ -4253,7 +4154,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4296,7 +4197,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0"
},
"funding": [
{
@@ -4312,20 +4213,20 @@
"type": "tidelift"
}
],
- "time": "2021-02-19T12:13:01+00:00"
+ "time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.24.0",
+ "version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
+ "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
- "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
+ "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e",
"shasum": ""
},
"require": {
@@ -4340,7 +4241,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4379,7 +4280,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0"
},
"funding": [
{
@@ -4395,20 +4296,20 @@
"type": "tidelift"
}
],
- "time": "2021-11-30T18:21:41+00:00"
+ "time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.24.0",
+ "version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "9a142215a36a3888e30d0a9eeea9766764e96976"
+ "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976",
- "reference": "9a142215a36a3888e30d0a9eeea9766764e96976",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2",
+ "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2",
"shasum": ""
},
"require": {
@@ -4417,7 +4318,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4455,7 +4356,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0"
},
"funding": [
{
@@ -4471,99 +4372,20 @@
"type": "tidelift"
}
],
- "time": "2021-05-27T09:17:38+00:00"
- },
- {
- "name": "symfony/polyfill-php73",
- "version": "v1.24.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5",
- "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.23-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.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": "2021-06-05T21:20:04+00:00"
+ "time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.24.0",
+ "version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9"
+ "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9",
- "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace",
+ "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace",
"shasum": ""
},
"require": {
@@ -4572,7 +4394,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4617,7 +4439,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0"
},
"funding": [
{
@@ -4633,20 +4455,20 @@
"type": "tidelift"
}
],
- "time": "2021-09-13T13:58:33+00:00"
+ "time": "2022-05-10T07:21:04+00:00"
},
{
"name": "symfony/polyfill-php81",
- "version": "v1.24.0",
+ "version": "v1.26.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f"
+ "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
- "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1",
+ "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1",
"shasum": ""
},
"require": {
@@ -4655,7 +4477,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.23-dev"
+ "dev-main": "1.26-dev"
},
"thanks": {
"name": "symfony/polyfill",
@@ -4696,74 +4518,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.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": "2021-09-13T13:58:11+00:00"
- },
- {
- "name": "symfony/redis-messenger",
- "version": "v6.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/redis-messenger.git",
- "reference": "2977b1f207baf2de559ba881acab5976db9cbe18"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/2977b1f207baf2de559ba881acab5976db9cbe18",
- "reference": "2977b1f207baf2de559ba881acab5976db9cbe18",
- "shasum": ""
- },
- "require": {
- "ext-redis": "*",
- "php": ">=8.0.2",
- "symfony/messenger": "^5.4|^6.0"
- },
- "require-dev": {
- "symfony/property-access": "^5.4|^6.0",
- "symfony/serializer": "^5.4|^6.0"
- },
- "type": "symfony-messenger-bridge",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Messenger\\Bridge\\Redis\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony Redis extension Messenger Bridge",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/redis-messenger/tree/v6.0.3"
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0"
},
"funding": [
{
@@ -4779,24 +4534,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-05-24T11:49:31+00:00"
},
{
"name": "symfony/routing",
- "version": "v6.0.3",
+ "version": "v6.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099"
+ "reference": "8f068b792e515b25e26855ac8dc7fe800399f3e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/b1debdf7a40e6bc7eee0f363ab9dd667fe04f099",
- "reference": "b1debdf7a40e6bc7eee0f363ab9dd667fe04f099",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/8f068b792e515b25e26855ac8dc7fe800399f3e5",
+ "reference": "8f068b792e515b25e26855ac8dc7fe800399f3e5",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
},
"conflict": {
"doctrine/annotations": "<1.12",
@@ -4851,7 +4606,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v6.0.3"
+ "source": "https://github.com/symfony/routing/tree/v6.1.1"
},
"funding": [
{
@@ -4867,25 +4622,26 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-06-08T12:21:15+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v2.4.1",
+ "version": "v2.5.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "d664541b99d6fb0247ec5ff32e87238582236204"
+ "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d664541b99d6fb0247ec5ff32e87238582236204",
- "reference": "d664541b99d6fb0247ec5ff32e87238582236204",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/24d9dc654b83e91aa59f9d167b131bc3b5bea24c",
+ "reference": "24d9dc654b83e91aa59f9d167b131bc3b5bea24c",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
- "psr/container": "^1.1"
+ "psr/container": "^1.1",
+ "symfony/deprecation-contracts": "^2.1|^3"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -4896,7 +4652,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.4-dev"
+ "dev-main": "2.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -4933,7 +4689,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v2.4.1"
+ "source": "https://github.com/symfony/service-contracts/tree/v2.5.1"
},
"funding": [
{
@@ -4949,24 +4705,24 @@
"type": "tidelift"
}
],
- "time": "2021-11-04T16:37:19+00:00"
+ "time": "2022-03-13T20:07:29+00:00"
},
{
"name": "symfony/string",
- "version": "v6.0.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2"
+ "reference": "d3edc75baf9f1d4f94879764dda2e1ac33499529"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/522144f0c4c004c80d56fa47e40e17028e2eefc2",
- "reference": "522144f0c4c004c80d56fa47e40e17028e2eefc2",
+ "url": "https://api.github.com/repos/symfony/string/zipball/d3edc75baf9f1d4f94879764dda2e1ac33499529",
+ "reference": "d3edc75baf9f1d4f94879764dda2e1ac33499529",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
@@ -4983,12 +4739,12 @@
},
"type": "library",
"autoload": {
- "psr-4": {
- "Symfony\\Component\\String\\": ""
- },
"files": [
"Resources/functions.php"
],
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
"exclude-from-classmap": [
"/Tests/"
]
@@ -5018,7 +4774,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.0.3"
+ "source": "https://github.com/symfony/string/tree/v6.1.0"
},
"funding": [
{
@@ -5034,24 +4790,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-04-22T08:18:23+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.0.0",
+ "version": "v3.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77"
+ "reference": "bfddd2a1faa271b782b791c361cc16e2dd49dfaa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77",
- "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/bfddd2a1faa271b782b791c361cc16e2dd49dfaa",
+ "reference": "bfddd2a1faa271b782b791c361cc16e2dd49dfaa",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
},
"suggest": {
"symfony/translation-implementation": ""
@@ -5059,7 +4815,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.0-dev"
+ "dev-main": "3.1-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -5069,7 +4825,10 @@
"autoload": {
"psr-4": {
"Symfony\\Contracts\\Translation\\": ""
- }
+ },
+ "exclude-from-classmap": [
+ "/Test/"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -5096,7 +4855,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.0.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.1.0"
},
"funding": [
{
@@ -5112,24 +4871,24 @@
"type": "tidelift"
}
],
- "time": "2021-09-07T12:43:40+00:00"
+ "time": "2022-04-22T07:30:54+00:00"
},
{
"name": "symfony/twig-bridge",
- "version": "v6.0.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "31a4ec953c20299cc828eb6a1ccdf86d7ecbe22c"
+ "reference": "53ce2d7811500c0f0f94af700307ff5b1e305d3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/31a4ec953c20299cc828eb6a1ccdf86d7ecbe22c",
- "reference": "31a4ec953c20299cc828eb6a1ccdf86d7ecbe22c",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/53ce2d7811500c0f0f94af700307ff5b1e305d3c",
+ "reference": "53ce2d7811500c0f0f94af700307ff5b1e305d3c",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/translation-contracts": "^1.1|^2|^3",
"twig/twig": "^2.13|^3.0.4"
},
@@ -5137,7 +4896,7 @@
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/console": "<5.4",
- "symfony/form": "<5.4",
+ "symfony/form": "<6.1",
"symfony/http-foundation": "<5.4",
"symfony/http-kernel": "<5.4",
"symfony/translation": "<5.4",
@@ -5152,7 +4911,8 @@
"symfony/dependency-injection": "^5.4|^6.0",
"symfony/expression-language": "^5.4|^6.0",
"symfony/finder": "^5.4|^6.0",
- "symfony/form": "^5.4|^6.0",
+ "symfony/form": "^6.1",
+ "symfony/html-sanitizer": "^6.1",
"symfony/http-foundation": "^5.4|^6.0",
"symfony/http-kernel": "^5.4|^6.0",
"symfony/intl": "^5.4|^6.0",
@@ -5179,6 +4939,7 @@
"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",
@@ -5216,7 +4977,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v6.0.3"
+ "source": "https://github.com/symfony/twig-bridge/tree/v6.1.0"
},
"funding": [
{
@@ -5232,52 +4993,49 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-05-21T13:34:40+00:00"
},
{
"name": "symfony/twig-bundle",
- "version": "v5.4.3",
+ "version": "v6.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
- "reference": "45ae3ee8155f93042a1033b166a7a3ed57b96a92"
+ "reference": "a2abab10068525a7f5a879e40e411d369d688545"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/45ae3ee8155f93042a1033b166a7a3ed57b96a92",
- "reference": "45ae3ee8155f93042a1033b166a7a3ed57b96a92",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a2abab10068525a7f5a879e40e411d369d688545",
+ "reference": "a2abab10068525a7f5a879e40e411d369d688545",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/config": "^4.4|^5.0|^6.0",
- "symfony/http-foundation": "^4.4|^5.0|^6.0",
- "symfony/http-kernel": "^5.0|^6.0",
+ "composer-runtime-api": ">=2.1",
+ "php": ">=8.1",
+ "symfony/config": "^5.4|^6.0",
+ "symfony/dependency-injection": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
"symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-php80": "^1.16",
- "symfony/twig-bridge": "^5.3|^6.0",
+ "symfony/twig-bridge": "^5.4|^6.0",
"twig/twig": "^2.13|^3.0.4"
},
"conflict": {
- "symfony/dependency-injection": "<5.3",
- "symfony/framework-bundle": "<5.0",
- "symfony/service-contracts": ">=3.0",
- "symfony/translation": "<5.0"
+ "symfony/framework-bundle": "<5.4",
+ "symfony/translation": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.10.4",
- "doctrine/cache": "^1.0|^2.0",
- "symfony/asset": "^4.4|^5.0|^6.0",
- "symfony/dependency-injection": "^5.3|^6.0",
- "symfony/expression-language": "^4.4|^5.0|^6.0",
- "symfony/finder": "^4.4|^5.0|^6.0",
- "symfony/form": "^4.4|^5.0|^6.0",
- "symfony/framework-bundle": "^5.0|^6.0",
- "symfony/routing": "^4.4|^5.0|^6.0",
- "symfony/stopwatch": "^4.4|^5.0|^6.0",
- "symfony/translation": "^5.0|^6.0",
- "symfony/web-link": "^4.4|^5.0|^6.0",
- "symfony/yaml": "^4.4|^5.0|^6.0"
+ "symfony/asset": "^5.4|^6.0",
+ "symfony/expression-language": "^5.4|^6.0",
+ "symfony/finder": "^5.4|^6.0",
+ "symfony/form": "^5.4|^6.0",
+ "symfony/framework-bundle": "^5.4|^6.0",
+ "symfony/routing": "^5.4|^6.0",
+ "symfony/stopwatch": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/web-link": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
},
"type": "symfony-bundle",
"autoload": {
@@ -5305,7 +5063,7 @@
"description": "Provides a tight integration of Twig into the Symfony full-stack framework",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bundle/tree/v5.4.3"
+ "source": "https://github.com/symfony/twig-bundle/tree/v6.1.1"
},
"funding": [
{
@@ -5321,64 +5079,59 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-05-27T16:55:36+00:00"
},
{
"name": "symfony/validator",
- "version": "v5.4.3",
+ "version": "v6.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "b420894e98f414b9ad5d4494650bf281f6dd6028"
+ "reference": "b2ae30b952165080e810c3a118b230184cb97db0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/b420894e98f414b9ad5d4494650bf281f6dd6028",
- "reference": "b420894e98f414b9ad5d4494650bf281f6dd6028",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/b2ae30b952165080e810c3a118b230184cb97db0",
+ "reference": "b2ae30b952165080e810c3a118b230184cb97db0",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.1",
"symfony/deprecation-contracts": "^2.1|^3",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "~1.0",
- "symfony/polyfill-php80": "^1.16",
- "symfony/polyfill-php81": "^1.22",
"symfony/translation-contracts": "^1.1|^2|^3"
},
"conflict": {
"doctrine/annotations": "<1.13",
- "doctrine/cache": "<1.11",
"doctrine/lexer": "<1.1",
"phpunit/phpunit": "<5.4.3",
- "symfony/dependency-injection": "<4.4",
- "symfony/expression-language": "<5.1",
- "symfony/http-kernel": "<4.4",
- "symfony/intl": "<4.4",
- "symfony/property-info": "<5.3",
- "symfony/translation": "<4.4",
- "symfony/yaml": "<4.4"
+ "symfony/dependency-injection": "<5.4",
+ "symfony/expression-language": "<5.4",
+ "symfony/http-kernel": "<5.4",
+ "symfony/intl": "<5.4",
+ "symfony/property-info": "<5.4",
+ "symfony/translation": "<5.4",
+ "symfony/yaml": "<5.4"
},
"require-dev": {
"doctrine/annotations": "^1.13",
- "doctrine/cache": "^1.11|^2.0",
"egulias/email-validator": "^2.1.10|^3",
- "symfony/cache": "^4.4|^5.0|^6.0",
- "symfony/config": "^4.4|^5.0|^6.0",
- "symfony/console": "^4.4|^5.0|^6.0",
- "symfony/dependency-injection": "^4.4|^5.0|^6.0",
- "symfony/expression-language": "^5.1|^6.0",
- "symfony/finder": "^4.4|^5.0|^6.0",
- "symfony/http-client": "^4.4|^5.0|^6.0",
- "symfony/http-foundation": "^4.4|^5.0|^6.0",
- "symfony/http-kernel": "^4.4|^5.0|^6.0",
- "symfony/intl": "^4.4|^5.0|^6.0",
- "symfony/mime": "^4.4|^5.0|^6.0",
- "symfony/property-access": "^4.4|^5.0|^6.0",
- "symfony/property-info": "^5.3|^6.0",
- "symfony/translation": "^4.4|^5.0|^6.0",
- "symfony/yaml": "^4.4|^5.0|^6.0"
+ "symfony/cache": "^5.4|^6.0",
+ "symfony/config": "^5.4|^6.0",
+ "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/http-client": "^5.4|^6.0",
+ "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0",
+ "symfony/intl": "^5.4|^6.0",
+ "symfony/mime": "^5.4|^6.0",
+ "symfony/property-access": "^5.4|^6.0",
+ "symfony/property-info": "^5.4|^6.0",
+ "symfony/translation": "^5.4|^6.0",
+ "symfony/yaml": "^5.4|^6.0"
},
"suggest": {
"egulias/email-validator": "Strict (RFC compliant) email validation",
@@ -5418,7 +5171,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v5.4.3"
+ "source": "https://github.com/symfony/validator/tree/v6.1.1"
},
"funding": [
{
@@ -5434,24 +5187,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-26T16:28:35+00:00"
+ "time": "2022-06-09T12:51:38+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v6.0.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834"
+ "reference": "98587d939cb783aa04e828e8fa857edaca24c212"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7b701676fc64f9ef11f9b4870f16b48f66be4834",
- "reference": "7b701676fc64f9ef11f9b4870f16b48f66be4834",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/98587d939cb783aa04e828e8fa857edaca24c212",
+ "reference": "98587d939cb783aa04e828e8fa857edaca24c212",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
@@ -5506,7 +5259,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v6.0.3"
+ "source": "https://github.com/symfony/var-dumper/tree/v6.1.0"
},
"funding": [
{
@@ -5522,24 +5275,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-17T16:30:44+00:00"
+ "time": "2022-05-21T13:34:40+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v6.0.3",
+ "version": "v6.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "1261b2d4a23081cb2b59a4caa311a5ac43b845b6"
+ "reference": "ce1452317b1210ddfe18d143fa8a09c18f034b89"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1261b2d4a23081cb2b59a4caa311a5ac43b845b6",
- "reference": "1261b2d4a23081cb2b59a4caa311a5ac43b845b6",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/ce1452317b1210ddfe18d143fa8a09c18f034b89",
+ "reference": "ce1452317b1210ddfe18d143fa8a09c18f034b89",
"shasum": ""
},
"require": {
- "php": ">=8.0.2"
+ "php": ">=8.1"
},
"require-dev": {
"symfony/var-dumper": "^5.4|^6.0"
@@ -5578,7 +5331,7 @@
"serialize"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v6.0.3"
+ "source": "https://github.com/symfony/var-exporter/tree/v6.1.1"
},
"funding": [
{
@@ -5594,32 +5347,31 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:55:41+00:00"
+ "time": "2022-05-27T12:58:07+00:00"
},
{
"name": "symfony/yaml",
- "version": "v5.4.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "e80f87d2c9495966768310fc531b487ce64237a2"
+ "reference": "84ce4f9d2d68f306f971a39d949d8f4b5550dba2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2",
- "reference": "e80f87d2c9495966768310fc531b487ce64237a2",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/84ce4f9d2d68f306f971a39d949d8f4b5550dba2",
+ "reference": "84ce4f9d2d68f306f971a39d949d8f4b5550dba2",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/console": "<5.3"
+ "symfony/console": "<5.4"
},
"require-dev": {
- "symfony/console": "^5.3|^6.0"
+ "symfony/console": "^5.4|^6.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
@@ -5653,7 +5405,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v5.4.3"
+ "source": "https://github.com/symfony/yaml/tree/v6.1.0"
},
"funding": [
{
@@ -5669,20 +5421,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-26T16:32:32+00:00"
+ "time": "2022-04-15T14:25:02+00:00"
},
{
"name": "twig/twig",
- "version": "v3.3.8",
+ "version": "v3.4.1",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "972d8604a92b7054828b539f2febb0211dd5945c"
+ "reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/972d8604a92b7054828b539f2febb0211dd5945c",
- "reference": "972d8604a92b7054828b539f2febb0211dd5945c",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/e939eae92386b69b49cfa4599dd9bead6bf4a342",
+ "reference": "e939eae92386b69b49cfa4599dd9bead6bf4a342",
"shasum": ""
},
"require": {
@@ -5697,7 +5449,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.3-dev"
+ "dev-master": "3.4-dev"
}
},
"autoload": {
@@ -5712,114 +5464,55 @@
"authors": [
{
"name": "Fabien Potencier",
- "email": "fabien@symfony.com",
- "homepage": "http://fabien.potencier.org",
- "role": "Lead Developer"
- },
- {
- "name": "Twig Team",
- "role": "Contributors"
- },
- {
- "name": "Armin Ronacher",
- "email": "armin.ronacher@active-4.com",
- "role": "Project Founder"
- }
- ],
- "description": "Twig, the flexible, fast, and secure template language for PHP",
- "homepage": "https://twig.symfony.com",
- "keywords": [
- "templating"
- ],
- "support": {
- "issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.3.8"
- },
- "funding": [
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/twig/twig",
- "type": "tidelift"
- }
- ],
- "time": "2022-02-04T06:59:48+00:00"
- },
- {
- "name": "webimpress/safe-writer",
- "version": "2.2.0",
- "source": {
- "type": "git",
- "url": "https://github.com/webimpress/safe-writer.git",
- "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6",
- "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6",
- "shasum": ""
- },
- "require": {
- "php": "^7.3 || ^8.0"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.5.4",
- "vimeo/psalm": "^4.7",
- "webimpress/coding-standard": "^1.2.2"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.2.x-dev",
- "dev-develop": "2.3.x-dev",
- "dev-release-1.0": "1.0.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Webimpress\\SafeWriter\\": "src/"
+ "email": "fabien@symfony.com",
+ "homepage": "http://fabien.potencier.org",
+ "role": "Lead Developer"
+ },
+ {
+ "name": "Twig Team",
+ "role": "Contributors"
+ },
+ {
+ "name": "Armin Ronacher",
+ "email": "armin.ronacher@active-4.com",
+ "role": "Project Founder"
}
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "BSD-2-Clause"
],
- "description": "Tool to write files safely, to avoid race conditions",
+ "description": "Twig, the flexible, fast, and secure template language for PHP",
+ "homepage": "https://twig.symfony.com",
"keywords": [
- "concurrent write",
- "file writer",
- "race condition",
- "safe writer",
- "webimpress"
+ "templating"
],
"support": {
- "issues": "https://github.com/webimpress/safe-writer/issues",
- "source": "https://github.com/webimpress/safe-writer/tree/2.2.0"
+ "issues": "https://github.com/twigphp/Twig/issues",
+ "source": "https://github.com/twigphp/Twig/tree/v3.4.1"
},
"funding": [
{
- "url": "https://github.com/michalbundyra",
+ "url": "https://github.com/fabpot",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/twig/twig",
+ "type": "tidelift"
}
],
- "time": "2021-04-19T16:34:45+00:00"
+ "time": "2022-05-17T05:48:52+00:00"
}
],
"packages-dev": [
{
"name": "amphp/amp",
- "version": "v2.6.1",
+ "version": "v2.6.2",
"source": {
"type": "git",
"url": "https://github.com/amphp/amp.git",
- "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae"
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/amp/zipball/c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae",
- "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
"shasum": ""
},
"require": {
@@ -5841,13 +5534,13 @@
}
},
"autoload": {
- "psr-4": {
- "Amp\\": "lib"
- },
"files": [
"lib/functions.php",
"lib/Internal/functions.php"
- ]
+ ],
+ "psr-4": {
+ "Amp\\": "lib"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@@ -5872,7 +5565,7 @@
}
],
"description": "A non-blocking concurrency framework for PHP applications.",
- "homepage": "http://amphp.org/amp",
+ "homepage": "https://amphp.org/amp",
"keywords": [
"async",
"asynchronous",
@@ -5887,7 +5580,7 @@
"support": {
"irc": "irc://irc.freenode.org/amphp",
"issues": "https://github.com/amphp/amp/issues",
- "source": "https://github.com/amphp/amp/tree/v2.6.1"
+ "source": "https://github.com/amphp/amp/tree/v2.6.2"
},
"funding": [
{
@@ -5895,7 +5588,7 @@
"type": "github"
}
],
- "time": "2021-09-23T18:43:08+00:00"
+ "time": "2022-02-20T17:52:18+00:00"
},
{
"name": "amphp/byte-stream",
@@ -6022,10 +5715,10 @@
},
"autoload": {
"psr-4": {
- "Behat\\Behat\\": "src/Behat/Behat/",
- "Behat\\Testwork\\": "src/Behat/Testwork/",
+ "Behat\\Hook\\": "src/Behat/Hook/",
"Behat\\Step\\": "src/Behat/Step/",
- "Behat\\Hook\\": "src/Behat/Hook/"
+ "Behat\\Behat\\": "src/Behat/Behat/",
+ "Behat\\Testwork\\": "src/Behat/Testwork/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -6126,31 +5819,29 @@
},
{
"name": "behat/mink",
- "version": "v1.9.0",
+ "version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/minkphp/Mink.git",
- "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996"
+ "reference": "19e58905632e7cfdc5b2bafb9b950a3521af32c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/minkphp/Mink/zipball/e35f4695de8800fc776af34ebf665ad58ebdd996",
- "reference": "e35f4695de8800fc776af34ebf665ad58ebdd996",
+ "url": "https://api.github.com/repos/minkphp/Mink/zipball/19e58905632e7cfdc5b2bafb9b950a3521af32c5",
+ "reference": "19e58905632e7cfdc5b2bafb9b950a3521af32c5",
"shasum": ""
},
"require": {
- "php": ">=5.4",
- "symfony/css-selector": "^2.7|^3.0|^4.0|^5.0"
+ "php": ">=7.2",
+ "symfony/css-selector": "^4.4 || ^5.0 || ^6.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5 || ^9.5",
- "symfony/debug": "^2.7|^3.0|^4.0|^5.0",
- "symfony/phpunit-bridge": "^3.4.38 || ^4.4 || ^5.0.5",
- "yoast/phpunit-polyfills": "^1.0"
+ "phpunit/phpunit": "^8.5.22 || ^9.5.11",
+ "symfony/error-handler": "^4.4 || ^5.0 || ^6.0",
+ "symfony/phpunit-bridge": "^5.4 || ^6.0"
},
"suggest": {
- "behat/mink-browserkit-driver": "extremely fast headless driver for Symfony\\Kernel-based apps (Sf2, Silex)",
- "behat/mink-goutte-driver": "fast headless driver for any app without JS emulation",
+ "behat/mink-browserkit-driver": "fast headless driver for any app without JS emulation",
"behat/mink-selenium2-driver": "slow, but JS-enabled driver for any app (requires Selenium2)",
"behat/mink-zombie-driver": "fast and JS-enabled headless driver for any app (requires node.js)",
"dmore/chrome-mink-driver": "fast and JS-enabled driver for any app (requires chromium or google chrome)"
@@ -6186,37 +5877,37 @@
],
"support": {
"issues": "https://github.com/minkphp/Mink/issues",
- "source": "https://github.com/minkphp/Mink/tree/v1.9.0"
+ "source": "https://github.com/minkphp/Mink/tree/v1.10.0"
},
- "time": "2021-10-11T11:58:47+00:00"
+ "time": "2022-03-28T14:22:43+00:00"
},
{
"name": "behat/mink-browserkit-driver",
- "version": "v2.0.0",
+ "version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/minkphp/MinkBrowserKitDriver.git",
- "reference": "0d3d9c3b375be6f3d44fd6d1e08ed28c104b3bd4"
+ "reference": "d2768e6c17b293d86d8fcff54cbb9e6ad938fee1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/0d3d9c3b375be6f3d44fd6d1e08ed28c104b3bd4",
- "reference": "0d3d9c3b375be6f3d44fd6d1e08ed28c104b3bd4",
+ "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/d2768e6c17b293d86d8fcff54cbb9e6ad938fee1",
+ "reference": "d2768e6c17b293d86d8fcff54cbb9e6ad938fee1",
"shasum": ""
},
"require": {
"behat/mink": "^1.9.0@dev",
"php": ">=7.2",
- "symfony/browser-kit": "^4.4 || ^5.0",
- "symfony/dom-crawler": "^4.4 || ^5.0"
+ "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0",
+ "symfony/dom-crawler": "^4.4 || ^5.0 || ^6.0"
},
"require-dev": {
"mink/driver-testsuite": "dev-master",
"phpunit/phpunit": "^8.5 || ^9.5",
- "symfony/error-handler": "^4.4 || ^5.0",
- "symfony/http-client": "^4.4 || ^5.0",
- "symfony/http-kernel": "^4.4 || ^5.0",
- "symfony/mime": "^4.4 || ^5.0",
+ "symfony/error-handler": "^4.4 || ^5.0 || ^6.0",
+ "symfony/http-client": "^4.4 || ^5.0 || ^6.0",
+ "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0",
+ "symfony/mime": "^4.4 || ^5.0 || ^6.0",
"yoast/phpunit-polyfills": "^1.0"
},
"type": "mink-driver",
@@ -6251,36 +5942,36 @@
],
"support": {
"issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues",
- "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v2.0.0"
+ "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v2.1.0"
},
- "time": "2021-12-13T10:31:49+00:00"
+ "time": "2022-03-28T14:33:51+00:00"
},
{
"name": "behat/transliterator",
- "version": "v1.3.0",
+ "version": "v1.5.0",
"source": {
"type": "git",
"url": "https://github.com/Behat/Transliterator.git",
- "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc"
+ "reference": "baac5873bac3749887d28ab68e2f74db3a4408af"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/Transliterator/zipball/3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc",
- "reference": "3c4ec1d77c3d05caa1f0bf8fb3aae4845005c7fc",
+ "url": "https://api.github.com/repos/Behat/Transliterator/zipball/baac5873bac3749887d28ab68e2f74db3a4408af",
+ "reference": "baac5873bac3749887d28ab68e2f74db3a4408af",
"shasum": ""
},
"require": {
- "php": ">=5.3.3"
+ "php": ">=7.2"
},
"require-dev": {
"chuyskywalker/rolling-curl": "^3.1",
"php-yaoi/php-yaoi": "^1.0",
- "phpunit/phpunit": "^4.8.36|^6.3"
+ "phpunit/phpunit": "^8.5.25 || ^9.5.19"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.2-dev"
+ "dev-master": "1.x-dev"
}
},
"autoload": {
@@ -6300,9 +5991,9 @@
],
"support": {
"issues": "https://github.com/Behat/Transliterator/issues",
- "source": "https://github.com/Behat/Transliterator/tree/v1.3.0"
+ "source": "https://github.com/Behat/Transliterator/tree/v1.5.0"
},
- "time": "2020-01-14T16:39:13+00:00"
+ "time": "2022-03-30T09:27:43+00:00"
},
{
"name": "composer/package-versions-deprecated",
@@ -6379,30 +6070,30 @@
},
{
"name": "composer/pcre",
- "version": "1.0.1",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560"
+ "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560",
- "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd",
+ "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd",
"shasum": ""
},
"require": {
- "php": "^5.3.2 || ^7.0 || ^8.0"
+ "php": "^7.4 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1.3",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^4.2 || ^5"
+ "symfony/phpunit-bridge": "^5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "1.x-dev"
+ "dev-main": "3.x-dev"
}
},
"autoload": {
@@ -6430,7 +6121,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/1.0.1"
+ "source": "https://github.com/composer/pcre/tree/3.0.0"
},
"funding": [
{
@@ -6446,20 +6137,20 @@
"type": "tidelift"
}
],
- "time": "2022-01-21T20:24:37+00:00"
+ "time": "2022-02-25T20:21:48+00:00"
},
{
"name": "composer/semver",
- "version": "3.2.9",
+ "version": "3.3.2",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649"
+ "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649",
- "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649",
+ "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9",
+ "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9",
"shasum": ""
},
"require": {
@@ -6511,7 +6202,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.2.9"
+ "source": "https://github.com/composer/semver/tree/3.3.2"
},
"funding": [
{
@@ -6527,24 +6218,24 @@
"type": "tidelift"
}
],
- "time": "2022-02-04T13:58:43+00:00"
+ "time": "2022-04-01T19:23:25+00:00"
},
{
"name": "composer/xdebug-handler",
- "version": "3.0.1",
+ "version": "3.0.3",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8"
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/12f1b79476638a5615ed00ea6adbb269cec96fd8",
- "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
+ "reference": "ced299686f41dce890debac69273b47ffe98a40c",
"shasum": ""
},
"require": {
- "composer/pcre": "^1",
+ "composer/pcre": "^1 || ^2 || ^3",
"php": "^7.2.5 || ^8.0",
"psr/log": "^1 || ^2 || ^3"
},
@@ -6577,7 +6268,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/3.0.1"
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
},
"funding": [
{
@@ -6593,7 +6284,7 @@
"type": "tidelift"
}
],
- "time": "2022-01-04T18:29:42+00:00"
+ "time": "2022-02-25T21:32:43+00:00"
},
{
"name": "dnoegel/php-xdg-base-dir",
@@ -6632,6 +6323,73 @@
},
"time": "2019-12-04T15:06:13+00:00"
},
+ {
+ "name": "fakerphp/faker",
+ "version": "v1.19.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/FakerPHP/Faker.git",
+ "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/d7f08a622b3346766325488aa32ddc93ccdecc75",
+ "reference": "d7f08a622b3346766325488aa32ddc93ccdecc75",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0",
+ "psr/container": "^1.0 || ^2.0",
+ "symfony/deprecation-contracts": "^2.2 || ^3.0"
+ },
+ "conflict": {
+ "fzaninotto/faker": "*"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.4.1",
+ "doctrine/persistence": "^1.3 || ^2.0",
+ "ext-intl": "*",
+ "symfony/phpunit-bridge": "^4.4 || ^5.2"
+ },
+ "suggest": {
+ "doctrine/orm": "Required to use Faker\\ORM\\Doctrine",
+ "ext-curl": "Required by Faker\\Provider\\Image to download images.",
+ "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.",
+ "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.",
+ "ext-mbstring": "Required for multibyte Unicode string functionality."
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "v1.19-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Faker\\": "src/Faker/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "François Zaninotto"
+ }
+ ],
+ "description": "Faker is a PHP library that generates fake data for you.",
+ "keywords": [
+ "data",
+ "faker",
+ "fixtures"
+ ],
+ "support": {
+ "issues": "https://github.com/FakerPHP/Faker/issues",
+ "source": "https://github.com/FakerPHP/Faker/tree/v1.19.0"
+ },
+ "time": "2022-02-02T17:38:57+00:00"
+ },
{
"name": "felixfbecker/advanced-json-rpc",
"version": "v3.2.1",
@@ -6679,16 +6437,16 @@
},
{
"name": "felixfbecker/language-server-protocol",
- "version": "1.5.1",
+ "version": "v1.5.2",
"source": {
"type": "git",
"url": "https://github.com/felixfbecker/php-language-server-protocol.git",
- "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730"
+ "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
- "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
+ "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842",
+ "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842",
"shasum": ""
},
"require": {
@@ -6729,9 +6487,9 @@
],
"support": {
"issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
- "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1"
+ "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2"
},
- "time": "2021-02-22T14:02:09+00:00"
+ "time": "2022-03-02T22:36:06+00:00"
},
{
"name": "friends-of-behat/mink-extension",
@@ -6868,110 +6626,124 @@
"time": "2021-12-24T13:14:59+00:00"
},
{
- "name": "fzaninotto/faker",
- "version": "v1.9.2",
+ "name": "hamcrest/hamcrest-php",
+ "version": "v2.0.1",
"source": {
"type": "git",
- "url": "https://github.com/fzaninotto/Faker.git",
- "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e"
+ "url": "https://github.com/hamcrest/hamcrest-php.git",
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/848d8125239d7dbf8ab25cb7f054f1a630e68c2e",
- "reference": "848d8125239d7dbf8ab25cb7f054f1a630e68c2e",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
+ "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
"shasum": ""
},
"require": {
- "php": "^5.3.3 || ^7.0"
+ "php": "^5.3|^7.0|^8.0"
+ },
+ "replace": {
+ "cordoval/hamcrest-php": "*",
+ "davedevelopment/hamcrest-php": "*",
+ "kodova/hamcrest-php": "*"
},
"require-dev": {
- "ext-intl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7",
- "squizlabs/php_codesniffer": "^2.9.2"
+ "phpunit/php-file-iterator": "^1.4 || ^2.0",
+ "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.9-dev"
+ "dev-master": "2.1-dev"
}
},
"autoload": {
- "psr-4": {
- "Faker\\": "src/Faker/"
- }
+ "classmap": [
+ "hamcrest"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "François Zaninotto"
- }
+ "BSD-3-Clause"
],
- "description": "Faker is a PHP library that generates fake data for you.",
+ "description": "This is the PHP port of Hamcrest Matchers",
"keywords": [
- "data",
- "faker",
- "fixtures"
+ "test"
],
"support": {
- "issues": "https://github.com/fzaninotto/Faker/issues",
- "source": "https://github.com/fzaninotto/Faker/tree/v1.9.2"
+ "issues": "https://github.com/hamcrest/hamcrest-php/issues",
+ "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
},
- "abandoned": true,
- "time": "2020-12-11T09:56:16+00:00"
+ "time": "2020-07-09T08:09:16+00:00"
},
{
- "name": "hamcrest/hamcrest-php",
- "version": "v2.0.1",
+ "name": "masterminds/html5",
+ "version": "2.7.5",
"source": {
"type": "git",
- "url": "https://github.com/hamcrest/hamcrest-php.git",
- "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3"
+ "url": "https://github.com/Masterminds/html5-php.git",
+ "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
- "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3",
+ "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f640ac1bdddff06ea333a920c95bbad8872429ab",
+ "reference": "f640ac1bdddff06ea333a920c95bbad8872429ab",
"shasum": ""
},
"require": {
- "php": "^5.3|^7.0|^8.0"
- },
- "replace": {
- "cordoval/hamcrest-php": "*",
- "davedevelopment/hamcrest-php": "*",
- "kodova/hamcrest-php": "*"
+ "ext-ctype": "*",
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "php": ">=5.3.0"
},
"require-dev": {
- "phpunit/php-file-iterator": "^1.4 || ^2.0",
- "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0"
+ "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1-dev"
+ "dev-master": "2.7-dev"
}
},
"autoload": {
- "classmap": [
- "hamcrest"
- ]
+ "psr-4": {
+ "Masterminds\\": "src"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "BSD-3-Clause"
+ "MIT"
],
- "description": "This is the PHP port of Hamcrest Matchers",
+ "authors": [
+ {
+ "name": "Matt Butcher",
+ "email": "technosophos@gmail.com"
+ },
+ {
+ "name": "Matt Farina",
+ "email": "matt@mattfarina.com"
+ },
+ {
+ "name": "Asmir Mustafic",
+ "email": "goetas@gmail.com"
+ }
+ ],
+ "description": "An HTML5 parser and serializer.",
+ "homepage": "http://masterminds.github.io/html5-php",
"keywords": [
- "test"
+ "HTML5",
+ "dom",
+ "html",
+ "parser",
+ "querypath",
+ "serializer",
+ "xml"
],
"support": {
- "issues": "https://github.com/hamcrest/hamcrest-php/issues",
- "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1"
+ "issues": "https://github.com/Masterminds/html5-php/issues",
+ "source": "https://github.com/Masterminds/html5-php/tree/2.7.5"
},
- "time": "2020-07-09T08:09:16+00:00"
+ "time": "2021-07-01T14:25:37+00:00"
},
{
"name": "mockery/mockery",
@@ -7047,25 +6819,29 @@
},
{
"name": "myclabs/deep-copy",
- "version": "1.10.2",
+ "version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
- "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614",
+ "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
+ "conflict": {
+ "doctrine/collections": "<1.6.8",
+ "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ },
"require-dev": {
- "doctrine/collections": "^1.0",
- "doctrine/common": "^2.6",
- "phpunit/phpunit": "^7.1"
+ "doctrine/collections": "^1.6.8",
+ "doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
"autoload": {
@@ -7090,7 +6866,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0"
},
"funding": [
{
@@ -7098,7 +6874,7 @@
"type": "tidelift"
}
],
- "time": "2020-11-13T09:40:50+00:00"
+ "time": "2022-03-03T13:19:32+00:00"
},
{
"name": "netresearch/jsonmapper",
@@ -7153,16 +6929,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v4.13.2",
+ "version": "v4.14.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
+ "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
- "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1",
+ "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1",
"shasum": ""
},
"require": {
@@ -7203,9 +6979,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0"
},
- "time": "2021-11-30T19:35:32+00:00"
+ "time": "2022-05-31T20:59:12+00:00"
},
{
"name": "openlss/lib-array2xml",
@@ -7322,16 +7098,16 @@
},
{
"name": "phar-io/version",
- "version": "3.1.1",
+ "version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/phar-io/version.git",
- "reference": "15a90844ad40f127afd244c0cad228de2a80052a"
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/version/zipball/15a90844ad40f127afd244c0cad228de2a80052a",
- "reference": "15a90844ad40f127afd244c0cad228de2a80052a",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
"shasum": ""
},
"require": {
@@ -7367,9 +7143,9 @@
"description": "Library for handling version information and constraints",
"support": {
"issues": "https://github.com/phar-io/version/issues",
- "source": "https://github.com/phar-io/version/tree/3.1.1"
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
},
- "time": "2022-02-07T21:56:48+00:00"
+ "time": "2022-02-21T01:04:05+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -7483,16 +7259,16 @@
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.6.0",
+ "version": "1.6.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
+ "reference": "77a32518733312af16a44300404e945338981de3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
- "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3",
+ "reference": "77a32518733312af16a44300404e945338981de3",
"shasum": ""
},
"require": {
@@ -7527,9 +7303,9 @@
"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.0"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
},
- "time": "2022-01-04T19:58:01+00:00"
+ "time": "2022-03-15T21:29:03+00:00"
},
{
"name": "phpspec/prophecy",
@@ -7600,16 +7376,16 @@
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.10",
+ "version": "9.2.15",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687"
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687",
- "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
+ "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f",
"shasum": ""
},
"require": {
@@ -7665,7 +7441,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15"
},
"funding": [
{
@@ -7673,7 +7449,7 @@
"type": "github"
}
],
- "time": "2021-12-05T09:12:13+00:00"
+ "time": "2022-03-07T09:28:20+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -7918,16 +7694,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.5.13",
+ "version": "9.5.20",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "597cb647654ede35e43b137926dfdfef0fb11743"
+ "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/597cb647654ede35e43b137926dfdfef0fb11743",
- "reference": "597cb647654ede35e43b137926dfdfef0fb11743",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba",
+ "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba",
"shasum": ""
},
"require": {
@@ -7943,7 +7719,7 @@
"phar-io/version": "^3.0.2",
"php": ">=7.3",
"phpspec/prophecy": "^1.12.1",
- "phpunit/php-code-coverage": "^9.2.7",
+ "phpunit/php-code-coverage": "^9.2.13",
"phpunit/php-file-iterator": "^3.0.5",
"phpunit/php-invoker": "^3.1.1",
"phpunit/php-text-template": "^2.0.3",
@@ -7957,7 +7733,7 @@
"sebastian/global-state": "^5.0.1",
"sebastian/object-enumerator": "^4.0.3",
"sebastian/resource-operations": "^3.0.3",
- "sebastian/type": "^2.3.4",
+ "sebastian/type": "^3.0",
"sebastian/version": "^3.0.2"
},
"require-dev": {
@@ -8005,7 +7781,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.13"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20"
},
"funding": [
{
@@ -8017,7 +7793,7 @@
"type": "github"
}
],
- "time": "2022-01-24T07:33:35+00:00"
+ "time": "2022-04-01T12:37:26+00:00"
},
{
"name": "roave/security-advisories",
@@ -8025,43 +7801,50 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "a74c203357d9b250a4019bc18e9a23a050e16bef"
+ "reference": "bf362097fbfe4580b99b696dd8208b24ffd112b2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/a74c203357d9b250a4019bc18e9a23a050e16bef",
- "reference": "a74c203357d9b250a4019bc18e9a23a050e16bef",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/bf362097fbfe4580b99b696dd8208b24ffd112b2",
+ "reference": "bf362097fbfe4580b99b696dd8208b24ffd112b2",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
+ "admidio/admidio": "<4.1.9",
"adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
"akaunting/akaunting": "<2.1.13",
+ "alextselegidis/easyappointments": "<=1.4.3",
"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",
"amphp/http": "<1.0.1",
"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",
"area17/twill": "<1.2.5|>=2,<2.5.3",
"asymmetricrypt/asymmetricrypt": ">=0,<9.9.99",
"aws/aws-sdk-php": ">=3,<3.2.1",
"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",
"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",
- "bolt/core": "<4.1.13",
+ "bolt/core": "<=4.2",
"bottelet/flarepoint": "<2.2.1",
"brightlocal/phpwhois": "<=4.2.5",
+ "brotkrueml/codehighlight": "<2.7",
"buddypress/buddypress": "<7.2.1",
"bugsnag/bugsnag-laravel": ">=2,<2.0.2",
"bytefury/crater": "<6.0.2",
"cachethq/cachet": "<2.5.1",
- "cakephp/cakephp": "<4.0.6",
+ "cakephp/cakephp": "<3.10.3|>=4,<4.0.6",
"cardgate/magento2": "<2.0.33",
"cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
"cartalyst/sentry": "<=2.1.6",
@@ -8070,17 +7853,22 @@
"cesnet/simplesamlphp-module-proxystatistics": "<3.1",
"codeception/codeception": "<3.1.3|>=4,<4.1.22",
"codeigniter/framework": "<=3.0.6",
- "codeigniter4/framework": "<4.1.8",
+ "codeigniter4/framework": "<4.1.9",
"codiad/codiad": "<=2.8.4",
- "composer/composer": "<1.10.23|>=2-alpha.1,<2.1.9",
- "concrete5/concrete5": "<8.5.5",
+ "composer/composer": "<1.10.26|>=2-alpha.1,<2.2.12|>=2.3,<2.3.5",
+ "concrete5/concrete5": "<9",
"concrete5/core": "<8.5.7",
"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/core": ">=2,<3.5.39",
- "contao/core-bundle": "<4.9.18|>=4.10,<4.11.7|= 4.10.0",
+ "contao/core-bundle": "<4.9.18|>=4.10,<4.11.7|>=4.13,<4.13.3|= 4.10.0",
"contao/listing-bundle": ">=4,<4.4.8",
- "craftcms/cms": "<3.7.14",
+ "contao/managed-edition": "<=1.5",
+ "craftcms/cms": "<3.7.36",
"croogo/croogo": "<3.0.7",
+ "cuyz/valinor": ">=0.5,<0.7",
+ "czproject/git-php": "<4.0.3",
+ "darylldoyle/safe-svg": "<1.9.10",
"datadog/dd-trace": ">=0.30,<0.30.2",
"david-garcia/phpwhois": "<=4.3.1",
"derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1",
@@ -8094,15 +7882,16 @@
"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": "<=14.0.5|>= 3.3.beta1, < 13.0.2",
- "dompdf/dompdf": ">=0.6,<0.6.2",
- "drupal/core": ">=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.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",
"dweeves/magmi": "<=0.7.24",
"ecodev/newsletter": "<=4",
+ "ectouch/ectouch": "<=2.7.2",
"elgg/elgg": "<3.3.24|>=4,<4.0.5",
"endroid/qr-code-bundle": "<3.4.2",
- "enshrined/svg-sanitize": "<0.13.1",
+ "enshrined/svg-sanitize": "<0.15",
"erusev/parsedown": "<1.7.2",
"ether/logs": "<3.0.4",
"ezsystems/demobundle": ">=5.4,<5.4.6.1",
@@ -8110,37 +7899,43 @@
"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/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.25",
+ "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.27",
"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.1",
+ "ezsystems/ezplatform-kernel": "<=1.2.5|>=1.3,<1.3.19",
"ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
"ezsystems/ezplatform-richtext": ">=2.3,<=2.3.7",
"ezsystems/ezplatform-user": ">=1,<1.0.1",
- "ezsystems/ezpublish-kernel": "<=6.13.8.1|>=7,<7.5.26",
+ "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/platform-ui-assets-bundle": ">=4.2,<4.2.3",
"ezsystems/repository-forms": ">=2.3,<2.3.2.1",
"ezyang/htmlpurifier": "<4.1.1",
"facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
+ "facturascripts/facturascripts": "<=2022.8",
"feehi/cms": "<=2.1.1",
"feehi/feehicms": "<=0.1.3",
+ "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",
"fluidtypo3/vhs": "<5.1.1",
+ "fof/upload": "<1.2.3",
"fooman/tcpdf": "<6.2.22",
- "forkcms/forkcms": "<=5.9.2",
+ "forkcms/forkcms": "<5.11.1",
"fossar/tcpdf-parser": "<6.2.22",
- "francoisjacquet/rosariosis": "<8.1.1",
+ "francoisjacquet/rosariosis": "<9",
"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",
"fuel/core": "<1.8.1",
"gaoming13/wechat-php-sdk": "<=1.10.2",
- "getgrav/grav": "<1.7.28",
+ "genix/cms": "<=1.1.11",
+ "getgrav/grav": "<1.7.33",
"getkirby/cms": "<3.5.8",
"getkirby/panel": "<2.5.14",
"gilacms/gila": "<=1.11.4",
@@ -8150,11 +7945,14 @@
"gree/jose": "<=2.2",
"gregwar/rst": "<1.0.3",
"grumpydictator/firefly-iii": "<5.6.5",
- "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.1",
- "helloxz/imgurl": "<=2.31",
+ "guzzlehttp/guzzle": "<6.5.7|>=7,<7.4.4",
+ "guzzlehttp/psr7": "<1.8.4|>=2,<2.1.1",
+ "helloxz/imgurl": "= 2.31|<=2.31",
"hillelcoren/invoice-ninja": "<5.3.35",
"hjue/justwriting": "<=1",
"hov/jobfair": "<1.0.13|>=2,<2.0.2",
+ "hyn/multi-tenant": ">=5.6,<5.7.2",
+ "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4",
"ibexa/post-install": "<=1.0.4",
"icecoder/icecoder": "<=8.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",
@@ -8162,13 +7960,16 @@
"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.2",
+ "impresscms/impresscms": "<=1.4.3",
"in2code/femanager": "<5.5.1|>=6,<6.3.1",
"intelliants/subrion": "<=4.2.1",
"ivankristianto/phpwhois": "<=4.3",
"jackalope/jackalope-doctrine-dbal": "<1.7.4",
"james-heinrich/getid3": "<1.9.21",
- "joomla/archive": "<1.1.10",
+ "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/input": ">=2,<2.0.2",
"joomla/session": "<1.3.1",
"jsdecena/laracom": "<2.0.9",
"jsmitty12/phpwhois": "<5.1",
@@ -8180,7 +7981,9 @@
"la-haute-societe/tcpdf": "<6.2.22",
"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/socialite": ">=1,<1.0.99|>=2,<2.0.10",
"latte/latte": "<2.10.8",
"lavalite/cms": "<=5.8",
@@ -8188,46 +7991,52 @@
"league/commonmark": "<0.18.3",
"league/flysystem": "<1.1.4|>=2,<2.1.1",
"lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3",
- "librenms/librenms": "<=21.11",
+ "librenms/librenms": "<22.4",
"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",
"marcwillmann/turn": "<0.3.3",
- "mautic/core": "<4|= 2.13.1",
+ "matyhtf/framework": "<3.0.6",
+ "mautic/core": "<4.3|= 2.13.1",
"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.2.11",
+ "microweber/microweber": "<1.3",
"miniorange/miniorange-saml": "<1.4.3",
"mittwald/typo3_forum": "<1.2.1",
- "modx/revolution": "<2.8",
+ "modx/revolution": "<= 2.8.3-pl|<2.8",
+ "mojo42/jirafeau": "<4.4",
"monolog/monolog": ">=1.8,<1.12",
- "moodle/moodle": "<3.9.11|>=3.10-beta,<3.10.8|>=3.11,<3.11.5",
+ "moodle/moodle": "<4.0.1",
"mustache/mustache": ">=2,<2.14.1",
"namshi/jose": "<2.2",
"neoan3-apps/template": "<1.1.1",
+ "neorazorx/facturascripts": "<2022.4",
"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,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.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/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",
+ "noumo/easyii": "<=0.9",
"nukeviet/nukeviet": "<4.3.4",
- "nystudio107/craft-seomatic": "<3.3",
+ "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/rain": "<1.0.472|>=1.1,<1.1.2",
- "october/system": "<1.0.473|>=1.1,<1.1.6|>=2.1,<2.1.12",
+ "october/system": "<1.0.475|>=1.1,<1.1.11|>=2,<2.1.27",
"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",
"openid/php-openid": "<2.3",
"openmage/magento-lts": "<19.4.15|>=20,<20.0.13",
@@ -8241,22 +8050,25 @@
"passbolt/passbolt_api": "<2.11",
"paypal/merchant-sdk-php": "<3.12",
"pear/archive_tar": "<1.4.14",
+ "pear/crypt_gpg": "<1.6.7",
"pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1",
"personnummer/personnummer": "<3.0.2",
"phanan/koel": "<5.1.4",
"phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7",
"phpmailer/phpmailer": "<6.5",
"phpmussel/phpmussel": ">=1,<1.6",
- "phpmyadmin/phpmyadmin": "<4.9.8|>=5,<5.0.3|>=5.1,<5.1.2",
- "phpoffice/phpexcel": "<1.8.2",
+ "phpmyadmin/phpmyadmin": "<5.1.3",
+ "phpoffice/phpexcel": "<1.8",
"phpoffice/phpspreadsheet": "<1.16",
"phpseclib/phpseclib": "<2.0.31|>=3,<3.0.7",
"phpservermon/phpservermon": "<=3.5.2",
- "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3",
+ "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3",
"phpwhois/phpwhois": "<=4.2.5",
"phpxmlrpc/extras": "<0.6.1",
- "pimcore/pimcore": "<=10.3",
- "pocketmine/pocketmine-mp": "<4.0.7",
+ "pimcore/data-hub": "<1.2.4",
+ "pimcore/pimcore": "<10.4",
+ "pocketmine/bedrock-protocol": "<8.0.2",
+ "pocketmine/pocketmine-mp": ">= 4.0.0-BETA5, < 4.4.2|<4.2.10",
"pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.1",
"prestashop/contactform": ">1.0.1,<4.3",
@@ -8266,7 +8078,7 @@
"prestashop/ps_emailsubscription": "<2.6.1",
"prestashop/ps_facetedsearch": "<3.4.1",
"prestashop/ps_linklist": "<3.1",
- "privatebin/privatebin": "<1.2.2|>=1.3,<1.3.2",
+ "privatebin/privatebin": "<1.4",
"propel/propel": ">=2-alpha.1,<=2-alpha.7",
"propel/propel1": ">=1,<=1.7.1",
"pterodactyl/panel": "<1.7",
@@ -8274,28 +8086,34 @@
"pusher/pusher-php-server": "<2.2.1",
"pwweb/laravel-core": "<=0.3.6-beta",
"rainlab/debugbar-plugin": "<3.1",
- "remdex/livehelperchat": "<3.93",
+ "remdex/livehelperchat": "<3.99",
"rmccue/requests": ">=1.6,<1.8",
"robrichards/xmlseclibs": "<3.0.4",
+ "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",
"sensiolabs/connect": "<4.2.3",
"serluck/phpwhois": "<=4.2.6",
- "shopware/core": "<=6.4.6",
- "shopware/platform": "<=6.4.6",
+ "shopware/core": "<=6.4.9",
+ "shopware/platform": "<=6.4.9",
"shopware/production": "<=6.3.5.2",
- "shopware/shopware": "<5.7.7",
- "showdoc/showdoc": "<=2.10.2",
+ "shopware/shopware": "<5.7.9",
+ "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/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",
+ "silverstripe/graphql": "<3.5.2|>=4-alpha.1,<4-alpha.2|= 4.0.0-alpha1",
"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/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
"silverstripe/userforms": "<3",
@@ -8305,14 +8123,15 @@
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"simplito/elliptic-php": "<1.0.6",
"slim/slim": "<2.6",
- "smarty/smarty": "<3.1.43|>=4,<4.0.3",
- "snipe/snipe-it": "<=5.3.7",
+ "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",
"socalnick/scn-social-auth": "<1.15.2",
"socialiteproviders/steam": "<1.1",
"spipu/html2pdf": "<5.2.4",
"spoonity/tcpdf": "<6.2.22",
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
- "ssddanbrown/bookstack": "<21.12.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",
@@ -8320,10 +8139,10 @@
"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",
- "sylius/grid-bundle": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1",
+ "sylius/grid-bundle": "<1.10.1",
"sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
"sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
- "sylius/sylius": "<1.6.9|>=1.7,<1.7.9|>=1.8,<1.8.3|>=1.9,<1.9.5",
+ "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-versionedfiles": "<=2.0.3",
@@ -8348,7 +8167,7 @@
"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,<3.4.48|>=4,<4.4.23|>=5,<5.2.8|>=5.3,<5.3.2",
+ "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/translation": ">=2,<2.0.17",
@@ -8358,6 +8177,7 @@
"symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
"t3/dce": ">=2.2,<2.6.2",
"t3g/svg-sanitizer": "<1.0.3",
+ "tastyigniter/tastyigniter": "<3.3",
"tecnickcom/tcpdf": "<6.2.22",
"terminal42/contao-tablelookupwizard": "<3.3.5",
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
@@ -8365,12 +8185,12 @@
"theonedemon/phpwhois": "<=4.2.5",
"tinymce/tinymce": "<5.10",
"titon/framework": ">=0,<9.9.99",
- "topthink/framework": "<6.0.9",
+ "topthink/framework": "<6.0.12",
"topthink/think": "<=6.0.9",
"topthink/thinkphp": "<=3.2.3",
- "tribalsystems/zenario": "<8.8.53370",
+ "tribalsystems/zenario": "<9.2.55826",
"truckersmp/phpwhois": "<=4.3.1",
- "twig/twig": "<1.38|>=2,<2.14.11|>3,<3.3.8",
+ "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",
"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",
@@ -8386,7 +8206,7 @@
"usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
"vanilla/safecurl": "<0.9.2",
"verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
- "vrana/adminer": "<4.7.9",
+ "vrana/adminer": "<4.8.1",
"wallabag/tcpdf": "<6.2.22",
"wanglelecc/laracms": "<=1.0.3",
"web-auth/webauthn-framework": ">=3.3,<3.3.4",
@@ -8394,7 +8214,11 @@
"wikimedia/parsoid": "<0.12.2",
"willdurand/js-translation-bundle": "<2.1.1",
"wp-cli/wp-cli": "<2.5",
- "yetiforce/yetiforce-crm": "<=6.3",
+ "wp-graphql/wp-graphql": "<0.3.5",
+ "wpanel/wpanel4-cms": "<=4.3.1",
+ "wwbn/avideo": "<=11.6",
+ "yeswiki/yeswiki": "<4.1",
+ "yetiforce/yetiforce-crm": "<6.4",
"yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2",
"yiisoft/yii": ">=1.1.14,<1.1.15",
@@ -8413,10 +8237,10 @@
"zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
"zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
- "zendframework/zend-diactoros": ">=1,<1.8.4",
- "zendframework/zend-feed": ">=1,<2.10.3",
+ "zendframework/zend-diactoros": "<1.8.4",
+ "zendframework/zend-feed": "<2.10.3",
"zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1",
- "zendframework/zend-http": ">=1,<2.8.1",
+ "zendframework/zend-http": "<2.8.1",
"zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
"zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
"zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
@@ -8467,7 +8291,7 @@
"type": "tidelift"
}
],
- "time": "2022-02-11T21:12:37+00:00"
+ "time": "2022-06-10T00:15:15+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -8835,16 +8659,16 @@
},
{
"name": "sebastian/environment",
- "version": "5.1.3",
+ "version": "5.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
- "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7",
+ "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7",
"shasum": ""
},
"require": {
@@ -8886,7 +8710,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
- "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4"
},
"funding": [
{
@@ -8894,7 +8718,7 @@
"type": "github"
}
],
- "time": "2020-09-28T05:52:38+00:00"
+ "time": "2022-04-03T09:37:03+00:00"
},
{
"name": "sebastian/exporter",
@@ -9326,28 +9150,28 @@
},
{
"name": "sebastian/type",
- "version": "2.3.4",
+ "version": "3.0.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
+ "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
- "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
+ "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad",
"shasum": ""
},
"require": {
"php": ">=7.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^9.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.3-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -9370,7 +9194,7 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
+ "source": "https://github.com/sebastianbergmann/type/tree/3.0.0"
},
"funding": [
{
@@ -9378,7 +9202,7 @@
"type": "github"
}
],
- "time": "2021-06-15T12:49:02+00:00"
+ "time": "2022-03-15T09:54:48+00:00"
},
{
"name": "sebastian/version",
@@ -9435,28 +9259,27 @@
},
{
"name": "symfony/browser-kit",
- "version": "v5.4.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "18e73179c6a33d520de1b644941eba108dd811ad"
+ "reference": "b839cef6e6526bd2090efe92c218d8c7479a51e0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/18e73179c6a33d520de1b644941eba108dd811ad",
- "reference": "18e73179c6a33d520de1b644941eba108dd811ad",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/b839cef6e6526bd2090efe92c218d8c7479a51e0",
+ "reference": "b839cef6e6526bd2090efe92c218d8c7479a51e0",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/dom-crawler": "^4.4|^5.0|^6.0",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1",
+ "symfony/dom-crawler": "^5.4|^6.0"
},
"require-dev": {
- "symfony/css-selector": "^4.4|^5.0|^6.0",
- "symfony/http-client": "^4.4|^5.0|^6.0",
- "symfony/mime": "^4.4|^5.0|^6.0",
- "symfony/process": "^4.4|^5.0|^6.0"
+ "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": ""
@@ -9487,7 +9310,7 @@
"description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/browser-kit/tree/v5.4.3"
+ "source": "https://github.com/symfony/browser-kit/tree/v6.1.0"
},
"funding": [
{
@@ -9503,25 +9326,24 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-05-06T20:04:05+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v5.4.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e"
+ "reference": "05c40f02f621609404b8820ff8bc39acb46e19cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/05c40f02f621609404b8820ff8bc39acb46e19cf",
+ "reference": "05c40f02f621609404b8820ff8bc39acb46e19cf",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.1"
},
"type": "library",
"autoload": {
@@ -9553,75 +9375,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.4.3"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2022-01-02T09:53:40+00:00"
- },
- {
- "name": "symfony/debug",
- "version": "v4.4.37",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/debug.git",
- "reference": "5de6c6e7f52b364840e53851c126be4d71e60470"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/debug/zipball/5de6c6e7f52b364840e53851c126be4d71e60470",
- "reference": "5de6c6e7f52b364840e53851c126be4d71e60470",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1.3",
- "psr/log": "^1|^2|^3"
- },
- "conflict": {
- "symfony/http-kernel": "<3.4"
- },
- "require-dev": {
- "symfony/http-kernel": "^3.4|^4.0|^5.0"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Debug\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides tools to ease debugging PHP code",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/debug/tree/v4.4.37"
+ "source": "https://github.com/symfony/css-selector/tree/v6.1.0"
},
"funding": [
{
@@ -9637,35 +9391,30 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:41:36+00:00"
+ "time": "2022-02-25T11:15:52+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v5.4.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "2634381fdf27a2a0a8ac8eb404025eb656c65d0c"
+ "reference": "baacc99edd169bd8e06723f4c38150ef97feca0f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2634381fdf27a2a0a8ac8eb404025eb656c65d0c",
- "reference": "2634381fdf27a2a0a8ac8eb404025eb656c65d0c",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/baacc99edd169bd8e06723f4c38150ef97feca0f",
+ "reference": "baacc99edd169bd8e06723f4c38150ef97feca0f",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
+ "masterminds/html5": "^2.6",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "^1.16"
- },
- "conflict": {
- "masterminds/html5": "<2.6"
+ "symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
- "masterminds/html5": "^2.6",
- "symfony/css-selector": "^4.4|^5.0|^6.0"
+ "symfony/css-selector": "^5.4|^6.0"
},
"suggest": {
"symfony/css-selector": ""
@@ -9696,7 +9445,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v5.4.3"
+ "source": "https://github.com/symfony/dom-crawler/tree/v6.1.0"
},
"funding": [
{
@@ -9712,33 +9461,29 @@
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-05-04T14:48:14+00:00"
},
{
"name": "symfony/proxy-manager-bridge",
- "version": "v4.4.18",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/proxy-manager-bridge.git",
- "reference": "373d72703ef24b6a22c8592f53c7f0e333d9f038"
+ "reference": "bcb3e7a28ee373bd64ecd2a2289a64c5860716af"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/373d72703ef24b6a22c8592f53c7f0e333d9f038",
- "reference": "373d72703ef24b6a22c8592f53c7f0e333d9f038",
+ "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/bcb3e7a28ee373bd64ecd2a2289a64c5860716af",
+ "reference": "bcb3e7a28ee373bd64ecd2a2289a64c5860716af",
"shasum": ""
},
"require": {
- "composer/package-versions-deprecated": "^1.8",
- "ocramius/proxy-manager": "~2.1",
- "php": ">=7.1.3",
- "symfony/dependency-injection": "^4.0|^5.0"
- },
- "conflict": {
- "zendframework/zend-eventmanager": "2.6.0"
+ "friendsofphp/proxy-manager-lts": "^1.0.2",
+ "php": ">=8.1",
+ "symfony/dependency-injection": "^5.4|^6.0"
},
"require-dev": {
- "symfony/config": "^3.4|^4.0|^5.0"
+ "symfony/config": "^5.4|^6.0"
},
"type": "symfony-bridge",
"autoload": {
@@ -9763,10 +9508,10 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony ProxyManager Bridge",
+ "description": "Provides integration for ProxyManager with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/proxy-manager-bridge/tree/v4.4.18"
+ "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.1.0"
},
"funding": [
{
@@ -9782,24 +9527,24 @@
"type": "tidelift"
}
],
- "time": "2020-11-12T13:19:35+00:00"
+ "time": "2022-03-02T13:21:45+00:00"
},
{
"name": "symfony/translation",
- "version": "v6.0.3",
+ "version": "v6.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d"
+ "reference": "b254416631615bc6fe49b0a67f18658827288147"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/71bb15335798f8c4da110911bcf2d2fead7a430d",
- "reference": "71bb15335798f8c4da110911bcf2d2fead7a430d",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/b254416631615bc6fe49b0a67f18658827288147",
+ "reference": "b254416631615bc6fe49b0a67f18658827288147",
"shasum": ""
},
"require": {
- "php": ">=8.0.2",
+ "php": ">=8.1",
"symfony/polyfill-mbstring": "~1.0",
"symfony/translation-contracts": "^2.3|^3.0"
},
@@ -9824,6 +9569,7 @@
"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"
},
@@ -9861,7 +9607,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v6.0.3"
+ "source": "https://github.com/symfony/translation/tree/v6.1.0"
},
"funding": [
{
@@ -9877,7 +9623,7 @@
"type": "tidelift"
}
],
- "time": "2022-01-07T00:29:03+00:00"
+ "time": "2022-05-11T12:12:29+00:00"
},
{
"name": "theseer/tokenizer",
@@ -9931,16 +9677,16 @@
},
{
"name": "vimeo/psalm",
- "version": "4.20.0",
+ "version": "4.23.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "f82a70e7edfc6cf2705e9374c8a0b6a974a779ed"
+ "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/f82a70e7edfc6cf2705e9374c8a0b6a974a779ed",
- "reference": "f82a70e7edfc6cf2705e9374c8a0b6a974a779ed",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/f1fe6ff483bf325c803df9f510d09a03fd796f88",
+ "reference": "f1fe6ff483bf325c803df9f510d09a03fd796f88",
"shasum": ""
},
"require": {
@@ -9965,6 +9711,7 @@
"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"
},
"provide": {
@@ -10031,27 +9778,27 @@
],
"support": {
"issues": "https://github.com/vimeo/psalm/issues",
- "source": "https://github.com/vimeo/psalm/tree/4.20.0"
+ "source": "https://github.com/vimeo/psalm/tree/4.23.0"
},
- "time": "2022-02-03T17:03:47+00:00"
+ "time": "2022-04-28T17:35:49+00:00"
},
{
"name": "webmozart/assert",
- "version": "1.10.0",
+ "version": "1.11.0",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
- "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
- "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0",
- "symfony/polyfill-ctype": "^1.8"
+ "ext-ctype": "*",
+ "php": "^7.2 || ^8.0"
},
"conflict": {
"phpstan/phpstan": "<0.12.20",
@@ -10089,9 +9836,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ "source": "https://github.com/webmozarts/assert/tree/1.11.0"
},
- "time": "2021-03-09T10:59:23+00:00"
+ "time": "2022-06-03T18:03:27+00:00"
},
{
"name": "webmozart/path-util",
@@ -10163,5 +9910,5 @@
"platform-dev": {
"ext-xdebug": "*"
},
- "plugin-api-version": "2.2.0"
+ "plugin-api-version": "2.3.0"
}
diff --git a/docker-compose.yml b/docker-compose.yml
index 69e1555b2..d720f5b1e 100755
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -2,19 +2,19 @@ version: '3'
services:
shared_rabbitmq:
- container_name: codelytv-php_ddd_skeleton-rabbitmq
- image: 'rabbitmq:3.7-management'
+ container_name: codely-php_ddd_skeleton-rabbitmq
+ image: 'rabbitmq:3.10.5-management'
restart: unless-stopped
ports:
- - 5630:5672
- - 8090:15672
+ - "5630:5672"
+ - "8090:15672"
environment:
- - RABBITMQ_DEFAULT_USER=codelytv
+ - RABBITMQ_DEFAULT_USER=codely
- RABBITMQ_DEFAULT_PASS=c0d3ly
shared_prometheus:
- container_name: codelytv-php_ddd_skeleton-prometheus
- image: prom/prometheus:v2.1.0
+ container_name: codely-php_ddd_skeleton-prometheus
+ image: prom/prometheus:v2.36.1
volumes:
- ./etc/prometheus/:/etc/prometheus/
command:
@@ -23,13 +23,13 @@ services:
- '--web.console.libraries=/usr/share/prometheus/console_libraries'
- '--web.console.templates=/usr/share/prometheus/consoles'
ports:
- - 9999:9090
+ - "9999:9090"
mooc_mysql:
- container_name: codelytv-php_ddd_skeleton-mooc-mysql
- image: mariadb:10.6
+ container_name: codely-php_ddd_skeleton-mooc-mysql
+ image: mariadb:10.7.4
ports:
- - 3360:3306
+ - "3360:3306"
environment:
- MYSQL_ROOT_PASSWORD=
- MYSQL_ALLOW_EMPTY_PASSWORD=yes
@@ -41,18 +41,18 @@ services:
command: ["--default-authentication-plugin=mysql_native_password"]
backoffice_elasticsearch:
- container_name: codelytv-php_ddd_skeleton-backoffice-elastic
- image: docker.elastic.co/elasticsearch/elasticsearch:6.8.10
+ container_name: codely-php_ddd_skeleton-backoffice-elastic
+ image: docker.elastic.co/elasticsearch/elasticsearch:8.2.3
ports:
- - 9200:9200
- - 9300:9300
+ - "9200:9200"
+ - "9300:9300"
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
backoffice_backend_php:
- container_name: codelytv-php_ddd_skeleton-backoffice_backend-php
+ container_name: codely-php_ddd_skeleton-backoffice_backend-php
user: "${UID}:${GID}"
build:
context: .
@@ -70,7 +70,7 @@ services:
command: symfony serve --dir=apps/backoffice/backend/public --port=8040 --force-php-discovery
backoffice_frontend_php:
- container_name: codelytv-php_ddd_skeleton-backoffice_frontend-php
+ container_name: codely-php_ddd_skeleton-backoffice_frontend-php
user: "${UID}:${GID}"
build:
context: .
@@ -89,7 +89,7 @@ services:
command: symfony serve --dir=apps/backoffice/frontend/public --port=8041 --force-php-discovery
mooc_backend_php:
- container_name: codelytv-php_ddd_skeleton-mooc_backend-php
+ container_name: codely-php_ddd_skeleton-mooc_backend-php
user: "${UID}:${GID}"
build:
context: .
diff --git a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
index 52ec54166..498fc2bcb 100644
--- a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
+++ b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
@@ -6,14 +6,13 @@
use CodelyTv\Shared\Infrastructure\Doctrine\Dbal\DbalCustomTypesRegistrar;
use Doctrine\DBAL\DriverManager;
-use Doctrine\DBAL\Schema\MySqlSchemaManager;
+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\Tools\Setup;
+use Doctrine\ORM\ORMSetup;
use RuntimeException;
-use Symfony\Component\Cache\Adapter\ArrayAdapter;
-use Symfony\Component\Cache\DoctrineProvider;
use function Lambdish\Phunctional\dissoc;
final class DoctrineEntityManagerFactory
@@ -23,12 +22,13 @@ final class DoctrineEntityManagerFactory
];
public static function create(
- array $parameters,
- array $contextPrefixes,
- bool $isDevMode,
+ array $parameters,
+ array $contextPrefixes,
+ bool $isDevMode,
string $schemaFile,
- array $dbalCustomTypesClasses
- ): EntityManager {
+ array $dbalCustomTypesClasses
+ ): EntityManager
+ {
if ($isDevMode) {
static::generateDatabaseIfNotExists($parameters, $schemaFile);
}
@@ -45,10 +45,12 @@ private static function generateDatabaseIfNotExists(array $parameters, string $s
$databaseName = $parameters['dbname'];
$parametersWithoutDatabaseName = dissoc($parameters, 'dbname');
$connection = DriverManager::getConnection($parametersWithoutDatabaseName);
- $schemaManager = new MySqlSchemaManager($connection);
+ $platform = new MariaDBPlatform();
+ $schemaManager = new MySQLSchemaManager($connection, $platform);
if (!self::databaseExists($databaseName, $schemaManager)) {
$schemaManager->createDatabase($databaseName);
+
$connection->exec(sprintf('USE %s', $databaseName));
$connection->exec(file_get_contents(realpath($schemaFile)));
}
@@ -70,7 +72,7 @@ private static function ensureSchemaFileExists(string $schemaFile): void
private static function createConfiguration(array $contextPrefixes, bool $isDevMode): Configuration
{
- $config = Setup::createConfiguration($isDevMode, null, new DoctrineProvider(new ArrayAdapter()));
+ $config = ORMSetup::createConfiguration($isDevMode);
$config->setMetadataDriverImpl(new SimplifiedXmlDriver(array_merge(self::$sharedPrefixes, $contextPrefixes)));
diff --git a/src/Shared/Infrastructure/Symfony/FlashSession.php b/src/Shared/Infrastructure/Symfony/FlashSession.php
index c19977faa..812c2a8b0 100644
--- a/src/Shared/Infrastructure/Symfony/FlashSession.php
+++ b/src/Shared/Infrastructure/Symfony/FlashSession.php
@@ -5,15 +5,15 @@
namespace CodelyTv\Shared\Infrastructure\Symfony;
use CodelyTv\Shared\Domain\Utils;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
+use Symfony\Component\HttpFoundation\RequestStack;
final class FlashSession
{
private static array $flashes = [];
- public function __construct(SessionInterface $session)
+ public function __construct(RequestStack $requestStack)
{
- self::$flashes = Utils::dot($session->getFlashBag()->all());
+ self::$flashes = Utils::dot($requestStack->getSession()->getFlashBag()->all());
}
public function get(string $key, $default = null)
diff --git a/src/Shared/Infrastructure/Symfony/WebController.php b/src/Shared/Infrastructure/Symfony/WebController.php
index 0265b7b31..8d8808b3a 100644
--- a/src/Shared/Infrastructure/Symfony/WebController.php
+++ b/src/Shared/Infrastructure/Symfony/WebController.php
@@ -8,8 +8,8 @@
use CodelyTv\Shared\Domain\Bus\Query\QueryBus;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response as SymfonyResponse;
-use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Validator\ConstraintViolationListInterface;
use Twig\Environment;
@@ -17,11 +17,11 @@
abstract class WebController extends ApiController
{
public function __construct(
- private Environment $twig,
- private RouterInterface $router,
- private SessionInterface $session,
- QueryBus $queryBus,
- CommandBus $commandBus,
+ private Environment $twig,
+ private RouterInterface $router,
+ private RequestStack $requestStack,
+ QueryBus $queryBus,
+ CommandBus $commandBus,
ApiExceptionsHttpStatusCodeMapping $exceptionHandler
) {
parent::__construct($queryBus, $commandBus, $exceptionHandler);
@@ -68,7 +68,7 @@ private function formatFlashErrors(ConstraintViolationListInterface $violations)
private function addFlashFor(string $prefix, array $messages): void
{
foreach ($messages as $key => $message) {
- $this->session->getFlashBag()->set($prefix . '.' . $key, $message);
+ $this->requestStack->getSession()->getFlashBag()->set($prefix . '.' . $key, $message);
}
}
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
index 7b7a2e92f..f16af1891 100644
--- a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
+++ b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
@@ -29,12 +29,12 @@ protected function assertSimilar($expected, $actual): void
protected function service(string $id): mixed
{
- return self::$container->get($id);
+ return self::getContainer()->get($id);
}
protected function parameter($parameter): mixed
{
- return self::$container->getParameter($parameter);
+ return self::getContainer()->getParameter($parameter);
}
protected function clearUnitOfWork(): void
From 523563a3d2c8f8539815d231e0f55c293c0c3507 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Thu, 16 Jun 2022 14:25:30 +0200
Subject: [PATCH 09/40] ci: add lint (#312)
* feat: add php cs fixer
* feat: pass php cs fixer
* ci: add lint step
---
.github/workflows/ci.yml | 3 +
.gitignore | 2 +
.php-cs-fixer.dist.php | 23 +
Makefile | 4 +
.../Courses/CoursesGetController.php | 4 +-
.../MySql/ConsumeMySqlDomainEventsCommand.php | 6 +-
.../ConsumeRabbitMqDomainEventsCommand.php | 2 +-
...SupervisorRabbitMqConsumerFilesCommand.php | 22 +-
composer.json | 3 +-
composer.lock | 405 +++++++++++++++++-
.../Application/Store/DomainEventStorer.php | 2 +-
.../Store/StoreDomainEventOnOccurred.php | 2 +-
.../Domain/AnalyticsDomainEvent.php | 8 +-
.../Domain/AnalyticsDomainEventBody.php | 2 +-
.../Authenticate/AuthenticateUserCommand.php | 2 +-
.../AuthenticateUserCommandHandler.php | 2 +-
.../Authenticate/UserAuthenticator.php | 2 +-
src/Backoffice/Auth/Domain/AuthUser.php | 2 +-
.../Application/BackofficeCourseResponse.php | 2 +-
.../Application/BackofficeCoursesResponse.php | 2 +-
.../Create/BackofficeCourseCreator.php | 2 +-
.../CreateBackofficeCourseOnCourseCreated.php | 2 +-
.../AllBackofficeCoursesSearcher.php | 4 +-
...SearchAllBackofficeCoursesQueryHandler.php | 2 +-
.../BackofficeCoursesByCriteriaSearcher.php | 4 +-
...SearchBackofficeCoursesByCriteriaQuery.php | 10 +-
...ackofficeCoursesByCriteriaQueryHandler.php | 2 +-
.../Courses/Domain/BackofficeCourse.php | 2 +-
...lasticsearchBackofficeCourseRepository.php | 2 +-
...nMemoryCacheBackofficeCourseRepository.php | 2 +-
.../Application/Create/CourseCreator.php | 2 +-
.../Create/CreateCourseCommand.php | 2 +-
.../Create/CreateCourseCommandHandler.php | 2 +-
.../Courses/Application/Find/CourseFinder.php | 2 +-
.../Application/Update/CourseRenamer.php | 4 +-
src/Mooc/Courses/Domain/Course.php | 2 +-
.../Domain/CourseCreatedDomainEvent.php | 4 +-
src/Mooc/Courses/Domain/CourseNotExist.php | 2 +-
.../Application/Find/CoursesCounterFinder.php | 2 +-
.../Find/CoursesCounterResponse.php | 2 +-
.../Find/FindCoursesCounterQueryHandler.php | 2 +-
.../Increment/CoursesCounterIncrementer.php | 6 +-
...IncrementCoursesCounterOnCourseCreated.php | 2 +-
.../CoursesCounter/Domain/CoursesCounter.php | 4 +-
.../CoursesCounterIncrementedDomainEvent.php | 2 +-
.../Persistence/Doctrine/CourseIdsType.php | 4 +-
.../Doctrine/DbalTypesSearcher.php | 6 +-
.../Doctrine/DoctrinePrefixesSearcher.php | 6 +-
.../Application/Create/CreateVideoCommand.php | 10 +-
.../Create/CreateVideoCommandHandler.php | 4 +-
.../Application/Create/VideoCreator.php | 2 +-
.../Application/Find/FindVideoQuery.php | 2 +-
.../Videos/Application/Find/VideoFinder.php | 2 +-
.../Videos/Application/Find/VideoResponse.php | 10 +-
.../Application/Trim/TrimVideoCommand.php | 4 +-
.../Trim/TrimVideoCommandHandler.php | 6 +-
.../Videos/Application/Trim/VideoTrimmer.php | 2 +-
.../Application/Update/VideoTitleUpdater.php | 4 +-
src/Mooc/Videos/Domain/Video.php | 14 +-
.../Videos/Domain/VideoCreatedDomainEvent.php | 8 +-
src/Mooc/Videos/Domain/VideoFinder.php | 2 +-
src/Mooc/Videos/Domain/VideoNotFound.php | 2 +-
src/Mooc/Videos/Domain/VideoType.php | 2 +-
.../Persistence/Doctrine/VideoIdType.php | 1 -
src/Shared/Domain/Assert.php | 2 +-
src/Shared/Domain/Bus/Event/DomainEvent.php | 6 +-
src/Shared/Domain/Collection.php | 2 +-
src/Shared/Domain/Criteria/Criteria.php | 8 +-
src/Shared/Domain/Criteria/Filter.php | 6 +-
src/Shared/Domain/Criteria/FilterOperator.php | 2 +-
src/Shared/Domain/Criteria/Filters.php | 4 +-
src/Shared/Domain/Criteria/Order.php | 2 +-
src/Shared/Domain/Criteria/OrderType.php | 2 +-
src/Shared/Domain/SecondsInterval.php | 2 +-
src/Shared/Domain/Utils.php | 6 +-
src/Shared/Domain/ValueObject/Enum.php | 2 +-
.../Bus/CallableFirstParameterExtractor.php | 4 +-
.../Bus/Command/CommandNotRegisteredError.php | 3 +-
.../Bus/Command/InMemorySymfonyCommandBus.php | 2 +-
.../Bus/Event/DomainEventJsonDeserializer.php | 2 +-
.../Bus/Event/DomainEventMapping.php | 4 +-
.../Event/DomainEventSubscriberLocator.php | 4 +-
.../InMemory/InMemorySymfonyEventBus.php | 2 +-
.../MySqlDoctrineDomainEventsConsumer.php | 6 +-
.../Bus/Event/MySql/MySqlDoctrineEventBus.php | 8 +-
.../Bus/Event/RabbitMq/RabbitMqConfigurer.php | 7 +-
.../Bus/Event/RabbitMq/RabbitMqConnection.php | 4 +-
.../RabbitMq/RabbitMqDomainEventsConsumer.php | 21 +-
.../Bus/Event/RabbitMq/RabbitMqEventBus.php | 17 +-
.../RabbitMq/RabbitMqQueueNameFormatter.php | 6 +-
.../WithPrometheusMonitoringEventBus.php | 9 +-
.../Bus/Query/InMemorySymfonyQueryBus.php | 2 +-
.../Bus/Query/QueryNotRegisteredError.php | 2 +-
.../Doctrine/DatabaseConnections.php | 4 +-
.../Doctrine/DoctrineEntityManagerFactory.php | 3 +-
.../Elasticsearch/ElasticsearchClient.php | 2 +-
.../Monitoring/PrometheusMonitor.php | 2 +-
.../Doctrine/DoctrineCriteriaConverter.php | 6 +-
.../Doctrine/DoctrineRepository.php | 2 +-
.../Persistence/Doctrine/UuidType.php | 2 +-
.../Elasticsearch/ElasticsearchRepository.php | 4 +-
.../Symfony/AddJsonBodyToRequestListener.php | 6 +-
.../Infrastructure/Symfony/ApiController.php | 6 +-
.../Symfony/ApiExceptionListener.php | 4 +-
.../Symfony/BasicHttpAuthMiddleware.php | 2 +-
.../Infrastructure/Symfony/WebController.php | 6 +-
...icsearchBackofficeCourseRepositoryTest.php | 6 +-
.../Domain/CoursesCounterMother.php | 2 +-
tests/Shared/Domain/DuplicatorMother.php | 2 +-
.../Command/InMemorySymfonyCommandBusTest.php | 4 +-
.../Event/MySql/MySqlDoctrineEventBusTest.php | 4 +-
.../TestAllWorksOnRabbitMqEventsPublished.php | 2 +-
.../Bus/Query/InMemorySymfonyQueryBusTest.php | 4 +-
.../Doctrine/MySqlDatabaseCleaner.php | 2 +-
.../Elastic/ElasticDatabaseCleaner.php | 4 +-
.../AggregateRootArraySimilarComparator.php | 4 +-
.../AggregateRootSimilarComparator.php | 2 +-
.../DomainEventArraySimilarComparator.php | 4 +-
.../DomainEventSimilarComparator.php | 2 +-
119 files changed, 660 insertions(+), 241 deletions(-)
create mode 100644 .php-cs-fixer.dist.php
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a9e05ac1f..8c5dc2df4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -22,6 +22,9 @@ jobs:
- name: 🐳 Start all the environment
run: make start
+ - name: 🔦 Lint
+ run: make lint
+
- name: 🏁 Static analysis
run: make static-analysis
diff --git a/.gitignore b/.gitignore
index 440d81077..ee27af29d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,5 @@
.phpunit.result.cache
/build
+
+.php-cs-fixer.cache
diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php
new file mode 100644
index 000000000..bb744c831
--- /dev/null
+++ b/.php-cs-fixer.dist.php
@@ -0,0 +1,23 @@
+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/Makefile b/Makefile
index afff5a540..ca2150c78 100644
--- a/Makefile
+++ b/Makefile
@@ -47,6 +47,10 @@ test: composer-env-file
static-analysis: composer-env-file
docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/psalm
+.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
+
.PHONY: run-tests
run-tests: composer-env-file
mkdir -p build/test_results/phpunit
diff --git a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
index 578e04589..7b1570dbb 100644
--- a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
+++ b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
@@ -30,7 +30,7 @@ public function __invoke(Request $request): JsonResponse
new SearchBackofficeCoursesByCriteriaQuery(
(array) $request->query->get('filters'),
null === $orderBy ? null : (string) $orderBy,
- null === $order ? null: (string) $order,
+ null === $order ? null : (string) $order,
null === $limit ? null : (int) $limit,
null === $offset ? null : (int) $offset
)
@@ -38,7 +38,7 @@ public function __invoke(Request $request): JsonResponse
return new JsonResponse(
map(
- fn(BackofficeCourseResponse $course) => [
+ fn (BackofficeCourseResponse $course) => [
'id' => $course->id(),
'name' => $course->name(),
'duration' => $course->duration(),
diff --git a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
index ff6ba13d6..69aeaff18 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
@@ -37,7 +37,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
{
$quantityEventsToProcess = (int) $input->getArgument('quantity');
- $consumer = pipe($this->consumer(), fn() => $this->connections->clear());
+ $consumer = pipe($this->consumer(), fn () => $this->connections->clear());
$this->consumer->consume($consumer, $quantityEventsToProcess);
@@ -46,8 +46,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int
private function consumer(): callable
{
- return function (DomainEvent $domainEvent) {
- $subscribers = $this->subscriberLocator->allSubscribedTo(get_class($domainEvent));
+ return function (DomainEvent $domainEvent): void {
+ $subscribers = $this->subscriberLocator->allSubscribedTo($domainEvent::class);
foreach ($subscribers as $subscriber) {
$subscriber($domainEvent);
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
index b37d2b3ae..4fcd6d403 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
@@ -45,7 +45,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
private function consumer(string $queueName): callable
{
- return function () use ($queueName) {
+ return function () use ($queueName): void {
$subscriber = $this->locator->withRabbitMqQueueNamed($queueName);
$this->consumer->consume($subscriber, $queueName);
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
index ffe98f634..3fd739cbf 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
@@ -43,7 +43,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
private function configCreator(string $path): callable
{
- return function (DomainEventSubscriber $subscriber) use ($path) {
+ return function (DomainEventSubscriber $subscriber) use ($path): void {
$queueName = RabbitMqQueueNameFormatter::format($subscriber);
$subscriberName = RabbitMqQueueNameFormatter::shortFormat($subscriber);
@@ -72,16 +72,16 @@ private function configCreator(string $path): callable
private function template(): string
{
return <<=8.1",
+ "symfony/deprecation-contracts": "^2.1|^3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an improved replacement for the array_replace PHP function",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/options-resolver/tree/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"
+ }
+ ],
+ "time": "2022-02-25T11:15:52+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v6.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "318718453c2be58266f1a9e74063d13cb8dd4165"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/318718453c2be58266f1a9e74063d13cb8dd4165",
+ "reference": "318718453c2be58266f1a9e74063d13cb8dd4165",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "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": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/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"
+ }
+ ],
+ "time": "2022-05-11T12:12:29+00:00"
+ },
{
"name": "symfony/proxy-manager-bridge",
"version": "v6.1.0",
@@ -9529,6 +9870,68 @@
],
"time": "2022-03-02T13:21:45+00:00"
},
+ {
+ "name": "symfony/stopwatch",
+ "version": "v6.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/stopwatch.git",
+ "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/77dedae82ce2a26e2e9b481855473fc3b3e4e54d",
+ "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "symfony/service-contracts": "^1|^2|^3"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Stopwatch\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides a way to profile code",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/stopwatch/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"
+ }
+ ],
+ "time": "2022-02-25T11:15:52+00:00"
+ },
{
"name": "symfony/translation",
"version": "v6.1.0",
diff --git a/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php b/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
index 4a3b5df29..eced14cb2 100644
--- a/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
+++ b/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
@@ -13,7 +13,7 @@
final class DomainEventStorer
{
- public function __construct(private DomainEventsRepository $repository)
+ public function __construct(private readonly DomainEventsRepository $repository)
{
}
diff --git a/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php b/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
index fe743fb0b..0fc8c2806 100644
--- a/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
+++ b/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
@@ -13,7 +13,7 @@
final class StoreDomainEventOnOccurred implements DomainEventSubscriber
{
- public function __construct(private DomainEventStorer $storer)
+ public function __construct(private readonly DomainEventStorer $storer)
{
}
diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
index c21447421..8c7447ef1 100644
--- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
+++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
@@ -7,10 +7,10 @@
final class AnalyticsDomainEvent
{
public function __construct(
- private AnalyticsDomainEventId $id,
- private AnalyticsDomainEventAggregateId $aggregateId,
- private AnalyticsDomainEventName $name,
- private AnalyticsDomainEventBody $body
+ private readonly AnalyticsDomainEventId $id,
+ private readonly AnalyticsDomainEventAggregateId $aggregateId,
+ private readonly AnalyticsDomainEventName $name,
+ private readonly AnalyticsDomainEventBody $body
) {
}
}
diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
index d33a5ff8d..744dfa75b 100644
--- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
+++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
@@ -6,7 +6,7 @@
final class AnalyticsDomainEventBody
{
- public function __construct(private array $value)
+ public function __construct(private readonly array $value)
{
}
diff --git a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
index 1c450e14e..aef9a81b3 100644
--- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
+++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
@@ -8,7 +8,7 @@
final class AuthenticateUserCommand implements Command
{
- public function __construct(private string $username, private string $password)
+ public function __construct(private readonly string $username, private readonly string $password)
{
}
diff --git a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
index 8d0595cc8..7c7641853 100644
--- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
+++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
@@ -10,7 +10,7 @@
final class AuthenticateUserCommandHandler implements CommandHandler
{
- public function __construct(private UserAuthenticator $authenticator)
+ public function __construct(private readonly UserAuthenticator $authenticator)
{
}
diff --git a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
index 201efb1aa..d86d65576 100644
--- a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
+++ b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
@@ -13,7 +13,7 @@
final class UserAuthenticator
{
- public function __construct(private AuthRepository $repository)
+ public function __construct(private readonly AuthRepository $repository)
{
}
diff --git a/src/Backoffice/Auth/Domain/AuthUser.php b/src/Backoffice/Auth/Domain/AuthUser.php
index 07b3790dc..1e951c905 100644
--- a/src/Backoffice/Auth/Domain/AuthUser.php
+++ b/src/Backoffice/Auth/Domain/AuthUser.php
@@ -6,7 +6,7 @@
final class AuthUser
{
- public function __construct(private AuthUsername $username, private AuthPassword $password)
+ public function __construct(private readonly AuthUsername $username, private readonly AuthPassword $password)
{
}
diff --git a/src/Backoffice/Courses/Application/BackofficeCourseResponse.php b/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
index ecac5661c..7c8440ba6 100644
--- a/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
+++ b/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
@@ -6,7 +6,7 @@
final class BackofficeCourseResponse
{
- public function __construct(private string $id, private string $name, private string $duration)
+ public function __construct(private readonly string $id, private readonly string $name, private readonly string $duration)
{
}
diff --git a/src/Backoffice/Courses/Application/BackofficeCoursesResponse.php b/src/Backoffice/Courses/Application/BackofficeCoursesResponse.php
index 01a938d02..973202782 100644
--- a/src/Backoffice/Courses/Application/BackofficeCoursesResponse.php
+++ b/src/Backoffice/Courses/Application/BackofficeCoursesResponse.php
@@ -8,7 +8,7 @@
final class BackofficeCoursesResponse implements Response
{
- private array $courses;
+ private readonly array $courses;
public function __construct(BackofficeCourseResponse ...$courses)
{
diff --git a/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php b/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
index 3897c5f0c..9fb967455 100644
--- a/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
+++ b/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
@@ -9,7 +9,7 @@
final class BackofficeCourseCreator
{
- public function __construct(private BackofficeCourseRepository $repository)
+ public function __construct(private readonly BackofficeCourseRepository $repository)
{
}
diff --git a/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php b/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
index 97695b94b..a7ca626ce 100644
--- a/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
+++ b/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
@@ -9,7 +9,7 @@
final class CreateBackofficeCourseOnCourseCreated implements DomainEventSubscriber
{
- public function __construct(private BackofficeCourseCreator $creator)
+ public function __construct(private readonly BackofficeCourseCreator $creator)
{
}
diff --git a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
index b06205057..0045c8e4c 100644
--- a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
@@ -12,7 +12,7 @@
final class AllBackofficeCoursesSearcher
{
- public function __construct(private BackofficeCourseRepository $repository)
+ public function __construct(private readonly BackofficeCourseRepository $repository)
{
}
@@ -23,7 +23,7 @@ public function searchAll(): BackofficeCoursesResponse
private function toResponse(): callable
{
- return static fn(BackofficeCourse $course) => new BackofficeCourseResponse(
+ return static fn (BackofficeCourse $course) => new BackofficeCourseResponse(
$course->id(),
$course->name(),
$course->duration()
diff --git a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
index 3cfb7b257..dde35f54f 100644
--- a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
+++ b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
@@ -9,7 +9,7 @@
final class SearchAllBackofficeCoursesQueryHandler implements QueryHandler
{
- public function __construct(private AllBackofficeCoursesSearcher $searcher)
+ public function __construct(private readonly AllBackofficeCoursesSearcher $searcher)
{
}
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
index 365459a8d..74cdc7372 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
@@ -15,7 +15,7 @@
final class BackofficeCoursesByCriteriaSearcher
{
- public function __construct(private BackofficeCourseRepository $repository)
+ public function __construct(private readonly BackofficeCourseRepository $repository)
{
}
@@ -28,7 +28,7 @@ public function search(Filters $filters, Order $order, ?int $limit, ?int $offset
private function toResponse(): callable
{
- return static fn(BackofficeCourse $course) => new BackofficeCourseResponse(
+ return static fn (BackofficeCourse $course) => new BackofficeCourseResponse(
$course->id(),
$course->name(),
$course->duration()
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
index 5c2d9a80d..f35fb7089 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
@@ -9,11 +9,11 @@
final class SearchBackofficeCoursesByCriteriaQuery implements Query
{
public function __construct(
- private array $filters,
- private ?string $orderBy,
- private ?string $order,
- private ?int $limit,
- private ?int $offset
+ private readonly array $filters,
+ private readonly ?string $orderBy,
+ private readonly ?string $order,
+ private readonly ?int $limit,
+ private readonly ?int $offset
) {
}
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
index 8b65f6a22..a3cfe6f71 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
@@ -11,7 +11,7 @@
final class SearchBackofficeCoursesByCriteriaQueryHandler implements QueryHandler
{
- public function __construct(private BackofficeCoursesByCriteriaSearcher $searcher)
+ public function __construct(private readonly BackofficeCoursesByCriteriaSearcher $searcher)
{
}
diff --git a/src/Backoffice/Courses/Domain/BackofficeCourse.php b/src/Backoffice/Courses/Domain/BackofficeCourse.php
index 877e20066..96636c2d0 100644
--- a/src/Backoffice/Courses/Domain/BackofficeCourse.php
+++ b/src/Backoffice/Courses/Domain/BackofficeCourse.php
@@ -8,7 +8,7 @@
final class BackofficeCourse extends AggregateRoot
{
- public function __construct(private string $id, private string $name, private string $duration)
+ public function __construct(private readonly string $id, private readonly string $name, private readonly string $duration)
{
}
diff --git a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
index bc06eced7..5bd3abbec 100644
--- a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
@@ -34,6 +34,6 @@ protected function aggregateName(): string
private function toCourse(): callable
{
- return static fn(array $primitives) => BackofficeCourse::fromPrimitives($primitives);
+ return static fn (array $primitives) => BackofficeCourse::fromPrimitives($primitives);
}
}
diff --git a/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
index 70498e140..5a2062beb 100644
--- a/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
@@ -14,7 +14,7 @@ final class InMemoryCacheBackofficeCourseRepository implements BackofficeCourseR
private static array $allCoursesCache = [];
private static array $matchingCache = [];
- public function __construct(private BackofficeCourseRepository $repository)
+ public function __construct(private readonly BackofficeCourseRepository $repository)
{
}
diff --git a/src/Mooc/Courses/Application/Create/CourseCreator.php b/src/Mooc/Courses/Application/Create/CourseCreator.php
index a8f7072fc..b85373945 100644
--- a/src/Mooc/Courses/Application/Create/CourseCreator.php
+++ b/src/Mooc/Courses/Application/Create/CourseCreator.php
@@ -13,7 +13,7 @@
final class CourseCreator
{
- public function __construct(private CourseRepository $repository, private EventBus $bus)
+ public function __construct(private readonly CourseRepository $repository, private readonly EventBus $bus)
{
}
diff --git a/src/Mooc/Courses/Application/Create/CreateCourseCommand.php b/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
index d8988305f..970c9cdaf 100644
--- a/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
+++ b/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
@@ -8,7 +8,7 @@
final class CreateCourseCommand implements Command
{
- public function __construct(private string $id, private string $name, private string $duration)
+ public function __construct(private readonly string $id, private readonly string $name, private readonly string $duration)
{
}
diff --git a/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php b/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
index bd1963dfc..49b2eaf66 100644
--- a/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
+++ b/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
@@ -11,7 +11,7 @@
final class CreateCourseCommandHandler implements CommandHandler
{
- public function __construct(private CourseCreator $creator)
+ public function __construct(private readonly CourseCreator $creator)
{
}
diff --git a/src/Mooc/Courses/Application/Find/CourseFinder.php b/src/Mooc/Courses/Application/Find/CourseFinder.php
index 82fb018c2..b307b9d37 100644
--- a/src/Mooc/Courses/Application/Find/CourseFinder.php
+++ b/src/Mooc/Courses/Application/Find/CourseFinder.php
@@ -11,7 +11,7 @@
final class CourseFinder
{
- public function __construct(private CourseRepository $repository)
+ public function __construct(private readonly CourseRepository $repository)
{
}
diff --git a/src/Mooc/Courses/Application/Update/CourseRenamer.php b/src/Mooc/Courses/Application/Update/CourseRenamer.php
index 39e1f82a7..e1916c4f4 100644
--- a/src/Mooc/Courses/Application/Update/CourseRenamer.php
+++ b/src/Mooc/Courses/Application/Update/CourseRenamer.php
@@ -12,9 +12,9 @@
final class CourseRenamer
{
- private CourseFinder $finder;
+ private readonly CourseFinder $finder;
- public function __construct(private CourseRepository $repository, private EventBus $bus)
+ public function __construct(private readonly CourseRepository $repository, private readonly EventBus $bus)
{
$this->finder = new CourseFinder($repository);
}
diff --git a/src/Mooc/Courses/Domain/Course.php b/src/Mooc/Courses/Domain/Course.php
index 940193bbc..f41041490 100644
--- a/src/Mooc/Courses/Domain/Course.php
+++ b/src/Mooc/Courses/Domain/Course.php
@@ -9,7 +9,7 @@
final class Course extends AggregateRoot
{
- public function __construct(private CourseId $id, private CourseName $name, private CourseDuration $duration)
+ public function __construct(private readonly CourseId $id, private CourseName $name, private readonly CourseDuration $duration)
{
}
diff --git a/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php b/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php
index 39b6d2181..41a68e6ec 100644
--- a/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php
+++ b/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php
@@ -10,8 +10,8 @@ final class CourseCreatedDomainEvent extends DomainEvent
{
public function __construct(
string $id,
- private string $name,
- private string $duration,
+ private readonly string $name,
+ private readonly string $duration,
string $eventId = null,
string $occurredOn = null
) {
diff --git a/src/Mooc/Courses/Domain/CourseNotExist.php b/src/Mooc/Courses/Domain/CourseNotExist.php
index fee90ff81..ab3e95e4d 100644
--- a/src/Mooc/Courses/Domain/CourseNotExist.php
+++ b/src/Mooc/Courses/Domain/CourseNotExist.php
@@ -9,7 +9,7 @@
final class CourseNotExist extends DomainError
{
- public function __construct(private CourseId $id)
+ public function __construct(private readonly CourseId $id)
{
parent::__construct();
}
diff --git a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
index 1709f2b17..a0e5c2996 100644
--- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
+++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
@@ -9,7 +9,7 @@
final class CoursesCounterFinder
{
- public function __construct(private CoursesCounterRepository $repository)
+ public function __construct(private readonly CoursesCounterRepository $repository)
{
}
diff --git a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
index 72580d4ae..b0373e28e 100644
--- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
+++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
@@ -8,7 +8,7 @@
final class CoursesCounterResponse implements Response
{
- public function __construct(private int $total)
+ public function __construct(private readonly int $total)
{
}
diff --git a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
index 666e3bbb5..b7808f602 100644
--- a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
+++ b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
@@ -8,7 +8,7 @@
final class FindCoursesCounterQueryHandler implements QueryHandler
{
- public function __construct(private CoursesCounterFinder $finder)
+ public function __construct(private readonly CoursesCounterFinder $finder)
{
}
diff --git a/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php b/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
index 5e4dd2313..0da54ad77 100644
--- a/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
+++ b/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
@@ -14,9 +14,9 @@
final class CoursesCounterIncrementer
{
public function __construct(
- private CoursesCounterRepository $repository,
- private UuidGenerator $uuidGenerator,
- private EventBus $bus
+ private readonly CoursesCounterRepository $repository,
+ private readonly UuidGenerator $uuidGenerator,
+ private readonly EventBus $bus
) {
}
diff --git a/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php b/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
index 13fd1e49e..8e1a83e6f 100644
--- a/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
+++ b/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
@@ -11,7 +11,7 @@
final class IncrementCoursesCounterOnCourseCreated implements DomainEventSubscriber
{
- public function __construct(private CoursesCounterIncrementer $incrementer)
+ public function __construct(private readonly CoursesCounterIncrementer $incrementer)
{
}
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
index 5dc07366c..fc73ba58b 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
@@ -13,7 +13,7 @@ final class CoursesCounter extends AggregateRoot
private array $existingCourses;
public function __construct(
- private CoursesCounterId $id,
+ private readonly CoursesCounterId $id,
private CoursesCounterTotal $total,
CourseId ...$existingCourses
) {
@@ -57,6 +57,6 @@ public function hasIncremented(CourseId $courseId): bool
private function courseIdComparator(CourseId $courseId): callable
{
- return static fn(CourseId $other) => $courseId->equals($other);
+ return static fn (CourseId $other) => $courseId->equals($other);
}
}
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php b/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php
index 7a40482f1..4867871db 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php
@@ -10,7 +10,7 @@ final class CoursesCounterIncrementedDomainEvent extends DomainEvent
{
public function __construct(
string $aggregateId,
- private int $total,
+ private readonly int $total,
string $eventId = null,
string $occurredOn = null
) {
diff --git a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
index 9606fc65f..40bc8611f 100644
--- a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
+++ b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
@@ -24,13 +24,13 @@ public function getName(): string
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
- return parent::convertToDatabaseValue(map(fn(CourseId $id) => $id->value(), $value), $platform);
+ return parent::convertToDatabaseValue(map(fn (CourseId $id) => $id->value(), $value), $platform);
}
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$scalars = parent::convertToPHPValue($value, $platform);
- return map(fn(string $value) => new CourseId($value), $scalars);
+ return map(fn (string $value) => new CourseId($value), $scalars);
}
}
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
index 07d8290a9..436a867d5 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
@@ -24,7 +24,7 @@ public static function inPath(string $path, string $contextName): array
private static function modulesInPath(string $path): array
{
return filter(
- static fn(string $possibleModule) => !in_array($possibleModule, ['.', '..']),
+ static fn (string $possibleModule) => !in_array($possibleModule, ['.', '..'], true),
scandir($path)
);
}
@@ -43,7 +43,7 @@ static function ($unused, string $module) use ($path) {
private static function isExistingDbalPath(): callable
{
- return static fn(string $path) => !empty($path);
+ return static fn (string $path) => !empty($path);
}
private static function dbalClassesSearcher(string $contextName): callable
@@ -51,7 +51,7 @@ 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),
+ static fn ($file) => Utils::endsWith('Type.php', $file),
$possibleFiles
);
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
index 1f421b199..d2e28a092 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
@@ -23,7 +23,7 @@ public static function inPath(string $path, string $baseNamespace): array
private static function modulesInPath(string $path): array
{
return filter(
- static fn(string $possibleModule) => !in_array($possibleModule, ['.', '..']),
+ static fn (string $possibleModule) => !in_array($possibleModule, ['.', '..'], true),
scandir($path)
);
}
@@ -42,11 +42,11 @@ static function ($unused, string $module) use ($path) {
private static function isExistingMappingPath(): callable
{
- return static fn(string $path) => !empty($path);
+ return static fn (string $path) => !empty($path);
}
private static function namespaceFormatter(string $baseNamespace): callable
{
- return static fn(string $path, string $module) => "$baseNamespace\\$module\Domain";
+ return static fn (string $path, string $module) => "$baseNamespace\\$module\Domain";
}
}
diff --git a/src/Mooc/Videos/Application/Create/CreateVideoCommand.php b/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
index b592a4c6d..636298100 100644
--- a/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
+++ b/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
@@ -9,11 +9,11 @@
final class CreateVideoCommand implements Command
{
public function __construct(
- private string $id,
- private string $type,
- private string $title,
- private string $url,
- private string $courseId
+ private readonly string $id,
+ private readonly string $type,
+ private readonly string $title,
+ private readonly string $url,
+ private readonly string $courseId
) {
}
diff --git a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
index b758be255..e6b8b0d89 100644
--- a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
+++ b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
@@ -13,11 +13,11 @@
final class CreateVideoCommandHandler implements CommandHandler
{
- public function __construct(private VideoCreator $creator)
+ public function __construct(private readonly VideoCreator $creator)
{
}
- public function __invoke(CreateVideoCommand $command)
+ public function __invoke(CreateVideoCommand $command): void
{
$id = new VideoId($command->id());
$type = new VideoType($command->type());
diff --git a/src/Mooc/Videos/Application/Create/VideoCreator.php b/src/Mooc/Videos/Application/Create/VideoCreator.php
index 1901a3c7e..91180306b 100644
--- a/src/Mooc/Videos/Application/Create/VideoCreator.php
+++ b/src/Mooc/Videos/Application/Create/VideoCreator.php
@@ -15,7 +15,7 @@
final class VideoCreator
{
- public function __construct(private VideoRepository $repository, private EventBus $bus)
+ public function __construct(private readonly VideoRepository $repository, private readonly EventBus $bus)
{
}
diff --git a/src/Mooc/Videos/Application/Find/FindVideoQuery.php b/src/Mooc/Videos/Application/Find/FindVideoQuery.php
index 81e969160..eadef0af1 100644
--- a/src/Mooc/Videos/Application/Find/FindVideoQuery.php
+++ b/src/Mooc/Videos/Application/Find/FindVideoQuery.php
@@ -8,7 +8,7 @@
final class FindVideoQuery implements Query
{
- public function __construct(private string $id)
+ public function __construct(private readonly string $id)
{
}
diff --git a/src/Mooc/Videos/Application/Find/VideoFinder.php b/src/Mooc/Videos/Application/Find/VideoFinder.php
index f74f297e8..6f99ef280 100644
--- a/src/Mooc/Videos/Application/Find/VideoFinder.php
+++ b/src/Mooc/Videos/Application/Find/VideoFinder.php
@@ -10,7 +10,7 @@
final class VideoFinder
{
- private DomainVideoFinder $finder;
+ private readonly DomainVideoFinder $finder;
public function __construct(VideoRepository $repository)
{
diff --git a/src/Mooc/Videos/Application/Find/VideoResponse.php b/src/Mooc/Videos/Application/Find/VideoResponse.php
index b7961687d..6bd5fd336 100644
--- a/src/Mooc/Videos/Application/Find/VideoResponse.php
+++ b/src/Mooc/Videos/Application/Find/VideoResponse.php
@@ -9,11 +9,11 @@
final class VideoResponse implements Response
{
public function __construct(
- private string $id,
- private string $type,
- private string $title,
- private string $url,
- private string $courseId
+ private readonly string $id,
+ private readonly string $type,
+ private readonly string $title,
+ private readonly string $url,
+ private readonly string $courseId
) {
}
}
diff --git a/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php b/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
index c36c493a3..822916230 100644
--- a/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
+++ b/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
@@ -1,6 +1,6 @@
videoId());
$interval = SecondsInterval::fromValues($command->keepFromSecond(), $command->keepToSecond());
diff --git a/src/Mooc/Videos/Application/Trim/VideoTrimmer.php b/src/Mooc/Videos/Application/Trim/VideoTrimmer.php
index 2a496b848..d1415e4a9 100644
--- a/src/Mooc/Videos/Application/Trim/VideoTrimmer.php
+++ b/src/Mooc/Videos/Application/Trim/VideoTrimmer.php
@@ -1,6 +1,6 @@
finder = new VideoFinder($repository);
}
diff --git a/src/Mooc/Videos/Domain/Video.php b/src/Mooc/Videos/Domain/Video.php
index 8bdfdf7c4..6028dc104 100644
--- a/src/Mooc/Videos/Domain/Video.php
+++ b/src/Mooc/Videos/Domain/Video.php
@@ -11,11 +11,11 @@
final class Video extends AggregateRoot
{
public function __construct(
- private VideoId $id,
- private VideoType $type,
+ private readonly VideoId $id,
+ private readonly VideoType $type,
private VideoTitle $title,
- private VideoUrl $url,
- private CourseId $courseId
+ private readonly VideoUrl $url,
+ private readonly CourseId $courseId
) {
}
@@ -30,7 +30,11 @@ public static function create(
$video->record(
new VideoCreatedDomainEvent(
- $id->value(), $type->value(), $title->value(), $url->value(), $courseId->value()
+ $id->value(),
+ $type->value(),
+ $title->value(),
+ $url->value(),
+ $courseId->value()
)
);
diff --git a/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php b/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php
index 93458fdfa..e820ac970 100644
--- a/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php
+++ b/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php
@@ -10,10 +10,10 @@ final class VideoCreatedDomainEvent extends DomainEvent
{
public function __construct(
string $id,
- private string $type,
- private string $title,
- private string $url,
- private string $courseId,
+ private readonly string $type,
+ private readonly string $title,
+ private readonly string $url,
+ private readonly string $courseId,
string $eventId = null,
string $occurredOn = null
) {
diff --git a/src/Mooc/Videos/Domain/VideoFinder.php b/src/Mooc/Videos/Domain/VideoFinder.php
index 1a07f8403..ba7a22f00 100644
--- a/src/Mooc/Videos/Domain/VideoFinder.php
+++ b/src/Mooc/Videos/Domain/VideoFinder.php
@@ -6,7 +6,7 @@
final class VideoFinder
{
- public function __construct(private VideoRepository $repository)
+ public function __construct(private readonly VideoRepository $repository)
{
}
diff --git a/src/Mooc/Videos/Domain/VideoNotFound.php b/src/Mooc/Videos/Domain/VideoNotFound.php
index a252dcd83..7ba9f1dfd 100644
--- a/src/Mooc/Videos/Domain/VideoNotFound.php
+++ b/src/Mooc/Videos/Domain/VideoNotFound.php
@@ -8,7 +8,7 @@
final class VideoNotFound extends DomainError
{
- public function __construct(private VideoId $id)
+ public function __construct(private readonly VideoId $id)
{
parent::__construct();
}
diff --git a/src/Mooc/Videos/Domain/VideoType.php b/src/Mooc/Videos/Domain/VideoType.php
index 735b72d17..439c785b1 100644
--- a/src/Mooc/Videos/Domain/VideoType.php
+++ b/src/Mooc/Videos/Domain/VideoType.php
@@ -16,7 +16,7 @@ final class VideoType extends Enum
public const SCREENCAST = 'screencast';
public const INTERVIEW = 'interview';
- protected function throwExceptionForInvalidValue($value): void
+ protected function throwExceptionForInvalidValue($value): never
{
throw new InvalidArgumentException(sprintf('The <%s> value is not a valid video type', $value));
}
diff --git a/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php b/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php
index dbcec26aa..7f5eef170 100644
--- a/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php
+++ b/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php
@@ -14,4 +14,3 @@ protected function typeClassName(): string
return VideoId::class;
}
}
-
diff --git a/src/Shared/Domain/Assert.php b/src/Shared/Domain/Assert.php
index 8b4eaee9c..d47b45939 100644
--- a/src/Shared/Domain/Assert.php
+++ b/src/Shared/Domain/Assert.php
@@ -19,7 +19,7 @@ public static function instanceOf(string $class, $item): void
{
if (!$item instanceof $class) {
throw new InvalidArgumentException(
- sprintf('The object <%s> is not an instance of <%s>', $class, get_class($item))
+ sprintf('The object <%s> is not an instance of <%s>', $class, $item::class)
);
}
}
diff --git a/src/Shared/Domain/Bus/Event/DomainEvent.php b/src/Shared/Domain/Bus/Event/DomainEvent.php
index daafdf1ee..0bca368d4 100644
--- a/src/Shared/Domain/Bus/Event/DomainEvent.php
+++ b/src/Shared/Domain/Bus/Event/DomainEvent.php
@@ -10,10 +10,10 @@
abstract class DomainEvent
{
- private string $eventId;
- private string $occurredOn;
+ private readonly string $eventId;
+ private readonly string $occurredOn;
- public function __construct(private string $aggregateId, string $eventId = null, string $occurredOn = null)
+ public function __construct(private readonly string $aggregateId, string $eventId = null, string $occurredOn = null)
{
$this->eventId = $eventId ?: Uuid::random()->value();
$this->occurredOn = $occurredOn ?: Utils::dateToString(new DateTimeImmutable());
diff --git a/src/Shared/Domain/Collection.php b/src/Shared/Domain/Collection.php
index 8975e05ea..137e6c234 100644
--- a/src/Shared/Domain/Collection.php
+++ b/src/Shared/Domain/Collection.php
@@ -10,7 +10,7 @@
abstract class Collection implements Countable, IteratorAggregate
{
- public function __construct(private array $items)
+ public function __construct(private readonly array $items)
{
Assert::arrayOf($this->type(), $items);
}
diff --git a/src/Shared/Domain/Criteria/Criteria.php b/src/Shared/Domain/Criteria/Criteria.php
index e73ee933f..1c762ed23 100644
--- a/src/Shared/Domain/Criteria/Criteria.php
+++ b/src/Shared/Domain/Criteria/Criteria.php
@@ -7,10 +7,10 @@
final class Criteria
{
public function __construct(
- private Filters $filters,
- private Order $order,
- private ?int $offset,
- private ?int $limit
+ private readonly Filters $filters,
+ private readonly Order $order,
+ private readonly ?int $offset,
+ private readonly ?int $limit
) {
}
diff --git a/src/Shared/Domain/Criteria/Filter.php b/src/Shared/Domain/Criteria/Filter.php
index 89e031132..5a8cbf3bf 100644
--- a/src/Shared/Domain/Criteria/Filter.php
+++ b/src/Shared/Domain/Criteria/Filter.php
@@ -7,9 +7,9 @@
final class Filter
{
public function __construct(
- private FilterField $field,
- private FilterOperator $operator,
- private FilterValue $value
+ private readonly FilterField $field,
+ private readonly FilterOperator $operator,
+ private readonly FilterValue $value
) {
}
diff --git a/src/Shared/Domain/Criteria/FilterOperator.php b/src/Shared/Domain/Criteria/FilterOperator.php
index 4567997a2..1c9c3b8ff 100644
--- a/src/Shared/Domain/Criteria/FilterOperator.php
+++ b/src/Shared/Domain/Criteria/FilterOperator.php
@@ -27,7 +27,7 @@ public function isContaining(): bool
return in_array($this->value(), self::$containing, true);
}
- protected function throwExceptionForInvalidValue($value): void
+ protected function throwExceptionForInvalidValue($value): never
{
throw new InvalidArgumentException(sprintf('The filter <%s> is invalid', $value));
}
diff --git a/src/Shared/Domain/Criteria/Filters.php b/src/Shared/Domain/Criteria/Filters.php
index 1dc56b3ce..b55a5e0f2 100644
--- a/src/Shared/Domain/Criteria/Filters.php
+++ b/src/Shared/Domain/Criteria/Filters.php
@@ -16,7 +16,7 @@ public static function fromValues(array $values): self
private static function filterBuilder(): callable
{
- return fn(array $values) => Filter::fromValues($values);
+ return fn (array $values) => Filter::fromValues($values);
}
public function add(Filter $filter): self
@@ -32,7 +32,7 @@ public function filters(): array
public function serialize(): string
{
return reduce(
- static fn(string $accumulate, Filter $filter) => sprintf('%s^%s', $accumulate, $filter->serialize()),
+ static fn (string $accumulate, Filter $filter) => sprintf('%s^%s', $accumulate, $filter->serialize()),
$this->items(),
''
);
diff --git a/src/Shared/Domain/Criteria/Order.php b/src/Shared/Domain/Criteria/Order.php
index 08f342bd1..643a65268 100644
--- a/src/Shared/Domain/Criteria/Order.php
+++ b/src/Shared/Domain/Criteria/Order.php
@@ -6,7 +6,7 @@
final class Order
{
- public function __construct(private OrderBy $orderBy, private OrderType $orderType)
+ public function __construct(private readonly OrderBy $orderBy, private readonly OrderType $orderType)
{
}
diff --git a/src/Shared/Domain/Criteria/OrderType.php b/src/Shared/Domain/Criteria/OrderType.php
index 7d46d0b83..2ffc46071 100644
--- a/src/Shared/Domain/Criteria/OrderType.php
+++ b/src/Shared/Domain/Criteria/OrderType.php
@@ -23,7 +23,7 @@ public function isNone(): bool
return $this->equals(self::none());
}
- protected function throwExceptionForInvalidValue($value): void
+ protected function throwExceptionForInvalidValue($value): never
{
throw new InvalidArgumentException($value);
}
diff --git a/src/Shared/Domain/SecondsInterval.php b/src/Shared/Domain/SecondsInterval.php
index 52f480f21..55df80a10 100644
--- a/src/Shared/Domain/SecondsInterval.php
+++ b/src/Shared/Domain/SecondsInterval.php
@@ -8,7 +8,7 @@
final class SecondsInterval
{
- public function __construct(private Second $from, private Second $to)
+ public function __construct(private readonly Second $from, private readonly Second $to)
{
$this->ensureIntervalEndsAfterStart($from, $to);
}
diff --git a/src/Shared/Domain/Utils.php b/src/Shared/Domain/Utils.php
index 854db5f25..e0eb706f8 100644
--- a/src/Shared/Domain/Utils.php
+++ b/src/Shared/Domain/Utils.php
@@ -34,7 +34,7 @@ public static function stringToDate(string $date): DateTimeImmutable
public static function jsonEncode(array $values): string
{
- return json_encode($values);
+ return json_encode($values, JSON_THROW_ON_ERROR);
}
public static function jsonDecode(string $json): array
@@ -50,7 +50,7 @@ public static function jsonDecode(string $json): array
public static function toSnakeCase(string $text): string
{
- return ctype_lower($text) ? $text : strtolower(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
@@ -75,7 +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),
+ static fn (string $possibleModule) => strstr($possibleModule, $fileType),
scandir($path)
);
}
diff --git a/src/Shared/Domain/ValueObject/Enum.php b/src/Shared/Domain/ValueObject/Enum.php
index 18afa4d3f..1d7eed987 100644
--- a/src/Shared/Domain/ValueObject/Enum.php
+++ b/src/Shared/Domain/ValueObject/Enum.php
@@ -55,7 +55,7 @@ public static function random(): static
private static function keysFormatter(): callable
{
- return static fn($unused, string $key): string => Utils::toCamelCase(strtolower($key));
+ return static fn ($unused, string $key): string => Utils::toCamelCase(strtolower($key));
}
public function value()
diff --git a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
index 4d0ac9b07..eb5cb6efe 100644
--- a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
+++ b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
@@ -27,7 +27,7 @@ public static function forPipedCallables(iterable $callables): array
private static function classExtractor(CallableFirstParameterExtractor $parameterExtractor): callable
{
- return static fn(callable $handler): ?string => $parameterExtractor->extract($handler);
+ return static fn (callable $handler): ?string => $parameterExtractor->extract($handler);
}
private static function pipedCallablesReducer(): callable
@@ -45,7 +45,7 @@ private static function pipedCallablesReducer(): callable
private static function unflatten(): callable
{
- return static fn($value) => [$value];
+ return static fn ($value) => [$value];
}
public function extract($class): ?string
diff --git a/src/Shared/Infrastructure/Bus/Command/CommandNotRegisteredError.php b/src/Shared/Infrastructure/Bus/Command/CommandNotRegisteredError.php
index 7d18fd696..90efecda7 100644
--- a/src/Shared/Infrastructure/Bus/Command/CommandNotRegisteredError.php
+++ b/src/Shared/Infrastructure/Bus/Command/CommandNotRegisteredError.php
@@ -11,9 +11,8 @@ final class CommandNotRegisteredError extends RuntimeException
{
public function __construct(Command $command)
{
- $commandClass = get_class($command);
+ $commandClass = $command::class;
parent::__construct("The command <$commandClass> hasn't a command handler associated");
}
}
-
diff --git a/src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php b/src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php
index bd7e659a8..ab94755cc 100644
--- a/src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php
+++ b/src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php
@@ -15,7 +15,7 @@
final class InMemorySymfonyCommandBus implements CommandBus
{
- private MessageBus $bus;
+ private readonly MessageBus $bus;
public function __construct(iterable $commandHandlers)
{
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
index a50ba7db8..cb2e77213 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
@@ -10,7 +10,7 @@
final class DomainEventJsonDeserializer
{
- public function __construct(private DomainEventMapping $mapping)
+ public function __construct(private readonly DomainEventMapping $mapping)
{
}
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
index 5542a5c7d..956d864bc 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
@@ -29,7 +29,7 @@ public function for(string $name)
private function eventsExtractor(): callable
{
- return fn(array $mapping, DomainEventSubscriber $subscriber) => array_merge(
+ return fn (array $mapping, DomainEventSubscriber $subscriber) => array_merge(
$mapping,
reindex(
$this->eventNameExtractor(),
@@ -40,6 +40,6 @@ private function eventsExtractor(): callable
private function eventNameExtractor(): callable
{
- return static fn(string $eventClass): string => $eventClass::eventName();
+ return static fn (string $eventClass): string => $eventClass::eventName();
}
}
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
index ba3e24abb..f456bc573 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
@@ -13,7 +13,7 @@
final class DomainEventSubscriberLocator
{
- private array $mapping;
+ private readonly array $mapping;
public function __construct(Traversable $mapping)
{
@@ -30,7 +30,7 @@ public function allSubscribedTo(string $eventClass): array
public function withRabbitMqQueueNamed(string $queueName): DomainEventSubscriber|callable
{
$subscriber = search(
- static fn(DomainEventSubscriber $subscriber) => RabbitMqQueueNameFormatter::format($subscriber) ===
+ static fn (DomainEventSubscriber $subscriber) => RabbitMqQueueNameFormatter::format($subscriber) ===
$queueName,
$this->mapping
);
diff --git a/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php b/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php
index 22d9941ef..d894ad23a 100644
--- a/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php
@@ -14,7 +14,7 @@
class InMemorySymfonyEventBus implements EventBus
{
- private MessageBus $bus;
+ private readonly MessageBus $bus;
public function __construct(iterable $subscribers)
{
diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
index 127cc1715..85b3481cc 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
@@ -16,9 +16,9 @@
final class MySqlDoctrineDomainEventsConsumer
{
- private Connection $connection;
+ private readonly Connection $connection;
- public function __construct(EntityManager $entityManager, private DomainEventMapping $eventMapping)
+ public function __construct(EntityManager $entityManager, private readonly DomainEventMapping $eventMapping)
{
$this->connection = $entityManager->getConnection();
}
@@ -63,6 +63,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 003465fbc..77c8e451c 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
@@ -14,7 +14,7 @@
final class MySqlDoctrineEventBus implements EventBus
{
private const DATABASE_TIMESTAMP_FORMAT = 'Y-m-d H:i:s';
- private Connection $connection;
+ private readonly Connection $connection;
public function __construct(EntityManager $entityManager)
{
@@ -39,9 +39,9 @@ private function publisher(): callable
$this->connection->executeUpdate(
<<connection = $connection;
}
public function configure(string $exchangeName, DomainEventSubscriber ...$subscribers): void
@@ -55,7 +52,7 @@ private function queueDeclarator(
$exchangeName,
$retryExchangeName,
$deadLetterExchangeName
- ) {
+ ): void {
$queueName = RabbitMqQueueNameFormatter::format($subscriber);
$retryQueueName = RabbitMqQueueNameFormatter::formatRetry($subscriber);
$deadLetterQueueName = RabbitMqQueueNameFormatter::formatDeadLetter($subscriber);
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php
index 2440bbf82..a43fa35d8 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php
@@ -17,11 +17,9 @@ final class RabbitMqConnection
private static array $exchanges = [];
/** @var AMQPQueue[] */
private static array $queues = [];
- private array $configuration;
- public function __construct(array $configuration)
+ public function __construct(private readonly array $configuration)
{
- $this->configuration = $configuration;
}
public function queue(string $name): AMQPQueue
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
index 16a727eaf..8c007002b 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
@@ -14,35 +14,26 @@
final class RabbitMqDomainEventsConsumer
{
- private RabbitMqConnection $connection;
- private DomainEventJsonDeserializer $deserializer;
- private string $exchangeName;
- private int $maxRetries;
-
public function __construct(
- RabbitMqConnection $connection,
- DomainEventJsonDeserializer $deserializer,
- string $exchangeName,
- int $maxRetries
+ private readonly RabbitMqConnection $connection,
+ private readonly DomainEventJsonDeserializer $deserializer,
+ private readonly string $exchangeName,
+ private readonly int $maxRetries
) {
- $this->connection = $connection;
- $this->deserializer = $deserializer;
- $this->exchangeName = $exchangeName;
- $this->maxRetries = $maxRetries;
}
public function consume(callable $subscriber, string $queueName): void
{
try {
$this->connection->queue($queueName)->consume($this->consumer($subscriber));
- } catch (AMQPQueueException $error) {
+ } catch (AMQPQueueException) {
// We don't want to raise an error if there are no messages in the queue
}
}
private function consumer(callable $subscriber): callable
{
- return function (AMQPEnvelope $envelope, AMQPQueue $queue) use ($subscriber) {
+ return function (AMQPEnvelope $envelope, AMQPQueue $queue) use ($subscriber): void {
$event = $this->deserializer->deserialize($envelope->getBody());
try {
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
index 48c278745..2440afda0 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
@@ -13,18 +13,11 @@
final class RabbitMqEventBus implements EventBus
{
- private RabbitMqConnection $connection;
- private string $exchangeName;
- private MySqlDoctrineEventBus $failoverPublisher;
-
public function __construct(
- RabbitMqConnection $connection,
- string $exchangeName,
- MySqlDoctrineEventBus $failoverPublisher
+ private readonly RabbitMqConnection $connection,
+ private readonly string $exchangeName,
+ private readonly MySqlDoctrineEventBus $failoverPublisher
) {
- $this->connection = $connection;
- $this->exchangeName = $exchangeName;
- $this->failoverPublisher = $failoverPublisher;
}
public function publish(DomainEvent ...$events): void
@@ -34,10 +27,10 @@ public function publish(DomainEvent ...$events): void
private function publisher(): callable
{
- return function (DomainEvent $event) {
+ return function (DomainEvent $event): void {
try {
$this->publishEvent($event);
- } catch (AMQPException $error) {
+ } catch (AMQPException) {
$this->failoverPublisher->publish($event);
}
};
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php
index 312c31a4b..15bf09e9a 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php
@@ -13,7 +13,7 @@ final class RabbitMqQueueNameFormatter
{
public static function format(DomainEventSubscriber $subscriber): string
{
- $subscriberClassPaths = explode('\\', str_replace('CodelyTv', 'codelytv', get_class($subscriber)));
+ $subscriberClassPaths = explode('\\', str_replace('CodelyTv', 'codelytv', $subscriber::class));
$queueNameParts = [
$subscriberClassPaths[0],
@@ -41,13 +41,13 @@ public static function formatDeadLetter(DomainEventSubscriber $subscriber): stri
public static function shortFormat(DomainEventSubscriber $subscriber): string
{
- $subscriberCamelCaseName = (string) last(explode('\\', get_class($subscriber)));
+ $subscriberCamelCaseName = (string) last(explode('\\', $subscriber::class));
return Utils::toSnakeCase($subscriberCamelCaseName);
}
private static function toSnakeCase(): callable
{
- return static fn(string $text) => Utils::toSnakeCase($text);
+ return static fn (string $text) => Utils::toSnakeCase($text);
}
}
diff --git a/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php b/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
index 594897b5f..b9e0bb1ab 100644
--- a/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
@@ -11,8 +11,11 @@
final class WithPrometheusMonitoringEventBus implements EventBus
{
- public function __construct(private PrometheusMonitor $monitor, private string $appName, private EventBus $bus)
- {
+ public function __construct(
+ private readonly PrometheusMonitor $monitor,
+ private readonly string $appName,
+ private readonly EventBus $bus
+ ) {
}
public function publish(DomainEvent ...$events): void
@@ -24,7 +27,7 @@ public function publish(DomainEvent ...$events): void
['name']
);
- each(fn(DomainEvent $event) => $counter->inc(['name' => $event::eventName()]), $events);
+ each(fn (DomainEvent $event) => $counter->inc(['name' => $event::eventName()]), $events);
$this->bus->publish(...$events);
}
diff --git a/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php b/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php
index 31092cb53..d01b9e105 100644
--- a/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php
+++ b/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php
@@ -16,7 +16,7 @@
final class InMemorySymfonyQueryBus implements QueryBus
{
- private MessageBus $bus;
+ private readonly MessageBus $bus;
public function __construct(iterable $queryHandlers)
{
diff --git a/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php b/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php
index c7464bf01..9f0d64588 100644
--- a/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php
+++ b/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php
@@ -11,7 +11,7 @@ final class QueryNotRegisteredError extends RuntimeException
{
public function __construct(Query $query)
{
- $queryClass = get_class($query);
+ $queryClass = $query::class;
parent::__construct("The query <$queryClass> hasn't a query handler associated");
}
diff --git a/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php b/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php
index 349295901..e00526007 100644
--- a/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php
+++ b/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php
@@ -12,7 +12,7 @@
final class DatabaseConnections
{
- private array $connections;
+ private readonly array $connections;
public function __construct(iterable $connections)
{
@@ -21,7 +21,7 @@ public function __construct(iterable $connections)
public function clear(): void
{
- each(fn(EntityManager $entityManager) => $entityManager->clear(), $this->connections);
+ each(fn (EntityManager $entityManager) => $entityManager->clear(), $this->connections);
}
public function truncate(): void
diff --git a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
index 498fc2bcb..f5a0cfcde 100644
--- a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
+++ b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
@@ -27,8 +27,7 @@ public static function create(
bool $isDevMode,
string $schemaFile,
array $dbalCustomTypesClasses
- ): EntityManager
- {
+ ): EntityManager {
if ($isDevMode) {
static::generateDatabaseIfNotExists($parameters, $schemaFile);
}
diff --git a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
index 5c3fdc859..1ead42d3e 100644
--- a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
+++ b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
@@ -8,7 +8,7 @@
final class ElasticsearchClient
{
- public function __construct(private Client $client, private string $indexPrefix)
+ public function __construct(private readonly Client $client, private readonly string $indexPrefix)
{
}
diff --git a/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php b/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php
index 562087724..31e2a6adb 100644
--- a/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php
+++ b/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php
@@ -9,7 +9,7 @@
final class PrometheusMonitor
{
- private CollectorRegistry $registry;
+ private readonly CollectorRegistry $registry;
public function __construct()
{
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
index 73a03f66e..40767ac0c 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
@@ -15,9 +15,9 @@
final class DoctrineCriteriaConverter
{
public function __construct(
- private Criteria $criteria,
- private array $criteriaToDoctrineFields = [],
- private array $hydrators = []
+ private readonly Criteria $criteria,
+ private readonly array $criteriaToDoctrineFields = [],
+ private readonly array $hydrators = []
) {
}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php
index d6210ee63..7ac1ea13f 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php
@@ -10,7 +10,7 @@
abstract class DoctrineRepository
{
- public function __construct(private EntityManager $entityManager)
+ public function __construct(private readonly EntityManager $entityManager)
{
}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
index 76df29d11..d9fd8b3ab 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
@@ -17,7 +17,7 @@ abstract protected function typeClassName(): string;
public static function customTypeName(): string
{
- return Utils::toSnakeCase(str_replace('Type', '', last(explode('\\', static::class))));
+ return Utils::toSnakeCase(str_replace('Type', '', (string) last(explode('\\', static::class))));
}
public function getName(): string
diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
index c6b5a5cd1..1949acdbe 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
@@ -12,7 +12,7 @@
abstract class ElasticsearchRepository
{
- public function __construct(private ElasticsearchClient $client)
+ public function __construct(private readonly ElasticsearchClient $client)
{
}
@@ -57,6 +57,6 @@ protected function indexName(): string
private function elasticValuesExtractor(): callable
{
- return static fn(array $elasticValues): array => $elasticValues['_source'];
+ return static fn (array $elasticValues): array => $elasticValues['_source'];
}
}
diff --git a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
index 9d835decb..a365d8c35 100644
--- a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
+++ b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
@@ -17,7 +17,7 @@ public function onKernelRequest(RequestEvent $event): void
$requestContents = $request->getContent();
if (!empty($requestContents) && $this->containsHeader($request, 'Content-Type', 'application/json')) {
- $jsonData = json_decode($requestContents, true);
+ $jsonData = json_decode($requestContents, true, 512, JSON_THROW_ON_ERROR);
if (!$jsonData) {
throw new HttpException(Response::HTTP_BAD_REQUEST, 'Invalid json data');
}
@@ -25,7 +25,7 @@ public function onKernelRequest(RequestEvent $event): void
foreach ($jsonData as $key => $value) {
$jsonDataLowerCase[preg_replace_callback(
'/_(.)/',
- static fn($matches) => strtoupper($matches[1]),
+ static fn ($matches) => strtoupper($matches[1]),
$key
)] = $value;
}
@@ -35,6 +35,6 @@ public function onKernelRequest(RequestEvent $event): void
private function containsHeader(Request $request, string $name, string $value): bool
{
- return str_starts_with($request->headers->get($name), $value);
+ return str_starts_with((string) $request->headers->get($name), $value);
}
}
diff --git a/src/Shared/Infrastructure/Symfony/ApiController.php b/src/Shared/Infrastructure/Symfony/ApiController.php
index 459c3eb6e..ce5a18c76 100644
--- a/src/Shared/Infrastructure/Symfony/ApiController.php
+++ b/src/Shared/Infrastructure/Symfony/ApiController.php
@@ -14,12 +14,12 @@
abstract class ApiController
{
public function __construct(
- private QueryBus $queryBus,
- private CommandBus $commandBus,
+ private readonly QueryBus $queryBus,
+ private readonly CommandBus $commandBus,
ApiExceptionsHttpStatusCodeMapping $exceptionHandler
) {
each(
- fn(int $httpCode, string $exceptionClass) => $exceptionHandler->register($exceptionClass, $httpCode),
+ fn (int $httpCode, string $exceptionClass) => $exceptionHandler->register($exceptionClass, $httpCode),
$this->exceptions()
);
}
diff --git a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
index 2ecf6e42f..256d1e71a 100644
--- a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
+++ b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
@@ -12,7 +12,7 @@
final class ApiExceptionListener
{
- public function __construct(private ApiExceptionsHttpStatusCodeMapping $exceptionHandler)
+ public function __construct(private readonly ApiExceptionsHttpStatusCodeMapping $exceptionHandler)
{
}
@@ -26,7 +26,7 @@ public function onException(ExceptionEvent $event): void
'code' => $this->exceptionCodeFor($exception),
'message' => $exception->getMessage(),
],
- $this->exceptionHandler->statusCodeFor(get_class($exception))
+ $this->exceptionHandler->statusCodeFor($exception::class)
)
);
}
diff --git a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
index 36083593e..6b4a74093 100644
--- a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
+++ b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
@@ -14,7 +14,7 @@
final class BasicHttpAuthMiddleware
{
- public function __construct(private CommandBus $bus)
+ public function __construct(private readonly CommandBus $bus)
{
}
diff --git a/src/Shared/Infrastructure/Symfony/WebController.php b/src/Shared/Infrastructure/Symfony/WebController.php
index 8d8808b3a..81efc342d 100644
--- a/src/Shared/Infrastructure/Symfony/WebController.php
+++ b/src/Shared/Infrastructure/Symfony/WebController.php
@@ -17,9 +17,9 @@
abstract class WebController extends ApiController
{
public function __construct(
- private Environment $twig,
- private RouterInterface $router,
- private RequestStack $requestStack,
+ private readonly Environment $twig,
+ private readonly RouterInterface $router,
+ private readonly RequestStack $requestStack,
QueryBus $queryBus,
CommandBus $commandBus,
ApiExceptionsHttpStatusCodeMapping $exceptionHandler
diff --git a/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php b/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php
index 3a54c1407..490e9d922 100644
--- a/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php
+++ b/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php
@@ -27,7 +27,7 @@ public function it_should_search_all_existing_courses(): void
$this->elasticRepository()->save($existingCourse);
$this->elasticRepository()->save($anotherExistingCourse);
- $this->eventually(fn() => $this->assertSimilar($existingCourses, $this->elasticRepository()->searchAll()));
+ $this->eventually(fn () => $this->assertSimilar($existingCourses, $this->elasticRepository()->searchAll()));
}
/** @test */
@@ -41,7 +41,7 @@ public function it_should_search_all_existing_courses_with_an_empty_criteria():
$this->elasticRepository()->save($anotherExistingCourse);
$this->eventually(
- fn() => $this->assertSimilar(
+ fn () => $this->assertSimilar(
$existingCourses,
$this->elasticRepository()->matching(CriteriaMother::empty())
)
@@ -63,7 +63,7 @@ public function it_should_filter_by_criteria(): void
$this->elasticRepository()->save($intellijCourse);
$this->eventually(
- fn() => $this->assertSimilar($dddCourses, $this->elasticRepository()->matching($nameContainsDddCriteria))
+ fn () => $this->assertSimilar($dddCourses, $this->elasticRepository()->matching($nameContainsDddCriteria))
);
}
}
diff --git a/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php b/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php
index d05637331..ed8e836a4 100644
--- a/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php
+++ b/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php
@@ -21,7 +21,7 @@ public static function create(
return new CoursesCounter(
$id ?? CoursesCounterIdMother::create(),
$total ?? CoursesCounterTotalMother::create(),
- ...count($existingCourses) ? $existingCourses : Repeater::random(fn() => CourseIdMother::create())
+ ...count($existingCourses) ? $existingCourses : Repeater::random(fn () => CourseIdMother::create())
);
}
diff --git a/tests/Shared/Domain/DuplicatorMother.php b/tests/Shared/Domain/DuplicatorMother.php
index 4a74f61c8..2f23565ab 100644
--- a/tests/Shared/Domain/DuplicatorMother.php
+++ b/tests/Shared/Domain/DuplicatorMother.php
@@ -16,7 +16,7 @@ public static function with($object, array $newParams): mixed
$reflection = new ReflectionObject($duplicated);
each(
- static function (ReflectionProperty $property) use ($duplicated, $newParams) {
+ static function (ReflectionProperty $property) use ($duplicated, $newParams): void {
if (isset($newParams[$property->getName()])) {
$property->setAccessible(true);
$property->setValue($duplicated, $newParams[$property->getName()]);
diff --git a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
index cfd5187c2..3586816a1 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)
+ return new class () {
+ public function __invoke(FakeCommand $command): void
{
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 5cf3ff4ab..d2d4457e1 100644
--- a/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
@@ -39,8 +39,8 @@ public function it_should_publish_and_consume_domain_events_from_msql(): void
$this->bus->publish($domainEvent, $anotherDomainEvent);
$this->consumer->consume(
- 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/TestAllWorksOnRabbitMqEventsPublished.php b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php
index 4e15c5296..310d3ce58 100644
--- a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php
+++ b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php
@@ -18,7 +18,7 @@ public static function subscribedTo(): array
];
}
- public function __invoke(CourseCreatedDomainEvent|CoursesCounterIncrementedDomainEvent $event)
+ public function __invoke(CourseCreatedDomainEvent|CoursesCounterIncrementedDomainEvent $event): void
{
}
}
diff --git a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
index 820c6eb3d..48fd55d26 100644
--- a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
@@ -40,8 +40,8 @@ public function it_should_raise_an_exception_dispatching_a_non_registered_query(
private function queryHandler(): object
{
- return new class {
- public function __invoke(FakeQuery $query)
+ return new class () {
+ public function __invoke(FakeQuery $query): void
{
throw new RuntimeException('This works fine!');
}
diff --git a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
index fdf2b70f5..19058ab66 100644
--- a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
+++ b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
@@ -30,7 +30,7 @@ private function truncateDatabaseSql(array $tables): string
private function truncateTableSql(): callable
{
- return fn(array $table): string => sprintf('TRUNCATE TABLE `%s`;', first($table));
+ return fn (array $table): string => sprintf('TRUNCATE TABLE `%s`;', first($table));
}
private function tables(Connection $connection): array
diff --git a/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php b/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php
index 0f318cc6d..651ede7f6 100644
--- a/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php
+++ b/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php
@@ -9,12 +9,12 @@
final class ElasticDatabaseCleaner
{
- public function __invoke(ElasticsearchClient $client)
+ public function __invoke(ElasticsearchClient $client): void
{
$indices = $client->client()->cat()->indices();
each(
- static function (array $index) use ($client) {
+ static function (array $index) use ($client): void {
$indexName = $index['index'];
$client->client()->indices()->delete(['index' => $indexName]);
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
index d0e05d24f..afa3a6f18 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
@@ -38,8 +38,8 @@ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = f
private function contains(array $expectedArray, array $actualArray): bool
{
- $exists = fn(AggregateRoot $expected) => any(
- fn(AggregateRoot $actual) => TestUtils::isSimilar($expected, $actual),
+ $exists = fn (AggregateRoot $expected) => 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 a795b0188..01317fa01 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php
@@ -47,7 +47,7 @@ private function aggregateRootsAreSimilar(AggregateRoot $expected, AggregateRoot
private function aggregateRootsAreTheSameClass(AggregateRoot $expected, AggregateRoot $actual): bool
{
- return get_class($expected) === get_class($actual);
+ return $expected::class === $actual::class;
}
private function aggregateRootPropertiesAreSimilar(AggregateRoot $expected, AggregateRoot $actual): bool
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
index 3d90627e3..b7dd6773f 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
@@ -38,8 +38,8 @@ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = f
private function contains(array $expectedArray, array $actualArray): bool
{
- $exists = static fn(DomainEvent $expected) => any(
- static fn(DomainEvent $actual) => TestUtils::isSimilar($expected, $actual),
+ $exists = static fn (DomainEvent $expected) => 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 e3f5d3675..48a52274a 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php
@@ -46,7 +46,7 @@ private function areSimilar(DomainEvent $expected, DomainEvent $actual): bool
private function areTheSameClass(DomainEvent $expected, DomainEvent $actual): bool
{
- return get_class($expected) === get_class($actual);
+ return $expected::class === $actual::class;
}
private function propertiesAreSimilar(DomainEvent $expected, DomainEvent $actual): bool
From 38159067018714cb37ab29274a2352d6611f4fb1 Mon Sep 17 00:00:00 2001
From: Quentin Rogeret
Date: Mon, 12 Sep 2022 22:38:14 +0200
Subject: [PATCH 10/40] remove non-existent symfony flag (#322)
Co-authored-by: Quentin Rogeret
---
docker-compose.yml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docker-compose.yml b/docker-compose.yml
index d720f5b1e..19fc0366b 100755
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -67,7 +67,7 @@ services:
- shared_rabbitmq
- shared_prometheus
- backoffice_elasticsearch
- command: symfony serve --dir=apps/backoffice/backend/public --port=8040 --force-php-discovery
+ command: symfony serve --dir=apps/backoffice/backend/public --port=8040
backoffice_frontend_php:
container_name: codely-php_ddd_skeleton-backoffice_frontend-php
@@ -86,7 +86,7 @@ services:
- shared_prometheus
- backoffice_elasticsearch
- mooc_mysql
- command: symfony serve --dir=apps/backoffice/frontend/public --port=8041 --force-php-discovery
+ command: symfony serve --dir=apps/backoffice/frontend/public --port=8041
mooc_backend_php:
container_name: codely-php_ddd_skeleton-mooc_backend-php
@@ -104,4 +104,4 @@ services:
- shared_rabbitmq
- shared_prometheus
- mooc_mysql
- command: symfony serve --dir=apps/mooc/backend/public --port=8030 --force-php-discovery
+ command: symfony serve --dir=apps/mooc/backend/public --port=8030
From 52dbdc80ccac9acecb9e974f50c26e60bc4973e9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Wed, 27 Sep 2023 13:14:11 +0200
Subject: [PATCH 11/40] chore: upgrade to php 8.2 (#351)
* chore: upgrade to php 8.2
* chore: upgrade php cs fixer
* chore: upgrade psalm
* fix: use {$var} instead of ${var}
* fix: downgrade symfony extension
Until upgrading to the newest symfony version
---
Dockerfile | 16 +-
apps/backoffice/backend/public/index.php | 2 +-
.../backend/src/BackofficeBackendKernel.php | 1 +
.../Courses/CoursesGetController.php | 3 +-
.../Controller/Metrics/MetricsController.php | 2 +-
apps/backoffice/frontend/public/index.php | 2 +-
.../frontend/src/BackofficeFrontendKernel.php | 1 +
.../ImportCoursesToElasticsearchCommand.php | 4 +-
.../Controller/Metrics/MetricsController.php | 2 +-
apps/bootstrap.php | 4 +-
apps/mooc/backend/public/index.php | 2 +-
.../MySql/ConsumeMySqlDomainEventsCommand.php | 7 +-
.../RabbitMq/ConfigureRabbitMqCommand.php | 6 +-
.../ConsumeRabbitMqDomainEventsCommand.php | 7 +-
...SupervisorRabbitMqConsumerFilesCommand.php | 3 +-
.../HealthCheck/HealthCheckGetController.php | 2 +-
.../Controller/Metrics/MetricsController.php | 2 +-
apps/mooc/backend/src/MoocBackendKernel.php | 1 +
composer.json | 15 +-
composer.lock | 3251 +++++++++--------
etc/infrastructure/php/extensions/rabbitmq.sh | 6 -
etc/infrastructure/php/extensions/xdebug.sh | 7 -
psalm.xml | 6 +-
rector.php | 18 +
.../Application/Store/DomainEventStorer.php | 4 +-
.../Store/StoreDomainEventOnOccurred.php | 4 +-
.../Domain/AnalyticsDomainEvent.php | 10 +-
.../Domain/AnalyticsDomainEventBody.php | 4 +-
.../Authenticate/AuthenticateUserCommand.php | 4 +-
.../AuthenticateUserCommandHandler.php | 4 +-
.../Authenticate/UserAuthenticator.php | 4 +-
src/Backoffice/Auth/Domain/AuthUser.php | 4 +-
.../Persistence/InMemoryAuthRepository.php | 1 +
.../Application/BackofficeCourseResponse.php | 4 +-
.../Create/BackofficeCourseCreator.php | 4 +-
.../CreateBackofficeCourseOnCourseCreated.php | 4 +-
.../AllBackofficeCoursesSearcher.php | 5 +-
...SearchAllBackofficeCoursesQueryHandler.php | 4 +-
.../BackofficeCoursesByCriteriaSearcher.php | 5 +-
...SearchBackofficeCoursesByCriteriaQuery.php | 12 +-
...ackofficeCoursesByCriteriaQueryHandler.php | 4 +-
...lasticsearchBackofficeCourseRepository.php | 1 +
...nMemoryCacheBackofficeCourseRepository.php | 1 +
.../Application/Create/CourseCreator.php | 4 +-
.../Create/CreateCourseCommand.php | 4 +-
.../Create/CreateCourseCommandHandler.php | 4 +-
.../Courses/Application/Find/CourseFinder.php | 4 +-
.../Application/Update/CourseRenamer.php | 6 +-
.../Application/Find/CoursesCounterFinder.php | 4 +-
.../Find/CoursesCounterResponse.php | 4 +-
.../Find/FindCoursesCounterQueryHandler.php | 4 +-
.../Increment/CoursesCounterIncrementer.php | 8 +-
...IncrementCoursesCounterOnCourseCreated.php | 5 +-
.../CoursesCounter/Domain/CoursesCounter.php | 1 +
.../Persistence/Doctrine/CourseIdsType.php | 1 +
.../Doctrine/DbalTypesSearcher.php | 1 +
.../Application/Create/CreateVideoCommand.php | 12 +-
.../Create/CreateVideoCommandHandler.php | 4 +-
.../Application/Create/VideoCreator.php | 4 +-
.../Application/Find/FindVideoQuery.php | 4 +-
.../Find/FindVideoQueryHandler.php | 1 +
.../Videos/Application/Find/VideoResponse.php | 12 +-
.../Application/Trim/TrimVideoCommand.php | 4 +-
.../Trim/TrimVideoCommandHandler.php | 4 +-
.../Application/Update/VideoTitleUpdater.php | 6 +-
src/Mooc/Videos/Domain/VideoFinder.php | 4 +-
src/Shared/Domain/Collection.php | 4 +-
src/Shared/Domain/Criteria/Criteria.php | 10 +-
src/Shared/Domain/Criteria/Filter.php | 8 +-
src/Shared/Domain/Criteria/Filters.php | 1 +
src/Shared/Domain/Criteria/Order.php | 4 +-
src/Shared/Domain/SecondsInterval.php | 4 +-
src/Shared/Domain/Utils.php | 1 +
src/Shared/Domain/ValueObject/Enum.php | 1 +
.../Bus/CallableFirstParameterExtractor.php | 1 +
.../Bus/Event/DomainEventJsonDeserializer.php | 4 +-
.../Bus/Event/DomainEventMapping.php | 1 +
.../Event/DomainEventSubscriberLocator.php | 1 +
.../MySqlDoctrineDomainEventsConsumer.php | 9 +-
.../Bus/Event/MySql/MySqlDoctrineEventBus.php | 1 +
.../Bus/Event/RabbitMq/RabbitMqConfigurer.php | 5 +-
.../RabbitMq/RabbitMqDomainEventsConsumer.php | 11 +-
.../Bus/Event/RabbitMq/RabbitMqEventBus.php | 9 +-
.../RabbitMq/RabbitMqQueueNameFormatter.php | 1 +
.../WithPrometheusMonitoringEventBus.php | 9 +-
.../Doctrine/DatabaseConnections.php | 1 +
.../Dbal/DbalCustomTypesRegistrar.php | 1 +
.../Doctrine/DoctrineEntityManagerFactory.php | 1 +
.../Elasticsearch/ElasticsearchClient.php | 4 +-
.../Infrastructure/Logger/MonologLogger.php | 4 +-
.../Monitoring/PrometheusMonitor.php | 4 +-
.../Doctrine/DoctrineCriteriaConverter.php | 8 +-
.../Persistence/Doctrine/UuidType.php | 1 +
.../ElasticsearchCriteriaConverter.php | 1 +
.../Elasticsearch/ElasticsearchRepository.php | 1 +
.../Symfony/AddJsonBodyToRequestListener.php | 2 +-
.../Infrastructure/Symfony/ApiController.php | 1 +
.../Symfony/ApiExceptionListener.php | 4 +-
.../ApiExceptionsHttpStatusCodeMapping.php | 1 +
.../Symfony/BasicHttpAuthMiddleware.php | 4 +-
.../Auth/AuthModuleUnitTestCase.php | 4 +-
.../PhpUnit/BackofficeEnvironmentArranger.php | 3 +-
.../Courses/CoursesModuleUnitTestCase.php | 4 +-
.../CoursesCounterModuleUnitTestCase.php | 4 +-
.../PhpUnit/MoocEnvironmentArranger.php | 3 +-
tests/Shared/Domain/DuplicatorMother.php | 1 +
tests/Shared/Domain/IntegerMother.php | 2 +-
tests/Shared/Domain/MotherCreator.php | 4 +-
tests/Shared/Domain/RandomElementPicker.php | 2 +-
.../Infrastructure/Behat/ApiContext.php | 8 +-
.../Behat/ApplicationFeatureContext.php | 2 +-
.../Command/InMemorySymfonyCommandBusTest.php | 2 +-
.../Event/RabbitMq/RabbitMqEventBusTest.php | 14 +-
.../Infrastructure/Bus/Query/FakeResponse.php | 2 +-
.../Bus/Query/InMemorySymfonyQueryBusTest.php | 2 +-
.../Doctrine/MySqlDatabaseCleaner.php | 1 +
.../Elastic/ElasticDatabaseCleaner.php | 1 +
.../Shared/Infrastructure/Mink/MinkHelper.php | 2 +-
.../Mink/MinkSessionRequestHelper.php | 4 +-
.../Mockery/CodelyTvMatcherIsSimilar.php | 4 +-
.../AggregateRootArraySimilarComparator.php | 3 +-
.../DomainEventArraySimilarComparator.php | 3 +-
.../CodelyTvConstraintIsSimilar.php | 3 +-
.../PhpUnit/InfrastructureTestCase.php | 2 +-
.../Infrastructure/PhpUnit/UnitTestCase.php | 8 +-
125 files changed, 2045 insertions(+), 1724 deletions(-)
delete mode 100644 etc/infrastructure/php/extensions/rabbitmq.sh
delete mode 100644 etc/infrastructure/php/extensions/xdebug.sh
create mode 100644 rector.php
diff --git a/Dockerfile b/Dockerfile
index 5e677d79f..2487c2e17 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,12 +1,12 @@
-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 \
+RUN wget https://github.com/FriendsOfPHP/pickle/releases/download/v0.7.11/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 \
+ && apk add --no-cache autoconf automake make gcc g++ bash icu-dev libzip-dev rabbitmq-c rabbitmq-c-dev linux-headers \
&& docker-php-ext-install -j$(nproc) \
bcmath \
opcache \
@@ -14,13 +14,9 @@ RUN apk --update upgrade \
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 pickle install apcu@5.1.22
+RUN pickle install amqp@2.1.0
+RUN pickle install xdebug@3.2.2
RUN docker-php-ext-enable \
amqp \
diff --git a/apps/backoffice/backend/public/index.php b/apps/backoffice/backend/public/index.php
index 8c109ee2d..c8cc58db9 100644
--- a/apps/backoffice/backend/public/index.php
+++ b/apps/backoffice/backend/public/index.php
@@ -14,7 +14,7 @@
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
Request::setTrustedProxies(
- explode(',', $trustedProxies),
+ explode(',', (string) $trustedProxies),
Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST
);
}
diff --git a/apps/backoffice/backend/src/BackofficeBackendKernel.php b/apps/backoffice/backend/src/BackofficeBackendKernel.php
index 25c8aa935..aa828f9f8 100644
--- a/apps/backoffice/backend/src/BackofficeBackendKernel.php
+++ b/apps/backoffice/backend/src/BackofficeBackendKernel.php
@@ -9,6 +9,7 @@
use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Kernel;
+
use function dirname;
final class BackofficeBackendKernel extends Kernel
diff --git a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
index 7b1570dbb..3819852df 100644
--- a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
+++ b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
@@ -10,9 +10,10 @@
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)
{
diff --git a/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php b/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php
index 6326b58fb..a4fced07a 100644
--- a/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php
+++ b/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php
@@ -9,7 +9,7 @@
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
-final class MetricsController
+final readonly class MetricsController
{
public function __construct(private PrometheusMonitor $monitor)
{
diff --git a/apps/backoffice/frontend/public/index.php b/apps/backoffice/frontend/public/index.php
index af90aac44..f8510243a 100644
--- a/apps/backoffice/frontend/public/index.php
+++ b/apps/backoffice/frontend/public/index.php
@@ -14,7 +14,7 @@
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
Request::setTrustedProxies(
- explode(',', $trustedProxies),
+ explode(',', (string) $trustedProxies),
Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST
);
}
diff --git a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
index 2b5e5247b..9413df568 100644
--- a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
+++ b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
@@ -9,6 +9,7 @@
use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Kernel;
+
use function dirname;
final class BackofficeFrontendKernel extends Kernel
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/Metrics/MetricsController.php b/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php
index 0b194cf1d..1e00d4893 100644
--- a/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php
+++ b/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php
@@ -9,7 +9,7 @@
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
-final class MetricsController
+final readonly class MetricsController
{
public function __construct(private PrometheusMonitor $monitor)
{
diff --git a/apps/bootstrap.php b/apps/bootstrap.php
index f9717d54c..1c3488ac1 100644
--- a/apps/bootstrap.php
+++ b/apps/bootstrap.php
@@ -10,7 +10,7 @@
// Run "composer dump-env prod" to create it (requires symfony/flex >=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(
@@ -23,6 +23,6 @@
$_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['APP_DEBUG'] ??= $_ENV['APP_DEBUG'] ?? 'prod' !== $_SERVER['APP_ENV'];
$_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/public/index.php b/apps/mooc/backend/public/index.php
index 9d02406aa..d3de27b72 100644
--- a/apps/mooc/backend/public/index.php
+++ b/apps/mooc/backend/public/index.php
@@ -14,7 +14,7 @@
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
Request::setTrustedProxies(
- explode(',', $trustedProxies),
+ explode(',', (string) $trustedProxies),
Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST
);
}
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..49a32a533 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();
}
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
index 3fd739cbf..fcf4c5ba7 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.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\each;
final class GenerateSupervisorRabbitMqConsumerFilesCommand extends Command
@@ -20,7 +21,7 @@ final class GenerateSupervisorRabbitMqConsumerFilesCommand extends Command
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();
}
diff --git a/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php b/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php
index 82c30e36f..c69c0fd70 100644
--- a/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php
+++ b/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php
@@ -8,7 +8,7 @@
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
-final class HealthCheckGetController
+final readonly class HealthCheckGetController
{
public function __construct(private RandomNumberGenerator $generator)
{
diff --git a/apps/mooc/backend/src/Controller/Metrics/MetricsController.php b/apps/mooc/backend/src/Controller/Metrics/MetricsController.php
index 32428afd7..905cc6e7e 100644
--- a/apps/mooc/backend/src/Controller/Metrics/MetricsController.php
+++ b/apps/mooc/backend/src/Controller/Metrics/MetricsController.php
@@ -9,7 +9,7 @@
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
-final class MetricsController
+final readonly class MetricsController
{
public function __construct(private PrometheusMonitor $monitor)
{
diff --git a/apps/mooc/backend/src/MoocBackendKernel.php b/apps/mooc/backend/src/MoocBackendKernel.php
index 4ae0b228b..06e0ec90d 100644
--- a/apps/mooc/backend/src/MoocBackendKernel.php
+++ b/apps/mooc/backend/src/MoocBackendKernel.php
@@ -9,6 +9,7 @@
use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Kernel;
+
use function dirname;
final class MoocBackendKernel extends Kernel
diff --git a/composer.json b/composer.json
index ea800fcce..83d77b034 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,9 @@
"fakerphp/faker": "^1",
"symfony/error-handler": "^6",
- "vimeo/psalm": "^4",
- "friendsofphp/php-cs-fixer": "^3.8"
+ "vimeo/psalm": "^5.15",
+ "friendsofphp/php-cs-fixer": "^3",
+ "rector/rector": "^0.18.4"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index f12724bfe..7ededf775 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": "edaf2180f50e9c9bd8f7524b0844e9ee",
"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",
@@ -6699,51 +6683,51 @@
},
{
"name": "friendsofphp/php-cs-fixer",
- "version": "v3.8.0",
+ "version": "v3.30.0",
"source": {
"type": "git",
- "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git",
- "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3"
+ "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
+ "reference": "95c64693b2f149966a2bc05a7a4981b0343ea52f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3",
- "reference": "cbad1115aac4b5c3c5540e7210d3c9fba2f81fa3",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/95c64693b2f149966a2bc05a7a4981b0343ea52f",
+ "reference": "95c64693b2f149966a2bc05a7a4981b0343ea52f",
"shasum": ""
},
"require": {
- "composer/semver": "^3.2",
+ "composer/semver": "^3.3",
"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",
+ "sebastian/diff": "^4.0 || ^5.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/polyfill-mbstring": "^1.27",
+ "symfony/polyfill-php80": "^1.27",
+ "symfony/polyfill-php81": "^1.27",
"symfony/process": "^5.4 || ^6.0",
"symfony/stopwatch": "^5.4 || ^6.0"
},
"require-dev": {
+ "facile-it/paraunit": "^1.3 || ^2.0",
"justinrainbow/json-schema": "^5.2",
- "keradus/cli-executor": "^1.5",
- "mikey179/vfsstream": "^1.6.10",
- "php-coveralls/php-coveralls": "^2.5.2",
+ "keradus/cli-executor": "^2.0",
+ "mikey179/vfsstream": "^1.6.11",
+ "php-coveralls/php-coveralls": "^2.5.3",
"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": "^1.16",
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
- "phpunitgoodpractices/polyfill": "^1.5",
- "phpunitgoodpractices/traits": "^1.9.1",
- "symfony/phpunit-bridge": "^6.0",
+ "phpunitgoodpractices/polyfill": "^1.6",
+ "phpunitgoodpractices/traits": "^1.9.2",
+ "symfony/phpunit-bridge": "^6.2.3",
"symfony/yaml": "^5.4 || ^6.0"
},
"suggest": {
@@ -6774,9 +6758,15 @@
}
],
"description": "A tool to automatically fix PHP code style",
+ "keywords": [
+ "Static code analysis",
+ "fixer",
+ "standards",
+ "static analysis"
+ ],
"support": {
- "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues",
- "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v3.8.0"
+ "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
+ "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.30.0"
},
"funding": [
{
@@ -6784,7 +6774,7 @@
"type": "github"
}
],
- "time": "2022-03-18T17:20:59+00:00"
+ "time": "2023-09-26T22:10:43+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -6839,26 +6829,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 +6890,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 +6940,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 +6971,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 +7028,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 +7036,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 +7085,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,62 +7141,9 @@
],
"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"
- },
- {
- "name": "openlss/lib-array2xml",
- "version": "1.0.0",
- "source": {
- "type": "git",
- "url": "https://github.com/nullivex/lib-array2xml.git",
- "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
- "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
- "shasum": ""
- },
- "require": {
- "php": ">=5.3.2"
- },
- "type": "library",
- "autoload": {
- "psr-0": {
- "LSS": ""
- }
- },
- "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"
+ "time": "2023-08-13T19:53:39+00:00"
},
{
"name": "phar-io/manifest",
@@ -7308,58 +7256,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 +7368,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": {
@@ -7513,99 +7417,141 @@
"email": "me@mikevanriel.com"
}
],
- "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "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.7.3"
+ },
+ "time": "2023-08-12T11:01:26+00:00"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "1.24.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "bcad8d995980440892759db0c32acae7c8e79442"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442",
+ "reference": "bcad8d995980440892759db0c32acae7c8e79442",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^2.0",
+ "nikic/php-parser": "^4.15",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.5",
+ "phpstan/phpstan-phpunit": "^1.1",
+ "phpstan/phpstan-strict-rules": "^1.0",
+ "phpunit/phpunit": "^9.5",
+ "symfony/process": "^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
- "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1"
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2"
},
- "time": "2022-03-15T21:29:03+00:00"
+ "time": "2023-09-26T12:28:12+00:00"
},
{
- "name": "phpspec/prophecy",
- "version": "v1.15.0",
+ "name": "phpstan/phpstan",
+ "version": "1.10.35",
"source": {
"type": "git",
- "url": "https://github.com/phpspec/prophecy.git",
- "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
+ "url": "https://github.com/phpstan/phpstan.git",
+ "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
- "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e730e5facb75ffe09dfb229795e8c01a459f26c3",
+ "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3",
"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"
+ "conflict": {
+ "phpstan/phpstan-shim": "*"
},
+ "bin": [
+ "phpstan",
+ "phpstan.phar"
+ ],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
"autoload": {
- "psr-4": {
- "Prophecy\\": "src/Prophecy"
- }
+ "files": [
+ "bootstrap.php"
+ ]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "authors": [
+ "description": "PHPStan - PHP Static Analysis Tool",
+ "keywords": [
+ "dev",
+ "static analysis"
+ ],
+ "support": {
+ "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"
+ },
+ "funding": [
{
- "name": "Konstantin Kudryashov",
- "email": "ever.zet@gmail.com",
- "homepage": "http://everzet.com"
+ "url": "https://github.com/ondrejmirtes",
+ "type": "github"
},
{
- "name": "Marcello Duarte",
- "email": "marcello.duarte@gmail.com"
+ "url": "https://github.com/phpstan",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
+ "type": "tidelift"
}
],
- "description": "Highly opinionated mocking framework for PHP 5.3+",
- "homepage": "https://github.com/phpspec/prophecy",
- "keywords": [
- "Double",
- "Dummy",
- "fake",
- "mock",
- "spy",
- "stub"
- ],
- "support": {
- "issues": "https://github.com/phpspec/prophecy/issues",
- "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
- },
- "time": "2021-12-08T12:19:24+00:00"
+ "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 +7566,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 +7600,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 +7609,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 +7854,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 +7878,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 +7905,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.5-dev"
+ "dev-master": "9.6-dev"
}
},
"autoload": {
@@ -7994,7 +7936,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 +7947,69 @@
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
+ "type": "tidelift"
+ }
+ ],
+ "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": "2022-04-01T12:37:26+00:00"
+ "time": "2023-09-25T17:07:54+00:00"
},
{
"name": "roave/security-advisories",
@@ -8014,20 +8017,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 +8041,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 +8076,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 +8133,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 +8498,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 +8517,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 +8634,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 +8669,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 +8686,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 +8857,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 +8919,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 +8927,7 @@
"type": "github"
}
],
- "time": "2020-10-26T15:49:45+00:00"
+ "time": "2022-09-14T12:41:17+00:00"
},
{
"name": "sebastian/complexity",
@@ -8806,16 +8988,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 +9042,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 +9050,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 +9105,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 +9113,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 +9182,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 +9190,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 +9246,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 +9254,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 +9427,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 +9475,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 +9486,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 +9545,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 +9566,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-master": "3.2-dev"
}
},
"autoload": {
@@ -9407,7 +9589,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 +9597,7 @@
"type": "github"
}
],
- "time": "2022-03-15T09:54:48+00:00"
+ "time": "2023-02-03T06:13:03+00:00"
},
{
"name": "sebastian/version",
@@ -9470,18 +9652,81 @@
],
"time": "2020-09-28T06:39:44+00:00"
},
+ {
+ "name": "spatie/array-to-xml",
+ "version": "3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/spatie/array-to-xml.git",
+ "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f9ab39c808500c347d5a8b6b13310bd5221e39e7",
+ "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "php": "^8.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^1.2",
+ "pestphp/pest": "^1.21",
+ "spatie/pest-plugin-snapshots": "^1.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Spatie\\ArrayToXml\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Freek Van der Herten",
+ "email": "freek@spatie.be",
+ "homepage": "https://freek.dev",
+ "role": "Developer"
+ }
+ ],
+ "description": "Convert an array to xml",
+ "homepage": "https://github.com/spatie/array-to-xml",
+ "keywords": [
+ "array",
+ "convert",
+ "xml"
+ ],
+ "support": {
+ "source": "https://github.com/spatie/array-to-xml/tree/3.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://spatie.be/open-source/support-us",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/spatie",
+ "type": "github"
+ }
+ ],
+ "time": "2023-07-19T18:30:26+00:00"
+ },
{
"name": "symfony/browser-kit",
- "version": "v6.1.0",
+ "version": "v6.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "b839cef6e6526bd2090efe92c218d8c7479a51e0"
+ "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/b839cef6e6526bd2090efe92c218d8c7479a51e0",
- "reference": "b839cef6e6526bd2090efe92c218d8c7479a51e0",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/ca4a988488f61ac18f8f845445eabdd36f89aa8d",
+ "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d",
"shasum": ""
},
"require": {
@@ -9494,9 +9739,6 @@
"symfony/mime": "^5.4|^6.0",
"symfony/process": "^5.4|^6.0"
},
- "suggest": {
- "symfony/process": ""
- },
"type": "library",
"autoload": {
"psr-4": {
@@ -9523,7 +9765,7 @@
"description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/browser-kit/tree/v6.1.0"
+ "source": "https://github.com/symfony/browser-kit/tree/v6.3.2"
},
"funding": [
{
@@ -9539,20 +9781,20 @@
"type": "tidelift"
}
],
- "time": "2022-05-06T20:04:05+00:00"
+ "time": "2023-07-06T06:56:43+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v6.1.0",
+ "version": "v6.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "05c40f02f621609404b8820ff8bc39acb46e19cf"
+ "reference": "883d961421ab1709877c10ac99451632a3d6fa57"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/05c40f02f621609404b8820ff8bc39acb46e19cf",
- "reference": "05c40f02f621609404b8820ff8bc39acb46e19cf",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57",
+ "reference": "883d961421ab1709877c10ac99451632a3d6fa57",
"shasum": ""
},
"require": {
@@ -9588,7 +9830,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v6.1.0"
+ "source": "https://github.com/symfony/css-selector/tree/v6.3.2"
},
"funding": [
{
@@ -9604,20 +9846,20 @@
"type": "tidelift"
}
],
- "time": "2022-02-25T11:15:52+00:00"
+ "time": "2023-07-12T16:00:22+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v6.1.0",
+ "version": "v6.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "baacc99edd169bd8e06723f4c38150ef97feca0f"
+ "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/baacc99edd169bd8e06723f4c38150ef97feca0f",
- "reference": "baacc99edd169bd8e06723f4c38150ef97feca0f",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1",
+ "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1",
"shasum": ""
},
"require": {
@@ -9629,9 +9871,6 @@
"require-dev": {
"symfony/css-selector": "^5.4|^6.0"
},
- "suggest": {
- "symfony/css-selector": ""
- },
"type": "library",
"autoload": {
"psr-4": {
@@ -9658,7 +9897,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v6.1.0"
+ "source": "https://github.com/symfony/dom-crawler/tree/v6.3.4"
},
"funding": [
{
@@ -9674,25 +9913,25 @@
"type": "tidelift"
}
],
- "time": "2022-05-04T14:48:14+00:00"
+ "time": "2023-08-01T07:43:40+00:00"
},
{
"name": "symfony/options-resolver",
- "version": "v6.1.0",
+ "version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/options-resolver.git",
- "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4"
+ "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a3016f5442e28386ded73c43a32a5b68586dd1c4",
- "reference": "a3016f5442e28386ded73c43a32a5b68586dd1c4",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd",
+ "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd",
"shasum": ""
},
"require": {
"php": ">=8.1",
- "symfony/deprecation-contracts": "^2.1|^3"
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"type": "library",
"autoload": {
@@ -9725,7 +9964,86 @@
"options"
],
"support": {
- "source": "https://github.com/symfony/options-resolver/tree/v6.1.0"
+ "source": "https://github.com/symfony/options-resolver/tree/v6.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-12T14:21:09+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php81",
+ "version": "v1.28.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b",
+ "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.28-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.0"
},
"funding": [
{
@@ -9741,20 +10059,20 @@
"type": "tidelift"
}
],
- "time": "2022-02-25T11:15:52+00:00"
+ "time": "2023-01-26T09:26:14+00:00"
},
{
"name": "symfony/process",
- "version": "v6.1.0",
+ "version": "v6.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "318718453c2be58266f1a9e74063d13cb8dd4165"
+ "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/318718453c2be58266f1a9e74063d13cb8dd4165",
- "reference": "318718453c2be58266f1a9e74063d13cb8dd4165",
+ "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54",
+ "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54",
"shasum": ""
},
"require": {
@@ -9786,7 +10104,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v6.1.0"
+ "source": "https://github.com/symfony/process/tree/v6.3.4"
},
"funding": [
{
@@ -9802,29 +10120,30 @@
"type": "tidelift"
}
],
- "time": "2022-05-11T12:12:29+00:00"
+ "time": "2023-08-07T10:39:22+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 +10171,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,25 +10187,25 @@
"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",
+ "version": "v6.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/stopwatch.git",
- "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d"
+ "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/77dedae82ce2a26e2e9b481855473fc3b3e4e54d",
- "reference": "77dedae82ce2a26e2e9b481855473fc3b3e4e54d",
+ "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
+ "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
"shasum": ""
},
"require": {
"php": ">=8.1",
- "symfony/service-contracts": "^1|^2|^3"
+ "symfony/service-contracts": "^2.5|^3"
},
"type": "library",
"autoload": {
@@ -9914,7 +10233,7 @@
"description": "Provides a way to profile code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/stopwatch/tree/v6.1.0"
+ "source": "https://github.com/symfony/stopwatch/tree/v6.3.0"
},
"funding": [
{
@@ -9930,32 +10249,35 @@
"type": "tidelift"
}
],
- "time": "2022-02-25T11:15:52+00:00"
+ "time": "2023-02-16T10:14:28+00:00"
},
{
"name": "symfony/translation",
- "version": "v6.1.0",
+ "version": "v6.3.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "b254416631615bc6fe49b0a67f18658827288147"
+ "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/b254416631615bc6fe49b0a67f18658827288147",
- "reference": "b254416631615bc6fe49b0a67f18658827288147",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd",
+ "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd",
"shasum": ""
},
"require": {
"php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/translation-contracts": "^2.3|^3.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"
},
@@ -9963,24 +10285,20 @@
"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": "^1.1|^2.0|^3.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": "^1.1.2|^2|^3",
+ "symfony/service-contracts": "^2.5|^3",
"symfony/yaml": "^5.4|^6.0"
},
- "suggest": {
- "psr/log-implementation": "To use logging capability in translator",
- "symfony/config": "",
- "symfony/yaml": ""
- },
"type": "library",
"autoload": {
"files": [
@@ -10010,7 +10328,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v6.1.0"
+ "source": "https://github.com/symfony/translation/tree/v6.3.3"
},
"funding": [
{
@@ -10026,7 +10344,7 @@
"type": "tidelift"
}
],
- "time": "2022-05-11T12:12:29+00:00"
+ "time": "2023-07-31T07:08:24+00:00"
},
{
"name": "theseer/tokenizer",
@@ -10080,24 +10398,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 +10424,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 +10471,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 +10496,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 +10562,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 +10572,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^8.1",
+ "php": "^8.2",
"ext-amqp": "*",
"ext-apcu": "*",
"ext-json": "*",
@@ -10313,5 +10582,5 @@
"platform-dev": {
"ext-xdebug": "*"
},
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.6.0"
}
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..999cebd2d 100644
--- a/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
+++ b/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
@@ -11,9 +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)
{
}
diff --git a/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php b/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
index 0fc8c2806..11d0dd65e 100644
--- a/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
+++ b/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
@@ -11,9 +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)
{
}
diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
index 8c7447ef1..9eead61b2 100644
--- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
+++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
@@ -4,13 +4,13 @@
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/AnalyticsDomainEventBody.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
index 744dfa75b..492035244 100644
--- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
+++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
@@ -4,9 +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)
{
}
diff --git a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
index aef9a81b3..05d917398 100644
--- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
+++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
@@ -6,9 +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)
{
}
diff --git a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
index 7c7641853..8244e15ee 100644
--- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
+++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
@@ -8,9 +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)
{
}
diff --git a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
index d86d65576..ed5291d5b 100644
--- a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
+++ b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
@@ -11,9 +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)
{
}
diff --git a/src/Backoffice/Auth/Domain/AuthUser.php b/src/Backoffice/Auth/Domain/AuthUser.php
index 1e951c905..1599ab64e 100644
--- a/src/Backoffice/Auth/Domain/AuthUser.php
+++ b/src/Backoffice/Auth/Domain/AuthUser.php
@@ -4,9 +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)
{
}
diff --git a/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php b/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php
index d1645e452..c40aabb1f 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
diff --git a/src/Backoffice/Courses/Application/BackofficeCourseResponse.php b/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
index 7c8440ba6..4cdbc27e2 100644
--- a/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
+++ b/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
@@ -4,9 +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)
{
}
diff --git a/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php b/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
index 9fb967455..73b6f37fc 100644
--- a/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
+++ b/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
@@ -7,9 +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)
{
}
diff --git a/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php b/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
index a7ca626ce..ae37cd7db 100644
--- a/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
+++ b/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
@@ -7,9 +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)
{
}
diff --git a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
index 0045c8e4c..77990a16f 100644
--- a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
@@ -8,11 +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)
{
}
diff --git a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
index dde35f54f..d76086033 100644
--- a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
+++ b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
@@ -7,9 +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)
{
}
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
index 74cdc7372..22894e646 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
@@ -11,11 +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)
{
}
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
index f35fb7089..10772edd5 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
@@ -6,14 +6,14 @@
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
) {
}
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
index a3cfe6f71..2ceb62d9a 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
@@ -9,9 +9,9 @@
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)
{
}
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..1e9333096 100644
--- a/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
@@ -7,6 +7,7 @@
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
diff --git a/src/Mooc/Courses/Application/Create/CourseCreator.php b/src/Mooc/Courses/Application/Create/CourseCreator.php
index b85373945..ab03911f6 100644
--- a/src/Mooc/Courses/Application/Create/CourseCreator.php
+++ b/src/Mooc/Courses/Application/Create/CourseCreator.php
@@ -11,9 +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)
{
}
diff --git a/src/Mooc/Courses/Application/Create/CreateCourseCommand.php b/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
index 970c9cdaf..4a25411e9 100644
--- a/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
+++ b/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
@@ -6,9 +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)
{
}
diff --git a/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php b/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
index 49b2eaf66..75560f9cb 100644
--- a/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
+++ b/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
@@ -9,9 +9,9 @@
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)
{
}
diff --git a/src/Mooc/Courses/Application/Find/CourseFinder.php b/src/Mooc/Courses/Application/Find/CourseFinder.php
index b307b9d37..ab49e64b2 100644
--- a/src/Mooc/Courses/Application/Find/CourseFinder.php
+++ b/src/Mooc/Courses/Application/Find/CourseFinder.php
@@ -9,9 +9,9 @@
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)
{
}
diff --git a/src/Mooc/Courses/Application/Update/CourseRenamer.php b/src/Mooc/Courses/Application/Update/CourseRenamer.php
index e1916c4f4..7beff5deb 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/CoursesCounter/Application/Find/CoursesCounterFinder.php b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
index a0e5c2996..1121c2123 100644
--- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
+++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
@@ -7,9 +7,9 @@
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)
{
}
diff --git a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
index b0373e28e..5ecba9378 100644
--- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
+++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
@@ -6,9 +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)
{
}
diff --git a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
index b7808f602..e9a919188 100644
--- a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
+++ b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
@@ -6,9 +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)
{
}
diff --git a/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php b/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
index 0da54ad77..e5fe2e035 100644
--- a/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
+++ b/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
@@ -11,12 +11,12 @@
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
) {
}
diff --git a/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php b/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
index 8e1a83e6f..dc3d6c39c 100644
--- a/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
+++ b/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
@@ -7,11 +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)
{
}
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
index fc73ba58b..fef3ca6d0 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
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/Infrastructure/Doctrine/DbalTypesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
index 436a867d5..d69612db5 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;
diff --git a/src/Mooc/Videos/Application/Create/CreateVideoCommand.php b/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
index 636298100..b6c1ae53a 100644
--- a/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
+++ b/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
@@ -6,14 +6,14 @@
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
) {
}
diff --git a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
index e6b8b0d89..6b2ee2d6b 100644
--- a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
+++ b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
@@ -11,9 +11,9 @@
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)
{
}
diff --git a/src/Mooc/Videos/Application/Create/VideoCreator.php b/src/Mooc/Videos/Application/Create/VideoCreator.php
index 91180306b..35920496f 100644
--- a/src/Mooc/Videos/Application/Create/VideoCreator.php
+++ b/src/Mooc/Videos/Application/Create/VideoCreator.php
@@ -13,9 +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)
{
}
diff --git a/src/Mooc/Videos/Application/Find/FindVideoQuery.php b/src/Mooc/Videos/Application/Find/FindVideoQuery.php
index eadef0af1..f8f3902ab 100644
--- a/src/Mooc/Videos/Application/Find/FindVideoQuery.php
+++ b/src/Mooc/Videos/Application/Find/FindVideoQuery.php
@@ -6,9 +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)
{
}
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..008af9702 100644
--- a/src/Mooc/Videos/Application/Find/VideoResponse.php
+++ b/src/Mooc/Videos/Application/Find/VideoResponse.php
@@ -6,14 +6,14 @@
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..11c51b7c4 100644
--- a/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
+++ b/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
@@ -6,9 +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)
{
}
diff --git a/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php b/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php
index 4f52d05fc..9511e2a51 100644
--- a/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php
+++ b/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php
@@ -7,9 +7,9 @@
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)
{
}
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/VideoFinder.php b/src/Mooc/Videos/Domain/VideoFinder.php
index ba7a22f00..79494d770 100644
--- a/src/Mooc/Videos/Domain/VideoFinder.php
+++ b/src/Mooc/Videos/Domain/VideoFinder.php
@@ -4,9 +4,9 @@
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)
{
}
diff --git a/src/Shared/Domain/Collection.php b/src/Shared/Domain/Collection.php
index 137e6c234..6c60749a9 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,7 +19,7 @@ public function __construct(private readonly array $items)
abstract protected function type(): string;
- public function getIterator(): ArrayIterator
+ public function getIterator(): Traversable
{
return new ArrayIterator($this->items());
}
diff --git a/src/Shared/Domain/Criteria/Criteria.php b/src/Shared/Domain/Criteria/Criteria.php
index 1c762ed23..3496f3fd1 100644
--- a/src/Shared/Domain/Criteria/Criteria.php
+++ b/src/Shared/Domain/Criteria/Criteria.php
@@ -4,13 +4,13 @@
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
) {
}
diff --git a/src/Shared/Domain/Criteria/Filter.php b/src/Shared/Domain/Criteria/Filter.php
index 5a8cbf3bf..cd7c95423 100644
--- a/src/Shared/Domain/Criteria/Filter.php
+++ b/src/Shared/Domain/Criteria/Filter.php
@@ -4,12 +4,12 @@
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
) {
}
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..388d09370 100644
--- a/src/Shared/Domain/Criteria/Order.php
+++ b/src/Shared/Domain/Criteria/Order.php
@@ -4,9 +4,9 @@
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)
{
}
diff --git a/src/Shared/Domain/SecondsInterval.php b/src/Shared/Domain/SecondsInterval.php
index 55df80a10..975097271 100644
--- a/src/Shared/Domain/SecondsInterval.php
+++ b/src/Shared/Domain/SecondsInterval.php
@@ -6,9 +6,9 @@
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);
}
diff --git a/src/Shared/Domain/Utils.php b/src/Shared/Domain/Utils.php
index e0eb706f8..01a3e3fa7 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
diff --git a/src/Shared/Domain/ValueObject/Enum.php b/src/Shared/Domain/ValueObject/Enum.php
index 1d7eed987..e1f9af9ba 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;
diff --git a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
index eb5cb6efe..f74cb1f79 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;
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
index cb2e77213..7bb31aa46 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
@@ -8,9 +8,9 @@
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)
{
}
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
index 956d864bc..b2d8d8057 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;
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
index f456bc573..381e1f139 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
diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
index 85b3481cc..d52951593 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();
}
@@ -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..280d0e88f 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
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php
index b16eca437..a46f22200 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php
@@ -6,11 +6,12 @@
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)
{
}
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
index 8c007002b..bdd5b09ea 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
@@ -9,16 +9,17 @@
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
) {
}
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
index 2440afda0..f9f92da4b 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
@@ -9,14 +9,15 @@
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
) {
}
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..68ff4f25e 100644
--- a/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
@@ -7,14 +7,15 @@
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
) {
}
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..5bc719ff0 100644
--- a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
+++ b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
@@ -13,6 +13,7 @@
use Doctrine\ORM\Mapping\Driver\SimplifiedXmlDriver;
use Doctrine\ORM\ORMSetup;
use RuntimeException;
+
use function Lambdish\Phunctional\dissoc;
final class DoctrineEntityManagerFactory
diff --git a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
index 1ead42d3e..b5e52eff3 100644
--- a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
+++ b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
@@ -6,9 +6,9 @@
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)
{
}
diff --git a/src/Shared/Infrastructure/Logger/MonologLogger.php b/src/Shared/Infrastructure/Logger/MonologLogger.php
index 9dc205e6f..1bf01d5bd 100644
--- a/src/Shared/Infrastructure/Logger/MonologLogger.php
+++ b/src/Shared/Infrastructure/Logger/MonologLogger.php
@@ -6,9 +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)
{
}
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..382a1ee34 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
@@ -12,12 +12,12 @@
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 = []
) {
}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
index d9fd8b3ab..2fd2598a7 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
@@ -9,6 +9,7 @@
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
diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php
index bd8a5373b..18aa91e71 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
diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
index 1949acdbe..698eb4a9a 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
@@ -7,6 +7,7 @@
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;
diff --git a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
index a365d8c35..71ef755e2 100644
--- a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
+++ b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
@@ -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..8f88d26c4 100644
--- a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
+++ b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
@@ -10,9 +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)
{
}
diff --git a/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php b/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php
index 31a8b0586..573bf5633 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
diff --git a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
index 6b4a74093..f77d01aa7 100644
--- a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
+++ b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
@@ -12,9 +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)
{
}
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/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php
index c042ffc2e..a9210551b 100644
--- a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php
+++ b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php
@@ -9,9 +9,10 @@
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)
{
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/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..4f44bbf9d 100644
--- a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php
+++ b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php
@@ -7,9 +7,10 @@
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)
{
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..b1c76c1ec 100644
--- a/tests/Shared/Infrastructure/Behat/ApiContext.php
+++ b/tests/Shared/Infrastructure/Behat/ApiContext.php
@@ -13,10 +13,10 @@
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));
@@ -101,6 +101,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..710b1d5c3 100644
--- a/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php
+++ b/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php
@@ -10,7 +10,7 @@
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,
diff --git a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
index 3586816a1..a394baaec 100644
--- a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
@@ -41,7 +41,7 @@ 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
+ public function __invoke(FakeCommand $command): never
{
throw new RuntimeException('This works fine!');
}
diff --git a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
index 0934f42bc..f9e921a8b 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
{
@@ -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/Query/FakeResponse.php b/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php
index 36b437b5e..2ba0b4cee 100644
--- a/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php
+++ b/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php
@@ -6,7 +6,7 @@
use CodelyTv\Shared\Domain\Bus\Query\Response;
-final class FakeResponse implements Response
+final readonly class FakeResponse implements Response
{
public function __construct(private int $number)
{
diff --git a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
index 48fd55d26..d25b907f8 100644
--- a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
@@ -41,7 +41,7 @@ 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
+ public function __invoke(FakeQuery $query): never
{
throw new RuntimeException('This works fine!');
}
diff --git a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
index 19058ab66..a8b6b0688 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;
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..a820db5e2 100644
--- a/tests/Shared/Infrastructure/Mink/MinkHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkHelper.php
@@ -9,7 +9,7 @@
use Symfony\Component\BrowserKit\AbstractBrowser;
use Symfony\Component\DomCrawler\Crawler;
-final class MinkHelper
+final readonly class MinkHelper
{
public function __construct(private Session $session)
{
diff --git a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
index 9cc8525c6..b1760fce0 100644
--- a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
@@ -7,9 +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)
{
}
diff --git a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
index 056fe1e26..73a59cc64 100644
--- a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
+++ b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
@@ -7,9 +7,9 @@
use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\Constraint\CodelyTvConstraintIsSimilar;
use Mockery\Matcher\MatcherAbstract;
-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/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/Constraint/CodelyTvConstraintIsSimilar.php b/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
index 7a19a089c..5ee3ce2ed 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
@@ -14,13 +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)
{
}
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..919441ae7 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 UuidGenerator|MockInterface|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
@@ -58,7 +58,7 @@ protected function shouldGenerateUuid(string $uuid): void
protected function uuidGenerator(): UuidGenerator|MockInterface
{
- return $this->uuidGenerator = $this->uuidGenerator ?? $this->mock(UuidGenerator::class);
+ return $this->uuidGenerator ??= $this->mock(UuidGenerator::class);
}
protected function notify(DomainEvent $event, callable $subscriber): void
From b2aa09486f5a01464831e66442754f2d378cfc1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Wed, 27 Sep 2023 14:17:19 +0200
Subject: [PATCH 12/40] chore: use pecl instead of pickle (#352)
---
Dockerfile | 20 ++++++--------------
1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 2487c2e17..e5dd7520c 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,27 +1,19 @@
FROM php:8.2-fpm-alpine
WORKDIR /app
-RUN wget https://github.com/FriendsOfPHP/pickle/releases/download/v0.7.11/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 linux-headers \
- && 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.22
-RUN pickle install amqp@2.1.0
-RUN pickle install xdebug@3.2.2
-
-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
From 966edc24cc421a60ab39368013093ac72c589a6f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Wed, 27 Sep 2023 19:43:18 +0200
Subject: [PATCH 13/40] feat: add easy code standard (#353)
* feat: add easy code standard
* style: apply easy code standard
* style: add new php cs fixer rules
* style: apply new php cs fixer rules
* style: apply new php cs fixer rules
---
.php-cs-fixer.dist.php | 23 -
Makefile | 2 +-
apps/backoffice/backend/config/bundles.php | 4 +-
apps/backoffice/backend/public/index.php | 6 +-
.../backend/src/BackofficeBackendKernel.php | 2 +-
.../Courses/CoursesGetController.php | 18 +-
.../Controller/Metrics/MetricsController.php | 6 +-
apps/backoffice/frontend/config/bundles.php | 6 +-
apps/backoffice/frontend/public/index.php | 6 +-
.../frontend/src/BackofficeFrontendKernel.php | 2 +-
.../Courses/CoursesGetWebController.php | 8 +-
.../Courses/CoursesPostWebController.php | 4 +-
.../Controller/Home/HomeGetWebController.php | 2 +-
.../Controller/Metrics/MetricsController.php | 6 +-
apps/bootstrap.php | 10 +-
apps/mooc/backend/config/bundles.php | 4 +-
apps/mooc/backend/public/index.php | 6 +-
.../ConsumeRabbitMqDomainEventsCommand.php | 2 +-
...SupervisorRabbitMqConsumerFilesCommand.php | 14 +-
.../HealthCheck/HealthCheckGetController.php | 6 +-
.../Controller/Metrics/MetricsController.php | 6 +-
apps/mooc/backend/src/MoocBackendKernel.php | 2 +-
composer.json | 3 +-
composer.lock | 424 +++---------------
ecs.php | 137 ++++++
.../Application/Store/DomainEventStorer.php | 4 +-
.../Store/StoreDomainEventOnOccurred.php | 10 +-
.../Domain/AnalyticsDomainEvent.php | 3 +-
.../AnalyticsDomainEventAggregateId.php | 4 +-
.../Domain/AnalyticsDomainEventBody.php | 4 +-
.../Domain/AnalyticsDomainEventId.php | 4 +-
.../Domain/AnalyticsDomainEventName.php | 4 +-
.../Authenticate/AuthenticateUserCommand.php | 4 +-
.../AuthenticateUserCommandHandler.php | 4 +-
.../Authenticate/UserAuthenticator.php | 6 +-
src/Backoffice/Auth/Domain/AuthPassword.php | 2 +-
src/Backoffice/Auth/Domain/AuthUser.php | 4 +-
src/Backoffice/Auth/Domain/AuthUsername.php | 4 +-
.../Persistence/InMemoryAuthRepository.php | 2 +-
.../Application/BackofficeCourseResponse.php | 4 +-
.../Create/BackofficeCourseCreator.php | 4 +-
.../CreateBackofficeCourseOnCourseCreated.php | 4 +-
.../AllBackofficeCoursesSearcher.php | 4 +-
.../SearchAllBackofficeCoursesQuery.php | 4 +-
...SearchAllBackofficeCoursesQueryHandler.php | 4 +-
.../BackofficeCoursesByCriteriaSearcher.php | 4 +-
...SearchBackofficeCoursesByCriteriaQuery.php | 3 +-
...ackofficeCoursesByCriteriaQueryHandler.php | 6 +-
.../Courses/Domain/BackofficeCourse.php | 10 +-
...nMemoryCacheBackofficeCourseRepository.php | 8 +-
.../Application/Create/CourseCreator.php | 4 +-
.../Create/CreateCourseCommand.php | 4 +-
.../Create/CreateCourseCommandHandler.php | 8 +-
.../Courses/Application/Find/CourseFinder.php | 6 +-
.../Application/Update/CourseRenamer.php | 2 +-
src/Mooc/Courses/Domain/Course.php | 4 +-
.../Domain/CourseCreatedDomainEvent.php | 2 +-
src/Mooc/Courses/Domain/CourseDuration.php | 4 +-
src/Mooc/Courses/Domain/CourseName.php | 4 +-
.../Application/Find/CoursesCounterFinder.php | 6 +-
.../Find/CoursesCounterResponse.php | 4 +-
.../Find/FindCoursesCounterQuery.php | 4 +-
.../Find/FindCoursesCounterQueryHandler.php | 4 +-
.../Increment/CoursesCounterIncrementer.php | 3 +-
...IncrementCoursesCounterOnCourseCreated.php | 4 +-
.../CoursesCounter/Domain/CoursesCounter.php | 4 +-
.../Domain/CoursesCounterId.php | 4 +-
src/Mooc/Shared/Domain/Courses/CourseId.php | 4 +-
src/Mooc/Shared/Domain/Videos/VideoUrl.php | 2 +-
.../Doctrine/DbalTypesSearcher.php | 9 +-
.../Doctrine/DoctrinePrefixesSearcher.php | 2 +-
.../Doctrine/MoocEntityManagerFactory.php | 2 +-
.../Application/Create/CreateVideoCommand.php | 3 +-
.../Create/CreateVideoCommandHandler.php | 12 +-
.../Application/Create/VideoCreator.php | 4 +-
.../Application/Find/FindVideoQuery.php | 4 +-
.../Videos/Application/Find/VideoResponse.php | 3 +-
.../Application/Trim/TrimVideoCommand.php | 4 +-
.../Trim/TrimVideoCommandHandler.php | 6 +-
.../Videos/Application/Trim/VideoTrimmer.php | 4 +-
src/Mooc/Videos/Domain/Video.php | 5 +-
.../Videos/Domain/VideoCreatedDomainEvent.php | 8 +-
src/Mooc/Videos/Domain/VideoFinder.php | 6 +-
src/Mooc/Videos/Domain/VideoId.php | 4 +-
src/Mooc/Videos/Domain/VideoTitle.php | 4 +-
src/Mooc/Videos/Domain/VideoType.php | 2 +-
.../Persistence/VideoRepositoryMySql.php | 10 +-
src/Shared/Domain/Aggregate/AggregateRoot.php | 2 +-
src/Shared/Domain/Bus/Command/Command.php | 4 +-
.../Domain/Bus/Command/CommandHandler.php | 4 +-
src/Shared/Domain/Bus/Event/DomainEvent.php | 10 +-
src/Shared/Domain/Bus/Query/Query.php | 4 +-
src/Shared/Domain/Bus/Query/QueryHandler.php | 4 +-
src/Shared/Domain/Bus/Query/Response.php | 4 +-
src/Shared/Domain/Collection.php | 4 +-
src/Shared/Domain/Criteria/Criteria.php | 3 +-
src/Shared/Domain/Criteria/Filter.php | 3 +-
src/Shared/Domain/Criteria/FilterField.php | 4 +-
src/Shared/Domain/Criteria/FilterOperator.php | 10 +-
src/Shared/Domain/Criteria/FilterValue.php | 4 +-
src/Shared/Domain/Criteria/Order.php | 14 +-
src/Shared/Domain/Criteria/OrderBy.php | 4 +-
src/Shared/Domain/Criteria/OrderType.php | 2 +-
src/Shared/Domain/Second.php | 4 +-
src/Shared/Domain/SecondsInterval.php | 2 +-
src/Shared/Domain/Utils.php | 13 +-
src/Shared/Domain/ValueObject/Enum.php | 16 +-
.../Domain/ValueObject/IntValueObject.php | 8 +-
src/Shared/Domain/ValueObject/SimpleUuid.php | 7 +
.../Domain/ValueObject/StringValueObject.php | 6 +-
src/Shared/Domain/ValueObject/Uuid.php | 10 +-
.../Bus/CallableFirstParameterExtractor.php | 6 +-
.../Bus/Event/DomainEventJsonDeserializer.php | 10 +-
.../Bus/Event/DomainEventJsonSerializer.php | 6 +-
.../Bus/Event/DomainEventMapping.php | 5 +-
.../Event/DomainEventSubscriberLocator.php | 4 +-
.../InMemory/InMemorySymfonyEventBus.php | 4 +-
.../MySqlDoctrineDomainEventsConsumer.php | 4 +-
.../Bus/Event/MySql/MySqlDoctrineEventBus.php | 8 +-
.../Bus/Event/RabbitMq/RabbitMqConfigurer.php | 20 +-
.../Bus/Event/RabbitMq/RabbitMqConnection.php | 8 +-
.../RabbitMq/RabbitMqDomainEventsConsumer.php | 11 +-
.../Bus/Event/RabbitMq/RabbitMqEventBus.php | 11 +-
.../WithPrometheusMonitoringEventBus.php | 3 +-
.../Doctrine/DoctrineEntityManagerFactory.php | 20 +-
.../Elasticsearch/ElasticsearchClient.php | 8 +-
.../ElasticsearchClientFactory.php | 2 +-
.../Infrastructure/Logger/MonologLogger.php | 4 +-
.../Doctrine/DoctrineCriteriaConverter.php | 3 +-
.../Doctrine/DoctrineRepository.php | 4 +-
.../Persistence/Doctrine/UuidType.php | 8 +-
.../Elasticsearch/ElasticQueryGenerator.php | 21 +-
.../ElasticsearchCriteriaConverter.php | 8 +-
.../Elasticsearch/ElasticsearchRepository.php | 6 +-
.../Symfony/AddJsonBodyToRequestListener.php | 2 +-
.../Symfony/ApiExceptionListener.php | 6 +-
.../ApiExceptionsHttpStatusCodeMapping.php | 4 +-
.../Symfony/BasicHttpAuthMiddleware.php | 12 +-
.../Infrastructure/Symfony/WebController.php | 18 +-
.../AuthenticateUserCommandHandlerTest.php | 6 +-
.../Domain/BackofficeCourseCriteriaMother.php | 10 +-
...icsearchBackofficeCourseRepositoryTest.php | 14 +-
.../MySqlBackofficeCourseRepositoryTest.php | 14 +-
.../PhpUnit/BackofficeEnvironmentArranger.php | 8 +-
.../Create/CreateCourseCommandHandlerTest.php | 2 +-
.../Application/Update/CourseRenamerTest.php | 4 +-
.../FindCoursesCounterQueryHandlerTest.php | 4 +-
...ementCoursesCounterOnCourseCreatedTest.php | 18 +-
.../PhpUnit/MoocEnvironmentArranger.php | 8 +-
.../Infrastructure/Behat/ApiContext.php | 10 +-
.../Behat/ApplicationFeatureContext.php | 3 +-
.../Bus/Command/FakeCommand.php | 4 +-
.../Command/InMemorySymfonyCommandBusTest.php | 2 +-
.../Event/MySql/MySqlDoctrineEventBusTest.php | 13 +-
.../Event/RabbitMq/RabbitMqEventBusTest.php | 10 +-
.../TestAllWorksOnRabbitMqEventsPublished.php | 9 +-
.../Infrastructure/Bus/Query/FakeQuery.php | 4 +-
.../Infrastructure/Bus/Query/FakeResponse.php | 4 +-
.../Bus/Query/InMemorySymfonyQueryBusTest.php | 4 +-
.../Doctrine/MySqlDatabaseCleaner.php | 2 +-
.../Shared/Infrastructure/Mink/MinkHelper.php | 12 +-
.../Mink/MinkSessionRequestHelper.php | 4 +-
.../Mockery/CodelyTvMatcherIsSimilar.php | 3 +-
.../AggregateRootSimilarComparator.php | 4 +-
.../Comparator/DateTimeSimilarComparator.php | 2 +-
.../DateTimeStringSimilarComparator.php | 6 +-
.../DomainEventSimilarComparator.php | 4 +-
.../CodelyTvConstraintIsSimilar.php | 27 +-
.../Infrastructure/PhpUnit/UnitTestCase.php | 6 +-
169 files changed, 604 insertions(+), 981 deletions(-)
delete mode 100644 .php-cs-fixer.dist.php
create mode 100644 ecs.php
create mode 100644 src/Shared/Domain/ValueObject/SimpleUuid.php
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/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/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 c8cc58db9..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 aa828f9f8..9e25fc2cc 100644
--- a/apps/backoffice/backend/src/BackofficeBackendKernel.php
+++ b/apps/backoffice/backend/src/BackofficeBackendKernel.php
@@ -12,7 +12,7 @@
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 3819852df..545846fc5 100644
--- a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
+++ b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
@@ -15,33 +15,31 @@
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 a4fced07a..21a639d9f 100644
--- a/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php
+++ b/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php
@@ -11,14 +11,12 @@
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 f8510243a..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 9413df568..650c7d02b 100644
--- a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
+++ b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
@@ -12,7 +12,7 @@
use function dirname;
-final class BackofficeFrontendKernel extends Kernel
+class BackofficeFrontendKernel extends Kernel
{
use MicroKernelTrait;
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 1e00d4893..1a853490c 100644
--- a/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php
+++ b/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php
@@ -11,14 +11,12 @@
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 1c3488ac1..cb93ce7f7 100644
--- a/apps/bootstrap.php
+++ b/apps/bootstrap.php
@@ -1,5 +1,7 @@
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'] ??= $_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 d3de27b72..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/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
index 49a32a533..125a50a24 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
@@ -36,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 fcf4c5ba7..5883b60db 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
@@ -16,9 +16,9 @@
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 readonly DomainEventSubscriberLocator $locator)
@@ -45,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 c69c0fd70..d500d03bb 100644
--- a/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php
+++ b/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php
@@ -10,16 +10,14 @@
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 905cc6e7e..18619a02c 100644
--- a/apps/mooc/backend/src/Controller/Metrics/MetricsController.php
+++ b/apps/mooc/backend/src/Controller/Metrics/MetricsController.php
@@ -11,14 +11,12 @@
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 06e0ec90d..9a5b3e1bc 100644
--- a/apps/mooc/backend/src/MoocBackendKernel.php
+++ b/apps/mooc/backend/src/MoocBackendKernel.php
@@ -12,7 +12,7 @@
use function dirname;
-final class MoocBackendKernel extends Kernel
+class MoocBackendKernel extends Kernel
{
use MicroKernelTrait;
diff --git a/composer.json b/composer.json
index 83d77b034..1f498b9b6 100644
--- a/composer.json
+++ b/composer.json
@@ -51,8 +51,9 @@
"fakerphp/faker": "^1",
"symfony/error-handler": "^6",
+
+ "symplify/easy-coding-standard": "^12.0",
"vimeo/psalm": "^5.15",
- "friendsofphp/php-cs-fixer": "^3",
"rector/rector": "^0.18.4"
},
"autoload": {
diff --git a/composer.lock b/composer.lock
index 7ededf775..4cb195c0d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "edaf2180f50e9c9bd8f7524b0844e9ee",
+ "content-hash": "6a083c6e70896a6fe633c8afc29cb888",
"packages": [
{
"name": "brick/math",
@@ -6681,101 +6681,6 @@
},
"time": "2021-12-24T13:14:59+00:00"
},
- {
- "name": "friendsofphp/php-cs-fixer",
- "version": "v3.30.0",
- "source": {
- "type": "git",
- "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
- "reference": "95c64693b2f149966a2bc05a7a4981b0343ea52f"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/95c64693b2f149966a2bc05a7a4981b0343ea52f",
- "reference": "95c64693b2f149966a2bc05a7a4981b0343ea52f",
- "shasum": ""
- },
- "require": {
- "composer/semver": "^3.3",
- "composer/xdebug-handler": "^3.0.3",
- "ext-json": "*",
- "ext-tokenizer": "*",
- "php": "^7.4 || ^8.0",
- "sebastian/diff": "^4.0 || ^5.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.27",
- "symfony/polyfill-php80": "^1.27",
- "symfony/polyfill-php81": "^1.27",
- "symfony/process": "^5.4 || ^6.0",
- "symfony/stopwatch": "^5.4 || ^6.0"
- },
- "require-dev": {
- "facile-it/paraunit": "^1.3 || ^2.0",
- "justinrainbow/json-schema": "^5.2",
- "keradus/cli-executor": "^2.0",
- "mikey179/vfsstream": "^1.6.11",
- "php-coveralls/php-coveralls": "^2.5.3",
- "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.16",
- "phpspec/prophecy-phpunit": "^2.0",
- "phpunit/phpunit": "^9.5",
- "phpunitgoodpractices/polyfill": "^1.6",
- "phpunitgoodpractices/traits": "^1.9.2",
- "symfony/phpunit-bridge": "^6.2.3",
- "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",
- "keywords": [
- "Static code analysis",
- "fixer",
- "standards",
- "static analysis"
- ],
- "support": {
- "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
- "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.30.0"
- },
- "funding": [
- {
- "url": "https://github.com/keradus",
- "type": "github"
- }
- ],
- "time": "2023-09-26T22:10:43+00:00"
- },
{
"name": "hamcrest/hamcrest-php",
"version": "v2.0.1",
@@ -9915,213 +9820,6 @@
],
"time": "2023-08-01T07:43:40+00:00"
},
- {
- "name": "symfony/options-resolver",
- "version": "v6.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/options-resolver.git",
- "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd",
- "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "symfony/deprecation-contracts": "^2.5|^3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\OptionsResolver\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides an improved replacement for the array_replace PHP function",
- "homepage": "https://symfony.com",
- "keywords": [
- "config",
- "configuration",
- "options"
- ],
- "support": {
- "source": "https://github.com/symfony/options-resolver/tree/v6.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-12T14:21:09+00:00"
- },
- {
- "name": "symfony/polyfill-php81",
- "version": "v1.28.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-php81.git",
- "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/7581cd600fa9fd681b797d00b02f068e2f13263b",
- "reference": "7581cd600fa9fd681b797d00b02f068e2f13263b",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Php81\\": ""
- },
- "classmap": [
- "Resources/stubs"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-php81/tree/v1.28.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-01-26T09:26:14+00:00"
- },
- {
- "name": "symfony/process",
- "version": "v6.3.4",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/process.git",
- "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54",
- "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Process\\": ""
- },
- "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": "Executes commands in sub-processes",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/process/tree/v6.3.4"
- },
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2023-08-07T10:39:22+00:00"
- },
{
"name": "symfony/proxy-manager-bridge",
"version": "v6.3.0",
@@ -10189,68 +9887,6 @@
],
"time": "2023-05-26T07:49:33+00:00"
},
- {
- "name": "symfony/stopwatch",
- "version": "v6.3.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/stopwatch.git",
- "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
- "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2",
- "shasum": ""
- },
- "require": {
- "php": ">=8.1",
- "symfony/service-contracts": "^2.5|^3"
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Symfony\\Component\\Stopwatch\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides a way to profile code",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/stopwatch/tree/v6.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-02-16T10:14:28+00:00"
- },
{
"name": "symfony/translation",
"version": "v6.3.3",
@@ -10346,6 +9982,64 @@
],
"time": "2023-07-31T07:08:24+00:00"
},
+ {
+ "name": "symplify/easy-coding-standard",
+ "version": "12.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/easy-coding-standard/easy-coding-standard.git",
+ "reference": "99d87d188acc712dd6655ee946569f823cfeff69"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/99d87d188acc712dd6655ee946569f823cfeff69",
+ "reference": "99d87d188acc712dd6655ee946569f823cfeff69",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "conflict": {
+ "friendsofphp/php-cs-fixer": "<3.0",
+ "squizlabs/php_codesniffer": "<3.6",
+ "symplify/coding-standard": "<11.3"
+ },
+ "bin": [
+ "bin/ecs"
+ ],
+ "type": "library",
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Use Coding Standard with 0-knowledge of PHP-CS-Fixer and PHP_CodeSniffer",
+ "keywords": [
+ "Code style",
+ "automation",
+ "fixer",
+ "static analysis"
+ ],
+ "support": {
+ "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://www.paypal.me/rectorphp",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/tomasvotruba",
+ "type": "github"
+ }
+ ],
+ "time": "2023-09-08T10:17:14+00:00"
+ },
{
"name": "theseer/tokenizer",
"version": "1.2.1",
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/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php b/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
index 999cebd2d..e5205d311 100644
--- a/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
+++ b/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
@@ -13,9 +13,7 @@
final readonly class DomainEventStorer
{
- public function __construct(private 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 11d0dd65e..011a0abe7 100644
--- a/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
+++ b/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
@@ -13,9 +13,7 @@
final readonly class StoreDomainEventOnOccurred implements DomainEventSubscriber
{
- public function __construct(private 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 9eead61b2..0297eb90c 100644
--- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
+++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
@@ -11,6 +11,5 @@ public function __construct(
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 492035244..1f5b227f1 100644
--- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
+++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
@@ -6,9 +6,7 @@
final readonly class AnalyticsDomainEventBody
{
- public function __construct(private 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 05d917398..320a2ae48 100644
--- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
+++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
@@ -8,9 +8,7 @@
final readonly class AuthenticateUserCommand implements Command
{
- public function __construct(private string $username, private 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 8244e15ee..9d4d53c7b 100644
--- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
+++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
@@ -10,9 +10,7 @@
final readonly class AuthenticateUserCommandHandler implements CommandHandler
{
- public function __construct(private 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 ed5291d5b..2a6e438fb 100644
--- a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
+++ b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
@@ -13,9 +13,7 @@
final readonly class UserAuthenticator
{
- public function __construct(private 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 1599ab64e..99b0e97e8 100644
--- a/src/Backoffice/Auth/Domain/AuthUser.php
+++ b/src/Backoffice/Auth/Domain/AuthUser.php
@@ -6,9 +6,7 @@
final readonly class AuthUser
{
- public function __construct(private AuthUsername $username, private 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 c40aabb1f..eed7b9bd0 100644
--- a/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php
+++ b/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php
@@ -22,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 4cdbc27e2..1b684f4af 100644
--- a/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
+++ b/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
@@ -6,9 +6,7 @@
final readonly class BackofficeCourseResponse
{
- public function __construct(private string $id, private string $name, private 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 73b6f37fc..aaf185801 100644
--- a/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
+++ b/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
@@ -9,9 +9,7 @@
final readonly class BackofficeCourseCreator
{
- public function __construct(private 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 ae37cd7db..7b67f9575 100644
--- a/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
+++ b/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
@@ -9,9 +9,7 @@
final readonly class CreateBackofficeCourseOnCourseCreated implements DomainEventSubscriber
{
- public function __construct(private 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 77990a16f..f602c4a69 100644
--- a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
@@ -13,9 +13,7 @@
final readonly class AllBackofficeCoursesSearcher
{
- public function __construct(private 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 d76086033..7688fc8c3 100644
--- a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
+++ b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
@@ -9,9 +9,7 @@
final readonly class SearchAllBackofficeCoursesQueryHandler implements QueryHandler
{
- public function __construct(private 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 22894e646..70f32ebf6 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
@@ -16,9 +16,7 @@
final readonly class BackofficeCoursesByCriteriaSearcher
{
- public function __construct(private 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 10772edd5..87eb2a648 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
@@ -14,8 +14,7 @@ public function __construct(
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 2ceb62d9a..4228431c0 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
@@ -11,14 +11,12 @@
final readonly class SearchBackofficeCoursesByCriteriaQueryHandler implements QueryHandler
{
- public function __construct(private 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/InMemoryCacheBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
index 1e9333096..4f892381d 100644
--- a/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
@@ -12,12 +12,10 @@
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 ab03911f6..8147a6002 100644
--- a/src/Mooc/Courses/Application/Create/CourseCreator.php
+++ b/src/Mooc/Courses/Application/Create/CourseCreator.php
@@ -13,9 +13,7 @@
final readonly class CourseCreator
{
- public function __construct(private CourseRepository $repository, private 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 4a25411e9..239223fe8 100644
--- a/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
+++ b/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
@@ -8,9 +8,7 @@
final readonly class CreateCourseCommand implements Command
{
- public function __construct(private string $id, private string $name, private 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 75560f9cb..f251c1e1a 100644
--- a/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
+++ b/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
@@ -11,14 +11,12 @@
final readonly class CreateCourseCommandHandler implements CommandHandler
{
- public function __construct(private 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 ab49e64b2..c59f5e62b 100644
--- a/src/Mooc/Courses/Application/Find/CourseFinder.php
+++ b/src/Mooc/Courses/Application/Find/CourseFinder.php
@@ -11,15 +11,13 @@
final readonly class CourseFinder
{
- public function __construct(private 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 7beff5deb..ba96d9970 100644
--- a/src/Mooc/Courses/Application/Update/CourseRenamer.php
+++ b/src/Mooc/Courses/Application/Update/CourseRenamer.php
@@ -12,7 +12,7 @@
final readonly class CourseRenamer
{
- private CourseFinder $finder;
+ private CourseFinder $finder;
public function __construct(private CourseRepository $repository, private EventBus $bus)
{
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 1121c2123..d82d01a2c 100644
--- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
+++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
@@ -9,15 +9,13 @@
final readonly class CoursesCounterFinder
{
- public function __construct(private 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 5ecba9378..b7ddf5618 100644
--- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
+++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
@@ -8,9 +8,7 @@
final readonly class CoursesCounterResponse implements Response
{
- public function __construct(private 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 e9a919188..d4952b13e 100644
--- a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
+++ b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
@@ -8,9 +8,7 @@
final readonly class FindCoursesCounterQueryHandler implements QueryHandler
{
- public function __construct(private 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 e5fe2e035..9a2fe67bc 100644
--- a/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
+++ b/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
@@ -17,8 +17,7 @@ public function __construct(
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 dc3d6c39c..8925dc255 100644
--- a/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
+++ b/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
@@ -12,9 +12,7 @@
final readonly class IncrementCoursesCounterOnCourseCreated implements DomainEventSubscriber
{
- public function __construct(private 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 fef3ca6d0..c4fbaf355 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
@@ -43,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()));
@@ -53,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/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 d69612db5..1be475ed2 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
@@ -17,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, []);
}
@@ -51,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 b6c1ae53a..d2104597b 100644
--- a/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
+++ b/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
@@ -14,8 +14,7 @@ public function __construct(
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 6b2ee2d6b..6cabf783b 100644
--- a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
+++ b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
@@ -13,16 +13,14 @@
final readonly class CreateVideoCommandHandler implements CommandHandler
{
- public function __construct(private 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 35920496f..f2054a6ae 100644
--- a/src/Mooc/Videos/Application/Create/VideoCreator.php
+++ b/src/Mooc/Videos/Application/Create/VideoCreator.php
@@ -15,9 +15,7 @@
final readonly class VideoCreator
{
- public function __construct(private VideoRepository $repository, private 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 f8f3902ab..1f3a652be 100644
--- a/src/Mooc/Videos/Application/Find/FindVideoQuery.php
+++ b/src/Mooc/Videos/Application/Find/FindVideoQuery.php
@@ -8,9 +8,7 @@
final readonly class FindVideoQuery implements Query
{
- public function __construct(private string $id)
- {
- }
+ public function __construct(private string $id) {}
public function id(): string
{
diff --git a/src/Mooc/Videos/Application/Find/VideoResponse.php b/src/Mooc/Videos/Application/Find/VideoResponse.php
index 008af9702..e261a18d0 100644
--- a/src/Mooc/Videos/Application/Find/VideoResponse.php
+++ b/src/Mooc/Videos/Application/Find/VideoResponse.php
@@ -14,6 +14,5 @@ public function __construct(
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 11c51b7c4..f2dcea30b 100644
--- a/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
+++ b/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
@@ -8,9 +8,7 @@
final readonly class TrimVideoCommand implements Command
{
- public function __construct(private string $videoId, private int $keepFromSecond, private 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 9511e2a51..e51a39cc4 100644
--- a/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php
+++ b/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php
@@ -9,13 +9,11 @@
final readonly class TrimVideoCommandHandler
{
- public function __construct(private 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/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 79494d770..19109faf4 100644
--- a/src/Mooc/Videos/Domain/VideoFinder.php
+++ b/src/Mooc/Videos/Domain/VideoFinder.php
@@ -6,15 +6,13 @@
final readonly class VideoFinder
{
- public function __construct(private 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 6c60749a9..a184dd3cb 100644
--- a/src/Shared/Domain/Collection.php
+++ b/src/Shared/Domain/Collection.php
@@ -19,12 +19,12 @@ public function __construct(private readonly array $items)
abstract protected function type(): string;
- public function getIterator(): Traversable
+ 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 3496f3fd1..690b78cff 100644
--- a/src/Shared/Domain/Criteria/Criteria.php
+++ b/src/Shared/Domain/Criteria/Criteria.php
@@ -11,8 +11,7 @@ public function __construct(
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 cd7c95423..48c61445a 100644
--- a/src/Shared/Domain/Criteria/Filter.php
+++ b/src/Shared/Domain/Criteria/Filter.php
@@ -10,8 +10,7 @@ public function __construct(
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/Order.php b/src/Shared/Domain/Criteria/Order.php
index 388d09370..c86595764 100644
--- a/src/Shared/Domain/Criteria/Order.php
+++ b/src/Shared/Domain/Criteria/Order.php
@@ -6,23 +6,21 @@
final readonly class Order
{
- public function __construct(private OrderBy $orderBy, private 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 975097271..1b6546342 100644
--- a/src/Shared/Domain/SecondsInterval.php
+++ b/src/Shared/Domain/SecondsInterval.php
@@ -13,7 +13,7 @@ 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 01a3e3fa7..bdb8a9ef8 100644
--- a/src/Shared/Domain/Utils.php
+++ b/src/Shared/Domain/Utils.php
@@ -20,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
@@ -42,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());
}
@@ -51,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
@@ -64,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;
}
@@ -75,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 e1f9af9ba..76825cecf 100644
--- a/src/Shared/Domain/ValueObject/Enum.php
+++ b/src/Shared/Domain/ValueObject/Enum.php
@@ -27,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());
}
@@ -59,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 f74cb1f79..bac6860bb 100644
--- a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
+++ b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
@@ -26,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);
}
@@ -52,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);
@@ -66,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 7bb31aa46..38217a553 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
@@ -10,17 +10,15 @@
final readonly class DomainEventJsonDeserializer
{
- public function __construct(private 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 b2d8d8057..481da1326 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
@@ -32,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 381e1f139..be6230573 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
@@ -28,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) ===
@@ -36,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 d52951593..43ae38c0f 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
@@ -17,7 +17,7 @@
final readonly class MySqlDoctrineDomainEventsConsumer
{
- private Connection $connection;
+ private Connection $connection;
public function __construct(EntityManager $entityManager, private DomainEventMapping $eventMapping)
{
@@ -44,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'],
diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
index 280d0e88f..5127030df 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
@@ -30,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 a46f22200..03d529f75 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConfigurer.php
@@ -11,13 +11,11 @@
final readonly class RabbitMqConfigurer
{
- public function __construct(private 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);
@@ -54,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);
@@ -80,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 bdd5b09ea..bf12fc093 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
@@ -20,8 +20,7 @@ public function __construct(
private DomainEventJsonDeserializer $deserializer,
private string $exchangeName,
private int $maxRetries
- ) {
- }
+ ) {}
public function consume(callable $subscriber, string $queueName): void
{
@@ -82,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 f9f92da4b..ddd46d98a 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
@@ -18,8 +18,7 @@ public function __construct(
private RabbitMqConnection $connection,
private string $exchangeName,
private MySqlDoctrineEventBus $failoverPublisher
- ) {
- }
+ ) {}
public function publish(DomainEvent ...$events): void
{
@@ -39,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/WithMonitoring/WithPrometheusMonitoringEventBus.php b/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
index 68ff4f25e..b404f19cf 100644
--- a/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
@@ -16,8 +16,7 @@ public function __construct(
private PrometheusMonitor $monitor,
private string $appName,
private EventBus $bus
- ) {
- }
+ ) {}
public function publish(DomainEvent ...$events): void
{
diff --git a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
index 5bc719ff0..7bf97a4f3 100644
--- a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
+++ b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
@@ -6,9 +6,9 @@
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;
@@ -23,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);
@@ -42,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 b5e52eff3..d338b38cd 100644
--- a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
+++ b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
@@ -8,17 +8,15 @@
final readonly class ElasticsearchClient
{
- public function __construct(private Client $client, private 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 1bf01d5bd..9dca53c91 100644
--- a/src/Shared/Infrastructure/Logger/MonologLogger.php
+++ b/src/Shared/Infrastructure/Logger/MonologLogger.php
@@ -8,9 +8,7 @@
final readonly class MonologLogger implements Logger
{
- public function __construct(private \Monolog\Logger $logger)
- {
- }
+ public function __construct(private \Monolog\Logger $logger) {}
public function info(string $message, array $context = []): void
{
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
index 382a1ee34..fd2930ab9 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
@@ -18,8 +18,7 @@ public function __construct(
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 2fd2598a7..f4668c11f 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
@@ -16,24 +16,24 @@ 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 18aa91e71..b541f941e 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php
@@ -39,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 698eb4a9a..bd72fc4cd 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
@@ -13,13 +13,11 @@
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 71ef755e2..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')) {
diff --git a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
index 8f88d26c4..a18ea1e20 100644
--- a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
+++ b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
@@ -12,9 +12,7 @@
final readonly class ApiExceptionListener
{
- public function __construct(private 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 573bf5633..2a8694347 100644
--- a/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php
+++ b/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php
@@ -15,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
@@ -27,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 f77d01aa7..4443de0f5 100644
--- a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
+++ b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
@@ -14,9 +14,7 @@
final readonly class BasicHttpAuthMiddleware
{
- public function __construct(private 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/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 a9210551b..4bee80f16 100644
--- a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php
+++ b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php
@@ -14,9 +14,7 @@
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
{
@@ -24,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/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/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php
index 4f44bbf9d..96a9024a0 100644
--- a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php
+++ b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php
@@ -12,16 +12,12 @@
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/Infrastructure/Behat/ApiContext.php b/tests/Shared/Infrastructure/Behat/ApiContext.php
index b1c76c1ec..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 readonly MinkHelper $sessionHelper;
+ private readonly MinkHelper $sessionHelper;
private readonly MinkSessionRequestHelper $request;
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));
}
}
diff --git a/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php b/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php
index 710b1d5c3..157041b44 100644
--- a/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php
+++ b/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php
@@ -16,8 +16,7 @@ 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 a394baaec..291e9eb14 100644
--- a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
@@ -40,7 +40,7 @@ public function it_should_raise_an_exception_dispatching_a_non_registered_comman
private function commandHandler(): object
{
- return new class () {
+ 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 f9e921a8b..5612e2c8a 100644
--- a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
@@ -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);
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 2ba0b4cee..323c50493 100644
--- a/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php
+++ b/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php
@@ -8,9 +8,7 @@
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 d25b907f8..3dbb86fe8 100644
--- a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
@@ -40,7 +40,7 @@ public function it_should_raise_an_exception_dispatching_a_non_registered_query(
private function queryHandler(): object
{
- return new class () {
+ return new class() {
public function __invoke(FakeQuery $query): never
{
throw new RuntimeException('This works fine!');
@@ -48,7 +48,7 @@ public function __invoke(FakeQuery $query): never
};
}
- 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 a8b6b0688..2aa1c9afe 100644
--- a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
+++ b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
@@ -16,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/Mink/MinkHelper.php b/tests/Shared/Infrastructure/Mink/MinkHelper.php
index a820db5e2..51fb79319 100644
--- a/tests/Shared/Infrastructure/Mink/MinkHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkHelper.php
@@ -11,17 +11,15 @@
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 b1760fce0..6f02b11d7 100644
--- a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
@@ -9,9 +9,7 @@
final readonly class MinkSessionRequestHelper
{
- public function __construct(private MinkHelper $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 73a59cc64..90ca771b3 100644
--- a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
+++ b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
@@ -6,8 +6,9 @@
use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\Constraint\CodelyTvConstraintIsSimilar;
use Mockery\Matcher\MatcherAbstract;
+use Stringable;
-final class CodelyTvMatcherIsSimilar extends MatcherAbstract implements \Stringable
+final class CodelyTvMatcherIsSimilar extends MatcherAbstract implements Stringable
{
private readonly CodelyTvConstraintIsSimilar $constraint;
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/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 5ee3ce2ed..7c8847dcc 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
@@ -21,9 +21,7 @@
// Based on \PHPUnit\Framework\Constraint\IsEqual
final class CodelyTvConstraintIsSimilar extends Constraint
{
- public function __construct(private $value, private readonly float $delta = 0.0)
- {
- }
+ public function __construct(private $value, private readonly float $delta = 0.0) {}
public function evaluate($other, $description = '', $returnResult = false): bool
{
@@ -31,7 +29,7 @@ public function evaluate($other, $description = '', $returnResult = false): bool
return true;
}
- $isValid = true;
+ $isValid = true;
$comparatorFactory = new Factory();
$comparatorFactory->register(new AggregateRootArraySimilarComparator());
@@ -47,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;
@@ -68,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/UnitTestCase.php b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
index 919441ae7..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 = null;
- private UuidGenerator|MockInterface|null $uuidGenerator = null;
+ private EventBus|MockInterface|null $eventBus = null;
+ private MockInterface|UuidGenerator|null $uuidGenerator = null;
protected function mock(string $className): MockInterface
{
@@ -56,7 +56,7 @@ protected function shouldGenerateUuid(string $uuid): void
->andReturn($uuid);
}
- protected function uuidGenerator(): UuidGenerator|MockInterface
+ protected function uuidGenerator(): MockInterface|UuidGenerator
{
return $this->uuidGenerator ??= $this->mock(UuidGenerator::class);
}
From 2a9b95cfce3e604a876b9fdd513416f5a2819dd2 Mon Sep 17 00:00:00 2001
From: Juan Valdebenito
Date: Wed, 27 Sep 2023 15:22:39 -0300
Subject: [PATCH 14/40] change: update README.md (#349)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Rafa Gómez
---
README.md | 26 ++++++++++++++++++++------
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/README.md b/README.md
index dd94d40cc..8893fc6af 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
### 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)
From d0750842c2ca20f283f956eb8236332ef929b28f Mon Sep 17 00:00:00 2001
From: jcbadillo
Date: Wed, 27 Sep 2023 20:23:57 +0200
Subject: [PATCH 15/40] Small fix. A period at the end of the sentence for
maintaining the same coherence with (#343)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
the rest of the documentation.
Co-authored-by: Juan Carlos Badillo
Co-authored-by: Rafa Gómez
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 8893fc6af..2af641e94 100644
--- a/README.md
+++ b/README.md
@@ -122,8 +122,8 @@ 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
From d5ee40b28d36d12661c52968f433a0f30d2eb612 Mon Sep 17 00:00:00 2001
From: davidPaymefy <58425941+davidPaymefy@users.noreply.github.com>
Date: Wed, 27 Sep 2023 20:24:55 +0200
Subject: [PATCH 16/40] =?UTF-8?q?Correcci=C3=B3n=20mensaje=20de=20error=20?=
=?UTF-8?q?en=20ingl=C3=A9s=20(#337)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Co-authored-by: Rafa Gómez
Co-authored-by: ChatGPT
---
src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php b/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php
index 9f0d64588..ea5926271 100644
--- a/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php
+++ b/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php
@@ -13,6 +13,6 @@ public function __construct(Query $query)
{
$queryClass = $query::class;
- parent::__construct("The query <$queryClass> hasn't a query handler associated");
+ parent::__construct("The query <$queryClass> has no associated query handler");
}
}
From 835bc68b1559a0810168e25d0579d96f4f299deb Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20Ca=C3=B1ada=20Garc=C3=ADa?=
Date: Wed, 27 Sep 2023 20:29:22 +0200
Subject: [PATCH 17/40] fix: using the right link for blog entry. (#354)
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 2af641e94..0f6b4a5a0 100644
--- a/README.md
+++ b/README.md
@@ -146,7 +146,8 @@ 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.
+This code was shown in the [From framework coupled code to #microservices through #DDD](http://codely.tv/blog/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:
From 23a2319fe4530c4b79c36d038713c7b2d80076fc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Tue, 3 Oct 2023 11:50:03 +0200
Subject: [PATCH 18/40] chore: add psalm in all code dirs (#355)
* chore: add psalm in all code dirs
* chore: add psalm in all code dirs
* chore: add psalm in all code dirs
* chore: add psalm in all code dirs
* chore: add psalm in all code dirs
* chore: add psalm in all code dirs
* chore: add psalm in all code dirs
* chore: add psalm in all code dirs
* chore: add psalm in all code dirs
* chore: add psalm in all code dirs
---
.github/workflows/ci.yml | 10 +--
Makefile | 82 ++++---------------
apps/backoffice/backend/bin/console | 2 +-
apps/backoffice/backend/public/index.php | 4 +-
apps/backoffice/frontend/bin/console | 2 +-
apps/backoffice/frontend/public/index.php | 4 +-
apps/bootstrap.php | 15 +---
apps/mooc/backend/bin/console | 2 +-
apps/mooc/backend/public/index.php | 4 +-
ecs.php | 6 +-
psalm.xml | 6 +-
.../RabbitMq/RabbitMqDomainEventsConsumer.php | 3 +-
.../Bus/Query/InMemorySymfonyQueryBus.php | 4 +-
.../Infrastructure/PhpUnit/UnitTestCase.php | 2 +
14 files changed, 43 insertions(+), 103 deletions(-)
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 8c5dc2df4..9ab37e216 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -3,7 +3,7 @@ name: CI
on:
push:
branches:
- - master
+ - main
pull_request:
jobs:
@@ -12,9 +12,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v4
- - run: docker-compose pull
+ - run: docker compose pull
- name: 🎻 Install dependencies
run: make composer-install
@@ -35,14 +35,14 @@ jobs:
sleep 2
done
- - name: 🧪 Wait for the elasticsearch to get up
+ - name: 🧪 Wait for the Elasticsearch to get up
run: |
while ! make ping-elasticsearch &>/dev/null; do
echo "Waiting for elasticsearch connection..."
sleep 2
done
- - name: 🐰 Wait for the message broker to get up
+ - name: 🐰 Wait for RabbitMQ to get up
run: |
while ! make ping-rabbitmq &>/dev/null; do
echo "Waiting for RabbitMQ connection..."
diff --git a/Makefile b/Makefile
index a3ea006ee..aa5c306bb 100644
--- a/Makefile
+++ b/Makefile
@@ -1,100 +1,48 @@
current-dir := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
-.PHONY: build
-build: deps start
-
-.PHONY: deps
-deps: composer-install
-
-# 🐘 Composer
-composer-env-file:
- @if [ ! -f .env.local ]; then echo '' > .env.local; fi
-
-.PHONY: composer-install
-composer-install: CMD=install
-
-.PHONY: composer-update
-composer-update: CMD=update
-
-.PHONY: composer-require
-composer-require: CMD=require
-composer-require: INTERACTIVE=-ti --interactive
-
-.PHONY: composer-require-module
-composer-require-module: CMD=require $(module)
-composer-require-module: INTERACTIVE=-ti --interactive
-
-.PHONY: composer
-composer composer-install composer-update composer-require composer-require-module: composer-env-file
+composer-install:
@docker run --rm $(INTERACTIVE) --volume $(current-dir):/app --user $(id -u):$(id -g) \
- composer:2.3.7 $(CMD) \
+ composer:2.6.4 install \
--ignore-platform-reqs \
--no-ansi
-.PHONY: reload
-reload: composer-env-file
- @docker-compose exec php-fpm kill -USR2 1
- @docker-compose exec nginx nginx -s reload
-
-.PHONY: test
-test: composer-env-file
+test:
docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/phpunit --testsuite mooc
docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/phpunit --testsuite shared
docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/behat -p mooc_backend --format=progress -v
docker exec codely-php_ddd_skeleton-backoffice_backend-php ./vendor/bin/phpunit --testsuite backoffice
-.PHONY: static-analysis
-static-analysis: composer-env-file
+static-analysis:
docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/psalm
-.PHONY: lint
lint:
docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/ecs check
-.PHONY: run-tests
-run-tests: composer-env-file
- mkdir -p build/test_results/phpunit
- ./vendor/bin/phpunit --exclude-group='disabled' --log-junit build/test_results/phpunit/junit.xml --testsuite backoffice
- ./vendor/bin/phpunit --exclude-group='disabled' --log-junit build/test_results/phpunit/junit.xml --testsuite mooc
- ./vendor/bin/phpunit --exclude-group='disabled' --log-junit build/test_results/phpunit/junit.xml --testsuite shared
- ./vendor/bin/behat -p mooc_backend --format=progress -v
-
-# 🐳 Docker Compose
-.PHONY: start
-start: CMD=up --build -d
-
-.PHONY: stop
-stop: CMD=stop
+start:
+ @if [ ! -f .env.local ]; then echo '' > .env.local; fi
+ UID=${shell id -u} GID=${shell id -g} docker compose up --build -d
+ make clean-cache
-.PHONY: destroy
-destroy: CMD=down
+stop:
+ UID=${shell id -u} GID=${shell id -g} docker compose stop
-# Usage: `make doco CMD="ps --services"`
-# Usage: `make doco CMD="build --parallel --pull --force-rm --no-cache"`
-.PHONY: doco
-doco start stop destroy: composer-env-file
- UID=${shell id -u} GID=${shell id -g} docker-compose $(CMD)
+destroy:
+ UID=${shell id -u} GID=${shell id -g} docker compose down
-.PHONY: rebuild
-rebuild: composer-env-file
- docker-compose build --pull --force-rm --no-cache
- make deps
+rebuild:
+ docker compose build --pull --force-rm --no-cache
+ make install
make start
-.PHONY: ping-mysql
ping-mysql:
@docker exec codely-php_ddd_skeleton-mooc-mysql mysqladmin --user=root --password= --host "127.0.0.1" ping --silent
-.PHONY: ping-elasticsearch
ping-elasticsearch:
@curl -I -XHEAD localhost:9200
-.PHONY: ping-rabbitmq
ping-rabbitmq:
@docker exec codely-php_ddd_skeleton-rabbitmq rabbitmqctl ping --silent
clean-cache:
@rm -rf apps/*/*/var
- @docker exec codely-php_ddd_skeleton-backoffice_backend-php ./apps/backoffice/backend/bin/console cache:warmup
- @docker exec codely-php_ddd_skeleton-backoffice_frontend-php ./apps/backoffice/frontend/bin/console cache:warmup
@docker exec codely-php_ddd_skeleton-mooc_backend-php ./apps/mooc/backend/bin/console cache:warmup
diff --git a/apps/backoffice/backend/bin/console b/apps/backoffice/backend/bin/console
index ac7f81a9a..29bc8b83f 100755
--- a/apps/backoffice/backend/bin/console
+++ b/apps/backoffice/backend/bin/console
@@ -12,7 +12,7 @@ if (false === in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
set_time_limit(0);
-require dirname(__DIR__) . '../../../vendor/autoload.php';
+require dirname(__DIR__) . '/../../../vendor/autoload.php';
if (!class_exists(Application::class)) {
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
diff --git a/apps/backoffice/backend/public/index.php b/apps/backoffice/backend/public/index.php
index 977a86d4b..56a52ea14 100644
--- a/apps/backoffice/backend/public/index.php
+++ b/apps/backoffice/backend/public/index.php
@@ -16,8 +16,8 @@
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
Request::setTrustedProxies(
- explode(',', (string) $trustedProxies),
- Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST
+ explode(',', $trustedProxies),
+ Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
);
}
diff --git a/apps/backoffice/frontend/bin/console b/apps/backoffice/frontend/bin/console
index 5e2d7ebf2..d680ab53c 100755
--- a/apps/backoffice/frontend/bin/console
+++ b/apps/backoffice/frontend/bin/console
@@ -12,7 +12,7 @@ if (false === in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
set_time_limit(0);
-require dirname(__DIR__) . '../../../vendor/autoload.php';
+require dirname(__DIR__) . '/../../../vendor/autoload.php';
if (!class_exists(Application::class)) {
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
diff --git a/apps/backoffice/frontend/public/index.php b/apps/backoffice/frontend/public/index.php
index c18f536e7..2b5d9b2d3 100644
--- a/apps/backoffice/frontend/public/index.php
+++ b/apps/backoffice/frontend/public/index.php
@@ -16,8 +16,8 @@
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
Request::setTrustedProxies(
- explode(',', (string) $trustedProxies),
- Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST
+ explode(',', $trustedProxies),
+ Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
);
}
diff --git a/apps/bootstrap.php b/apps/bootstrap.php
index cb93ce7f7..6d66dea9d 100644
--- a/apps/bootstrap.php
+++ b/apps/bootstrap.php
@@ -8,20 +8,7 @@
require $rootPath . '/vendor/autoload.php';
-// Load cached env vars if the .env.local.php file exists
-// Run "composer dump-env prod" to create it (requires symfony/flex >=1.2)
-if (is_array($env = @include $rootPath . '/.env.local.php')) {
- foreach ($env as $k => $v) {
- $_ENV[$k] ??= isset($_SERVER[$k]) && str_starts_with($k, 'HTTP_') ? $_SERVER[$k] : $v;
- }
-} elseif (!class_exists(Dotenv::class)) {
- throw new RuntimeException(
- 'Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.'
- );
-} else {
- // load all the .env files
- (new Dotenv())->loadEnv($rootPath . '/.env');
-}
+(new Dotenv())->loadEnv($rootPath . '/.env');
$_SERVER += $_ENV;
$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = ($_SERVER['APP_ENV'] ?? $_ENV['APP_ENV'] ?? null) ?: 'dev';
diff --git a/apps/mooc/backend/bin/console b/apps/mooc/backend/bin/console
index c794905a3..d013ee7a8 100755
--- a/apps/mooc/backend/bin/console
+++ b/apps/mooc/backend/bin/console
@@ -12,7 +12,7 @@ if (false === in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
set_time_limit(0);
-require dirname(__DIR__) . '../../../vendor/autoload.php';
+require dirname(__DIR__) . '/../../../vendor/autoload.php';
if (!class_exists(Application::class)) {
throw new RuntimeException('You need to add "symfony/framework-bundle" as a Composer dependency.');
diff --git a/apps/mooc/backend/public/index.php b/apps/mooc/backend/public/index.php
index 0d1e3eae8..4269b3810 100644
--- a/apps/mooc/backend/public/index.php
+++ b/apps/mooc/backend/public/index.php
@@ -16,8 +16,8 @@
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
Request::setTrustedProxies(
- explode(',', (string) $trustedProxies),
- Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST
+ explode(',', $trustedProxies),
+ Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
);
}
diff --git a/ecs.php b/ecs.php
index 437848d5d..62c8f5208 100644
--- a/ecs.php
+++ b/ecs.php
@@ -132,6 +132,10 @@
__DIR__ . '/apps/backoffice/frontend/src/BackofficeFrontendKernel.php',
__DIR__ . '/apps/mooc/backend/src/MoocBackendKernel.php',
__DIR__ . '/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php',
- ]
+ ],
+ __DIR__ . '/apps/backoffice/backend/var',
+ __DIR__ . '/apps/backoffice/frontend/var',
+ __DIR__ . '/apps/mooc/backend/var',
+ __DIR__ . '/apps/mooc/frontend/var',
]);
};
diff --git a/psalm.xml b/psalm.xml
index 5eea39ada..123c91c54 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -9,13 +9,11 @@
findUnusedCode="false"
>
-
-
-
-
+
+
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
index bf12fc093..c6afe08e1 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
@@ -7,6 +7,7 @@
use AMQPEnvelope;
use AMQPQueue;
use AMQPQueueException;
+use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber;
use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventJsonDeserializer;
use Throwable;
@@ -22,7 +23,7 @@ public function __construct(
private int $maxRetries
) {}
- public function consume(callable $subscriber, string $queueName): void
+ public function consume(callable|DomainEventSubscriber $subscriber, string $queueName): void
{
try {
$this->connection->queue($queueName)->consume($this->consumer($subscriber));
diff --git a/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php b/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php
index d01b9e105..e08643fcd 100644
--- a/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php
+++ b/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php
@@ -14,9 +14,9 @@
use Symfony\Component\Messenger\Middleware\HandleMessageMiddleware;
use Symfony\Component\Messenger\Stamp\HandledStamp;
-final class InMemorySymfonyQueryBus implements QueryBus
+final readonly class InMemorySymfonyQueryBus implements QueryBus
{
- private readonly MessageBus $bus;
+ private MessageBus $bus;
public function __construct(iterable $queryHandlers)
{
diff --git a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
index 54d0e3a45..27bb36193 100644
--- a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
+++ b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
@@ -15,6 +15,7 @@
use Mockery\Adapter\Phpunit\MockeryTestCase;
use Mockery\Matcher\MatcherAbstract;
use Mockery\MockInterface;
+use Throwable;
abstract class UnitTestCase extends MockeryTestCase
{
@@ -78,6 +79,7 @@ protected function assertAskResponse(Response $expected, Query $query, callable
$this->assertEquals($expected, $actual);
}
+ /** @param class-string $expectedErrorClass */
protected function assertAskThrowsException(string $expectedErrorClass, Query $query, callable $queryHandler): void
{
$this->expectException($expectedErrorClass);
From 9c902829ad942a793fc6c97f609c98a20221a06a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Tue, 3 Oct 2023 12:31:22 +0200
Subject: [PATCH 19/40] chore: use native php enum type (#357)
---
.../Create/CreateVideoCommandHandler.php | 2 +-
.../Find/VideoResponseConverter.php | 2 +-
src/Mooc/Videos/Domain/Video.php | 2 +-
src/Mooc/Videos/Domain/VideoType.php | 18 +---
src/Shared/Domain/Criteria/Filter.php | 4 +-
src/Shared/Domain/Criteria/FilterOperator.php | 30 ++-----
src/Shared/Domain/Criteria/Order.php | 8 +-
src/Shared/Domain/Criteria/OrderType.php | 23 ++---
src/Shared/Domain/ValueObject/Enum.php | 83 -------------------
.../Doctrine/DoctrineCriteriaConverter.php | 2 +-
.../Elasticsearch/ElasticQueryGenerator.php | 6 +-
.../ElasticsearchCriteriaConverter.php | 2 +-
tests/Shared/Domain/Criteria/FilterMother.php | 16 +++-
tests/Shared/Domain/Criteria/OrderMother.php | 8 +-
14 files changed, 51 insertions(+), 155 deletions(-)
delete mode 100644 src/Shared/Domain/ValueObject/Enum.php
diff --git a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
index 6cabf783b..608900a2e 100644
--- a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
+++ b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
@@ -18,7 +18,7 @@ public function __construct(private VideoCreator $creator) {}
public function __invoke(CreateVideoCommand $command): void
{
$id = new VideoId($command->id());
- $type = new VideoType($command->type());
+ $type = VideoType::from($command->type());
$title = new VideoTitle($command->title());
$url = new VideoUrl($command->url());
$courseId = new CourseId($command->courseId());
diff --git a/src/Mooc/Videos/Application/Find/VideoResponseConverter.php b/src/Mooc/Videos/Application/Find/VideoResponseConverter.php
index 6ee2b7b5f..23d890eb8 100644
--- a/src/Mooc/Videos/Application/Find/VideoResponseConverter.php
+++ b/src/Mooc/Videos/Application/Find/VideoResponseConverter.php
@@ -12,7 +12,7 @@ public function __invoke(Video $video): VideoResponse
{
return new VideoResponse(
$video->id()->value(),
- $video->type()->value(),
+ $video->type()->value,
$video->title()->value(),
$video->url()->value(),
$video->courseId()->value()
diff --git a/src/Mooc/Videos/Domain/Video.php b/src/Mooc/Videos/Domain/Video.php
index a8626df49..567d7231a 100644
--- a/src/Mooc/Videos/Domain/Video.php
+++ b/src/Mooc/Videos/Domain/Video.php
@@ -30,7 +30,7 @@ public static function create(
$video->record(
new VideoCreatedDomainEvent(
$id->value(),
- $type->value(),
+ $type->value,
$title->value(),
$url->value(),
$courseId->value()
diff --git a/src/Mooc/Videos/Domain/VideoType.php b/src/Mooc/Videos/Domain/VideoType.php
index 3b20ed338..7560b64cf 100644
--- a/src/Mooc/Videos/Domain/VideoType.php
+++ b/src/Mooc/Videos/Domain/VideoType.php
@@ -4,20 +4,8 @@
namespace CodelyTv\Mooc\Videos\Domain;
-use CodelyTv\Shared\Domain\ValueObject\Enum;
-use InvalidArgumentException;
-
-/**
- * @method static VideoType screencast()
- * @method static VideoType interview()
- */
-final class VideoType extends Enum
+enum VideoType: string
{
- public const SCREENCAST = 'screencast';
- public const INTERVIEW = 'interview';
-
- protected function throwExceptionForInvalidValue($value): never
- {
- throw new InvalidArgumentException(sprintf('The <%s> value is not a valid video type', $value));
- }
+ case SCREENCAST = 'screencast';
+ case INTERVIEW = 'interview';
}
diff --git a/src/Shared/Domain/Criteria/Filter.php b/src/Shared/Domain/Criteria/Filter.php
index 48c61445a..05afbb66c 100644
--- a/src/Shared/Domain/Criteria/Filter.php
+++ b/src/Shared/Domain/Criteria/Filter.php
@@ -16,7 +16,7 @@ public static function fromValues(array $values): self
{
return new self(
new FilterField($values['field']),
- new FilterOperator($values['operator']),
+ FilterOperator::from($values['operator']),
new FilterValue($values['value'])
);
}
@@ -38,6 +38,6 @@ public function value(): FilterValue
public function serialize(): string
{
- return sprintf('%s.%s.%s', $this->field->value(), $this->operator->value(), $this->value->value());
+ return sprintf('%s.%s.%s', $this->field->value(), $this->operator->value, $this->value->value());
}
}
diff --git a/src/Shared/Domain/Criteria/FilterOperator.php b/src/Shared/Domain/Criteria/FilterOperator.php
index 8a888019a..5f6f151ac 100644
--- a/src/Shared/Domain/Criteria/FilterOperator.php
+++ b/src/Shared/Domain/Criteria/FilterOperator.php
@@ -4,31 +4,17 @@
namespace CodelyTv\Shared\Domain\Criteria;
-use CodelyTv\Shared\Domain\ValueObject\Enum;
-use InvalidArgumentException;
-
-/**
- * @method static FilterOperator gt()
- * @method static FilterOperator lt()
- * @method static FilterOperator like()
- */
-final class FilterOperator extends Enum
+enum FilterOperator: string
{
- 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];
+ case EQUAL = '=';
+ case NOT_EQUAL = '!=';
+ case GT = '>';
+ case LT = '<';
+ case CONTAINS = 'CONTAINS';
+ case NOT_CONTAINS = 'NOT_CONTAINS';
public function isContaining(): bool
{
- return in_array($this->value(), self::$containing, true);
- }
-
- protected function throwExceptionForInvalidValue($value): never
- {
- throw new InvalidArgumentException(sprintf('The filter <%s> is invalid', $value));
+ return in_array($this->value, [self::CONTAINS->value, self::NOT_CONTAINS->value], true);
}
}
diff --git a/src/Shared/Domain/Criteria/Order.php b/src/Shared/Domain/Criteria/Order.php
index c86595764..331571c9a 100644
--- a/src/Shared/Domain/Criteria/Order.php
+++ b/src/Shared/Domain/Criteria/Order.php
@@ -10,17 +10,17 @@ public function __construct(private OrderBy $orderBy, private OrderType $orderTy
public static function createDesc(OrderBy $orderBy): self
{
- return new self($orderBy, OrderType::desc());
+ return new self($orderBy, OrderType::DESC);
}
public static function fromValues(?string $orderBy, ?string $order): self
{
- return $orderBy === null ? self::none() : new self(new OrderBy($orderBy), new OrderType($order));
+ return $orderBy === null ? self::none() : new self(new OrderBy($orderBy), OrderType::from($order));
}
public static function none(): self
{
- return new self(new OrderBy(''), OrderType::none());
+ return new self(new OrderBy(''), OrderType::NONE);
}
public function orderBy(): OrderBy
@@ -40,6 +40,6 @@ public function isNone(): bool
public function serialize(): string
{
- return sprintf('%s.%s', $this->orderBy->value(), $this->orderType->value());
+ return sprintf('%s.%s', $this->orderBy->value(), $this->orderType->value);
}
}
diff --git a/src/Shared/Domain/Criteria/OrderType.php b/src/Shared/Domain/Criteria/OrderType.php
index 50f2f5213..2ce357a95 100644
--- a/src/Shared/Domain/Criteria/OrderType.php
+++ b/src/Shared/Domain/Criteria/OrderType.php
@@ -4,27 +4,14 @@
namespace CodelyTv\Shared\Domain\Criteria;
-use CodelyTv\Shared\Domain\ValueObject\Enum;
-use InvalidArgumentException;
-
-/**
- * @method static OrderType asc()
- * @method static OrderType desc()
- * @method static OrderType none()
- */
-final class OrderType extends Enum
+enum OrderType: string
{
- public const ASC = 'asc';
- public const DESC = 'desc';
- public const NONE = 'none';
+ case ASC = 'asc';
+ case DESC = 'desc';
+ case NONE = 'none';
public function isNone(): bool
{
- return $this->equals(self::none());
- }
-
- protected function throwExceptionForInvalidValue($value): never
- {
- throw new InvalidArgumentException($value);
+ return $this->value === self::NONE->value;
}
}
diff --git a/src/Shared/Domain/ValueObject/Enum.php b/src/Shared/Domain/ValueObject/Enum.php
deleted file mode 100644
index 76825cecf..000000000
--- a/src/Shared/Domain/ValueObject/Enum.php
+++ /dev/null
@@ -1,83 +0,0 @@
-ensureIsBetweenAcceptedValues($value);
- }
-
- abstract protected function throwExceptionForInvalidValue($value);
-
- public static function __callStatic(string $name, $args)
- {
- return new static(self::values()[$name]);
- }
-
- final public static function fromString(string $value): self
- {
- return new static($value);
- }
-
- final public static function values(): array
- {
- $class = static::class;
-
- if (!isset(self::$cache[$class])) {
- $reflected = new ReflectionClass($class);
- self::$cache[$class] = reindex(self::keysFormatter(), $reflected->getConstants());
- }
-
- return self::$cache[$class];
- }
-
- final public static function randomValue()
- {
- return self::values()[array_rand(self::values())];
- }
-
- final public static function random(): static
- {
- return new static(self::randomValue());
- }
-
- private static function keysFormatter(): callable
- {
- return static fn ($unused, string $key): string => Utils::toCamelCase(strtolower($key));
- }
-
- final public function value()
- {
- return $this->value;
- }
-
- final public function equals(self $other): bool
- {
- return $other->value() === $this->value();
- }
-
- public function __toString(): string
- {
- return (string) $this->value();
- }
-
- private function ensureIsBetweenAcceptedValues($value): void
- {
- if (!in_array($value, static::values(), true)) {
- $this->throwExceptionForInvalidValue($value);
- }
- }
-}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
index fd2930ab9..ca4e91d24 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
@@ -60,7 +60,7 @@ private function buildComparison(): callable
? $this->hydrate($field, $filter->value()->value())
: $filter->value()->value();
- return new Comparison($field, $filter->operator()->value(), $value);
+ return new Comparison($field, $filter->operator()->value, $value);
};
}
diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php
index 611585223..55c34782d 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php
@@ -6,7 +6,6 @@
use CodelyTv\Shared\Domain\Criteria\Filter;
use CodelyTv\Shared\Domain\Criteria\FilterOperator;
-use Exception;
final class ElasticQueryGenerator
{
@@ -38,17 +37,16 @@ public function __invoke(array $query, Filter $filter): array
private function typeFor(FilterOperator $operator): string
{
- return in_array($operator->value(), self::$mustNotFields, true) ? self::MUST_NOT_TYPE : self::MUST_TYPE;
+ return in_array($operator->value, self::$mustNotFields, true) ? self::MUST_NOT_TYPE : self::MUST_TYPE;
}
private function termLevelFor(FilterOperator $operator): string
{
- return match ($operator->value()) {
+ return match ($operator) {
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 b541f941e..d215a7e33 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php
@@ -42,7 +42,7 @@ private function formatSort(Criteria $criteria): array
return [
'sort' => [
$order->orderBy()->value() => [
- 'order' => $order->orderType()->value(),
+ 'order' => $order->orderType()->value,
],
],
];
diff --git a/tests/Shared/Domain/Criteria/FilterMother.php b/tests/Shared/Domain/Criteria/FilterMother.php
index 9f3a6fcc5..40473422e 100644
--- a/tests/Shared/Domain/Criteria/FilterMother.php
+++ b/tests/Shared/Domain/Criteria/FilterMother.php
@@ -8,6 +8,7 @@
use CodelyTv\Shared\Domain\Criteria\FilterField;
use CodelyTv\Shared\Domain\Criteria\FilterOperator;
use CodelyTv\Shared\Domain\Criteria\FilterValue;
+use CodelyTv\Tests\Shared\Domain\RandomElementPicker;
final class FilterMother
{
@@ -18,7 +19,7 @@ public static function create(
): Filter {
return new Filter(
$field ?? FilterFieldMother::create(),
- $operator ?? FilterOperator::random(),
+ $operator ?? self::randomOperator(),
$value ?? FilterValueMother::create()
);
}
@@ -28,4 +29,17 @@ public static function fromValues(array $values): Filter
{
return Filter::fromValues($values);
}
+
+
+ private static function randomOperator(): FilterOperator
+ {
+ return RandomElementPicker::from(
+ FilterOperator::EQUAL,
+ FilterOperator::NOT_EQUAL,
+ FilterOperator::GT,
+ FilterOperator::LT,
+ FilterOperator::CONTAINS,
+ FilterOperator::NOT_CONTAINS
+ );
+ }
}
diff --git a/tests/Shared/Domain/Criteria/OrderMother.php b/tests/Shared/Domain/Criteria/OrderMother.php
index 10e791440..81c606e07 100644
--- a/tests/Shared/Domain/Criteria/OrderMother.php
+++ b/tests/Shared/Domain/Criteria/OrderMother.php
@@ -7,16 +7,22 @@
use CodelyTv\Shared\Domain\Criteria\Order;
use CodelyTv\Shared\Domain\Criteria\OrderBy;
use CodelyTv\Shared\Domain\Criteria\OrderType;
+use CodelyTv\Tests\Shared\Domain\RandomElementPicker;
final class OrderMother
{
public static function create(?OrderBy $orderBy = null, ?OrderType $orderType = null): Order
{
- return new Order($orderBy ?? OrderByMother::create(), $orderType ?? OrderType::random());
+ return new Order($orderBy ?? OrderByMother::create(), $orderType ?? self::randomOrderType());
}
public static function none(): Order
{
return Order::none();
}
+
+ private static function randomOrderType(): Order
+ {
+ return RandomElementPicker::from(OrderType::ASC, OrderType::DESC, OrderType::NONE);
+ }
}
From 2a84341cd985876cca132faa40e821e5825b7190 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Tue, 3 Oct 2023 14:50:16 +0200
Subject: [PATCH 20/40] chore: use psalm level 3 (#358)
* feat: add mockery psalm plugin
* chore(psalm): disable PossiblyUndefinedMethod in test
Since are false positive errors
* chore(psalm): add symfony plugin
* chore(psalm): upgrade to level 3
---
README.md | 2 +-
.../Courses/CoursesGetController.php | 2 +-
.../ConsumeRabbitMqDomainEventsCommand.php | 2 +-
...SupervisorRabbitMqConsumerFilesCommand.php | 2 +-
composer.json | 4 +-
composer.lock | 197 +++++++++++++++++-
psalm.xml | 55 ++++-
rector.php | 11 +-
.../Authenticate/UserAuthenticator.php | 8 +-
.../AllBackofficeCoursesSearcher.php | 2 +-
.../BackofficeCoursesByCriteriaSearcher.php | 2 +-
...lasticsearchBackofficeCourseRepository.php | 2 +-
.../CoursesCounter/Domain/CoursesCounter.php | 2 +-
.../Persistence/Doctrine/CourseIdsType.php | 4 +-
.../Doctrine/DbalTypesSearcher.php | 10 +-
.../Doctrine/DoctrinePrefixesSearcher.php | 6 +-
.../Videos/Application/Find/VideoFinder.php | 3 +-
src/Shared/Domain/Criteria/Criteria.php | 4 +-
src/Shared/Domain/Criteria/Filters.php | 8 +-
src/Shared/Domain/Criteria/Order.php | 5 +-
src/Shared/Domain/Utils.php | 5 +-
.../Bus/CallableFirstParameterExtractor.php | 4 +-
.../Bus/Event/DomainEventMapping.php | 2 +-
.../Event/DomainEventSubscriberLocator.php | 2 +-
.../RabbitMq/RabbitMqQueueNameFormatter.php | 2 +-
.../Dbal/DbalCustomTypesRegistrar.php | 6 +-
.../Doctrine/DoctrineRepository.php | 10 +
.../Elasticsearch/ElasticsearchRepository.php | 2 +-
.../Symfony/AddJsonBodyToRequestListener.php | 2 +-
.../Domain/CoursesCounterMother.php | 4 +-
.../Infrastructure/Behat/ApiContext.php | 4 +
.../Event/RabbitMq/RabbitMqEventBusTest.php | 2 +-
.../Doctrine/MySqlDatabaseCleaner.php | 2 +-
.../Shared/Infrastructure/Mink/MinkHelper.php | 2 +-
.../Mink/MinkSessionRequestHelper.php | 2 +-
.../AggregateRootArraySimilarComparator.php | 2 +-
.../DomainEventArraySimilarComparator.php | 2 +-
.../PhpUnit/InfrastructureTestCase.php | 2 +-
38 files changed, 326 insertions(+), 62 deletions(-)
diff --git a/README.md b/README.md
index 0f6b4a5a0..ade42f645 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
-
+
diff --git a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
index 545846fc5..428b3b35e 100644
--- a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
+++ b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
@@ -37,7 +37,7 @@ public function __invoke(Request $request): JsonResponse
return new JsonResponse(
map(
- fn (BackofficeCourseResponse $course) => [
+ fn (BackofficeCourseResponse $course): array => [
'id' => $course->id(),
'name' => $course->name(),
'duration' => $course->duration(),
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
index 125a50a24..802f79b22 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
@@ -36,7 +36,7 @@ protected function configure(): void
protected function execute(InputInterface $input, OutputInterface $output): int
{
- $queueName = (string) $input->getArgument('queue');
+ $queueName = $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 5883b60db..9bd14493a 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
@@ -35,7 +35,7 @@ protected function configure(): void
protected function execute(InputInterface $input, OutputInterface $output): int
{
- $path = (string) $input->getArgument('command-path');
+ $path = $input->getArgument('command-path');
each($this->configCreator($path), $this->locator->all());
diff --git a/composer.json b/composer.json
index 1f498b9b6..fcbc6d631 100644
--- a/composer.json
+++ b/composer.json
@@ -54,7 +54,9 @@
"symplify/easy-coding-standard": "^12.0",
"vimeo/psalm": "^5.15",
- "rector/rector": "^0.18.4"
+ "rector/rector": "^0.18.4",
+ "psalm/plugin-mockery": "^1.1",
+ "psalm/plugin-symfony": "^5.0"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index 4cb195c0d..c4951eef4 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "6a083c6e70896a6fe633c8afc29cb888",
+ "content-hash": "5ca0c05883f15a06ec830187f97a5ba9",
"packages": [
{
"name": "brick/math",
@@ -6062,6 +6062,79 @@
},
"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.1.0",
@@ -7860,6 +7933,128 @@
],
"time": "2023-09-19T05:39:22+00:00"
},
+ {
+ "name": "psalm/plugin-mockery",
+ "version": "1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/psalm/psalm-plugin-mockery.git",
+ "reference": "876247d15f91df08240d00dac69c5135b6689283"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-mockery/zipball/876247d15f91df08240d00dac69c5135b6689283",
+ "reference": "876247d15f91df08240d00dac69c5135b6689283",
+ "shasum": ""
+ },
+ "require": {
+ "composer/package-versions-deprecated": "^1.10",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "mockery/mockery": "^1.0",
+ "php": "~7.4 || ~8.0 || ~8.1 || ~8.2",
+ "vimeo/psalm": "dev-master || ^5.0@rc || ^5.0"
+ },
+ "require-dev": {
+ "codeception/codeception": "^4.1.9",
+ "phpunit/phpunit": "^9.0",
+ "squizlabs/php_codesniffer": "^3.3.1",
+ "weirdan/codeception-psalm-module": "^0.13.1"
+ },
+ "type": "psalm-plugin",
+ "extra": {
+ "psalm": {
+ "pluginClass": "Psalm\\MockeryPlugin\\Plugin"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psalm\\MockeryPlugin\\": [
+ "."
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matt Brown",
+ "email": "github@muglug.com"
+ }
+ ],
+ "description": "Psalm plugin for Mockery",
+ "support": {
+ "issues": "https://github.com/psalm/psalm-plugin-mockery/issues",
+ "source": "https://github.com/psalm/psalm-plugin-mockery/tree/1.1.0"
+ },
+ "time": "2022-11-25T07:16:18+00:00"
+ },
+ {
+ "name": "psalm/plugin-symfony",
+ "version": "v5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/psalm/psalm-plugin-symfony.git",
+ "reference": "a6cef9c701686d17d4254b544d05345e9d3e0b88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/a6cef9c701686d17d4254b544d05345e9d3e0b88",
+ "reference": "a6cef9c701686d17d4254b544d05345e9d3e0b88",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "php": "^7.4 || ^8.0",
+ "symfony/framework-bundle": "^5.0 || ^6.0",
+ "vimeo/psalm": "^5.1"
+ },
+ "require-dev": {
+ "doctrine/annotations": "^1.8|^2",
+ "doctrine/orm": "^2.9",
+ "phpunit/phpunit": "~7.5 || ~9.5",
+ "symfony/cache-contracts": "^1.0 || ^2.0",
+ "symfony/console": "*",
+ "symfony/form": "^5.0 || ^6.0",
+ "symfony/messenger": "^5.0 || ^6.0",
+ "symfony/security-guard": "*",
+ "symfony/serializer": "^5.0 || ^6.0",
+ "symfony/validator": "*",
+ "twig/twig": "^2.10 || ^3.0",
+ "weirdan/codeception-psalm-module": "dev-master"
+ },
+ "suggest": {
+ "weirdan/doctrine-psalm-plugin": "If Doctrine is used, it is recommended install this plugin"
+ },
+ "type": "psalm-plugin",
+ "extra": {
+ "psalm": {
+ "pluginClass": "Psalm\\SymfonyPsalmPlugin\\Plugin"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psalm\\SymfonyPsalmPlugin\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Farhad Safarov",
+ "email": "farhad.safarov@gmail.com"
+ }
+ ],
+ "description": "Psalm Plugin for Symfony",
+ "support": {
+ "issues": "https://github.com/psalm/psalm-plugin-symfony/issues",
+ "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v5.0.3"
+ },
+ "time": "2023-04-21T15:40:12+00:00"
+ },
{
"name": "rector/rector",
"version": "0.18.4",
diff --git a/psalm.xml b/psalm.xml
index 123c91c54..955503769 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -3,23 +3,56 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
- errorLevel="4"
+ errorLevel="3"
resolveFromConfigFile="true"
findUnusedBaselineEntry="false"
findUnusedCode="false"
>
-
-
-
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rector.php b/rector.php
index 3ae4afdf7..7ec25f27b 100644
--- a/rector.php
+++ b/rector.php
@@ -4,6 +4,7 @@
use Rector\Config\RectorConfig;
use Rector\Set\ValueObject\LevelSetList;
+use Rector\Set\ValueObject\SetList;
return static function (RectorConfig $rectorConfig): void {
$rectorConfig->paths([
@@ -13,6 +14,14 @@
]);
$rectorConfig->sets([
- LevelSetList::UP_TO_PHP_82
+ LevelSetList::UP_TO_PHP_82,
+ SetList::TYPE_DECLARATION
+ ]);
+
+ $rectorConfig->skip([
+ __DIR__ . '/apps/backoffice/backend/var',
+ __DIR__ . '/apps/backoffice/frontend/var',
+ __DIR__ . '/apps/mooc/backend/var',
+ __DIR__ . '/apps/mooc/frontend/var',
]);
};
diff --git a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
index 2a6e438fb..149b30029 100644
--- a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
+++ b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
@@ -19,15 +19,11 @@ public function authenticate(AuthUsername $username, AuthPassword $password): vo
{
$auth = $this->repository->search($username);
- $this->ensureUserExist($auth, $username);
- $this->ensureCredentialsAreValid($auth, $password);
- }
-
- private function ensureUserExist(?AuthUser $auth, AuthUsername $username): void
- {
if ($auth === null) {
throw new InvalidAuthUsername($username);
}
+
+ $this->ensureCredentialsAreValid($auth, $password);
}
private function ensureCredentialsAreValid(AuthUser $auth, AuthPassword $password): void
diff --git a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
index f602c4a69..8cae9cc1d 100644
--- a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
@@ -22,7 +22,7 @@ public function searchAll(): BackofficeCoursesResponse
private function toResponse(): callable
{
- return static fn (BackofficeCourse $course) => new BackofficeCourseResponse(
+ return static fn (BackofficeCourse $course): BackofficeCourseResponse => new BackofficeCourseResponse(
$course->id(),
$course->name(),
$course->duration()
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
index 70f32ebf6..07e09e980 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
@@ -27,7 +27,7 @@ public function search(Filters $filters, Order $order, ?int $limit, ?int $offset
private function toResponse(): callable
{
- return static fn (BackofficeCourse $course) => new BackofficeCourseResponse(
+ return static fn (BackofficeCourse $course): BackofficeCourseResponse => new BackofficeCourseResponse(
$course->id(),
$course->name(),
$course->duration()
diff --git a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
index 7ffe2b7ea..be8074d61 100644
--- a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
@@ -35,6 +35,6 @@ protected function aggregateName(): string
private function toCourse(): callable
{
- return static fn (array $primitives) => BackofficeCourse::fromPrimitives($primitives);
+ return static fn (array $primitives): BackofficeCourse => BackofficeCourse::fromPrimitives($primitives);
}
}
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
index c4fbaf355..0a6ed0d11 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
@@ -58,6 +58,6 @@ public function hasIncremented(CourseId $courseId): bool
private function courseIdComparator(CourseId $courseId): callable
{
- return static fn (CourseId $other) => $courseId->equals($other);
+ return static fn (CourseId $other): bool => $courseId->equals($other);
}
}
diff --git a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
index 934a9986a..b618ad93d 100644
--- a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
+++ b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
@@ -25,13 +25,13 @@ public function getName(): string
public function convertToDatabaseValue($value, AbstractPlatform $platform)
{
- return parent::convertToDatabaseValue(map(fn (CourseId $id) => $id->value(), $value), $platform);
+ return parent::convertToDatabaseValue(map(fn (CourseId $id): string => $id->value(), $value), $platform);
}
public function convertToPHPValue($value, AbstractPlatform $platform)
{
$scalars = parent::convertToPHPValue($value, $platform);
- return map(fn (string $value) => new CourseId($value), $scalars);
+ return map(fn (string $value): CourseId => new CourseId($value), $scalars);
}
}
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
index 1be475ed2..e37b0efb9 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
@@ -25,7 +25,7 @@ public static function inPath(string $path, string $contextName): array
private static function modulesInPath(string $path): array
{
return filter(
- static fn (string $possibleModule) => !in_array($possibleModule, ['.', '..'], true),
+ static fn (string $possibleModule): bool => !in_array($possibleModule, ['.', '..'], true),
scandir($path)
);
}
@@ -44,17 +44,17 @@ static function ($unused, string $module) use ($path) {
private static function isExistingDbalPath(): callable
{
- return static fn (string $path) => !empty($path);
+ return static fn (string $path): bool => !empty($path);
}
private static function dbalClassesSearcher(string $contextName): callable
{
- return static function (array $totalNamespaces, string $path) use ($contextName) {
+ return static function (array $totalNamespaces, string $path) use ($contextName): array {
$possibleFiles = scandir($path);
- $files = filter(static fn ($file) => Utils::endsWith('Type.php', $file), $possibleFiles);
+ $files = filter(static fn ($file): bool => Utils::endsWith('Type.php', $file), $possibleFiles);
$namespaces = map(
- static function (string $file) use ($path, $contextName) {
+ static function (string $file) use ($path, $contextName): string {
$fullPath = "$path/$file";
$splittedPath = explode("/src/$contextName/", $fullPath);
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
index cacc676ed..6e66ebc20 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
@@ -23,7 +23,7 @@ public static function inPath(string $path, string $baseNamespace): array
private static function modulesInPath(string $path): array
{
return filter(
- static fn (string $possibleModule) => !in_array($possibleModule, ['.', '..'], true),
+ static fn (string $possibleModule): bool => !in_array($possibleModule, ['.', '..'], true),
scandir($path)
);
}
@@ -42,11 +42,11 @@ static function ($unused, string $module) use ($path) {
private static function isExistingMappingPath(): callable
{
- return static fn (string $path) => !empty($path);
+ return static fn (string $path): bool => !empty($path);
}
private static function namespaceFormatter(string $baseNamespace): callable
{
- return static fn (string $path, string $module) => "$baseNamespace\\$module\Domain";
+ return static fn (string $path, string $module): string => "$baseNamespace\\$module\Domain";
}
}
diff --git a/src/Mooc/Videos/Application/Find/VideoFinder.php b/src/Mooc/Videos/Application/Find/VideoFinder.php
index 6f99ef280..4e53fb8f7 100644
--- a/src/Mooc/Videos/Application/Find/VideoFinder.php
+++ b/src/Mooc/Videos/Application/Find/VideoFinder.php
@@ -4,6 +4,7 @@
namespace CodelyTv\Mooc\Videos\Application\Find;
+use CodelyTv\Mooc\Videos\Domain\Video;
use CodelyTv\Mooc\Videos\Domain\VideoFinder as DomainVideoFinder;
use CodelyTv\Mooc\Videos\Domain\VideoId;
use CodelyTv\Mooc\Videos\Domain\VideoRepository;
@@ -17,7 +18,7 @@ public function __construct(VideoRepository $repository)
$this->finder = new DomainVideoFinder($repository);
}
- public function __invoke(VideoId $id)
+ public function __invoke(VideoId $id): Video
{
return $this->finder->__invoke($id);
}
diff --git a/src/Shared/Domain/Criteria/Criteria.php b/src/Shared/Domain/Criteria/Criteria.php
index 690b78cff..a1d7a85d9 100644
--- a/src/Shared/Domain/Criteria/Criteria.php
+++ b/src/Shared/Domain/Criteria/Criteria.php
@@ -54,8 +54,8 @@ public function serialize(): string
'%s~~%s~~%s~~%s',
$this->filters->serialize(),
$this->order->serialize(),
- $this->offset,
- $this->limit
+ $this->offset ?? 'none',
+ $this->limit ?? 'none'
);
}
}
diff --git a/src/Shared/Domain/Criteria/Filters.php b/src/Shared/Domain/Criteria/Filters.php
index 56a6312d8..04af22fac 100644
--- a/src/Shared/Domain/Criteria/Filters.php
+++ b/src/Shared/Domain/Criteria/Filters.php
@@ -17,7 +17,7 @@ public static function fromValues(array $values): self
private static function filterBuilder(): callable
{
- return fn (array $values) => Filter::fromValues($values);
+ return fn (array $values): Filter => Filter::fromValues($values);
}
public function add(Filter $filter): self
@@ -33,7 +33,11 @@ public function filters(): array
public function serialize(): string
{
return reduce(
- static fn (string $accumulate, Filter $filter) => sprintf('%s^%s', $accumulate, $filter->serialize()),
+ static fn (string $accumulate, Filter $filter): string => sprintf(
+ '%s^%s',
+ $accumulate,
+ $filter->serialize()
+ ),
$this->items(),
''
);
diff --git a/src/Shared/Domain/Criteria/Order.php b/src/Shared/Domain/Criteria/Order.php
index 331571c9a..afcc3303f 100644
--- a/src/Shared/Domain/Criteria/Order.php
+++ b/src/Shared/Domain/Criteria/Order.php
@@ -15,7 +15,10 @@ public static function createDesc(OrderBy $orderBy): self
public static function fromValues(?string $orderBy, ?string $order): self
{
- return $orderBy === null ? self::none() : new self(new OrderBy($orderBy), OrderType::from($order));
+ return ($orderBy === null || $order === null) ? self::none() : new self(
+ new OrderBy($orderBy),
+ OrderType::from($order)
+ );
}
public static function none(): self
diff --git a/src/Shared/Domain/Utils.php b/src/Shared/Domain/Utils.php
index bdb8a9ef8..c7825a25b 100644
--- a/src/Shared/Domain/Utils.php
+++ b/src/Shared/Domain/Utils.php
@@ -75,7 +75,10 @@ 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): false|string => strstr($possibleModule, $fileType),
+ scandir($path)
+ );
}
public static function extractClassName(object $object): string
diff --git a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
index bac6860bb..4db50eb2d 100644
--- a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
+++ b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
@@ -33,7 +33,7 @@ private static function classExtractor(self $parameterExtractor): callable
private static function pipedCallablesReducer(): callable
{
- return static function ($subscribers, DomainEventSubscriber $subscriber): array {
+ return static function (array $subscribers, DomainEventSubscriber $subscriber): array {
$subscribedEvents = $subscriber::subscribedTo();
foreach ($subscribedEvents as $subscribedEvent) {
@@ -46,7 +46,7 @@ private static function pipedCallablesReducer(): callable
private static function unflatten(): callable
{
- return static fn ($value) => [$value];
+ return static fn ($value): array => [$value];
}
public function extract($class): ?string
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
index 481da1326..39b8057d9 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
@@ -30,7 +30,7 @@ public function for(string $name)
private function eventsExtractor(): callable
{
- return fn (array $mapping, DomainEventSubscriber $subscriber) => array_merge(
+ return fn (array $mapping, DomainEventSubscriber $subscriber): array => array_merge(
$mapping,
reindex($this->eventNameExtractor(), $subscriber::subscribedTo())
);
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
index be6230573..9dabe2ef4 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
@@ -31,7 +31,7 @@ public function allSubscribedTo(string $eventClass): array
public function withRabbitMqQueueNamed(string $queueName): callable|DomainEventSubscriber
{
$subscriber = search(
- static fn (DomainEventSubscriber $subscriber) => RabbitMqQueueNameFormatter::format($subscriber) ===
+ static fn (DomainEventSubscriber $subscriber): bool => RabbitMqQueueNameFormatter::format($subscriber) ===
$queueName,
$this->mapping
);
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php
index e53ac7bb1..0e648c280 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php
@@ -49,6 +49,6 @@ public static function shortFormat(DomainEventSubscriber $subscriber): string
private static function toSnakeCase(): callable
{
- return static fn (string $text) => Utils::toSnakeCase($text);
+ return static fn (string $text): string => Utils::toSnakeCase($text);
}
}
diff --git a/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php b/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php
index 70c77eeb9..c552cf7e7 100644
--- a/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php
+++ b/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php
@@ -23,8 +23,10 @@ public static function register(array $customTypeClassNames): void
private static function registerType(): callable
{
- return static function (string $customTypeClassName): void {
- Type::addType($customTypeClassName::customTypeName(), $customTypeClassName);
+ return static function (mixed $customTypeClassName): void {
+ $name = $customTypeClassName::customTypeName();
+
+ Type::addType($name, $customTypeClassName);
};
}
}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php
index a9c5545dd..44d9835c1 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php
@@ -7,6 +7,7 @@
use CodelyTv\Shared\Domain\Aggregate\AggregateRoot;
use Doctrine\ORM\EntityManager;
use Doctrine\ORM\EntityRepository;
+use Doctrine\ORM\Exception\NotSupported;
abstract class DoctrineRepository
{
@@ -29,6 +30,15 @@ protected function remove(AggregateRoot $entity): void
$this->entityManager()->flush($entity);
}
+ /**
+ * @template T of object
+ *
+ * @psalm-param class-string $entityClass
+ *
+ * @psalm-return EntityRepository
+ *
+ * @throws NotSupported
+ */
protected function repository(string $entityClass): EntityRepository
{
return $this->entityManager->getRepository($entityClass);
diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
index bd72fc4cd..6d10df4be 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
@@ -41,7 +41,7 @@ protected function searchRawElasticsearchQuery(array $params): array
try {
$result = $this->client->client()->search(array_merge(['index' => $this->indexName()], $params));
- $hits = get_in(['hits', 'hits'], $result, []);
+ $hits = (array) get_in(['hits', 'hits'], $result, []);
return map($this->elasticValuesExtractor(), $hits);
} catch (Missing404Exception) {
diff --git a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
index c93c9e9bc..0d8883c57 100644
--- a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
+++ b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
@@ -25,7 +25,7 @@ public function onKernelRequest(RequestEvent $event): void
foreach ($jsonData as $key => $value) {
$jsonDataLowerCase[preg_replace_callback(
'/_(.)/',
- static fn ($matches) => strtoupper($matches[1]),
+ static fn ($matches): string => strtoupper((string) $matches[1]),
(string) $key
)] = $value;
}
diff --git a/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php b/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php
index ed8e836a4..7b199b90a 100644
--- a/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php
+++ b/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php
@@ -21,7 +21,9 @@ public static function create(
return new CoursesCounter(
$id ?? CoursesCounterIdMother::create(),
$total ?? CoursesCounterTotalMother::create(),
- ...count($existingCourses) ? $existingCourses : Repeater::random(fn () => CourseIdMother::create())
+ ...count($existingCourses) ? $existingCourses : Repeater::random(
+ fn (): CourseId => CourseIdMother::create()
+ )
);
}
diff --git a/tests/Shared/Infrastructure/Behat/ApiContext.php b/tests/Shared/Infrastructure/Behat/ApiContext.php
index 30be7f565..bf1df4595 100644
--- a/tests/Shared/Infrastructure/Behat/ApiContext.php
+++ b/tests/Shared/Infrastructure/Behat/ApiContext.php
@@ -46,6 +46,10 @@ public function theResponseContentShouldBe(PyStringNode $expectedResponse): void
$expected = $this->sanitizeOutput($expectedResponse->getRaw());
$actual = $this->sanitizeOutput($this->sessionHelper->getResponse());
+ if ($expected === false || $actual === false) {
+ throw new RuntimeException('The outputs could not be parsed as JSON');
+ }
+
if ($expected !== $actual) {
throw new RuntimeException(
sprintf("The outputs does not match!\n\n-- Expected:\n%s\n\n-- Actual:\n%s", $expected, $actual)
diff --git a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
index 5612e2c8a..e57638dbc 100644
--- a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
@@ -21,7 +21,7 @@
final class RabbitMqEventBusTest extends InfrastructureTestCase
{
- private $connection;
+ private mixed $connection;
private string $exchangeName;
private RabbitMqConfigurer $configurer;
private RabbitMqEventBus $publisher;
diff --git a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
index 2aa1c9afe..226c1e8a0 100644
--- a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
+++ b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
@@ -31,7 +31,7 @@ private function truncateDatabaseSql(array $tables): string
private function truncateTableSql(): callable
{
- return fn (array $table): string => sprintf('TRUNCATE TABLE `%s`;', first($table));
+ return fn (array $table): string => sprintf('TRUNCATE TABLE `%s`;', (string) first($table));
}
private function tables(Connection $connection): array
diff --git a/tests/Shared/Infrastructure/Mink/MinkHelper.php b/tests/Shared/Infrastructure/Mink/MinkHelper.php
index 51fb79319..976ccc0d5 100644
--- a/tests/Shared/Infrastructure/Mink/MinkHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkHelper.php
@@ -13,7 +13,7 @@
{
public function __construct(private Session $session) {}
- public function sendRequest($method, $url, array $optionalParams = []): Crawler
+ public function sendRequest(string $method, string $url, array $optionalParams = []): Crawler
{
$defaultOptionalParams = [
'parameters' => [],
diff --git a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
index 6f02b11d7..c5909ef43 100644
--- a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
@@ -21,7 +21,7 @@ public function sendRequestWithPyStringNode($method, $url, PyStringNode $body):
$this->request($method, $url, ['content' => $body->getRaw()]);
}
- public function request($method, $url, array $optionalParams = []): Crawler
+ public function request(string $method, string $url, array $optionalParams = []): Crawler
{
return $this->sessionHelper->sendRequest($method, $url, $optionalParams);
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
index 78f9dd3d9..25d4017d6 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
@@ -40,7 +40,7 @@ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = f
private function contains(array $expectedArray, array $actualArray): bool
{
$exists = fn (AggregateRoot $expected): bool => any(
- fn (AggregateRoot $actual) => TestUtils::isSimilar($expected, $actual),
+ fn (AggregateRoot $actual): bool => TestUtils::isSimilar($expected, $actual),
$actualArray
);
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
index f1975a01d..db43dfd09 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
@@ -40,7 +40,7 @@ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = f
private function contains(array $expectedArray, array $actualArray): bool
{
$exists = static fn (DomainEvent $expected): bool => any(
- static fn (DomainEvent $actual) => TestUtils::isSimilar($expected, $actual),
+ static fn (DomainEvent $actual): bool => TestUtils::isSimilar($expected, $actual),
$actualArray
);
diff --git a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
index 757c4fda2..cc4e75844 100644
--- a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
+++ b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
@@ -32,7 +32,7 @@ protected function service(string $id): mixed
return self::getContainer()->get($id);
}
- protected function parameter($parameter): mixed
+ protected function parameter(string $parameter): mixed
{
return self::getContainer()->getParameter($parameter);
}
From ff40d42db376dc05a1db43a6177fc670263e6e2f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Tue, 3 Oct 2023 15:58:47 +0200
Subject: [PATCH 21/40] chore: use psalm level 2 (#359)
---
.../Courses/CoursesGetController.php | 4 +-
composer.json | 3 +-
composer.lock | 62 ++++++++++++++++++-
psalm.xml | 14 ++++-
.../Doctrine/DbalTypesSearcher.php | 4 +-
.../Doctrine/DoctrinePrefixesSearcher.php | 2 +-
.../Find/FindVideoQueryHandler.php | 13 ++--
src/Shared/Domain/Assert.php | 2 +-
src/Shared/Domain/ValueObject/Uuid.php | 2 +-
.../Bus/CallableFirstParameterExtractor.php | 8 +--
.../Bus/Event/DomainEventJsonDeserializer.php | 5 --
.../Bus/Event/DomainEventMapping.php | 4 +-
.../MySqlDoctrineDomainEventsConsumer.php | 7 +--
.../Bus/Event/MySql/MySqlDoctrineEventBus.php | 2 +-
.../Doctrine/DoctrineEntityManagerFactory.php | 11 ++--
.../Doctrine/DoctrineCriteriaConverter.php | 8 +--
tests/Shared/Domain/DuplicatorMother.php | 2 +-
tests/Shared/Domain/TestUtils.php | 6 +-
.../Infrastructure/Behat/ApiContext.php | 6 +-
.../Doctrine/MySqlDatabaseCleaner.php | 4 +-
.../Mockery/CodelyTvMatcherIsSimilar.php | 2 +-
.../DateTimeStringSimilarComparator.php | 3 +-
.../PhpUnit/InfrastructureTestCase.php | 9 ++-
.../Infrastructure/PhpUnit/UnitTestCase.php | 6 +-
24 files changed, 132 insertions(+), 57 deletions(-)
diff --git a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
index 428b3b35e..0249e77aa 100644
--- a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
+++ b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
@@ -28,8 +28,8 @@ public function __invoke(Request $request): JsonResponse
$response = $this->queryBus->ask(
new SearchBackofficeCoursesByCriteriaQuery(
(array) $request->query->get('filters'),
- $orderBy === null ? null : (string) $orderBy,
- $order === null ? null : (string) $order,
+ $orderBy === null ? null : $orderBy,
+ $order === null ? null : $order,
$limit === null ? null : (int) $limit,
$offset === null ? null : (int) $offset
)
diff --git a/composer.json b/composer.json
index fcbc6d631..16cbae255 100644
--- a/composer.json
+++ b/composer.json
@@ -56,7 +56,8 @@
"vimeo/psalm": "^5.15",
"rector/rector": "^0.18.4",
"psalm/plugin-mockery": "^1.1",
- "psalm/plugin-symfony": "^5.0"
+ "psalm/plugin-symfony": "^5.0",
+ "psalm/plugin-phpunit": "^0.18.4"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index c4951eef4..4c584ce32 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "5ca0c05883f15a06ec830187f97a5ba9",
+ "content-hash": "aee8db87d99805f8edc889d34f98ff95",
"packages": [
{
"name": "brick/math",
@@ -7990,6 +7990,66 @@
},
"time": "2022-11-25T07:16:18+00:00"
},
+ {
+ "name": "psalm/plugin-phpunit",
+ "version": "0.18.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/psalm/psalm-plugin-phpunit.git",
+ "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc",
+ "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc",
+ "shasum": ""
+ },
+ "require": {
+ "composer/package-versions-deprecated": "^1.10",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "ext-simplexml": "*",
+ "php": "^7.1 || ^8.0",
+ "vimeo/psalm": "dev-master || dev-4.x || ^4.7.1 || ^5@beta || ^5.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<7.5"
+ },
+ "require-dev": {
+ "codeception/codeception": "^4.0.3",
+ "php": "^7.3 || ^8.0",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.3.1",
+ "weirdan/codeception-psalm-module": "^0.11.0",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "type": "psalm-plugin",
+ "extra": {
+ "psalm": {
+ "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psalm\\PhpUnitPlugin\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matt Brown",
+ "email": "github@muglug.com"
+ }
+ ],
+ "description": "Psalm plugin for PHPUnit",
+ "support": {
+ "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues",
+ "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.4"
+ },
+ "time": "2022-12-03T07:47:07+00:00"
+ },
{
"name": "psalm/plugin-symfony",
"version": "v5.0.3",
diff --git a/psalm.xml b/psalm.xml
index 955503769..49bc1fcc1 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -3,10 +3,11 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config"
xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
- errorLevel="3"
+ errorLevel="2"
resolveFromConfigFile="true"
findUnusedBaselineEntry="false"
findUnusedCode="false"
+ allowStringToStandInForClass="true"
>
@@ -44,15 +45,26 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
index e37b0efb9..a6df25c8b 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
@@ -33,7 +33,7 @@ private static function modulesInPath(string $path): array
private static function possibleDbalPaths(string $path): array
{
return map(
- static function ($unused, string $module) use ($path) {
+ static function (mixed $_unused, string $module) use ($path) {
$mappingsPath = self::MAPPINGS_PATH;
return realpath("$path/$module/$mappingsPath");
@@ -51,7 +51,7 @@ private static function dbalClassesSearcher(string $contextName): callable
{
return static function (array $totalNamespaces, string $path) use ($contextName): array {
$possibleFiles = scandir($path);
- $files = filter(static fn ($file): bool => Utils::endsWith('Type.php', $file), $possibleFiles);
+ $files = filter(static fn (string $file): bool => Utils::endsWith('Type.php', $file), $possibleFiles);
$namespaces = map(
static function (string $file) use ($path, $contextName): string {
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
index 6e66ebc20..ac1ae3c2e 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
@@ -31,7 +31,7 @@ private static function modulesInPath(string $path): array
private static function possibleMappingPaths(string $path): array
{
return map(
- static function ($unused, string $module) use ($path) {
+ static function (mixed $_unused, string $module) use ($path) {
$mappingsPath = self::MAPPINGS_PATH;
return realpath("$path/$module/$mappingsPath");
diff --git a/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php b/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php
index ef04073f4..377f08e39 100644
--- a/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php
+++ b/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php
@@ -8,21 +8,22 @@
use CodelyTv\Shared\Domain\Bus\Query\QueryHandler;
use function Lambdish\Phunctional\apply;
-use function Lambdish\Phunctional\pipe;
-final class FindVideoQueryHandler implements QueryHandler
+final readonly class FindVideoQueryHandler implements QueryHandler
{
- private $finder;
+ private VideoResponseConverter $responseConverter;
- public function __construct(VideoFinder $finder)
+ public function __construct(private VideoFinder $finder)
{
- $this->finder = pipe($finder, new VideoResponseConverter());
+ $this->responseConverter = new VideoResponseConverter();
}
public function __invoke(FindVideoQuery $query): VideoResponse
{
$id = new VideoId($query->id());
- return apply($this->finder, [$id]);
+ $video = apply($this->finder, [$id]);
+
+ return apply($this->responseConverter, [$video]);
}
}
diff --git a/src/Shared/Domain/Assert.php b/src/Shared/Domain/Assert.php
index d47b45939..1a56c0387 100644
--- a/src/Shared/Domain/Assert.php
+++ b/src/Shared/Domain/Assert.php
@@ -15,7 +15,7 @@ public static function arrayOf(string $class, array $items): void
}
}
- public static function instanceOf(string $class, $item): void
+ public static function instanceOf(string $class, mixed $item): void
{
if (!$item instanceof $class) {
throw new InvalidArgumentException(
diff --git a/src/Shared/Domain/ValueObject/Uuid.php b/src/Shared/Domain/ValueObject/Uuid.php
index c23061a9b..200dcb667 100644
--- a/src/Shared/Domain/ValueObject/Uuid.php
+++ b/src/Shared/Domain/ValueObject/Uuid.php
@@ -10,7 +10,7 @@
abstract class Uuid implements Stringable
{
- public function __construct(protected string $value)
+ final public function __construct(protected string $value)
{
$this->ensureIsValidUuid($value);
}
diff --git a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
index 4db50eb2d..9098fe2d4 100644
--- a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
+++ b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
@@ -28,7 +28,7 @@ public static function forPipedCallables(iterable $callables): array
private static function classExtractor(self $parameterExtractor): callable
{
- return static fn (callable $handler): ?string => $parameterExtractor->extract($handler);
+ return static fn (object $handler): ?string => $parameterExtractor->extract($handler);
}
private static function pipedCallablesReducer(): callable
@@ -46,10 +46,10 @@ private static function pipedCallablesReducer(): callable
private static function unflatten(): callable
{
- return static fn ($value): array => [$value];
+ return static fn (mixed $value): array => [$value];
}
- public function extract($class): ?string
+ public function extract(object $class): ?string
{
$reflector = new ReflectionClass($class);
$method = $reflector->getMethod('__invoke');
@@ -63,7 +63,7 @@ public function extract($class): ?string
private function firstParameterClassFrom(ReflectionMethod $method): string
{
- /** @var ReflectionNamedType $fistParameterType */
+ /** @var ReflectionNamedType|null $fistParameterType */
$fistParameterType = $method->getParameters()[0]->getType();
if ($fistParameterType === null) {
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
index 38217a553..6f1f035d8 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
@@ -6,7 +6,6 @@
use CodelyTv\Shared\Domain\Bus\Event\DomainEvent;
use CodelyTv\Shared\Domain\Utils;
-use RuntimeException;
final readonly class DomainEventJsonDeserializer
{
@@ -18,10 +17,6 @@ public function deserialize(string $domainEvent): DomainEvent
$eventName = $eventData['data']['type'];
$eventClass = $this->mapping->for($eventName);
- if ($eventClass === null) {
- throw new RuntimeException("The event <$eventName> doesn't exist or has no subscribers");
- }
-
return $eventClass::fromPrimitives(
$eventData['data']['attributes']['id'],
$eventData['data']['attributes'],
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
index 39b8057d9..66d37f0b4 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
@@ -12,14 +12,14 @@
final class DomainEventMapping
{
- private $mapping;
+ private array $mapping;
public function __construct(iterable $mapping)
{
$this->mapping = reduce($this->eventsExtractor(), $mapping, []);
}
- public function for(string $name)
+ public function for(string $name): string
{
if (!isset($this->mapping[$name])) {
throw new RuntimeException("The Domain Event Class for <$name> doesn't exists or have no subscribers");
diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
index 43ae38c0f..e81e525dd 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
@@ -8,7 +8,6 @@
use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventMapping;
use DateTimeImmutable;
use Doctrine\DBAL\Connection;
-use Doctrine\DBAL\FetchMode;
use Doctrine\ORM\EntityManager;
use RuntimeException;
@@ -28,14 +27,14 @@ public function consume(callable $subscribers, int $eventsToConsume): void
{
$events = $this->connection
->executeQuery("SELECT * FROM domain_events ORDER BY occurred_on ASC LIMIT $eventsToConsume")
- ->fetchAll(FetchMode::ASSOCIATIVE);
+ ->fetchAllAssociative();
each($this->executeSubscribers($subscribers), $events);
$ids = implode(', ', map($this->idExtractor(), $events));
if (!empty($ids)) {
- $this->connection->executeUpdate("DELETE FROM domain_events WHERE id IN ($ids)");
+ $this->connection->executeStatement("DELETE FROM domain_events WHERE id IN ($ids)");
}
}
@@ -57,7 +56,7 @@ private function executeSubscribers(callable $subscribers): callable
};
}
- private function formatDate($stringDate): string
+ private function formatDate(mixed $stringDate): string
{
return Utils::dateToString(new DateTimeImmutable($stringDate));
}
diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
index 5127030df..8876aec99 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
@@ -38,7 +38,7 @@ private function publisher(): callable
Utils::stringToDate($domainEvent->occurredOn())->format(self::DATABASE_TIMESTAMP_FORMAT)
);
- $this->connection->executeUpdate(
+ $this->connection->executeStatement(
<<createDatabase($databaseName);
- $connection->exec(sprintf('USE %s', $databaseName));
- $connection->exec(file_get_contents(realpath($schemaFile)));
+ $connection->executeStatement(sprintf('USE %s', $databaseName));
+ $connection->executeStatement(file_get_contents(realpath($schemaFile)));
}
$connection->close();
}
- private static function databaseExists($databaseName, MySqlSchemaManager $schemaManager): bool
+ private static function databaseExists(string $databaseName, MySqlSchemaManager $schemaManager): bool
{
return in_array($databaseName, $schemaManager->listDatabases(), true);
}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
index ca4e91d24..bb2f73604 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
@@ -64,7 +64,7 @@ private function buildComparison(): callable
};
}
- private function mapFieldValue(FilterField $field)
+ private function mapFieldValue(FilterField $field): mixed
{
return array_key_exists($field->value(), $this->criteriaToDoctrineFields)
? $this->criteriaToDoctrineFields[$field->value()]
@@ -80,19 +80,19 @@ private function formatOrder(Criteria $criteria): ?array
return [$this->mapOrderBy($criteria->order()->orderBy()) => $criteria->order()->orderType()];
}
- private function mapOrderBy(OrderBy $field)
+ private function mapOrderBy(OrderBy $field): mixed
{
return array_key_exists($field->value(), $this->criteriaToDoctrineFields)
? $this->criteriaToDoctrineFields[$field->value()]
: $field->value();
}
- private function existsHydratorFor($field): bool
+ private function existsHydratorFor(mixed $field): bool
{
return array_key_exists($field, $this->hydrators);
}
- private function hydrate($field, string $value)
+ private function hydrate(mixed $field, string $value): mixed
{
return $this->hydrators[$field]($value);
}
diff --git a/tests/Shared/Domain/DuplicatorMother.php b/tests/Shared/Domain/DuplicatorMother.php
index fc4260079..ab7fa25d9 100644
--- a/tests/Shared/Domain/DuplicatorMother.php
+++ b/tests/Shared/Domain/DuplicatorMother.php
@@ -11,7 +11,7 @@
final class DuplicatorMother
{
- public static function with($object, array $newParams): mixed
+ public static function with(mixed $object, array $newParams): mixed
{
$duplicated = clone $object;
$reflection = new ReflectionObject($duplicated);
diff --git a/tests/Shared/Domain/TestUtils.php b/tests/Shared/Domain/TestUtils.php
index cfb347deb..2d560e6fd 100644
--- a/tests/Shared/Domain/TestUtils.php
+++ b/tests/Shared/Domain/TestUtils.php
@@ -9,21 +9,21 @@
final class TestUtils
{
- public static function isSimilar($expected, $actual): bool
+ public static function isSimilar(mixed $expected, mixed $actual): bool
{
$constraint = new CodelyTvConstraintIsSimilar($expected);
return $constraint->evaluate($actual, '', true);
}
- public static function assertSimilar($expected, $actual): void
+ public static function assertSimilar(mixed $expected, mixed $actual): void
{
$constraint = new CodelyTvConstraintIsSimilar($expected);
$constraint->evaluate($actual);
}
- public static function similarTo($value, $delta = 0.0): CodelyTvMatcherIsSimilar
+ public static function similarTo(mixed $value, float $delta = 0.0): CodelyTvMatcherIsSimilar
{
return new CodelyTvMatcherIsSimilar($value, $delta);
}
diff --git a/tests/Shared/Infrastructure/Behat/ApiContext.php b/tests/Shared/Infrastructure/Behat/ApiContext.php
index bf1df4595..a3bd747eb 100644
--- a/tests/Shared/Infrastructure/Behat/ApiContext.php
+++ b/tests/Shared/Infrastructure/Behat/ApiContext.php
@@ -25,7 +25,7 @@ public function __construct(private readonly Session $minkSession)
/**
* @Given I send a :method request to :url
*/
- public function iSendARequestTo($method, $url): void
+ public function iSendARequestTo(string $method, string $url): void
{
$this->request->sendRequest($method, $this->locatePath($url));
}
@@ -33,7 +33,7 @@ public function iSendARequestTo($method, $url): void
/**
* @Given I send a :method request to :url with body:
*/
- public function iSendARequestToWithBody($method, $url, PyStringNode $body): void
+ public function iSendARequestToWithBody(string $method, string $url, PyStringNode $body): void
{
$this->request->sendRequestWithPyStringNode($method, $this->locatePath($url), $body);
}
@@ -88,7 +88,7 @@ public function printResponseHeaders(): void
/**
* @Then the response status code should be :expectedResponseCode
*/
- public function theResponseStatusCodeShouldBe($expectedResponseCode): void
+ public function theResponseStatusCodeShouldBe(mixed $expectedResponseCode): void
{
if ($this->minkSession->getStatusCode() !== (int) $expectedResponseCode) {
throw new RuntimeException(
diff --git a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
index 226c1e8a0..c58c5ce57 100644
--- a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
+++ b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
@@ -19,7 +19,7 @@ public function __invoke(EntityManagerInterface $entityManager): void
$tables = $this->tables($connection);
$truncateTablesSql = $this->truncateDatabaseSql($tables);
- $connection->exec($truncateTablesSql);
+ $connection->executeQuery($truncateTablesSql);
}
private function truncateDatabaseSql(array $tables): string
@@ -36,6 +36,6 @@ private function truncateTableSql(): callable
private function tables(Connection $connection): array
{
- return $connection->query('SHOW TABLES')->fetchAll();
+ return $connection->executeQuery('SHOW TABLES')->fetchAllAssociative();
}
}
diff --git a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
index 90ca771b3..00271c0a6 100644
--- a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
+++ b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
@@ -12,7 +12,7 @@ final class CodelyTvMatcherIsSimilar extends MatcherAbstract implements Stringab
{
private readonly CodelyTvConstraintIsSimilar $constraint;
- public function __construct($value, $delta = 0.0)
+ public function __construct(mixed $value, float $delta = 0.0)
{
parent::__construct($value);
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php
index 05bd8bdc3..e3cc9d557 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php
@@ -16,8 +16,7 @@ final class DateTimeStringSimilarComparator extends ObjectComparator
{
public function accepts($expected, $actual): bool
{
- return ($actual !== null)
- && is_string($expected)
+ return is_string($expected)
&& is_string($actual)
&& $this->isValidDateTimeString($expected)
&& $this->isValidDateTimeString($actual);
diff --git a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
index cc4e75844..5ef80b395 100644
--- a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
+++ b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
@@ -42,8 +42,13 @@ protected function clearUnitOfWork(): void
$this->service(EntityManager::class)->clear();
}
- protected function eventually(callable $fn, $totalRetries = 3, $timeToWaitOnErrorInSeconds = 1, $attempt = 0): void
- {
+ /** @param int<0, max> $timeToWaitOnErrorInSeconds */
+ protected function eventually(
+ callable $fn,
+ int $totalRetries = 3,
+ int $timeToWaitOnErrorInSeconds = 1,
+ int $attempt = 0
+ ): void {
try {
$fn();
} catch (Throwable $error) {
diff --git a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
index 27bb36193..1776ca089 100644
--- a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
+++ b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
@@ -87,17 +87,17 @@ protected function assertAskThrowsException(string $expectedErrorClass, Query $q
$queryHandler($query);
}
- protected function isSimilar($expected, $actual): bool
+ protected function isSimilar(mixed $expected, mixed $actual): bool
{
return TestUtils::isSimilar($expected, $actual);
}
- protected function assertSimilar($expected, $actual): void
+ protected function assertSimilar(mixed $expected, mixed $actual): void
{
TestUtils::assertSimilar($expected, $actual);
}
- protected function similarTo($value, $delta = 0.0): MatcherAbstract
+ protected function similarTo(mixed $value, float $delta = 0.0): MatcherAbstract
{
return TestUtils::similarTo($value, $delta);
}
From 0e52a8b97a5208493892434aef4872a08baaa0c1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Tue, 3 Oct 2023 19:09:13 +0200
Subject: [PATCH 22/40] feat: test architecture (#361)
* chore(phpat): install codely fork
* chore(phpat): test shared domain architecture
* ci: test architecture
* chore(phpat): test shared infrastructure architecture
* chore(phpat): test shared infrastructure architecture
* chore(phpat): test application services only have one public method
---
.github/workflows/ci.yml | 3 +
Makefile | 3 +
composer.json | 12 ++-
composer.lock | 75 +++++++++++++++++--
phpstan.neon | 25 +++++++
src/Shared/Domain/Utils.php | 9 ---
.../Symfony/ApiExceptionListener.php | 10 ++-
tests/Mooc/MoocArchitectureTest.php | 56 ++++++++++++++
.../Infrastructure/ArchitectureTest.php | 40 ++++++++++
tests/Shared/SharedArchitectureTest.php | 61 +++++++++++++++
10 files changed, 275 insertions(+), 19 deletions(-)
create mode 100644 phpstan.neon
create mode 100644 tests/Mooc/MoocArchitectureTest.php
create mode 100644 tests/Shared/Infrastructure/ArchitectureTest.php
create mode 100644 tests/Shared/SharedArchitectureTest.php
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 9ab37e216..f629db424 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -28,6 +28,9 @@ jobs:
- name: 🏁 Static analysis
run: make static-analysis
+ - name: 🏗️ Architecture
+ run: make test-architecture
+
- name: 🦭 Wait for the database to get up
run: |
while ! make ping-mysql &>/dev/null; do
diff --git a/Makefile b/Makefile
index aa5c306bb..c47502189 100644
--- a/Makefile
+++ b/Makefile
@@ -18,6 +18,9 @@ static-analysis:
lint:
docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/ecs check
+test-architecture:
+ docker exec codely-php_ddd_skeleton-mooc_backend-php php -d memory_limit=4G ./vendor/bin/phpstan analyse
+
start:
@if [ ! -f .env.local ]; then echo '' > .env.local; fi
UID=${shell id -u} GID=${shell id -g} docker compose up --build -d
diff --git a/composer.json b/composer.json
index 16cbae255..0028fa52f 100644
--- a/composer.json
+++ b/composer.json
@@ -57,7 +57,9 @@
"rector/rector": "^0.18.4",
"psalm/plugin-mockery": "^1.1",
"psalm/plugin-symfony": "^5.0",
- "psalm/plugin-phpunit": "^0.18.4"
+ "psalm/plugin-phpunit": "^0.18.4",
+ "phpstan/phpstan": "^1.10",
+ "phpat/phpat": "dev-add-has_one_public_method"
},
"autoload": {
"psr-4": {
@@ -80,5 +82,11 @@
"allow-plugins": {
"ocramius/package-versions": true
}
- }
+ },
+ "repositories": [
+ {
+ "type": "vcs",
+ "url": "https://github.com/CodelyTV/phpat"
+ }
+ ]
}
diff --git a/composer.lock b/composer.lock
index 4c584ce32..3369971a0 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "aee8db87d99805f8edc889d34f98ff95",
+ "content-hash": "cc21804655685b24332ea14a43ca7875",
"packages": [
{
"name": "brick/math",
@@ -7234,6 +7234,66 @@
},
"time": "2022-02-21T01:04:05+00:00"
},
+ {
+ "name": "phpat/phpat",
+ "version": "dev-add-has_one_public_method",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/CodelyTV/phpat.git",
+ "reference": "5d530db9735aa52ca702db9e6d91493b1e06c990"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/CodelyTV/phpat/zipball/5d530db9735aa52ca702db9e6d91493b1e06c990",
+ "reference": "5d530db9735aa52ca702db9e6d91493b1e06c990",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.4 || ^8.0",
+ "phpstan/phpstan": "^1.3"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "kubawerlos/php-cs-fixer-custom-fixers": "^3.16",
+ "phpunit/phpunit": "^9.0",
+ "vimeo/psalm": "^4.0 || ^5.0"
+ },
+ "type": "phpstan-extension",
+ "extra": {
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPat\\": "src/"
+ },
+ "files": [
+ "helpers.php"
+ ]
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "Tests\\PHPat\\": "tests/"
+ }
+ },
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Carlos Alandete Sastre",
+ "email": "carlos.alandete@gmail.com"
+ }
+ ],
+ "description": "PHP Architecture Tester",
+ "support": {
+ "source": "https://github.com/CodelyTV/phpat/tree/add-has_one_public_method"
+ },
+ "time": "2023-10-03T14:53:59+00:00"
+ },
{
"name": "phpdocumentor/reflection-common",
"version": "2.2.0",
@@ -7451,16 +7511,16 @@
},
{
"name": "phpstan/phpstan",
- "version": "1.10.35",
+ "version": "1.10.37",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3"
+ "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e730e5facb75ffe09dfb229795e8c01a459f26c3",
- "reference": "e730e5facb75ffe09dfb229795e8c01a459f26c3",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/058ba07e92f744d4dcf6061ae75283d0c6456f2e",
+ "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e",
"shasum": ""
},
"require": {
@@ -7509,7 +7569,7 @@
"type": "tidelift"
}
],
- "time": "2023-09-19T15:27:56+00:00"
+ "time": "2023-10-02T16:18:37+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -10516,7 +10576,8 @@
"aliases": [],
"minimum-stability": "RC",
"stability-flags": {
- "roave/security-advisories": 20
+ "roave/security-advisories": 20,
+ "phpat/phpat": 20
},
"prefer-stable": false,
"prefer-lowest": false,
diff --git a/phpstan.neon b/phpstan.neon
new file mode 100644
index 000000000..4404d69b2
--- /dev/null
+++ b/phpstan.neon
@@ -0,0 +1,25 @@
+includes:
+ - vendor/phpat/phpat/extension.neon
+
+parameters:
+ level: 0
+ paths:
+ - ./apps
+ - ./src
+ - ./tests
+ excludePaths:
+ - ./apps/backoffice/backend/var
+ - ./apps/backoffice/frontend/var
+ - ./apps/mooc/backend/var
+ - ./apps/mooc/frontend/var
+
+services:
+ -
+ class: CodelyTv\Tests\Shared\SharedArchitectureTest
+ tags:
+ - phpat.test
+
+ -
+ class: CodelyTv\Tests\Mooc\MoocArchitectureTest
+ tags:
+ - phpat.test
diff --git a/src/Shared/Domain/Utils.php b/src/Shared/Domain/Utils.php
index c7825a25b..df64bfb87 100644
--- a/src/Shared/Domain/Utils.php
+++ b/src/Shared/Domain/Utils.php
@@ -6,9 +6,7 @@
use DateTimeImmutable;
use DateTimeInterface;
-use ReflectionClass;
use RuntimeException;
-
use function Lambdish\Phunctional\filter;
final class Utils
@@ -81,13 +79,6 @@ public static function filesIn(string $path, string $fileType): array
);
}
- public static function extractClassName(object $object): string
- {
- $reflect = new ReflectionClass($object);
-
- return $reflect->getShortName();
- }
-
public static function iterableToArray(iterable $iterable): array
{
if (is_array($iterable)) {
diff --git a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
index a18ea1e20..80ef312df 100644
--- a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
+++ b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
@@ -6,6 +6,7 @@
use CodelyTv\Shared\Domain\DomainError;
use CodelyTv\Shared\Domain\Utils;
+use ReflectionClass;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
use Throwable;
@@ -35,6 +36,13 @@ private function exceptionCodeFor(Throwable $error): string
return $error instanceof $domainErrorClass
? $error->errorCode()
- : Utils::toSnakeCase(Utils::extractClassName($error));
+ : Utils::toSnakeCase($this->extractClassName($error));
+ }
+
+ private function extractClassName(object $object): string
+ {
+ $reflect = new ReflectionClass($object);
+
+ return $reflect->getShortName();
}
}
diff --git a/tests/Mooc/MoocArchitectureTest.php b/tests/Mooc/MoocArchitectureTest.php
new file mode 100644
index 000000000..a1cf75f57
--- /dev/null
+++ b/tests/Mooc/MoocArchitectureTest.php
@@ -0,0 +1,56 @@
+classes(Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Domain/', true))
+ ->canOnlyDependOn()
+ ->classes(...array_merge(ArchitectureTest::languageClasses(), [
+ // Itself
+ Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Domain/', true),
+ // Shared
+ Selector::inNamespace('CodelyTv\Shared\Domain'),
+ ]))
+ ->because('mooc domain can only import itself and shared domain');
+ }
+
+ public function test_mooc_application_should_only_import_itself_and_domain(): Rule
+ {
+ return PHPat::rule()
+ ->classes(Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Application/', true))
+ ->canOnlyDependOn()
+ ->classes(...array_merge(ArchitectureTest::languageClasses(), [
+ // Itself
+ Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Application/', true),
+ Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Domain/', true),
+ // Shared
+ Selector::inNamespace('CodelyTv\Shared'),
+ ]))
+ ->because('mooc application can only import itself and shared');
+ }
+
+ public function test_mooc_infrastructure_should_not_import_other_contexts_beside_shared(): Rule
+ {
+ return PHPat::rule()
+ ->classes(Selector::inNamespace('CodelyTv\Mooc'))
+ ->shouldNotDependOn()
+ ->classes(Selector::inNamespace('CodelyTv'))
+ ->excluding(
+ // Itself
+ Selector::inNamespace('CodelyTv\Mooc'),
+ // Shared
+ Selector::inNamespace('CodelyTv\Shared'),
+ );
+ }
+}
diff --git a/tests/Shared/Infrastructure/ArchitectureTest.php b/tests/Shared/Infrastructure/ArchitectureTest.php
new file mode 100644
index 000000000..17d97198b
--- /dev/null
+++ b/tests/Shared/Infrastructure/ArchitectureTest.php
@@ -0,0 +1,40 @@
+classes(Selector::inNamespace('CodelyTv\Shared\Domain'))
+ ->canOnlyDependOn()
+ ->classes(...array_merge(ArchitectureTest::languageClasses(), [
+ // Itself
+ Selector::inNamespace('CodelyTv\Shared\Domain'),
+ // Dependencies treated as domain
+ Selector::classname(Uuid::class),
+ ]))
+ ->because('shared domain cannot import from outside');
+ }
+
+ public function test_shared_infrastructure_should_not_import_from_other_contexts(): Rule
+ {
+ return PHPat::rule()
+ ->classes(Selector::inNamespace('CodelyTv\Shared\Infrastructure'))
+ ->shouldNotDependOn()
+ ->classes(Selector::inNamespace('CodelyTv'))
+ ->excluding(
+ // Itself
+ Selector::inNamespace('CodelyTv\Shared'),
+ // This need to be refactored
+ Selector::classname(MySqlDatabaseCleaner::class),
+ Selector::classname(AuthenticateUserCommand::class),
+ );
+ }
+
+ public function test_all_use_cases_can_only_have_one_public_method(): Rule
+ {
+ return PHPat::rule()
+ ->classes(
+ Selector::classname('/^CodelyTv\\\\.+\\\\.+\\\\Application\\\\.+\\\\(?!.*(?:Command|Query)$).*$/', true)
+ )
+ ->excluding(
+ Selector::implements(Response::class),
+ Selector::implements(DomainEventSubscriber::class),
+ Selector::inNamespace('/.*\\\\Tests\\\\.*/', true)
+ )
+ ->shouldHaveOnlyOnePublicMethod();
+ }
+}
From 6a17830b6e52cabbf2c0eb5a3182d785f714cb8c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Tue, 3 Oct 2023 21:07:09 +0200
Subject: [PATCH 23/40] chore: add phpmd (#362)
* chore(phpmd): install
* chore(phpmd): add BooleanArgumentFlag rule
* chore(phpmd): add CyclomaticComplexity rule
* chore(phpmd): add ExcessiveMethodLength rule
* chore(phpmd): add ExcessiveClassLength rule
* chore(phpmd): add ExcessiveParameterList rule
* chore(phpmd): add TooManyMethods rule
* chore(phpmd): add ExcessiveClassComplexity rule
---
.github/workflows/ci.yml | 3 +
Makefile | 3 +
.../Courses/CoursesGetController.php | 4 +-
composer.json | 3 +-
composer.lock | 149 +++++++++++++++++-
phpmd.xml | 48 ++++++
6 files changed, 206 insertions(+), 4 deletions(-)
create mode 100644 phpmd.xml
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index f629db424..39fe081e4 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -31,6 +31,9 @@ jobs:
- name: 🏗️ Architecture
run: make test-architecture
+ - name: 🗑️ Mess detector
+ run: make mess-detector
+
- name: 🦭 Wait for the database to get up
run: |
while ! make ping-mysql &>/dev/null; do
diff --git a/Makefile b/Makefile
index c47502189..1a16c8a13 100644
--- a/Makefile
+++ b/Makefile
@@ -21,6 +21,9 @@ lint:
test-architecture:
docker exec codely-php_ddd_skeleton-mooc_backend-php php -d memory_limit=4G ./vendor/bin/phpstan analyse
+mess-detector:
+ docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/phpmd apps,src,tests text phpmd.xml
+
start:
@if [ ! -f .env.local ]; then echo '' > .env.local; fi
UID=${shell id -u} GID=${shell id -g} docker compose up --build -d
diff --git a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
index 0249e77aa..11e060683 100644
--- a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
+++ b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
@@ -28,8 +28,8 @@ public function __invoke(Request $request): JsonResponse
$response = $this->queryBus->ask(
new SearchBackofficeCoursesByCriteriaQuery(
(array) $request->query->get('filters'),
- $orderBy === null ? null : $orderBy,
- $order === null ? null : $order,
+ $orderBy,
+ $order,
$limit === null ? null : (int) $limit,
$offset === null ? null : (int) $offset
)
diff --git a/composer.json b/composer.json
index 0028fa52f..cf3792dff 100644
--- a/composer.json
+++ b/composer.json
@@ -59,7 +59,8 @@
"psalm/plugin-symfony": "^5.0",
"psalm/plugin-phpunit": "^0.18.4",
"phpstan/phpstan": "^1.10",
- "phpat/phpat": "dev-add-has_one_public_method"
+ "phpat/phpat": "dev-add-has_one_public_method",
+ "phpmd/phpmd": "^2.14"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index 3369971a0..3b7f90f50 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "cc21804655685b24332ea14a43ca7875",
+ "content-hash": "4b0709ec7581260bbd652ead9e882dbe",
"packages": [
{
"name": "brick/math",
@@ -7123,6 +7123,69 @@
},
"time": "2023-08-13T19:53:39+00:00"
},
+ {
+ "name": "pdepend/pdepend",
+ "version": "2.15.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/pdepend/pdepend.git",
+ "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/pdepend/pdepend/zipball/d12f25bcdfb7754bea458a4a5cb159d55e9950d0",
+ "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.7",
+ "symfony/config": "^2.3.0|^3|^4|^5|^6.0",
+ "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0",
+ "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0"
+ },
+ "require-dev": {
+ "easy-doc/easy-doc": "0.0.0|^1.2.3",
+ "gregwar/rst": "^1.0",
+ "phpunit/phpunit": "^4.8.36|^5.7.27",
+ "squizlabs/php_codesniffer": "^2.0.0"
+ },
+ "bin": [
+ "src/bin/pdepend"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PDepend\\": "src/main/php/PDepend"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Official version of pdepend to be handled with Composer",
+ "keywords": [
+ "PHP Depend",
+ "PHP_Depend",
+ "dev",
+ "pdepend"
+ ],
+ "support": {
+ "issues": "https://github.com/pdepend/pdepend/issues",
+ "source": "https://github.com/pdepend/pdepend/tree/2.15.1"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/pdepend/pdepend",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-09-28T12:00:56+00:00"
+ },
{
"name": "phar-io/manifest",
"version": "2.0.3",
@@ -7462,6 +7525,90 @@
},
"time": "2023-08-12T11:01:26+00:00"
},
+ {
+ "name": "phpmd/phpmd",
+ "version": "2.14.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpmd/phpmd.git",
+ "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8",
+ "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8",
+ "shasum": ""
+ },
+ "require": {
+ "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
+ "ext-xml": "*",
+ "pdepend/pdepend": "^2.15.1",
+ "php": ">=5.3.9"
+ },
+ "require-dev": {
+ "easy-doc/easy-doc": "0.0.0 || ^1.3.2",
+ "ext-json": "*",
+ "ext-simplexml": "*",
+ "gregwar/rst": "^1.0",
+ "mikey179/vfsstream": "^1.6.8",
+ "phpunit/phpunit": "^4.8.36 || ^5.7.27",
+ "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2"
+ },
+ "bin": [
+ "src/bin/phpmd"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "PHPMD\\": "src/main/php"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Manuel Pichler",
+ "email": "github@manuel-pichler.de",
+ "homepage": "https://github.com/manuelpichler",
+ "role": "Project Founder"
+ },
+ {
+ "name": "Marc Würth",
+ "email": "ravage@bluewin.ch",
+ "homepage": "https://github.com/ravage84",
+ "role": "Project Maintainer"
+ },
+ {
+ "name": "Other contributors",
+ "homepage": "https://github.com/phpmd/phpmd/graphs/contributors",
+ "role": "Contributors"
+ }
+ ],
+ "description": "PHPMD is a spin-off project of PHP Depend and aims to be a PHP equivalent of the well known Java tool PMD.",
+ "homepage": "https://phpmd.org/",
+ "keywords": [
+ "dev",
+ "mess detection",
+ "mess detector",
+ "pdepend",
+ "phpmd",
+ "pmd"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/phpmd",
+ "issues": "https://github.com/phpmd/phpmd/issues",
+ "source": "https://github.com/phpmd/phpmd/tree/2.14.1"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/phpmd/phpmd",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2023-09-28T13:07:44+00:00"
+ },
{
"name": "phpstan/phpdoc-parser",
"version": "1.24.2",
diff --git a/phpmd.xml b/phpmd.xml
new file mode 100644
index 000000000..dee5bbe84
--- /dev/null
+++ b/phpmd.xml
@@ -0,0 +1,48 @@
+
+
+
+ apps/*/*/var/*
+ *SimilarComparator*
+ *IsSimilar*
+
+ src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
+
+ tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
+
+ tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
From a7e54c0942700b3da7dc4398c100045fa194da51 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Tue, 3 Oct 2023 23:07:09 +0200
Subject: [PATCH 24/40] chore: add reporting of bad code (#363)
---
Dockerfile | 2 +-
Makefile | 6 +++---
README.md | 1 +
3 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index e5dd7520c..5a269cece 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -2,7 +2,7 @@ FROM php:8.2-fpm-alpine
WORKDIR /app
RUN apk --update upgrade \
- && apk add --no-cache autoconf automake make gcc g++ bash icu-dev libzip-dev rabbitmq-c rabbitmq-c-dev linux-headers
+ && apk add --no-cache autoconf automake make gcc g++ git 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
diff --git a/Makefile b/Makefile
index 1a16c8a13..efec06c20 100644
--- a/Makefile
+++ b/Makefile
@@ -13,16 +13,16 @@ test:
docker exec codely-php_ddd_skeleton-backoffice_backend-php ./vendor/bin/phpunit --testsuite backoffice
static-analysis:
- docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/psalm
+ docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/psalm --output-format=github --shepherd
lint:
docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/ecs check
test-architecture:
- docker exec codely-php_ddd_skeleton-mooc_backend-php php -d memory_limit=4G ./vendor/bin/phpstan analyse
+ docker exec codely-php_ddd_skeleton-mooc_backend-php php -d memory_limit=4G ./vendor/bin/phpstan analyse --error-format=github
mess-detector:
- docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/phpmd apps,src,tests text phpmd.xml
+ docker exec codely-php_ddd_skeleton-mooc_backend-php ./vendor/bin/phpmd apps,src,tests github phpmd.xml
start:
@if [ ! -f .env.local ]; then echo '' > .env.local; fi
diff --git a/README.md b/README.md
index ade42f645..5cb549a7c 100644
--- a/README.md
+++ b/README.md
@@ -12,6 +12,7 @@
+
From 64c1d279f351a1a9b5207a64ad58952034d264ac Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Fri, 6 Oct 2023 12:54:42 +0200
Subject: [PATCH 25/40] chore: use stable phpat version (#365)
---
composer.json | 10 ++--------
composer.lock | 30 +++++++++++++-----------------
2 files changed, 15 insertions(+), 25 deletions(-)
diff --git a/composer.json b/composer.json
index cf3792dff..21706664b 100644
--- a/composer.json
+++ b/composer.json
@@ -59,7 +59,7 @@
"psalm/plugin-symfony": "^5.0",
"psalm/plugin-phpunit": "^0.18.4",
"phpstan/phpstan": "^1.10",
- "phpat/phpat": "dev-add-has_one_public_method",
+ "phpat/phpat": "^0.10.10",
"phpmd/phpmd": "^2.14"
},
"autoload": {
@@ -83,11 +83,5 @@
"allow-plugins": {
"ocramius/package-versions": true
}
- },
- "repositories": [
- {
- "type": "vcs",
- "url": "https://github.com/CodelyTV/phpat"
- }
- ]
+ }
}
diff --git a/composer.lock b/composer.lock
index 3b7f90f50..c748430e1 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "4b0709ec7581260bbd652ead9e882dbe",
+ "content-hash": "c4ef93baa380c9d0dc5e2107e7a37d90",
"packages": [
{
"name": "brick/math",
@@ -7299,16 +7299,16 @@
},
{
"name": "phpat/phpat",
- "version": "dev-add-has_one_public_method",
+ "version": "0.10.10",
"source": {
"type": "git",
- "url": "https://github.com/CodelyTV/phpat.git",
- "reference": "5d530db9735aa52ca702db9e6d91493b1e06c990"
+ "url": "https://github.com/carlosas/phpat.git",
+ "reference": "80004c07ba5972c36758e942a95d11cc9c298e98"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CodelyTV/phpat/zipball/5d530db9735aa52ca702db9e6d91493b1e06c990",
- "reference": "5d530db9735aa52ca702db9e6d91493b1e06c990",
+ "url": "https://api.github.com/repos/carlosas/phpat/zipball/80004c07ba5972c36758e942a95d11cc9c298e98",
+ "reference": "80004c07ba5972c36758e942a95d11cc9c298e98",
"shasum": ""
},
"require": {
@@ -7330,18 +7330,14 @@
}
},
"autoload": {
- "psr-4": {
- "PHPat\\": "src/"
- },
"files": [
"helpers.php"
- ]
- },
- "autoload-dev": {
+ ],
"psr-4": {
- "Tests\\PHPat\\": "tests/"
+ "PHPat\\": "src/"
}
},
+ "notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
@@ -7353,9 +7349,10 @@
],
"description": "PHP Architecture Tester",
"support": {
- "source": "https://github.com/CodelyTV/phpat/tree/add-has_one_public_method"
+ "issues": "https://github.com/carlosas/phpat/issues",
+ "source": "https://github.com/carlosas/phpat/tree/0.10.10"
},
- "time": "2023-10-03T14:53:59+00:00"
+ "time": "2023-10-05T14:16:47+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -10723,8 +10720,7 @@
"aliases": [],
"minimum-stability": "RC",
"stability-flags": {
- "roave/security-advisories": 20,
- "phpat/phpat": 20
+ "roave/security-advisories": 20
},
"prefer-stable": false,
"prefer-lowest": false,
From 3f82a01f98afe6bed5d41b2d3826f7c0dbc5dd91 Mon Sep 17 00:00:00 2001
From: Juan Palacios Iglesias
<134798698+Juanpalacios08@users.noreply.github.com>
Date: Tue, 17 Oct 2023 10:39:37 +0200
Subject: [PATCH 26/40] fix: Link to "DDD y CQRS: Preguntas Frecuentes" (#366)
* fix: Link to "DDD y CQRS: Preguntas Frecuentes"
* fix: Correct link to "DDD y CQRS: Preguntas Frecuentes" (codelyTv domain)
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 5cb549a7c..9fb85dcca 100644
--- a/README.md
+++ b/README.md
@@ -147,7 +147,7 @@ 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/blog/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.
+This code was shown in the [From framework coupled code to #microservices through #DDD](http://codely.tv/blog/screencasts/codigo-acoplado-framework-microservicios-ddd) talk and doubts where answered in the [DDD y CQRS: Preguntas Frecuentes](https://codely.com/blog/ddd-cqrs-preguntas-frecuentes) video.
🎥 Used in the CodelyTV Pro courses:
From 805b6fff9b49d61f7a3dc78ba0a8526a52cf14dd Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Mon, 23 Oct 2023 11:22:04 +0200
Subject: [PATCH 27/40] feat: add codely coding style rules
---
composer.json | 3 +-
composer.lock | 37 +++++++++++++++-
ecs.php | 115 +-------------------------------------------------
3 files changed, 40 insertions(+), 115 deletions(-)
diff --git a/composer.json b/composer.json
index 21706664b..641ccbc4c 100644
--- a/composer.json
+++ b/composer.json
@@ -60,7 +60,8 @@
"psalm/plugin-phpunit": "^0.18.4",
"phpstan/phpstan": "^1.10",
"phpat/phpat": "^0.10.10",
- "phpmd/phpmd": "^2.14"
+ "phpmd/phpmd": "^2.14",
+ "codelytv/coding-style": "^0.9.0"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index c748430e1..19aa3da84 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "c4ef93baa380c9d0dc5e2107e7a37d90",
+ "content-hash": "672d40e7ce6751fab2f182692aa96f94",
"packages": [
{
"name": "brick/math",
@@ -6062,6 +6062,41 @@
},
"time": "2022-03-30T09:27:43+00:00"
},
+ {
+ "name": "codelytv/coding-style",
+ "version": "0.9.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/CodelyTV/php-coding_style-codely.git",
+ "reference": "521ca89d79d0182cf14b4a3cc46f0a6a69b1a7ae"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/521ca89d79d0182cf14b4a3cc46f0a6a69b1a7ae",
+ "reference": "521ca89d79d0182cf14b4a3cc46f0a6a69b1a7ae",
+ "shasum": ""
+ },
+ "require": {
+ "symplify/easy-coding-standard": "^12.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Codelytv\\CodingStyle\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "description": "PHP Coding Style rules we use in Codely",
+ "keywords": [
+ "Code style",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/CodelyTV/php-coding_style-codely/issues",
+ "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/0.9.0"
+ },
+ "time": "2023-10-23T09:08:28+00:00"
+ },
{
"name": "composer/package-versions-deprecated",
"version": "1.11.99.5",
diff --git a/ecs.php b/ecs.php
index 62c8f5208..97f55586a 100644
--- a/ecs.php
+++ b/ecs.php
@@ -2,57 +2,9 @@
declare(strict_types=1);
-use PhpCsFixer\Fixer\ArrayNotation\ArraySyntaxFixer;
-use PhpCsFixer\Fixer\ArrayNotation\TrimArraySpacesFixer;
-use PhpCsFixer\Fixer\Basic\SingleLineEmptyBodyFixer;
-use PhpCsFixer\Fixer\Casing\ClassReferenceNameCasingFixer;
-use PhpCsFixer\Fixer\Casing\LowercaseStaticReferenceFixer;
-use PhpCsFixer\Fixer\Casing\MagicMethodCasingFixer;
-use PhpCsFixer\Fixer\Casing\NativeFunctionCasingFixer;
-use PhpCsFixer\Fixer\Casing\NativeFunctionTypeDeclarationCasingFixer;
-use PhpCsFixer\Fixer\CastNotation\CastSpacesFixer;
+use Codelytv\CodingStyle\CodelyRules;
use PhpCsFixer\Fixer\ClassNotation\FinalClassFixer;
-use PhpCsFixer\Fixer\ClassNotation\FinalPublicMethodForAbstractClassFixer;
-use PhpCsFixer\Fixer\ClassNotation\NoBlankLinesAfterClassOpeningFixer;
-use PhpCsFixer\Fixer\ClassNotation\NoNullPropertyInitializationFixer;
-use PhpCsFixer\Fixer\ClassNotation\NoUnneededFinalMethodFixer;
-use PhpCsFixer\Fixer\ClassNotation\OrderedTypesFixer;
-use PhpCsFixer\Fixer\ClassNotation\ProtectedToPrivateFixer;
-use PhpCsFixer\Fixer\ClassNotation\SelfAccessorFixer;
-use PhpCsFixer\Fixer\ClassNotation\SelfStaticAccessorFixer;
-use PhpCsFixer\Fixer\ClassNotation\VisibilityRequiredFixer;
-use PhpCsFixer\Fixer\ClassUsage\DateTimeImmutableFixer;
-use PhpCsFixer\Fixer\ControlStructure\NoUnneededControlParenthesesFixer;
-use PhpCsFixer\Fixer\ControlStructure\NoUnneededCurlyBracesFixer;
-use PhpCsFixer\Fixer\ControlStructure\NoUselessElseFixer;
-use PhpCsFixer\Fixer\ControlStructure\SimplifiedIfReturnFixer;
-use PhpCsFixer\Fixer\ControlStructure\TrailingCommaInMultilineFixer;
-use PhpCsFixer\Fixer\ControlStructure\YodaStyleFixer;
-use PhpCsFixer\Fixer\Import\FullyQualifiedStrictTypesFixer;
-use PhpCsFixer\Fixer\Import\GlobalNamespaceImportFixer;
-use PhpCsFixer\Fixer\Import\NoLeadingImportSlashFixer;
-use PhpCsFixer\Fixer\Import\NoUnusedImportsFixer;
-use PhpCsFixer\Fixer\Operator\AssignNullCoalescingToCoalesceEqualFixer;
-use PhpCsFixer\Fixer\Operator\NoUselessConcatOperatorFixer;
-use PhpCsFixer\Fixer\Operator\NoUselessNullsafeOperatorFixer;
-use PhpCsFixer\Fixer\Operator\ObjectOperatorWithoutWhitespaceFixer;
-use PhpCsFixer\Fixer\Operator\TernaryToElvisOperatorFixer;
-use PhpCsFixer\Fixer\Operator\TernaryToNullCoalescingFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitConstructFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitDedicateAssertFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitDedicateAssertInternalTypeFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitExpectationFixer;
-use PhpCsFixer\Fixer\PhpUnit\PhpUnitMethodCasingFixer;
-use PhpCsFixer\Fixer\Strict\DeclareStrictTypesFixer;
-use PhpCsFixer\Fixer\Strict\StrictComparisonFixer;
-use PhpCsFixer\Fixer\StringNotation\SingleQuoteFixer;
-use PhpCsFixer\Fixer\Whitespace\StatementIndentationFixer;
-use PhpCsFixer\Fixer\Whitespace\TypeDeclarationSpacesFixer;
-use PhpCsFixer\Fixer\Whitespace\TypesSpacesFixer;
-use Symplify\CodingStandard\Fixer\LineLength\LineLengthFixer;
-use Symplify\CodingStandard\Fixer\Strict\BlankLineAfterStrictTypesFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
-use Symplify\EasyCodingStandard\ValueObject\Set\SetList;
return function (ECSConfig $ecsConfig): void {
$ecsConfig->paths([
@@ -61,70 +13,7 @@
__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->sets([CodelyRules::CODING_STYLE]);
$ecsConfig->skip([
FinalClassFixer::class => [
From b5a9f068e60a2976c80bc32fce8190dbea1980e5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Mon, 23 Oct 2023 12:07:53 +0200
Subject: [PATCH 28/40] feat: update codely coding standard (#367)
---
apps/backoffice/backend/config/bundles.php | 6 +-
apps/backoffice/backend/public/index.php | 14 +-
.../backend/src/BackofficeBackendKernel.php | 58 ++--
.../Courses/CoursesGetController.php | 66 ++--
.../HealthCheck/HealthCheckGetController.php | 16 +-
.../Controller/Metrics/MetricsController.php | 14 +-
apps/backoffice/frontend/config/bundles.php | 8 +-
apps/backoffice/frontend/public/index.php | 14 +-
.../frontend/src/BackofficeFrontendKernel.php | 58 ++--
.../ImportCoursesToElasticsearchCommand.php | 28 +-
.../Courses/CoursesGetWebController.php | 36 +--
.../Courses/CoursesPostWebController.php | 88 +++---
.../HealthCheck/HealthCheckGetController.php | 16 +-
.../Controller/Home/HomeGetWebController.php | 25 +-
.../Controller/Metrics/MetricsController.php | 14 +-
apps/bootstrap.php | 2 +-
apps/mooc/backend/config/bundles.php | 6 +-
apps/mooc/backend/public/index.php | 14 +-
.../MySql/ConsumeMySqlDomainEventsCommand.php | 76 ++---
.../RabbitMq/ConfigureRabbitMqCommand.php | 42 +--
.../ConsumeRabbitMqDomainEventsCommand.php | 76 ++---
...SupervisorRabbitMqConsumerFilesCommand.php | 94 +++---
.../Courses/CoursesPutController.php | 30 +-
.../CoursesCounterGetController.php | 32 +-
.../HealthCheck/HealthCheckGetController.php | 20 +-
.../Controller/Metrics/MetricsController.php | 14 +-
apps/mooc/backend/src/MoocBackendKernel.php | 58 ++--
composer.json | 2 +-
composer.lock | 23 +-
.../Application/Store/DomainEventStorer.php | 20 +-
.../Store/StoreDomainEventOnOccurred.php | 26 +-
.../Domain/AnalyticsDomainEvent.php | 12 +-
.../Domain/AnalyticsDomainEventBody.php | 10 +-
.../Domain/DomainEventsRepository.php | 2 +-
.../Authenticate/AuthenticateUserCommand.php | 18 +-
.../AuthenticateUserCommandHandler.php | 14 +-
.../Authenticate/UserAuthenticator.php | 30 +-
src/Backoffice/Auth/Domain/AuthPassword.php | 8 +-
src/Backoffice/Auth/Domain/AuthRepository.php | 2 +-
src/Backoffice/Auth/Domain/AuthUser.php | 18 +-
.../Auth/Domain/InvalidAuthCredentials.php | 8 +-
.../Auth/Domain/InvalidAuthUsername.php | 8 +-
.../Persistence/InMemoryAuthRepository.php | 18 +-
.../Application/BackofficeCourseResponse.php | 26 +-
.../Application/BackofficeCoursesResponse.php | 18 +-
.../Create/BackofficeCourseCreator.php | 10 +-
.../CreateBackofficeCourseOnCourseCreated.php | 18 +-
.../AllBackofficeCoursesSearcher.php | 26 +-
...SearchAllBackofficeCoursesQueryHandler.php | 10 +-
.../BackofficeCoursesByCriteriaSearcher.php | 34 +--
...SearchBackofficeCoursesByCriteriaQuery.php | 64 ++--
...ackofficeCoursesByCriteriaQueryHandler.php | 14 +-
.../Courses/Domain/BackofficeCourse.php | 60 ++--
.../Domain/BackofficeCourseRepository.php | 6 +-
...lasticsearchBackofficeCourseRepository.php | 48 +--
...nMemoryCacheBackofficeCourseRepository.php | 58 ++--
.../MySqlBackofficeCourseRepository.php | 26 +-
.../Application/Create/CourseCreator.php | 14 +-
.../Create/CreateCourseCommand.php | 26 +-
.../Create/CreateCourseCommandHandler.php | 16 +-
.../Courses/Application/Find/CourseFinder.php | 18 +-
.../Application/Update/CourseRenamer.php | 24 +-
src/Mooc/Courses/Domain/Course.php | 46 +--
.../Domain/CourseCreatedDomainEvent.php | 82 ++---
src/Mooc/Courses/Domain/CourseNotExist.php | 24 +-
src/Mooc/Courses/Domain/CourseRepository.php | 4 +-
.../Persistence/Doctrine/CourseIdType.php | 8 +-
.../Persistence/DoctrineCourseRepository.php | 16 +-
.../Persistence/FileCourseRepository.php | 30 +-
.../Application/Find/CoursesCounterFinder.php | 18 +-
.../Find/CoursesCounterResponse.php | 10 +-
.../Find/FindCoursesCounterQueryHandler.php | 10 +-
.../Increment/CoursesCounterIncrementer.php | 44 +--
...IncrementCoursesCounterOnCourseCreated.php | 20 +-
.../CoursesCounter/Domain/CoursesCounter.php | 98 +++---
.../CoursesCounterIncrementedDomainEvent.php | 52 ++--
.../Domain/CoursesCounterNotExist.php | 8 +-
.../Domain/CoursesCounterRepository.php | 4 +-
.../Domain/CoursesCounterTotal.php | 16 +-
.../Doctrine/CourseCounterIdType.php | 8 +-
.../Persistence/Doctrine/CourseIdsType.php | 42 +--
.../DoctrineCoursesCounterRepository.php | 16 +-
src/Mooc/Shared/Domain/Videos/VideoUrl.php | 22 +-
.../Doctrine/DbalTypesSearcher.php | 112 +++----
.../Doctrine/DoctrinePrefixesSearcher.php | 78 ++---
.../Doctrine/MoocEntityManagerFactory.php | 42 +--
.../Application/Create/CreateVideoCommand.php | 64 ++--
.../Create/CreateVideoCommandHandler.php | 20 +-
.../Application/Create/VideoCreator.php | 14 +-
.../Application/Find/FindVideoQuery.php | 10 +-
.../Find/FindVideoQueryHandler.php | 22 +-
.../Videos/Application/Find/VideoFinder.php | 18 +-
.../Videos/Application/Find/VideoResponse.php | 14 +-
.../Find/VideoResponseConverter.php | 20 +-
.../Application/Trim/TrimVideoCommand.php | 26 +-
.../Trim/TrimVideoCommandHandler.php | 14 +-
.../Videos/Application/Trim/VideoTrimmer.php | 2 +-
.../Application/Update/VideoTitleUpdater.php | 22 +-
src/Mooc/Videos/Domain/Video.php | 94 +++---
.../Videos/Domain/VideoCreatedDomainEvent.php | 80 ++---
src/Mooc/Videos/Domain/VideoFinder.php | 18 +-
src/Mooc/Videos/Domain/VideoNotFound.php | 24 +-
src/Mooc/Videos/Domain/VideoRepository.php | 6 +-
src/Mooc/Videos/Domain/VideoType.php | 4 +-
src/Mooc/Videos/Domain/Videos.php | 8 +-
.../Persistence/Doctrine/VideoIdType.php | 8 +-
.../Persistence/VideoRepositoryMySql.php | 50 +--
src/Shared/Domain/Aggregate/AggregateRoot.php | 22 +-
src/Shared/Domain/Assert.php | 26 +-
src/Shared/Domain/Bus/Command/CommandBus.php | 2 +-
src/Shared/Domain/Bus/Event/DomainEvent.php | 68 ++---
.../Bus/Event/DomainEventSubscriber.php | 2 +-
src/Shared/Domain/Bus/Event/EventBus.php | 2 +-
src/Shared/Domain/Bus/Query/QueryBus.php | 2 +-
src/Shared/Domain/Collection.php | 42 +--
src/Shared/Domain/Criteria/Criteria.php | 104 +++----
src/Shared/Domain/Criteria/Filter.php | 68 ++---
src/Shared/Domain/Criteria/FilterOperator.php | 20 +-
src/Shared/Domain/Criteria/Filters.php | 70 ++---
src/Shared/Domain/Criteria/Order.php | 78 ++---
src/Shared/Domain/Criteria/OrderType.php | 14 +-
src/Shared/Domain/DomainError.php | 12 +-
src/Shared/Domain/Logger.php | 6 +-
src/Shared/Domain/Monitoring.php | 10 +-
src/Shared/Domain/RandomNumberGenerator.php | 2 +-
src/Shared/Domain/SecondsInterval.php | 28 +-
src/Shared/Domain/Utils.php | 152 +++++-----
src/Shared/Domain/UuidGenerator.php | 2 +-
.../Domain/ValueObject/IntValueObject.php | 18 +-
.../Domain/ValueObject/StringValueObject.php | 10 +-
src/Shared/Domain/ValueObject/Uuid.php | 62 ++--
.../Bus/CallableFirstParameterExtractor.php | 122 ++++----
.../Bus/Command/CommandNotRegisteredError.php | 10 +-
.../Bus/Command/InMemorySymfonyCommandBus.php | 42 +--
.../Bus/Event/DomainEventJsonDeserializer.php | 26 +-
.../Bus/Event/DomainEventJsonSerializer.php | 28 +-
.../Bus/Event/DomainEventMapping.php | 56 ++--
.../Event/DomainEventSubscriberLocator.php | 66 ++--
.../InMemory/InMemorySymfonyEventBus.php | 40 +--
.../MySqlDoctrineDomainEventsConsumer.php | 80 ++---
.../Bus/Event/MySql/MySqlDoctrineEventBus.php | 58 ++--
.../Bus/Event/RabbitMq/RabbitMqConfigurer.php | 168 +++++-----
.../Bus/Event/RabbitMq/RabbitMqConnection.php | 108 +++----
.../RabbitMq/RabbitMqDomainEventsConsumer.php | 148 ++++-----
.../Bus/Event/RabbitMq/RabbitMqEventBus.php | 78 ++---
.../RabbitMqExchangeNameFormatter.php | 16 +-
.../RabbitMq/RabbitMqQueueNameFormatter.php | 60 ++--
.../WithPrometheusMonitoringEventBus.php | 38 +--
.../Bus/Query/InMemorySymfonyQueryBus.php | 40 ++-
.../Bus/Query/QueryNotRegisteredError.php | 10 +-
.../Doctrine/DatabaseConnections.php | 32 +-
.../Dbal/DbalCustomTypesRegistrar.php | 30 +-
.../Doctrine/Dbal/DoctrineCustomType.php | 2 +-
.../Doctrine/DoctrineEntityManagerFactory.php | 124 ++++----
.../Elasticsearch/ElasticsearchClient.php | 38 +--
.../ElasticsearchClientFactory.php | 92 +++---
.../Infrastructure/Logger/MonologLogger.php | 26 +-
.../Monitoring/PrometheusMonitor.php | 18 +-
.../Doctrine/DoctrineCriteriaConverter.php | 164 +++++-----
.../Doctrine/DoctrineRepository.php | 64 ++--
.../Persistence/Doctrine/UuidType.php | 48 +--
.../Elasticsearch/ElasticQueryGenerator.php | 80 ++---
.../ElasticsearchCriteriaConverter.php | 80 ++---
.../Elasticsearch/ElasticsearchRepository.php | 68 ++---
.../PhpRandomNumberGenerator.php | 8 +-
.../Infrastructure/RamseyUuidGenerator.php | 8 +-
.../Symfony/AddJsonBodyToRequestListener.php | 48 +--
.../Infrastructure/Symfony/ApiController.php | 44 +--
.../Symfony/ApiExceptionListener.php | 64 ++--
.../ApiExceptionsHttpStatusCodeMapping.php | 42 +--
.../Symfony/BasicHttpAuthMiddleware.php | 86 +++---
.../Infrastructure/Symfony/FlashSession.php | 60 ++--
.../Infrastructure/Symfony/WebController.php | 92 +++---
.../AuthenticateUserCommandHandlerTest.php | 64 ++--
.../AuthenticateUserCommandMother.php | 18 +-
.../Auth/AuthModuleUnitTestCase.php | 26 +-
.../Auth/Domain/AuthPasswordMother.php | 8 +-
.../Backoffice/Auth/Domain/AuthUserMother.php | 22 +-
.../Auth/Domain/AuthUsernameMother.php | 8 +-
...iceCoursesModuleInfrastructureTestCase.php | 16 +-
.../Domain/BackofficeCourseCriteriaMother.php | 24 +-
.../Courses/Domain/BackofficeCourseMother.php | 16 +-
...icsearchBackofficeCourseRepositoryTest.php | 87 +++---
.../MySqlBackofficeCourseRepositoryTest.php | 80 ++---
...ackofficeContextInfrastructureTestCase.php | 26 +-
.../PhpUnit/BackofficeEnvironmentArranger.php | 14 +-
.../Create/CreateCourseCommandHandlerTest.php | 32 +-
.../Create/CreateCourseCommandMother.php | 22 +-
.../Application/Update/CourseRenamerTest.php | 50 +--
.../CoursesModuleInfrastructureTestCase.php | 8 +-
.../Courses/CoursesModuleUnitTestCase.php | 42 +--
.../Domain/CourseCreatedDomainEventMother.php | 30 +-
.../Courses/Domain/CourseDurationMother.php | 24 +-
tests/Mooc/Courses/Domain/CourseIdMother.php | 8 +-
tests/Mooc/Courses/Domain/CourseMother.php | 38 +--
.../Mooc/Courses/Domain/CourseNameMother.php | 8 +-
.../Persistence/CourseRepositoryTest.php | 36 +--
.../Find/CoursesCounterResponseMother.php | 8 +-
.../FindCoursesCounterQueryHandlerTest.php | 44 +--
...ementCoursesCounterOnCourseCreatedTest.php | 86 +++---
.../CoursesCounterModuleUnitTestCase.php | 40 +--
.../Domain/CoursesCounterIdMother.php | 8 +-
...sesCounterIncrementedDomainEventMother.php | 26 +-
.../Domain/CoursesCounterMother.php | 48 ++-
.../Domain/CoursesCounterTotalMother.php | 24 +-
tests/Mooc/MoocArchitectureTest.php | 80 ++---
.../MoocContextInfrastructureTestCase.php | 32 +-
.../PhpUnit/MoocEnvironmentArranger.php | 12 +-
.../Shared/Domain/Criteria/CriteriaMother.php | 24 +-
.../Domain/Criteria/FilterFieldMother.php | 8 +-
tests/Shared/Domain/Criteria/FilterMother.php | 54 ++--
.../Domain/Criteria/FilterValueMother.php | 8 +-
.../Shared/Domain/Criteria/FiltersMother.php | 26 +-
.../Shared/Domain/Criteria/OrderByMother.php | 8 +-
tests/Shared/Domain/Criteria/OrderMother.php | 24 +-
tests/Shared/Domain/DuplicatorMother.php | 30 +-
tests/Shared/Domain/IntegerMother.php | 24 +-
tests/Shared/Domain/MotherCreator.php | 10 +-
tests/Shared/Domain/RandomElementPicker.php | 8 +-
tests/Shared/Domain/Repeater.php | 16 +-
tests/Shared/Domain/TestUtils.php | 28 +-
tests/Shared/Domain/UuidMother.php | 8 +-
tests/Shared/Domain/WordMother.php | 8 +-
.../Infrastructure/ArchitectureTest.php | 34 +--
.../Arranger/EnvironmentArranger.php | 4 +-
.../Infrastructure/Behat/ApiContext.php | 184 +++++------
.../Behat/ApplicationFeatureContext.php | 38 +--
.../Command/InMemorySymfonyCommandBusTest.php | 78 ++---
.../Event/MySql/MySqlDoctrineEventBusTest.php | 67 ++--
.../Event/RabbitMq/RabbitMqEventBusTest.php | 287 +++++++++---------
.../TestAllWorksOnRabbitMqEventsPublished.php | 10 +-
.../Infrastructure/Bus/Query/FakeResponse.php | 10 +-
.../Bus/Query/InMemorySymfonyQueryBusTest.php | 78 ++---
.../ConstantRandomNumberGenerator.php | 8 +-
.../Doctrine/MySqlDatabaseCleaner.php | 40 +--
.../Elastic/ElasticDatabaseCleaner.php | 24 +-
.../Shared/Infrastructure/Mink/MinkHelper.php | 150 +++++----
.../Mink/MinkSessionRequestHelper.php | 26 +-
.../Mockery/CodelyTvMatcherIsSimilar.php | 28 +-
.../AggregateRootArraySimilarComparator.php | 62 ++--
.../AggregateRootSimilarComparator.php | 118 +++----
.../Comparator/DateTimeSimilarComparator.php | 70 ++---
.../DateTimeStringSimilarComparator.php | 92 +++---
.../DomainEventArraySimilarComparator.php | 62 ++--
.../DomainEventSimilarComparator.php | 120 ++++----
.../CodelyTvConstraintIsSimilar.php | 78 ++---
.../PhpUnit/InfrastructureTestCase.php | 80 ++---
.../Infrastructure/PhpUnit/UnitTestCase.php | 164 +++++-----
tests/Shared/SharedArchitectureTest.php | 80 ++---
249 files changed, 4856 insertions(+), 4877 deletions(-)
diff --git a/apps/backoffice/backend/config/bundles.php b/apps/backoffice/backend/config/bundles.php
index 8455bba43..15c297c9f 100644
--- a/apps/backoffice/backend/config/bundles.php
+++ b/apps/backoffice/backend/config/bundles.php
@@ -3,7 +3,7 @@
declare(strict_types=1);
return [
- Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
- FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle::class => ['test' => true],
- // WouterJ\EloquentBundle\WouterJEloquentBundle::class => ['test' => 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 56a52ea14..45fd7eab5 100644
--- a/apps/backoffice/backend/public/index.php
+++ b/apps/backoffice/backend/public/index.php
@@ -9,20 +9,20 @@
require dirname(__DIR__) . '/../../bootstrap.php';
if ($_SERVER['APP_DEBUG']) {
- umask(0000);
+ umask(0000);
- Debug::enable();
+ Debug::enable();
}
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
- Request::setTrustedProxies(
- explode(',', $trustedProxies),
- Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
- );
+ Request::setTrustedProxies(
+ explode(',', $trustedProxies),
+ Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
+ );
}
if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
- Request::setTrustedHosts([$trustedHosts]);
+ Request::setTrustedHosts([$trustedHosts]);
}
$kernel = new BackofficeBackendKernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
diff --git a/apps/backoffice/backend/src/BackofficeBackendKernel.php b/apps/backoffice/backend/src/BackofficeBackendKernel.php
index 9e25fc2cc..793ede8c0 100644
--- a/apps/backoffice/backend/src/BackofficeBackendKernel.php
+++ b/apps/backoffice/backend/src/BackofficeBackendKernel.php
@@ -14,33 +14,33 @@
class BackofficeBackendKernel extends Kernel
{
- use MicroKernelTrait;
-
- private const CONFIG_EXTS = '.{xml,yaml}';
-
- public function registerBundles(): iterable
- {
- $contents = require $this->getProjectDir() . '/config/bundles.php';
- foreach ($contents as $class => $envs) {
- if ($envs[$this->environment] ?? $envs['all'] ?? false) {
- yield new $class();
- }
- }
- }
-
- public function getProjectDir(): string
- {
- return dirname(__DIR__);
- }
-
- protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
- {
- $container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
- $container->setParameter('container.dumper.inline_class_loader', true);
- $confDir = $this->getProjectDir() . '/config';
-
- $loader->load($confDir . '/services' . self::CONFIG_EXTS, 'glob');
- $loader->load($confDir . '/services_' . $this->environment . self::CONFIG_EXTS, 'glob');
- $loader->load($confDir . '/services/*' . self::CONFIG_EXTS, 'glob');
- }
+ use MicroKernelTrait;
+
+ private const CONFIG_EXTS = '.{xml,yaml}';
+
+ public function registerBundles(): iterable
+ {
+ $contents = require $this->getProjectDir() . '/config/bundles.php';
+ foreach ($contents as $class => $envs) {
+ if ($envs[$this->environment] ?? $envs['all'] ?? false) {
+ yield new $class();
+ }
+ }
+ }
+
+ public function getProjectDir(): string
+ {
+ return dirname(__DIR__);
+ }
+
+ protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
+ {
+ $container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
+ $container->setParameter('container.dumper.inline_class_loader', true);
+ $confDir = $this->getProjectDir() . '/config';
+
+ $loader->load($confDir . '/services' . self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir . '/services_' . $this->environment . self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir . '/services/*' . self::CONFIG_EXTS, 'glob');
+ }
}
diff --git a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
index 11e060683..4fcf89a26 100644
--- a/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
+++ b/apps/backoffice/backend/src/Controller/Courses/CoursesGetController.php
@@ -15,37 +15,37 @@
final readonly class CoursesGetController
{
- 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');
- $offset = $request->query->get('offset');
-
- /** @var BackofficeCoursesResponse $response */
- $response = $this->queryBus->ask(
- new SearchBackofficeCoursesByCriteriaQuery(
- (array) $request->query->get('filters'),
- $orderBy,
- $order,
- $limit === null ? null : (int) $limit,
- $offset === null ? null : (int) $offset
- )
- );
-
- return new JsonResponse(
- map(
- fn (BackofficeCourseResponse $course): array => [
- 'id' => $course->id(),
- 'name' => $course->name(),
- 'duration' => $course->duration(),
- ],
- $response->courses()
- ),
- 200,
- ['Access-Control-Allow-Origin' => '*']
- );
- }
+ 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');
+ $offset = $request->query->get('offset');
+
+ /** @var BackofficeCoursesResponse $response */
+ $response = $this->queryBus->ask(
+ new SearchBackofficeCoursesByCriteriaQuery(
+ (array) $request->query->get('filters'),
+ $orderBy,
+ $order,
+ $limit === null ? null : (int) $limit,
+ $offset === null ? null : (int) $offset
+ )
+ );
+
+ return new JsonResponse(
+ map(
+ fn (BackofficeCourseResponse $course): array => [
+ 'id' => $course->id(),
+ 'name' => $course->name(),
+ 'duration' => $course->duration(),
+ ],
+ $response->courses()
+ ),
+ 200,
+ ['Access-Control-Allow-Origin' => '*']
+ );
+ }
}
diff --git a/apps/backoffice/backend/src/Controller/HealthCheck/HealthCheckGetController.php b/apps/backoffice/backend/src/Controller/HealthCheck/HealthCheckGetController.php
index af32d30ea..fe2256009 100644
--- a/apps/backoffice/backend/src/Controller/HealthCheck/HealthCheckGetController.php
+++ b/apps/backoffice/backend/src/Controller/HealthCheck/HealthCheckGetController.php
@@ -9,12 +9,12 @@
final class HealthCheckGetController
{
- public function __invoke(Request $request): JsonResponse
- {
- return new JsonResponse(
- [
- 'backoffice-backend' => 'ok',
- ]
- );
- }
+ public function __invoke(Request $request): JsonResponse
+ {
+ return new JsonResponse(
+ [
+ 'backoffice-backend' => 'ok',
+ ]
+ );
+ }
}
diff --git a/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php b/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php
index 21a639d9f..e0ae59059 100644
--- a/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php
+++ b/apps/backoffice/backend/src/Controller/Metrics/MetricsController.php
@@ -11,13 +11,13 @@
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());
+ public function __invoke(Request $request): Response
+ {
+ $renderer = new RenderTextFormat();
+ $result = $renderer->render($this->monitor->registry()->getMetricFamilySamples());
- return new Response($result, 200, ['Content-Type' => RenderTextFormat::MIME_TYPE]);
- }
+ 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 0a87a7689..ef8009558 100644
--- a/apps/backoffice/frontend/config/bundles.php
+++ b/apps/backoffice/frontend/config/bundles.php
@@ -3,8 +3,8 @@
declare(strict_types=1);
return [
- Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
- FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle::class => ['test' => true],
- Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
- // WouterJ\EloquentBundle\WouterJEloquentBundle::class => ['test' => true]
+ Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
+ FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle::class => ['test' => 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 2b5d9b2d3..6dd7c188e 100644
--- a/apps/backoffice/frontend/public/index.php
+++ b/apps/backoffice/frontend/public/index.php
@@ -9,20 +9,20 @@
require dirname(__DIR__) . '/../../bootstrap.php';
if ($_SERVER['APP_DEBUG']) {
- umask(0000);
+ umask(0000);
- Debug::enable();
+ Debug::enable();
}
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
- Request::setTrustedProxies(
- explode(',', $trustedProxies),
- Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
- );
+ Request::setTrustedProxies(
+ explode(',', $trustedProxies),
+ Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
+ );
}
if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
- Request::setTrustedHosts([$trustedHosts]);
+ Request::setTrustedHosts([$trustedHosts]);
}
$kernel = new BackofficeFrontendKernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
diff --git a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
index 650c7d02b..28852a38a 100644
--- a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
+++ b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
@@ -14,33 +14,33 @@
class BackofficeFrontendKernel extends Kernel
{
- use MicroKernelTrait;
-
- private const CONFIG_EXTS = '.{xml,yaml}';
-
- public function registerBundles(): iterable
- {
- $contents = require $this->getProjectDir() . '/config/bundles.php';
- foreach ($contents as $class => $envs) {
- if ($envs[$this->environment] ?? $envs['all'] ?? false) {
- yield new $class();
- }
- }
- }
-
- public function getProjectDir(): string
- {
- return dirname(__DIR__);
- }
-
- protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
- {
- $container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
- $container->setParameter('container.dumper.inline_class_loader', true);
- $confDir = $this->getProjectDir() . '/config';
-
- $loader->load($confDir . '/services' . self::CONFIG_EXTS, 'glob');
- $loader->load($confDir . '/services_' . $this->environment . self::CONFIG_EXTS, 'glob');
- $loader->load($confDir . '/services/*' . self::CONFIG_EXTS, 'glob');
- }
+ use MicroKernelTrait;
+
+ private const CONFIG_EXTS = '.{xml,yaml}';
+
+ public function registerBundles(): iterable
+ {
+ $contents = require $this->getProjectDir() . '/config/bundles.php';
+ foreach ($contents as $class => $envs) {
+ if ($envs[$this->environment] ?? $envs['all'] ?? false) {
+ yield new $class();
+ }
+ }
+ }
+
+ public function getProjectDir(): string
+ {
+ return dirname(__DIR__);
+ }
+
+ protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
+ {
+ $container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
+ $container->setParameter('container.dumper.inline_class_loader', true);
+ $confDir = $this->getProjectDir() . '/config';
+
+ $loader->load($confDir . '/services' . self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir . '/services_' . $this->environment . self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir . '/services/*' . self::CONFIG_EXTS, 'glob');
+ }
}
diff --git a/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php b/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php
index 62948247d..c27dd2396 100644
--- a/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php
+++ b/apps/backoffice/frontend/src/Command/ImportCoursesToElasticsearchCommand.php
@@ -12,21 +12,21 @@
final class ImportCoursesToElasticsearchCommand extends Command
{
- public function __construct(
- private readonly MySqlBackofficeCourseRepository $mySqlRepository,
- private readonly ElasticsearchBackofficeCourseRepository $elasticRepository
- ) {
- parent::__construct();
- }
+ public function __construct(
+ private readonly MySqlBackofficeCourseRepository $mySqlRepository,
+ private readonly ElasticsearchBackofficeCourseRepository $elasticRepository
+ ) {
+ parent::__construct();
+ }
- public function execute(InputInterface $input, OutputInterface $output): int
- {
- $courses = $this->mySqlRepository->searchAll();
+ public function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $courses = $this->mySqlRepository->searchAll();
- foreach ($courses as $course) {
- $this->elasticRepository->save($course);
- }
+ foreach ($courses as $course) {
+ $this->elasticRepository->save($course);
+ }
- return 0;
- }
+ return 0;
+ }
}
diff --git a/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php b/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php
index 6bd5b5d78..a9604d1b2 100644
--- a/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php
+++ b/apps/backoffice/frontend/src/Controller/Courses/CoursesGetWebController.php
@@ -13,24 +13,24 @@
final class CoursesGetWebController extends WebController
{
- public function __invoke(Request $request): Response
- {
- /** @var CoursesCounterResponse $coursesCounterResponse */
- $coursesCounterResponse = $this->ask(new FindCoursesCounterQuery());
+ public function __invoke(Request $request): Response
+ {
+ /** @var CoursesCounterResponse $coursesCounterResponse */
+ $coursesCounterResponse = $this->ask(new FindCoursesCounterQuery());
- return $this->render(
- 'pages/courses/courses.html.twig',
- [
- 'title' => 'Courses',
- 'description' => 'Courses CodelyTV - Backoffice',
- 'courses_counter' => $coursesCounterResponse->total(),
- 'new_course_id' => SimpleUuid::random()->value(),
- ]
- );
- }
+ return $this->render(
+ 'pages/courses/courses.html.twig',
+ [
+ 'title' => 'Courses',
+ 'description' => 'Courses CodelyTV - Backoffice',
+ 'courses_counter' => $coursesCounterResponse->total(),
+ 'new_course_id' => SimpleUuid::random()->value(),
+ ]
+ );
+ }
- protected function exceptions(): array
- {
- return [];
- }
+ protected function exceptions(): array
+ {
+ return [];
+ }
}
diff --git a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php
index 22e168f8d..625d2a1d0 100644
--- a/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php
+++ b/apps/backoffice/frontend/src/Controller/Courses/CoursesPostWebController.php
@@ -14,48 +14,48 @@
final class CoursesPostWebController extends WebController
{
- public function __invoke(Request $request): RedirectResponse
- {
- $validationErrors = $this->validateRequest($request);
-
- return $validationErrors->count()
- ? $this->redirectWithErrors('courses_get', $validationErrors, $request)
- : $this->createCourse($request);
- }
-
- protected function exceptions(): array
- {
- return [];
- }
-
- private function validateRequest(Request $request): ConstraintViolationListInterface
- {
- $constraint = new Assert\Collection(
- [
- '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])],
- ]
- );
-
- $input = $request->request->all();
-
- return Validation::createValidator()->validate($input, $constraint);
- }
-
- private function createCourse(Request $request): RedirectResponse
- {
- $this->dispatch(
- new CreateCourseCommand(
- (string) $request->request->get('id'),
- (string) $request->request->get('name'),
- (string) $request->request->get('duration')
- )
- );
-
- return $this->redirectWithMessage(
- 'courses_get',
- sprintf('Feliciades, el curso %s ha sido creado!', $request->request->getAlpha('name'))
- );
- }
+ public function __invoke(Request $request): RedirectResponse
+ {
+ $validationErrors = $this->validateRequest($request);
+
+ return $validationErrors->count()
+ ? $this->redirectWithErrors('courses_get', $validationErrors, $request)
+ : $this->createCourse($request);
+ }
+
+ protected function exceptions(): array
+ {
+ return [];
+ }
+
+ private function validateRequest(Request $request): ConstraintViolationListInterface
+ {
+ $constraint = new Assert\Collection(
+ [
+ '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])],
+ ]
+ );
+
+ $input = $request->request->all();
+
+ return Validation::createValidator()->validate($input, $constraint);
+ }
+
+ private function createCourse(Request $request): RedirectResponse
+ {
+ $this->dispatch(
+ new CreateCourseCommand(
+ (string) $request->request->get('id'),
+ (string) $request->request->get('name'),
+ (string) $request->request->get('duration')
+ )
+ );
+
+ return $this->redirectWithMessage(
+ 'courses_get',
+ sprintf('Feliciades, el curso %s ha sido creado!', $request->request->getAlpha('name'))
+ );
+ }
}
diff --git a/apps/backoffice/frontend/src/Controller/HealthCheck/HealthCheckGetController.php b/apps/backoffice/frontend/src/Controller/HealthCheck/HealthCheckGetController.php
index 19c48acb4..a38a47d39 100644
--- a/apps/backoffice/frontend/src/Controller/HealthCheck/HealthCheckGetController.php
+++ b/apps/backoffice/frontend/src/Controller/HealthCheck/HealthCheckGetController.php
@@ -9,12 +9,12 @@
final class HealthCheckGetController
{
- public function __invoke(Request $request): JsonResponse
- {
- return new JsonResponse(
- [
- 'backoffice-frontend' => 'ok',
- ]
- );
- }
+ public function __invoke(Request $request): JsonResponse
+ {
+ return new JsonResponse(
+ [
+ 'backoffice-frontend' => 'ok',
+ ]
+ );
+ }
}
diff --git a/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php b/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php
index 757747ac0..b318f388a 100644
--- a/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php
+++ b/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php
@@ -10,19 +10,16 @@
final class HomeGetWebController extends WebController
{
- public function __invoke(Request $request): Response
- {
- return $this->render(
- 'pages/home.html.twig',
- [
- 'title' => 'Welcome',
- 'description' => 'CodelyTV - Backoffice',
- ]
- );
- }
+ public function __invoke(Request $request): Response
+ {
+ return $this->render('pages/home.html.twig', [
+ 'title' => 'Welcome',
+ 'description' => 'CodelyTV - Backoffice',
+ ]);
+ }
- protected function exceptions(): array
- {
- return [];
- }
+ protected function exceptions(): array
+ {
+ return [];
+ }
}
diff --git a/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php b/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php
index 1a853490c..a10a699ea 100644
--- a/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php
+++ b/apps/backoffice/frontend/src/Controller/Metrics/MetricsController.php
@@ -11,13 +11,13 @@
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());
+ public function __invoke(Request $request): Response
+ {
+ $renderer = new RenderTextFormat();
+ $result = $renderer->render($this->monitor->registry()->getMetricFamilySamples());
- return new Response($result, 200, ['Content-Type' => RenderTextFormat::MIME_TYPE]);
- }
+ return new Response($result, 200, ['Content-Type' => RenderTextFormat::MIME_TYPE]);
+ }
}
diff --git a/apps/bootstrap.php b/apps/bootstrap.php
index 6d66dea9d..8edbfc3b1 100644
--- a/apps/bootstrap.php
+++ b/apps/bootstrap.php
@@ -14,4 +14,4 @@
$_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';
+ (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 8455bba43..15c297c9f 100644
--- a/apps/mooc/backend/config/bundles.php
+++ b/apps/mooc/backend/config/bundles.php
@@ -3,7 +3,7 @@
declare(strict_types=1);
return [
- Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
- FriendsOfBehat\SymfonyExtension\Bundle\FriendsOfBehatSymfonyExtensionBundle::class => ['test' => true],
- // WouterJ\EloquentBundle\WouterJEloquentBundle::class => ['test' => 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 4269b3810..b8655fe09 100644
--- a/apps/mooc/backend/public/index.php
+++ b/apps/mooc/backend/public/index.php
@@ -9,20 +9,20 @@
require dirname(__DIR__) . '/../../bootstrap.php';
if ($_SERVER['APP_DEBUG']) {
- umask(0000);
+ umask(0000);
- Debug::enable();
+ Debug::enable();
}
if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? $_ENV['TRUSTED_PROXIES'] ?? false) {
- Request::setTrustedProxies(
- explode(',', $trustedProxies),
- Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
- );
+ Request::setTrustedProxies(
+ explode(',', $trustedProxies),
+ Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO
+ );
}
if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? $_ENV['TRUSTED_HOSTS'] ?? false) {
- Request::setTrustedHosts([$trustedHosts]);
+ Request::setTrustedHosts([$trustedHosts]);
}
$kernel = new MoocBackendKernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
diff --git a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
index 5ce3765b6..359264a69 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
@@ -17,42 +17,42 @@
final class ConsumeMySqlDomainEventsCommand extends Command
{
- protected static $defaultName = 'codelytv:domain-events:mysql:consume';
-
- public function __construct(
- private readonly MySqlDoctrineDomainEventsConsumer $consumer,
- private readonly DatabaseConnections $connections,
- private readonly DomainEventSubscriberLocator $subscriberLocator
- ) {
- parent::__construct();
- }
-
- protected function configure(): void
- {
- $this
- ->setDescription('Consume domain events from MySql')
- ->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of events to process');
- }
-
- protected function execute(InputInterface $input, OutputInterface $output): int
- {
- $quantityEventsToProcess = (int) $input->getArgument('quantity');
-
- $consumer = pipe($this->consumer(), fn () => $this->connections->clear());
-
- $this->consumer->consume($consumer, $quantityEventsToProcess);
-
- return 0;
- }
-
- private function consumer(): callable
- {
- return function (DomainEvent $domainEvent): void {
- $subscribers = $this->subscriberLocator->allSubscribedTo($domainEvent::class);
-
- foreach ($subscribers as $subscriber) {
- $subscriber($domainEvent);
- }
- };
- }
+ protected static $defaultName = 'codelytv:domain-events:mysql:consume';
+
+ public function __construct(
+ private readonly MySqlDoctrineDomainEventsConsumer $consumer,
+ private readonly DatabaseConnections $connections,
+ private readonly DomainEventSubscriberLocator $subscriberLocator
+ ) {
+ parent::__construct();
+ }
+
+ protected function configure(): void
+ {
+ $this
+ ->setDescription('Consume domain events from MySql')
+ ->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of events to process');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $quantityEventsToProcess = (int) $input->getArgument('quantity');
+
+ $consumer = pipe($this->consumer(), fn () => $this->connections->clear());
+
+ $this->consumer->consume($consumer, $quantityEventsToProcess);
+
+ return 0;
+ }
+
+ private function consumer(): callable
+ {
+ return function (DomainEvent $domainEvent): void {
+ $subscribers = $this->subscriberLocator->allSubscribedTo($domainEvent::class);
+
+ foreach ($subscribers as $subscriber) {
+ $subscriber($domainEvent);
+ }
+ };
+ }
}
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php
index 876cda3b3..e42c35ba6 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php
@@ -12,25 +12,25 @@
final class ConfigureRabbitMqCommand extends Command
{
- protected static $defaultName = 'codelytv:domain-events:rabbitmq:configure';
-
- public function __construct(
- private readonly RabbitMqConfigurer $configurer,
- private readonly string $exchangeName,
- private readonly Traversable $subscribers
- ) {
- parent::__construct();
- }
-
- protected function configure(): void
- {
- $this->setDescription('Configure the RabbitMQ to allow publish & consume domain events');
- }
-
- protected function execute(InputInterface $input, OutputInterface $output): int
- {
- $this->configurer->configure($this->exchangeName, ...iterator_to_array($this->subscribers));
-
- return 0;
- }
+ protected static $defaultName = 'codelytv:domain-events:rabbitmq:configure';
+
+ public function __construct(
+ private readonly RabbitMqConfigurer $configurer,
+ private readonly string $exchangeName,
+ private readonly Traversable $subscribers
+ ) {
+ parent::__construct();
+ }
+
+ protected function configure(): void
+ {
+ $this->setDescription('Configure the RabbitMQ to allow publish & consume domain events');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $this->configurer->configure($this->exchangeName, ...iterator_to_array($this->subscribers));
+
+ return 0;
+ }
}
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
index 802f79b22..856f40b04 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
@@ -16,42 +16,42 @@
final class ConsumeRabbitMqDomainEventsCommand extends Command
{
- protected static $defaultName = 'codelytv:domain-events:rabbitmq:consume';
-
- public function __construct(
- private readonly RabbitMqDomainEventsConsumer $consumer,
- private readonly DatabaseConnections $connections,
- private readonly DomainEventSubscriberLocator $locator
- ) {
- parent::__construct();
- }
-
- protected function configure(): void
- {
- $this
- ->setDescription('Consume domain events from the RabbitMQ')
- ->addArgument('queue', InputArgument::REQUIRED, 'Queue name')
- ->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of events to process');
- }
-
- protected function execute(InputInterface $input, OutputInterface $output): int
- {
- $queueName = $input->getArgument('queue');
- $eventsToProcess = (int) $input->getArgument('quantity');
-
- repeat($this->consumer($queueName), $eventsToProcess);
-
- return 0;
- }
-
- private function consumer(string $queueName): callable
- {
- return function () use ($queueName): void {
- $subscriber = $this->locator->withRabbitMqQueueNamed($queueName);
-
- $this->consumer->consume($subscriber, $queueName);
-
- $this->connections->clear();
- };
- }
+ protected static $defaultName = 'codelytv:domain-events:rabbitmq:consume';
+
+ public function __construct(
+ private readonly RabbitMqDomainEventsConsumer $consumer,
+ private readonly DatabaseConnections $connections,
+ private readonly DomainEventSubscriberLocator $locator
+ ) {
+ parent::__construct();
+ }
+
+ protected function configure(): void
+ {
+ $this
+ ->setDescription('Consume domain events from the RabbitMQ')
+ ->addArgument('queue', InputArgument::REQUIRED, 'Queue name')
+ ->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of events to process');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $queueName = $input->getArgument('queue');
+ $eventsToProcess = (int) $input->getArgument('quantity');
+
+ repeat($this->consumer($queueName), $eventsToProcess);
+
+ return 0;
+ }
+
+ private function consumer(string $queueName): callable
+ {
+ return function () use ($queueName): void {
+ $subscriber = $this->locator->withRabbitMqQueueNamed($queueName);
+
+ $this->consumer->consume($subscriber, $queueName);
+
+ $this->connections->clear();
+ };
+ }
}
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
index 9bd14493a..f806d57da 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
@@ -16,57 +16,57 @@
final class GenerateSupervisorRabbitMqConsumerFilesCommand extends Command
{
- private const EVENTS_TO_PROCESS_AT_TIME = 200;
- private const NUMBERS_OF_PROCESSES_PER_SUBSCRIBER = 1;
- private const SUPERVISOR_PATH = __DIR__ . '/../../../../build/supervisor';
- protected static $defaultName = 'codelytv:domain-events:rabbitmq:generate-supervisor-files';
+ private const EVENTS_TO_PROCESS_AT_TIME = 200;
+ private const NUMBERS_OF_PROCESSES_PER_SUBSCRIBER = 1;
+ private const SUPERVISOR_PATH = __DIR__ . '/../../../../build/supervisor';
+ protected static $defaultName = 'codelytv:domain-events:rabbitmq:generate-supervisor-files';
- public function __construct(private readonly DomainEventSubscriberLocator $locator)
- {
- parent::__construct();
- }
+ public function __construct(private readonly DomainEventSubscriberLocator $locator)
+ {
+ parent::__construct();
+ }
- protected function configure(): void
- {
- $this
- ->setDescription('Generate the supervisor configuration for every RabbitMQ subscriber')
- ->addArgument('command-path', InputArgument::OPTIONAL, 'Path on this is gonna be deployed', '/var/www');
- }
+ protected function configure(): void
+ {
+ $this
+ ->setDescription('Generate the supervisor configuration for every RabbitMQ subscriber')
+ ->addArgument('command-path', InputArgument::OPTIONAL, 'Path on this is gonna be deployed', '/var/www');
+ }
- protected function execute(InputInterface $input, OutputInterface $output): int
- {
- $path = $input->getArgument('command-path');
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $path = $input->getArgument('command-path');
- each($this->configCreator($path), $this->locator->all());
+ each($this->configCreator($path), $this->locator->all());
- return 0;
- }
+ return 0;
+ }
- private function configCreator(string $path): callable
- {
- return function (DomainEventSubscriber $subscriber) use ($path): void {
- $queueName = RabbitMqQueueNameFormatter::format($subscriber);
- $subscriberName = RabbitMqQueueNameFormatter::shortFormat($subscriber);
+ private function configCreator(string $path): callable
+ {
+ return function (DomainEventSubscriber $subscriber) use ($path): void {
+ $queueName = RabbitMqQueueNameFormatter::format($subscriber);
+ $subscriberName = RabbitMqQueueNameFormatter::shortFormat($subscriber);
- $fileContent = str_replace(
- ['{subscriber_name}', '{queue_name}', '{path}', '{processes}', '{events_to_process}', ],
- [
- $subscriberName,
- $queueName,
- $path,
- self::NUMBERS_OF_PROCESSES_PER_SUBSCRIBER,
- self::EVENTS_TO_PROCESS_AT_TIME,
- ],
- $this->template()
- );
+ $fileContent = str_replace(
+ ['{subscriber_name}', '{queue_name}', '{path}', '{processes}', '{events_to_process}', ],
+ [
+ $subscriberName,
+ $queueName,
+ $path,
+ self::NUMBERS_OF_PROCESSES_PER_SUBSCRIBER,
+ self::EVENTS_TO_PROCESS_AT_TIME,
+ ],
+ $this->template()
+ );
- file_put_contents($this->fileName($subscriberName), $fileContent);
- };
- }
+ file_put_contents($this->fileName($subscriberName), $fileContent);
+ };
+ }
- private function template(): string
- {
- return <<dispatch(
- new CreateCourseCommand(
- $id,
- (string) $request->request->get('name'),
- (string) $request->request->get('duration')
- )
- );
+ public function __invoke(string $id, Request $request): Response
+ {
+ $this->dispatch(
+ new CreateCourseCommand(
+ $id,
+ (string) $request->request->get('name'),
+ (string) $request->request->get('duration')
+ )
+ );
- return new Response('', Response::HTTP_CREATED);
- }
+ return new Response('', Response::HTTP_CREATED);
+ }
- protected function exceptions(): array
- {
- return [];
- }
+ protected function exceptions(): array
+ {
+ return [];
+ }
}
diff --git a/apps/mooc/backend/src/Controller/CoursesCounter/CoursesCounterGetController.php b/apps/mooc/backend/src/Controller/CoursesCounter/CoursesCounterGetController.php
index 22df95571..0fb94b6ff 100644
--- a/apps/mooc/backend/src/Controller/CoursesCounter/CoursesCounterGetController.php
+++ b/apps/mooc/backend/src/Controller/CoursesCounter/CoursesCounterGetController.php
@@ -13,22 +13,22 @@
final class CoursesCounterGetController extends ApiController
{
- public function __invoke(): JsonResponse
- {
- /** @var CoursesCounterResponse $response */
- $response = $this->ask(new FindCoursesCounterQuery());
+ public function __invoke(): JsonResponse
+ {
+ /** @var CoursesCounterResponse $response */
+ $response = $this->ask(new FindCoursesCounterQuery());
- return new JsonResponse(
- [
- 'total' => $response->total(),
- ]
- );
- }
+ return new JsonResponse(
+ [
+ 'total' => $response->total(),
+ ]
+ );
+ }
- protected function exceptions(): array
- {
- return [
- CoursesCounterNotExist::class => Response::HTTP_NOT_FOUND,
- ];
- }
+ protected function exceptions(): array
+ {
+ return [
+ CoursesCounterNotExist::class => Response::HTTP_NOT_FOUND,
+ ];
+ }
}
diff --git a/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php b/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php
index d500d03bb..1c20feae2 100644
--- a/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php
+++ b/apps/mooc/backend/src/Controller/HealthCheck/HealthCheckGetController.php
@@ -10,15 +10,15 @@
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(),
- ]
- );
- }
+ public function __invoke(Request $request): JsonResponse
+ {
+ return new JsonResponse(
+ [
+ 'mooc-backend' => 'ok',
+ '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 18619a02c..9db1cebc2 100644
--- a/apps/mooc/backend/src/Controller/Metrics/MetricsController.php
+++ b/apps/mooc/backend/src/Controller/Metrics/MetricsController.php
@@ -11,13 +11,13 @@
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());
+ public function __invoke(Request $request): Response
+ {
+ $renderer = new RenderTextFormat();
+ $result = $renderer->render($this->monitor->registry()->getMetricFamilySamples());
- return new Response($result, 200, ['Content-Type' => RenderTextFormat::MIME_TYPE]);
- }
+ 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 9a5b3e1bc..afc22aca7 100644
--- a/apps/mooc/backend/src/MoocBackendKernel.php
+++ b/apps/mooc/backend/src/MoocBackendKernel.php
@@ -14,33 +14,33 @@
class MoocBackendKernel extends Kernel
{
- use MicroKernelTrait;
-
- private const CONFIG_EXTS = '.{xml,yaml}';
-
- public function registerBundles(): iterable
- {
- $contents = require $this->getProjectDir() . '/config/bundles.php';
- foreach ($contents as $class => $envs) {
- if ($envs[$this->environment] ?? $envs['all'] ?? false) {
- yield new $class();
- }
- }
- }
-
- public function getProjectDir(): string
- {
- return dirname(__DIR__);
- }
-
- protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
- {
- $container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
- $container->setParameter('container.dumper.inline_class_loader', true);
- $confDir = $this->getProjectDir() . '/config';
-
- $loader->load($confDir . '/services' . self::CONFIG_EXTS, 'glob');
- $loader->load($confDir . '/services_' . $this->environment . self::CONFIG_EXTS, 'glob');
- $loader->load($confDir . '/services/*' . self::CONFIG_EXTS, 'glob');
- }
+ use MicroKernelTrait;
+
+ private const CONFIG_EXTS = '.{xml,yaml}';
+
+ public function registerBundles(): iterable
+ {
+ $contents = require $this->getProjectDir() . '/config/bundles.php';
+ foreach ($contents as $class => $envs) {
+ if ($envs[$this->environment] ?? $envs['all'] ?? false) {
+ yield new $class();
+ }
+ }
+ }
+
+ public function getProjectDir(): string
+ {
+ return dirname(__DIR__);
+ }
+
+ protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
+ {
+ $container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
+ $container->setParameter('container.dumper.inline_class_loader', true);
+ $confDir = $this->getProjectDir() . '/config';
+
+ $loader->load($confDir . '/services' . self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir . '/services_' . $this->environment . self::CONFIG_EXTS, 'glob');
+ $loader->load($confDir . '/services/*' . self::CONFIG_EXTS, 'glob');
+ }
}
diff --git a/composer.json b/composer.json
index 641ccbc4c..a616f67eb 100644
--- a/composer.json
+++ b/composer.json
@@ -61,7 +61,7 @@
"phpstan/phpstan": "^1.10",
"phpat/phpat": "^0.10.10",
"phpmd/phpmd": "^2.14",
- "codelytv/coding-style": "^0.9.0"
+ "codelytv/coding-style": "^1.0"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index 19aa3da84..7f2369ac4 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "672d40e7ce6751fab2f182692aa96f94",
+ "content-hash": "ba195cf69db5f97d61146955643ca749",
"packages": [
{
"name": "brick/math",
@@ -6064,16 +6064,16 @@
},
{
"name": "codelytv/coding-style",
- "version": "0.9.0",
+ "version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/CodelyTV/php-coding_style-codely.git",
- "reference": "521ca89d79d0182cf14b4a3cc46f0a6a69b1a7ae"
+ "reference": "6aa1ff99eb1ac817dbf2be6bf3288b7925784e9d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/521ca89d79d0182cf14b4a3cc46f0a6a69b1a7ae",
- "reference": "521ca89d79d0182cf14b4a3cc46f0a6a69b1a7ae",
+ "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/6aa1ff99eb1ac817dbf2be6bf3288b7925784e9d",
+ "reference": "6aa1ff99eb1ac817dbf2be6bf3288b7925784e9d",
"shasum": ""
},
"require": {
@@ -6086,6 +6086,9 @@
}
},
"notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "AGPL-3.0-or-later"
+ ],
"description": "PHP Coding Style rules we use in Codely",
"keywords": [
"Code style",
@@ -6093,9 +6096,15 @@
],
"support": {
"issues": "https://github.com/CodelyTV/php-coding_style-codely/issues",
- "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/0.9.0"
+ "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.0.0"
},
- "time": "2023-10-23T09:08:28+00:00"
+ "funding": [
+ {
+ "url": "https://bit.ly/CodelyTvPro",
+ "type": "custom"
+ }
+ ],
+ "time": "2023-10-23T09:55:18+00:00"
},
{
"name": "composer/package-versions-deprecated",
diff --git a/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php b/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
index e5205d311..22dfbb7ba 100644
--- a/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
+++ b/src/Analytics/DomainEvents/Application/Store/DomainEventStorer.php
@@ -13,16 +13,16 @@
final readonly class DomainEventStorer
{
- public function __construct(private DomainEventsRepository $repository) {}
+ public function __construct(private DomainEventsRepository $repository) {}
- public function store(
- AnalyticsDomainEventId $id,
- AnalyticsDomainEventAggregateId $aggregateId,
- AnalyticsDomainEventName $name,
- AnalyticsDomainEventBody $body
- ): void {
- $domainEvent = new AnalyticsDomainEvent($id, $aggregateId, $name, $body);
+ public function store(
+ AnalyticsDomainEventId $id,
+ AnalyticsDomainEventAggregateId $aggregateId,
+ AnalyticsDomainEventName $name,
+ AnalyticsDomainEventBody $body
+ ): void {
+ $domainEvent = new AnalyticsDomainEvent($id, $aggregateId, $name, $body);
- $this->repository->save($domainEvent);
- }
+ $this->repository->save($domainEvent);
+ }
}
diff --git a/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php b/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
index 011a0abe7..5607d45ce 100644
--- a/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
+++ b/src/Analytics/DomainEvents/Application/Store/StoreDomainEventOnOccurred.php
@@ -13,20 +13,20 @@
final readonly class StoreDomainEventOnOccurred implements DomainEventSubscriber
{
- public function __construct(private DomainEventStorer $storer) {}
+ public function __construct(private DomainEventStorer $storer) {}
- public static function subscribedTo(): array
- {
- return [DomainEvent::class];
- }
+ public static function subscribedTo(): array
+ {
+ return [DomainEvent::class];
+ }
- public function __invoke(DomainEvent $event): void
- {
- $id = new AnalyticsDomainEventId($event->eventId());
- $aggregateId = new AnalyticsDomainEventAggregateId($event->aggregateId());
- $name = new AnalyticsDomainEventName($event::eventName());
- $body = new AnalyticsDomainEventBody($event->toPrimitives());
+ public function __invoke(DomainEvent $event): void
+ {
+ $id = new AnalyticsDomainEventId($event->eventId());
+ $aggregateId = new AnalyticsDomainEventAggregateId($event->aggregateId());
+ $name = new AnalyticsDomainEventName($event::eventName());
+ $body = new AnalyticsDomainEventBody($event->toPrimitives());
- $this->storer->store($id, $aggregateId, $name, $body);
- }
+ $this->storer->store($id, $aggregateId, $name, $body);
+ }
}
diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
index 0297eb90c..db3fe917e 100644
--- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
+++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEvent.php
@@ -6,10 +6,10 @@
final readonly class AnalyticsDomainEvent
{
- public function __construct(
- private AnalyticsDomainEventId $id,
- private AnalyticsDomainEventAggregateId $aggregateId,
- private AnalyticsDomainEventName $name,
- private AnalyticsDomainEventBody $body
- ) {}
+ public function __construct(
+ private AnalyticsDomainEventId $id,
+ private AnalyticsDomainEventAggregateId $aggregateId,
+ private AnalyticsDomainEventName $name,
+ private AnalyticsDomainEventBody $body
+ ) {}
}
diff --git a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
index 1f5b227f1..65bbb6c03 100644
--- a/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
+++ b/src/Analytics/DomainEvents/Domain/AnalyticsDomainEventBody.php
@@ -6,10 +6,10 @@
final readonly class AnalyticsDomainEventBody
{
- public function __construct(private array $value) {}
+ public function __construct(private array $value) {}
- public function value(): array
- {
- return $this->value;
- }
+ public function value(): array
+ {
+ return $this->value;
+ }
}
diff --git a/src/Analytics/DomainEvents/Domain/DomainEventsRepository.php b/src/Analytics/DomainEvents/Domain/DomainEventsRepository.php
index 028572b7d..655b450d0 100644
--- a/src/Analytics/DomainEvents/Domain/DomainEventsRepository.php
+++ b/src/Analytics/DomainEvents/Domain/DomainEventsRepository.php
@@ -6,5 +6,5 @@
interface DomainEventsRepository
{
- public function save(AnalyticsDomainEvent $event): void;
+ public function save(AnalyticsDomainEvent $event): void;
}
diff --git a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
index 320a2ae48..3ca7806a0 100644
--- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
+++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommand.php
@@ -8,15 +8,15 @@
final readonly class AuthenticateUserCommand implements Command
{
- public function __construct(private string $username, private string $password) {}
+ public function __construct(private string $username, private string $password) {}
- public function username(): string
- {
- return $this->username;
- }
+ public function username(): string
+ {
+ return $this->username;
+ }
- public function password(): string
- {
- return $this->password;
- }
+ public function password(): string
+ {
+ return $this->password;
+ }
}
diff --git a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
index 9d4d53c7b..6278c023d 100644
--- a/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
+++ b/src/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandler.php
@@ -10,13 +10,13 @@
final readonly class AuthenticateUserCommandHandler implements CommandHandler
{
- public function __construct(private UserAuthenticator $authenticator) {}
+ public function __construct(private UserAuthenticator $authenticator) {}
- public function __invoke(AuthenticateUserCommand $command): void
- {
- $username = new AuthUsername($command->username());
- $password = new AuthPassword($command->password());
+ public function __invoke(AuthenticateUserCommand $command): void
+ {
+ $username = new AuthUsername($command->username());
+ $password = new AuthPassword($command->password());
- $this->authenticator->authenticate($username, $password);
- }
+ $this->authenticator->authenticate($username, $password);
+ }
}
diff --git a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
index 149b30029..99bcf5dfe 100644
--- a/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
+++ b/src/Backoffice/Auth/Application/Authenticate/UserAuthenticator.php
@@ -13,23 +13,23 @@
final readonly class UserAuthenticator
{
- public function __construct(private AuthRepository $repository) {}
+ public function __construct(private AuthRepository $repository) {}
- public function authenticate(AuthUsername $username, AuthPassword $password): void
- {
- $auth = $this->repository->search($username);
+ public function authenticate(AuthUsername $username, AuthPassword $password): void
+ {
+ $auth = $this->repository->search($username);
- if ($auth === null) {
- throw new InvalidAuthUsername($username);
- }
+ if ($auth === null) {
+ throw new InvalidAuthUsername($username);
+ }
- $this->ensureCredentialsAreValid($auth, $password);
- }
+ $this->ensureCredentialsAreValid($auth, $password);
+ }
- private function ensureCredentialsAreValid(AuthUser $auth, AuthPassword $password): void
- {
- if (!$auth->passwordMatches($password)) {
- throw new InvalidAuthCredentials($auth->username());
- }
- }
+ private function ensureCredentialsAreValid(AuthUser $auth, AuthPassword $password): void
+ {
+ if (!$auth->passwordMatches($password)) {
+ throw new InvalidAuthCredentials($auth->username());
+ }
+ }
}
diff --git a/src/Backoffice/Auth/Domain/AuthPassword.php b/src/Backoffice/Auth/Domain/AuthPassword.php
index 9437c09f8..ec76483a7 100644
--- a/src/Backoffice/Auth/Domain/AuthPassword.php
+++ b/src/Backoffice/Auth/Domain/AuthPassword.php
@@ -8,8 +8,8 @@
final class AuthPassword extends StringValueObject
{
- public function isEquals(self $other): bool
- {
- return $this->value() === $other->value();
- }
+ public function isEquals(self $other): bool
+ {
+ return $this->value() === $other->value();
+ }
}
diff --git a/src/Backoffice/Auth/Domain/AuthRepository.php b/src/Backoffice/Auth/Domain/AuthRepository.php
index ac1bf2334..49088ecd2 100644
--- a/src/Backoffice/Auth/Domain/AuthRepository.php
+++ b/src/Backoffice/Auth/Domain/AuthRepository.php
@@ -6,5 +6,5 @@
interface AuthRepository
{
- public function search(AuthUsername $username): ?AuthUser;
+ public function search(AuthUsername $username): ?AuthUser;
}
diff --git a/src/Backoffice/Auth/Domain/AuthUser.php b/src/Backoffice/Auth/Domain/AuthUser.php
index 99b0e97e8..5be0b4b51 100644
--- a/src/Backoffice/Auth/Domain/AuthUser.php
+++ b/src/Backoffice/Auth/Domain/AuthUser.php
@@ -6,15 +6,15 @@
final readonly class AuthUser
{
- public function __construct(private AuthUsername $username, private AuthPassword $password) {}
+ public function __construct(private AuthUsername $username, private AuthPassword $password) {}
- public function passwordMatches(AuthPassword $password): bool
- {
- return $this->password->isEquals($password);
- }
+ public function passwordMatches(AuthPassword $password): bool
+ {
+ return $this->password->isEquals($password);
+ }
- public function username(): AuthUsername
- {
- return $this->username;
- }
+ public function username(): AuthUsername
+ {
+ return $this->username;
+ }
}
diff --git a/src/Backoffice/Auth/Domain/InvalidAuthCredentials.php b/src/Backoffice/Auth/Domain/InvalidAuthCredentials.php
index b5a87059f..1854118bd 100644
--- a/src/Backoffice/Auth/Domain/InvalidAuthCredentials.php
+++ b/src/Backoffice/Auth/Domain/InvalidAuthCredentials.php
@@ -8,8 +8,8 @@
final class InvalidAuthCredentials extends RuntimeException
{
- public function __construct(AuthUsername $username)
- {
- parent::__construct(sprintf('The credentials for <%s> are invalid', $username->value()));
- }
+ public function __construct(AuthUsername $username)
+ {
+ parent::__construct(sprintf('The credentials for <%s> are invalid', $username->value()));
+ }
}
diff --git a/src/Backoffice/Auth/Domain/InvalidAuthUsername.php b/src/Backoffice/Auth/Domain/InvalidAuthUsername.php
index c00e0b5f3..b120207cb 100644
--- a/src/Backoffice/Auth/Domain/InvalidAuthUsername.php
+++ b/src/Backoffice/Auth/Domain/InvalidAuthUsername.php
@@ -8,8 +8,8 @@
final class InvalidAuthUsername extends RuntimeException
{
- public function __construct(AuthUsername $username)
- {
- parent::__construct(sprintf('The user <%s> does not exists', $username->value()));
- }
+ public function __construct(AuthUsername $username)
+ {
+ parent::__construct(sprintf('The user <%s> does not exists', $username->value()));
+ }
}
diff --git a/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php b/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php
index eed7b9bd0..dea981f8a 100644
--- a/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php
+++ b/src/Backoffice/Auth/Infrastructure/Persistence/InMemoryAuthRepository.php
@@ -13,15 +13,15 @@
final class InMemoryAuthRepository implements AuthRepository
{
- private const USERS = [
- 'javi' => 'barbitas',
- 'rafa' => 'pelazo',
- ];
+ private const USERS = [
+ 'javi' => 'barbitas',
+ 'rafa' => 'pelazo',
+ ];
- public function search(AuthUsername $username): ?AuthUser
- {
- $password = get($username->value(), self::USERS);
+ public function search(AuthUsername $username): ?AuthUser
+ {
+ $password = get($username->value(), self::USERS);
- return $password !== null ? 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 1b684f4af..d7984b858 100644
--- a/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
+++ b/src/Backoffice/Courses/Application/BackofficeCourseResponse.php
@@ -6,20 +6,20 @@
final readonly class BackofficeCourseResponse
{
- public function __construct(private string $id, private string $name, private string $duration) {}
+ public function __construct(private string $id, private string $name, private string $duration) {}
- public function id(): string
- {
- return $this->id;
- }
+ public function id(): string
+ {
+ return $this->id;
+ }
- public function name(): string
- {
- return $this->name;
- }
+ public function name(): string
+ {
+ return $this->name;
+ }
- public function duration(): string
- {
- return $this->duration;
- }
+ public function duration(): string
+ {
+ return $this->duration;
+ }
}
diff --git a/src/Backoffice/Courses/Application/BackofficeCoursesResponse.php b/src/Backoffice/Courses/Application/BackofficeCoursesResponse.php
index 973202782..489841794 100644
--- a/src/Backoffice/Courses/Application/BackofficeCoursesResponse.php
+++ b/src/Backoffice/Courses/Application/BackofficeCoursesResponse.php
@@ -8,15 +8,15 @@
final class BackofficeCoursesResponse implements Response
{
- private readonly array $courses;
+ private readonly array $courses;
- public function __construct(BackofficeCourseResponse ...$courses)
- {
- $this->courses = $courses;
- }
+ public function __construct(BackofficeCourseResponse ...$courses)
+ {
+ $this->courses = $courses;
+ }
- public function courses(): array
- {
- return $this->courses;
- }
+ public function courses(): array
+ {
+ return $this->courses;
+ }
}
diff --git a/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php b/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
index aaf185801..8493f6a46 100644
--- a/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
+++ b/src/Backoffice/Courses/Application/Create/BackofficeCourseCreator.php
@@ -9,10 +9,10 @@
final readonly class BackofficeCourseCreator
{
- public function __construct(private BackofficeCourseRepository $repository) {}
+ public function __construct(private BackofficeCourseRepository $repository) {}
- public function create(string $id, string $name, string $duration): void
- {
- $this->repository->save(new BackofficeCourse($id, $name, $duration));
- }
+ public function create(string $id, string $name, string $duration): void
+ {
+ $this->repository->save(new BackofficeCourse($id, $name, $duration));
+ }
}
diff --git a/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php b/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
index 7b67f9575..06ecd9541 100644
--- a/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
+++ b/src/Backoffice/Courses/Application/Create/CreateBackofficeCourseOnCourseCreated.php
@@ -9,15 +9,15 @@
final readonly class CreateBackofficeCourseOnCourseCreated implements DomainEventSubscriber
{
- public function __construct(private BackofficeCourseCreator $creator) {}
+ public function __construct(private BackofficeCourseCreator $creator) {}
- public static function subscribedTo(): array
- {
- return [CourseCreatedDomainEvent::class];
- }
+ public static function subscribedTo(): array
+ {
+ return [CourseCreatedDomainEvent::class];
+ }
- public function __invoke(CourseCreatedDomainEvent $event): void
- {
- $this->creator->create($event->aggregateId(), $event->name(), $event->duration());
- }
+ public function __invoke(CourseCreatedDomainEvent $event): void
+ {
+ $this->creator->create($event->aggregateId(), $event->name(), $event->duration());
+ }
}
diff --git a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
index 8cae9cc1d..8cb541d64 100644
--- a/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchAll/AllBackofficeCoursesSearcher.php
@@ -13,19 +13,19 @@
final readonly class AllBackofficeCoursesSearcher
{
- public function __construct(private BackofficeCourseRepository $repository) {}
+ public function __construct(private BackofficeCourseRepository $repository) {}
- public function searchAll(): BackofficeCoursesResponse
- {
- return new BackofficeCoursesResponse(...map($this->toResponse(), $this->repository->searchAll()));
- }
+ public function searchAll(): BackofficeCoursesResponse
+ {
+ return new BackofficeCoursesResponse(...map($this->toResponse(), $this->repository->searchAll()));
+ }
- private function toResponse(): callable
- {
- return static fn (BackofficeCourse $course): BackofficeCourseResponse => new BackofficeCourseResponse(
- $course->id(),
- $course->name(),
- $course->duration()
- );
- }
+ private function toResponse(): callable
+ {
+ return static fn (BackofficeCourse $course): BackofficeCourseResponse => new BackofficeCourseResponse(
+ $course->id(),
+ $course->name(),
+ $course->duration()
+ );
+ }
}
diff --git a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
index 7688fc8c3..552bb73a5 100644
--- a/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
+++ b/src/Backoffice/Courses/Application/SearchAll/SearchAllBackofficeCoursesQueryHandler.php
@@ -9,10 +9,10 @@
final readonly class SearchAllBackofficeCoursesQueryHandler implements QueryHandler
{
- public function __construct(private AllBackofficeCoursesSearcher $searcher) {}
+ public function __construct(private AllBackofficeCoursesSearcher $searcher) {}
- public function __invoke(SearchAllBackofficeCoursesQuery $query): BackofficeCoursesResponse
- {
- return $this->searcher->searchAll();
- }
+ public function __invoke(SearchAllBackofficeCoursesQuery $query): BackofficeCoursesResponse
+ {
+ return $this->searcher->searchAll();
+ }
}
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
index 07e09e980..4ed2280a4 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/BackofficeCoursesByCriteriaSearcher.php
@@ -16,21 +16,21 @@
final readonly class BackofficeCoursesByCriteriaSearcher
{
- public function __construct(private BackofficeCourseRepository $repository) {}
-
- public function search(Filters $filters, Order $order, ?int $limit, ?int $offset): BackofficeCoursesResponse
- {
- $criteria = new Criteria($filters, $order, $offset, $limit);
-
- return new BackofficeCoursesResponse(...map($this->toResponse(), $this->repository->matching($criteria)));
- }
-
- private function toResponse(): callable
- {
- return static fn (BackofficeCourse $course): BackofficeCourseResponse => new BackofficeCourseResponse(
- $course->id(),
- $course->name(),
- $course->duration()
- );
- }
+ public function __construct(private BackofficeCourseRepository $repository) {}
+
+ public function search(Filters $filters, Order $order, ?int $limit, ?int $offset): BackofficeCoursesResponse
+ {
+ $criteria = new Criteria($filters, $order, $offset, $limit);
+
+ return new BackofficeCoursesResponse(...map($this->toResponse(), $this->repository->matching($criteria)));
+ }
+
+ private function toResponse(): callable
+ {
+ return static fn (BackofficeCourse $course): BackofficeCourseResponse => new BackofficeCourseResponse(
+ $course->id(),
+ $course->name(),
+ $course->duration()
+ );
+ }
}
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
index 87eb2a648..3833cd4e5 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQuery.php
@@ -8,36 +8,36 @@
final readonly class SearchBackofficeCoursesByCriteriaQuery implements Query
{
- public function __construct(
- private array $filters,
- private ?string $orderBy,
- private ?string $order,
- private ?int $limit,
- private ?int $offset
- ) {}
-
- public function filters(): array
- {
- return $this->filters;
- }
-
- public function orderBy(): ?string
- {
- return $this->orderBy;
- }
-
- public function order(): ?string
- {
- return $this->order;
- }
-
- public function limit(): ?int
- {
- return $this->limit;
- }
-
- public function offset(): ?int
- {
- return $this->offset;
- }
+ public function __construct(
+ private array $filters,
+ private ?string $orderBy,
+ private ?string $order,
+ private ?int $limit,
+ private ?int $offset
+ ) {}
+
+ public function filters(): array
+ {
+ return $this->filters;
+ }
+
+ public function orderBy(): ?string
+ {
+ return $this->orderBy;
+ }
+
+ public function order(): ?string
+ {
+ return $this->order;
+ }
+
+ public function limit(): ?int
+ {
+ return $this->limit;
+ }
+
+ public function offset(): ?int
+ {
+ return $this->offset;
+ }
}
diff --git a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
index 4228431c0..9be731db6 100644
--- a/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
+++ b/src/Backoffice/Courses/Application/SearchByCriteria/SearchBackofficeCoursesByCriteriaQueryHandler.php
@@ -11,13 +11,13 @@
final readonly class SearchBackofficeCoursesByCriteriaQueryHandler implements QueryHandler
{
- public function __construct(private 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());
+ public function __invoke(SearchBackofficeCoursesByCriteriaQuery $query): BackofficeCoursesResponse
+ {
+ $filters = Filters::fromValues($query->filters());
+ $order = Order::fromValues($query->orderBy(), $query->order());
- return $this->searcher->search($filters, $order, $query->limit(), $query->offset());
- }
+ 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 8bffd93a8..85bc4ea53 100644
--- a/src/Backoffice/Courses/Domain/BackofficeCourse.php
+++ b/src/Backoffice/Courses/Domain/BackofficeCourse.php
@@ -8,34 +8,34 @@
final class BackofficeCourse extends AggregateRoot
{
- public function __construct(private readonly string $id, private readonly string $name, private readonly string $duration) {}
-
- public static function fromPrimitives(array $primitives): self
- {
- return new self($primitives['id'], $primitives['name'], $primitives['duration']);
- }
-
- public function toPrimitives(): array
- {
- return [
- 'id' => $this->id,
- 'name' => $this->name,
- 'duration' => $this->duration,
- ];
- }
-
- public function id(): string
- {
- return $this->id;
- }
-
- public function name(): string
- {
- return $this->name;
- }
-
- public function duration(): string
- {
- return $this->duration;
- }
+ public function __construct(private readonly string $id, private readonly string $name, private readonly string $duration) {}
+
+ public static function fromPrimitives(array $primitives): self
+ {
+ return new self($primitives['id'], $primitives['name'], $primitives['duration']);
+ }
+
+ public function toPrimitives(): array
+ {
+ return [
+ 'id' => $this->id,
+ 'name' => $this->name,
+ 'duration' => $this->duration,
+ ];
+ }
+
+ public function id(): string
+ {
+ return $this->id;
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function duration(): string
+ {
+ return $this->duration;
+ }
}
diff --git a/src/Backoffice/Courses/Domain/BackofficeCourseRepository.php b/src/Backoffice/Courses/Domain/BackofficeCourseRepository.php
index 1f8d82c40..815a0a6b3 100644
--- a/src/Backoffice/Courses/Domain/BackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Domain/BackofficeCourseRepository.php
@@ -8,9 +8,9 @@
interface BackofficeCourseRepository
{
- public function save(BackofficeCourse $course): void;
+ public function save(BackofficeCourse $course): void;
- public function searchAll(): array;
+ public function searchAll(): array;
- public function matching(Criteria $criteria): array;
+ public function matching(Criteria $criteria): array;
}
diff --git a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
index be8074d61..3a359ce41 100644
--- a/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepository.php
@@ -13,28 +13,28 @@
final class ElasticsearchBackofficeCourseRepository extends ElasticsearchRepository implements BackofficeCourseRepository
{
- public function save(BackofficeCourse $course): void
- {
- $this->persist($course->id(), $course->toPrimitives());
- }
-
- public function searchAll(): array
- {
- return map($this->toCourse(), $this->searchAllInElastic());
- }
-
- public function matching(Criteria $criteria): array
- {
- return map($this->toCourse(), $this->searchByCriteria($criteria));
- }
-
- protected function aggregateName(): string
- {
- return 'courses';
- }
-
- private function toCourse(): callable
- {
- return static fn (array $primitives): BackofficeCourse => BackofficeCourse::fromPrimitives($primitives);
- }
+ public function save(BackofficeCourse $course): void
+ {
+ $this->persist($course->id(), $course->toPrimitives());
+ }
+
+ public function searchAll(): array
+ {
+ return map($this->toCourse(), $this->searchAllInElastic());
+ }
+
+ public function matching(Criteria $criteria): array
+ {
+ return map($this->toCourse(), $this->searchByCriteria($criteria));
+ }
+
+ protected function aggregateName(): string
+ {
+ return 'courses';
+ }
+
+ private function toCourse(): callable
+ {
+ return static fn (array $primitives): BackofficeCourse => BackofficeCourse::fromPrimitives($primitives);
+ }
}
diff --git a/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
index 4f892381d..d2d84c341 100644
--- a/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Infrastructure/Persistence/InMemoryCacheBackofficeCourseRepository.php
@@ -12,33 +12,33 @@
final class InMemoryCacheBackofficeCourseRepository implements BackofficeCourseRepository
{
- private static array $allCoursesCache = [];
- private static array $matchingCache = [];
-
- public function __construct(private readonly BackofficeCourseRepository $repository) {}
-
- public function save(BackofficeCourse $course): void
- {
- $this->repository->save($course);
- }
-
- public function searchAll(): array
- {
- return empty(self::$allCoursesCache) ? $this->searchAllAndFillCache() : self::$allCoursesCache;
- }
-
- public function matching(Criteria $criteria): array
- {
- return get($criteria->serialize(), self::$matchingCache) ?: $this->searchMatchingAndFillCache($criteria);
- }
-
- private function searchAllAndFillCache(): array
- {
- return self::$allCoursesCache = $this->repository->searchAll();
- }
-
- private function searchMatchingAndFillCache(Criteria $criteria): array
- {
- return self::$matchingCache[$criteria->serialize()] = $this->repository->matching($criteria);
- }
+ private static array $allCoursesCache = [];
+ private static array $matchingCache = [];
+
+ public function __construct(private readonly BackofficeCourseRepository $repository) {}
+
+ public function save(BackofficeCourse $course): void
+ {
+ $this->repository->save($course);
+ }
+
+ public function searchAll(): array
+ {
+ return empty(self::$allCoursesCache) ? $this->searchAllAndFillCache() : self::$allCoursesCache;
+ }
+
+ public function matching(Criteria $criteria): array
+ {
+ return get($criteria->serialize(), self::$matchingCache) ?: $this->searchMatchingAndFillCache($criteria);
+ }
+
+ private function searchAllAndFillCache(): array
+ {
+ return self::$allCoursesCache = $this->repository->searchAll();
+ }
+
+ private function searchMatchingAndFillCache(Criteria $criteria): array
+ {
+ return self::$matchingCache[$criteria->serialize()] = $this->repository->matching($criteria);
+ }
}
diff --git a/src/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepository.php b/src/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepository.php
index 8203a7fee..46891200b 100644
--- a/src/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepository.php
+++ b/src/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepository.php
@@ -12,20 +12,20 @@
final class MySqlBackofficeCourseRepository extends DoctrineRepository implements BackofficeCourseRepository
{
- public function save(BackofficeCourse $course): void
- {
- $this->persist($course);
- }
+ public function save(BackofficeCourse $course): void
+ {
+ $this->persist($course);
+ }
- public function searchAll(): array
- {
- return $this->repository(BackofficeCourse::class)->findAll();
- }
+ public function searchAll(): array
+ {
+ return $this->repository(BackofficeCourse::class)->findAll();
+ }
- public function matching(Criteria $criteria): array
- {
- $doctrineCriteria = DoctrineCriteriaConverter::convert($criteria);
+ public function matching(Criteria $criteria): array
+ {
+ $doctrineCriteria = DoctrineCriteriaConverter::convert($criteria);
- return $this->repository(BackofficeCourse::class)->matching($doctrineCriteria)->toArray();
- }
+ return $this->repository(BackofficeCourse::class)->matching($doctrineCriteria)->toArray();
+ }
}
diff --git a/src/Mooc/Courses/Application/Create/CourseCreator.php b/src/Mooc/Courses/Application/Create/CourseCreator.php
index 8147a6002..12b07bed4 100644
--- a/src/Mooc/Courses/Application/Create/CourseCreator.php
+++ b/src/Mooc/Courses/Application/Create/CourseCreator.php
@@ -13,13 +13,13 @@
final readonly class CourseCreator
{
- public function __construct(private CourseRepository $repository, private EventBus $bus) {}
+ public function __construct(private CourseRepository $repository, private EventBus $bus) {}
- public function __invoke(CourseId $id, CourseName $name, CourseDuration $duration): void
- {
- $course = Course::create($id, $name, $duration);
+ public function __invoke(CourseId $id, CourseName $name, CourseDuration $duration): void
+ {
+ $course = Course::create($id, $name, $duration);
- $this->repository->save($course);
- $this->bus->publish(...$course->pullDomainEvents());
- }
+ $this->repository->save($course);
+ $this->bus->publish(...$course->pullDomainEvents());
+ }
}
diff --git a/src/Mooc/Courses/Application/Create/CreateCourseCommand.php b/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
index 239223fe8..e710c86a9 100644
--- a/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
+++ b/src/Mooc/Courses/Application/Create/CreateCourseCommand.php
@@ -8,20 +8,20 @@
final readonly class CreateCourseCommand implements Command
{
- public function __construct(private string $id, private string $name, private string $duration) {}
+ public function __construct(private string $id, private string $name, private string $duration) {}
- public function id(): string
- {
- return $this->id;
- }
+ public function id(): string
+ {
+ return $this->id;
+ }
- public function name(): string
- {
- return $this->name;
- }
+ public function name(): string
+ {
+ return $this->name;
+ }
- public function duration(): string
- {
- return $this->duration;
- }
+ public function duration(): string
+ {
+ return $this->duration;
+ }
}
diff --git a/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php b/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
index f251c1e1a..e4685c5cb 100644
--- a/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
+++ b/src/Mooc/Courses/Application/Create/CreateCourseCommandHandler.php
@@ -11,14 +11,14 @@
final readonly class CreateCourseCommandHandler implements CommandHandler
{
- public function __construct(private CourseCreator $creator) {}
+ public function __construct(private CourseCreator $creator) {}
- public function __invoke(CreateCourseCommand $command): void
- {
- $id = new CourseId($command->id());
- $name = new CourseName($command->name());
- $duration = new CourseDuration($command->duration());
+ public function __invoke(CreateCourseCommand $command): void
+ {
+ $id = new CourseId($command->id());
+ $name = new CourseName($command->name());
+ $duration = new CourseDuration($command->duration());
- $this->creator->__invoke($id, $name, $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 c59f5e62b..695e2aef7 100644
--- a/src/Mooc/Courses/Application/Find/CourseFinder.php
+++ b/src/Mooc/Courses/Application/Find/CourseFinder.php
@@ -11,16 +11,16 @@
final readonly class CourseFinder
{
- public function __construct(private CourseRepository $repository) {}
+ public function __construct(private CourseRepository $repository) {}
- public function __invoke(CourseId $id): Course
- {
- $course = $this->repository->search($id);
+ public function __invoke(CourseId $id): Course
+ {
+ $course = $this->repository->search($id);
- if ($course === null) {
- throw new CourseNotExist($id);
- }
+ if ($course === null) {
+ throw new CourseNotExist($id);
+ }
- return $course;
- }
+ return $course;
+ }
}
diff --git a/src/Mooc/Courses/Application/Update/CourseRenamer.php b/src/Mooc/Courses/Application/Update/CourseRenamer.php
index ba96d9970..77c8632d4 100644
--- a/src/Mooc/Courses/Application/Update/CourseRenamer.php
+++ b/src/Mooc/Courses/Application/Update/CourseRenamer.php
@@ -12,20 +12,20 @@
final readonly class CourseRenamer
{
- private CourseFinder $finder;
+ private CourseFinder $finder;
- public function __construct(private CourseRepository $repository, private EventBus $bus)
- {
- $this->finder = new CourseFinder($repository);
- }
+ public function __construct(private CourseRepository $repository, private EventBus $bus)
+ {
+ $this->finder = new CourseFinder($repository);
+ }
- public function __invoke(CourseId $id, CourseName $newName): void
- {
- $course = $this->finder->__invoke($id);
+ public function __invoke(CourseId $id, CourseName $newName): void
+ {
+ $course = $this->finder->__invoke($id);
- $course->rename($newName);
+ $course->rename($newName);
- $this->repository->save($course);
- $this->bus->publish(...$course->pullDomainEvents());
- }
+ $this->repository->save($course);
+ $this->bus->publish(...$course->pullDomainEvents());
+ }
}
diff --git a/src/Mooc/Courses/Domain/Course.php b/src/Mooc/Courses/Domain/Course.php
index cdd5484c1..854ecdd4e 100644
--- a/src/Mooc/Courses/Domain/Course.php
+++ b/src/Mooc/Courses/Domain/Course.php
@@ -9,34 +9,34 @@
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
- {
- $course = new self($id, $name, $duration);
+ public static function create(CourseId $id, CourseName $name, CourseDuration $duration): self
+ {
+ $course = new self($id, $name, $duration);
- $course->record(new CourseCreatedDomainEvent($id->value(), $name->value(), $duration->value()));
+ $course->record(new CourseCreatedDomainEvent($id->value(), $name->value(), $duration->value()));
- return $course;
- }
+ return $course;
+ }
- public function id(): CourseId
- {
- return $this->id;
- }
+ public function id(): CourseId
+ {
+ return $this->id;
+ }
- public function name(): CourseName
- {
- return $this->name;
- }
+ public function name(): CourseName
+ {
+ return $this->name;
+ }
- public function duration(): CourseDuration
- {
- return $this->duration;
- }
+ public function duration(): CourseDuration
+ {
+ return $this->duration;
+ }
- public function rename(CourseName $newName): void
- {
- $this->name = $newName;
- }
+ public function rename(CourseName $newName): void
+ {
+ $this->name = $newName;
+ }
}
diff --git a/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php b/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php
index 4d6525403..69e89f799 100644
--- a/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php
+++ b/src/Mooc/Courses/Domain/CourseCreatedDomainEvent.php
@@ -8,45 +8,45 @@
final class CourseCreatedDomainEvent extends DomainEvent
{
- public function __construct(
- string $id,
- private readonly string $name,
- private readonly string $duration,
- string $eventId = null,
- string $occurredOn = null
- ) {
- parent::__construct($id, $eventId, $occurredOn);
- }
-
- public static function eventName(): string
- {
- return 'course.created';
- }
-
- public static function fromPrimitives(
- string $aggregateId,
- array $body,
- string $eventId,
- string $occurredOn
- ): DomainEvent {
- return new self($aggregateId, $body['name'], $body['duration'], $eventId, $occurredOn);
- }
-
- public function toPrimitives(): array
- {
- return [
- 'name' => $this->name,
- 'duration' => $this->duration,
- ];
- }
-
- public function name(): string
- {
- return $this->name;
- }
-
- public function duration(): string
- {
- return $this->duration;
- }
+ public function __construct(
+ string $id,
+ private readonly string $name,
+ private readonly string $duration,
+ string $eventId = null,
+ string $occurredOn = null
+ ) {
+ parent::__construct($id, $eventId, $occurredOn);
+ }
+
+ public static function eventName(): string
+ {
+ return 'course.created';
+ }
+
+ public static function fromPrimitives(
+ string $aggregateId,
+ array $body,
+ string $eventId,
+ string $occurredOn
+ ): DomainEvent {
+ return new self($aggregateId, $body['name'], $body['duration'], $eventId, $occurredOn);
+ }
+
+ public function toPrimitives(): array
+ {
+ return [
+ 'name' => $this->name,
+ 'duration' => $this->duration,
+ ];
+ }
+
+ public function name(): string
+ {
+ return $this->name;
+ }
+
+ public function duration(): string
+ {
+ return $this->duration;
+ }
}
diff --git a/src/Mooc/Courses/Domain/CourseNotExist.php b/src/Mooc/Courses/Domain/CourseNotExist.php
index ab3e95e4d..c91f35340 100644
--- a/src/Mooc/Courses/Domain/CourseNotExist.php
+++ b/src/Mooc/Courses/Domain/CourseNotExist.php
@@ -9,18 +9,18 @@
final class CourseNotExist extends DomainError
{
- public function __construct(private readonly CourseId $id)
- {
- parent::__construct();
- }
+ public function __construct(private readonly CourseId $id)
+ {
+ parent::__construct();
+ }
- public function errorCode(): string
- {
- return 'course_not_exist';
- }
+ public function errorCode(): string
+ {
+ return 'course_not_exist';
+ }
- protected function errorMessage(): string
- {
- return sprintf('The course <%s> does not exist', $this->id->value());
- }
+ protected function errorMessage(): string
+ {
+ return sprintf('The course <%s> does not exist', $this->id->value());
+ }
}
diff --git a/src/Mooc/Courses/Domain/CourseRepository.php b/src/Mooc/Courses/Domain/CourseRepository.php
index bf12fad1b..338ad9500 100644
--- a/src/Mooc/Courses/Domain/CourseRepository.php
+++ b/src/Mooc/Courses/Domain/CourseRepository.php
@@ -8,7 +8,7 @@
interface CourseRepository
{
- public function save(Course $course): void;
+ public function save(Course $course): void;
- public function search(CourseId $id): ?Course;
+ public function search(CourseId $id): ?Course;
}
diff --git a/src/Mooc/Courses/Infrastructure/Persistence/Doctrine/CourseIdType.php b/src/Mooc/Courses/Infrastructure/Persistence/Doctrine/CourseIdType.php
index 6cbc8d60c..389f9fb53 100644
--- a/src/Mooc/Courses/Infrastructure/Persistence/Doctrine/CourseIdType.php
+++ b/src/Mooc/Courses/Infrastructure/Persistence/Doctrine/CourseIdType.php
@@ -9,8 +9,8 @@
final class CourseIdType extends UuidType
{
- protected function typeClassName(): string
- {
- return CourseId::class;
- }
+ protected function typeClassName(): string
+ {
+ return CourseId::class;
+ }
}
diff --git a/src/Mooc/Courses/Infrastructure/Persistence/DoctrineCourseRepository.php b/src/Mooc/Courses/Infrastructure/Persistence/DoctrineCourseRepository.php
index b17007d92..376c47039 100644
--- a/src/Mooc/Courses/Infrastructure/Persistence/DoctrineCourseRepository.php
+++ b/src/Mooc/Courses/Infrastructure/Persistence/DoctrineCourseRepository.php
@@ -11,13 +11,13 @@
final class DoctrineCourseRepository extends DoctrineRepository implements CourseRepository
{
- public function save(Course $course): void
- {
- $this->persist($course);
- }
+ public function save(Course $course): void
+ {
+ $this->persist($course);
+ }
- public function search(CourseId $id): ?Course
- {
- return $this->repository(Course::class)->find($id);
- }
+ public function search(CourseId $id): ?Course
+ {
+ return $this->repository(Course::class)->find($id);
+ }
}
diff --git a/src/Mooc/Courses/Infrastructure/Persistence/FileCourseRepository.php b/src/Mooc/Courses/Infrastructure/Persistence/FileCourseRepository.php
index 05124081d..b6a15ecbd 100644
--- a/src/Mooc/Courses/Infrastructure/Persistence/FileCourseRepository.php
+++ b/src/Mooc/Courses/Infrastructure/Persistence/FileCourseRepository.php
@@ -10,22 +10,22 @@
final class FileCourseRepository implements CourseRepository
{
- private const FILE_PATH = __DIR__ . '/courses';
+ private const FILE_PATH = __DIR__ . '/courses';
- public function save(Course $course): void
- {
- file_put_contents($this->fileName($course->id()->value()), serialize($course));
- }
+ public function save(Course $course): void
+ {
+ file_put_contents($this->fileName($course->id()->value()), serialize($course));
+ }
- public function search(CourseId $id): ?Course
- {
- return file_exists($this->fileName($id->value()))
- ? unserialize(file_get_contents($this->fileName($id->value())))
- : null;
- }
+ public function search(CourseId $id): ?Course
+ {
+ return file_exists($this->fileName($id->value()))
+ ? unserialize(file_get_contents($this->fileName($id->value())))
+ : null;
+ }
- private function fileName(string $id): string
- {
- return sprintf('%s.%s.repo', self::FILE_PATH, $id);
- }
+ private function fileName(string $id): string
+ {
+ return sprintf('%s.%s.repo', self::FILE_PATH, $id);
+ }
}
diff --git a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
index d82d01a2c..000422643 100644
--- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
+++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterFinder.php
@@ -9,16 +9,16 @@
final readonly class CoursesCounterFinder
{
- public function __construct(private CoursesCounterRepository $repository) {}
+ public function __construct(private CoursesCounterRepository $repository) {}
- public function __invoke(): CoursesCounterResponse
- {
- $counter = $this->repository->search();
+ public function __invoke(): CoursesCounterResponse
+ {
+ $counter = $this->repository->search();
- if ($counter === null) {
- throw new CoursesCounterNotExist();
- }
+ if ($counter === null) {
+ throw new CoursesCounterNotExist();
+ }
- return new CoursesCounterResponse($counter->total()->value());
- }
+ return new CoursesCounterResponse($counter->total()->value());
+ }
}
diff --git a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
index b7ddf5618..21e8a0811 100644
--- a/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
+++ b/src/Mooc/CoursesCounter/Application/Find/CoursesCounterResponse.php
@@ -8,10 +8,10 @@
final readonly class CoursesCounterResponse implements Response
{
- public function __construct(private int $total) {}
+ public function __construct(private int $total) {}
- public function total(): int
- {
- return $this->total;
- }
+ public function total(): int
+ {
+ return $this->total;
+ }
}
diff --git a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
index d4952b13e..cedb24b1c 100644
--- a/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
+++ b/src/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandler.php
@@ -8,10 +8,10 @@
final readonly class FindCoursesCounterQueryHandler implements QueryHandler
{
- public function __construct(private CoursesCounterFinder $finder) {}
+ public function __construct(private CoursesCounterFinder $finder) {}
- public function __invoke(FindCoursesCounterQuery $query): CoursesCounterResponse
- {
- return $this->finder->__invoke();
- }
+ public function __invoke(FindCoursesCounterQuery $query): CoursesCounterResponse
+ {
+ return $this->finder->__invoke();
+ }
}
diff --git a/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php b/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
index 9a2fe67bc..b1131d11d 100644
--- a/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
+++ b/src/Mooc/CoursesCounter/Application/Increment/CoursesCounterIncrementer.php
@@ -13,26 +13,26 @@
final readonly class CoursesCounterIncrementer
{
- public function __construct(
- private CoursesCounterRepository $repository,
- private UuidGenerator $uuidGenerator,
- private EventBus $bus
- ) {}
-
- public function __invoke(CourseId $courseId): void
- {
- $counter = $this->repository->search() ?: $this->initializeCounter();
-
- if (!$counter->hasIncremented($courseId)) {
- $counter->increment($courseId);
-
- $this->repository->save($counter);
- $this->bus->publish(...$counter->pullDomainEvents());
- }
- }
-
- private function initializeCounter(): CoursesCounter
- {
- return CoursesCounter::initialize(new CoursesCounterId($this->uuidGenerator->generate()));
- }
+ public function __construct(
+ private CoursesCounterRepository $repository,
+ private UuidGenerator $uuidGenerator,
+ private EventBus $bus
+ ) {}
+
+ public function __invoke(CourseId $courseId): void
+ {
+ $counter = $this->repository->search() ?: $this->initializeCounter();
+
+ if (!$counter->hasIncremented($courseId)) {
+ $counter->increment($courseId);
+
+ $this->repository->save($counter);
+ $this->bus->publish(...$counter->pullDomainEvents());
+ }
+ }
+
+ private function initializeCounter(): CoursesCounter
+ {
+ return CoursesCounter::initialize(new CoursesCounterId($this->uuidGenerator->generate()));
+ }
}
diff --git a/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php b/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
index 8925dc255..d561d7686 100644
--- a/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
+++ b/src/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreated.php
@@ -12,17 +12,17 @@
final readonly class IncrementCoursesCounterOnCourseCreated implements DomainEventSubscriber
{
- public function __construct(private CoursesCounterIncrementer $incrementer) {}
+ public function __construct(private CoursesCounterIncrementer $incrementer) {}
- public static function subscribedTo(): array
- {
- return [CourseCreatedDomainEvent::class];
- }
+ public static function subscribedTo(): array
+ {
+ return [CourseCreatedDomainEvent::class];
+ }
- public function __invoke(CourseCreatedDomainEvent $event): void
- {
- $courseId = new CourseId($event->aggregateId());
+ public function __invoke(CourseCreatedDomainEvent $event): void
+ {
+ $courseId = new CourseId($event->aggregateId());
- apply($this->incrementer, [$courseId]);
- }
+ apply($this->incrementer, [$courseId]);
+ }
}
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
index 0a6ed0d11..3d89a5da0 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounter.php
@@ -11,53 +11,53 @@
final class CoursesCounter extends AggregateRoot
{
- private array $existingCourses;
-
- public function __construct(
- private readonly CoursesCounterId $id,
- private CoursesCounterTotal $total,
- CourseId ...$existingCourses
- ) {
- $this->existingCourses = $existingCourses;
- }
-
- public static function initialize(CoursesCounterId $id): self
- {
- return new self($id, CoursesCounterTotal::initialize());
- }
-
- public function id(): CoursesCounterId
- {
- return $this->id;
- }
-
- public function total(): CoursesCounterTotal
- {
- return $this->total;
- }
-
- public function existingCourses(): array
- {
- return $this->existingCourses;
- }
-
- public function increment(CourseId $courseId): void
- {
- $this->total = $this->total->increment();
- $this->existingCourses[] = $courseId;
-
- $this->record(new CoursesCounterIncrementedDomainEvent($this->id()->value(), $this->total()->value()));
- }
-
- public function hasIncremented(CourseId $courseId): bool
- {
- $existingCourse = search($this->courseIdComparator($courseId), $this->existingCourses());
-
- return $existingCourse !== null;
- }
-
- private function courseIdComparator(CourseId $courseId): callable
- {
- return static fn (CourseId $other): bool => $courseId->equals($other);
- }
+ private array $existingCourses;
+
+ public function __construct(
+ private readonly CoursesCounterId $id,
+ private CoursesCounterTotal $total,
+ CourseId ...$existingCourses
+ ) {
+ $this->existingCourses = $existingCourses;
+ }
+
+ public static function initialize(CoursesCounterId $id): self
+ {
+ return new self($id, CoursesCounterTotal::initialize());
+ }
+
+ public function id(): CoursesCounterId
+ {
+ return $this->id;
+ }
+
+ public function total(): CoursesCounterTotal
+ {
+ return $this->total;
+ }
+
+ public function existingCourses(): array
+ {
+ return $this->existingCourses;
+ }
+
+ public function increment(CourseId $courseId): void
+ {
+ $this->total = $this->total->increment();
+ $this->existingCourses[] = $courseId;
+
+ $this->record(new CoursesCounterIncrementedDomainEvent($this->id()->value(), $this->total()->value()));
+ }
+
+ public function hasIncremented(CourseId $courseId): bool
+ {
+ $existingCourse = search($this->courseIdComparator($courseId), $this->existingCourses());
+
+ return $existingCourse !== null;
+ }
+
+ private function courseIdComparator(CourseId $courseId): callable
+ {
+ return static fn (CourseId $other): bool => $courseId->equals($other);
+ }
}
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php b/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php
index 4867871db..a64681dc7 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEvent.php
@@ -8,33 +8,33 @@
final class CoursesCounterIncrementedDomainEvent extends DomainEvent
{
- public function __construct(
- string $aggregateId,
- private readonly int $total,
- string $eventId = null,
- string $occurredOn = null
- ) {
- parent::__construct($aggregateId, $eventId, $occurredOn);
- }
+ public function __construct(
+ string $aggregateId,
+ private readonly int $total,
+ string $eventId = null,
+ string $occurredOn = null
+ ) {
+ parent::__construct($aggregateId, $eventId, $occurredOn);
+ }
- public static function eventName(): string
- {
- return 'courses_counter.incremented';
- }
+ public static function eventName(): string
+ {
+ return 'courses_counter.incremented';
+ }
- public static function fromPrimitives(
- string $aggregateId,
- array $body,
- string $eventId,
- string $occurredOn
- ): DomainEvent {
- return new self($aggregateId, $body['total'], $eventId, $occurredOn);
- }
+ public static function fromPrimitives(
+ string $aggregateId,
+ array $body,
+ string $eventId,
+ string $occurredOn
+ ): DomainEvent {
+ return new self($aggregateId, $body['total'], $eventId, $occurredOn);
+ }
- public function toPrimitives(): array
- {
- return [
- 'total' => $this->total,
- ];
- }
+ public function toPrimitives(): array
+ {
+ return [
+ 'total' => $this->total,
+ ];
+ }
}
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounterNotExist.php b/src/Mooc/CoursesCounter/Domain/CoursesCounterNotExist.php
index 5650c9267..a882cdc38 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounterNotExist.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounterNotExist.php
@@ -8,8 +8,8 @@
final class CoursesCounterNotExist extends RuntimeException
{
- public function __construct()
- {
- parent::__construct('The courses counter not exist');
- }
+ public function __construct()
+ {
+ parent::__construct('The courses counter not exist');
+ }
}
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounterRepository.php b/src/Mooc/CoursesCounter/Domain/CoursesCounterRepository.php
index 4dcd67d05..d2f875b70 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounterRepository.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounterRepository.php
@@ -6,7 +6,7 @@
interface CoursesCounterRepository
{
- public function save(CoursesCounter $counter): void;
+ public function save(CoursesCounter $counter): void;
- public function search(): ?CoursesCounter;
+ public function search(): ?CoursesCounter;
}
diff --git a/src/Mooc/CoursesCounter/Domain/CoursesCounterTotal.php b/src/Mooc/CoursesCounter/Domain/CoursesCounterTotal.php
index 619ca19bb..6446125fa 100644
--- a/src/Mooc/CoursesCounter/Domain/CoursesCounterTotal.php
+++ b/src/Mooc/CoursesCounter/Domain/CoursesCounterTotal.php
@@ -8,13 +8,13 @@
final class CoursesCounterTotal extends IntValueObject
{
- public static function initialize(): self
- {
- return new self(0);
- }
+ public static function initialize(): self
+ {
+ return new self(0);
+ }
- public function increment(): self
- {
- return new self($this->value() + 1);
- }
+ public function increment(): self
+ {
+ return new self($this->value() + 1);
+ }
}
diff --git a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseCounterIdType.php b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseCounterIdType.php
index 7a300a2bc..6a2c5d95a 100644
--- a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseCounterIdType.php
+++ b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseCounterIdType.php
@@ -9,8 +9,8 @@
final class CourseCounterIdType extends UuidType
{
- protected function typeClassName(): string
- {
- return CoursesCounterId::class;
- }
+ protected function typeClassName(): string
+ {
+ return CoursesCounterId::class;
+ }
}
diff --git a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
index b618ad93d..b0563bcf5 100644
--- a/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
+++ b/src/Mooc/CoursesCounter/Infrastructure/Persistence/Doctrine/CourseIdsType.php
@@ -13,25 +13,25 @@
final class CourseIdsType extends JsonType implements DoctrineCustomType
{
- public static function customTypeName(): string
- {
- return 'course_ids';
- }
-
- public function getName(): string
- {
- return self::customTypeName();
- }
-
- public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- return parent::convertToDatabaseValue(map(fn (CourseId $id): string => $id->value(), $value), $platform);
- }
-
- public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- $scalars = parent::convertToPHPValue($value, $platform);
-
- return map(fn (string $value): CourseId => new CourseId($value), $scalars);
- }
+ public static function customTypeName(): string
+ {
+ return 'course_ids';
+ }
+
+ public function getName(): string
+ {
+ return self::customTypeName();
+ }
+
+ public function convertToDatabaseValue($value, AbstractPlatform $platform)
+ {
+ return parent::convertToDatabaseValue(map(fn (CourseId $id): string => $id->value(), $value), $platform);
+ }
+
+ public function convertToPHPValue($value, AbstractPlatform $platform)
+ {
+ $scalars = parent::convertToPHPValue($value, $platform);
+
+ return map(fn (string $value): CourseId => new CourseId($value), $scalars);
+ }
}
diff --git a/src/Mooc/CoursesCounter/Infrastructure/Persistence/DoctrineCoursesCounterRepository.php b/src/Mooc/CoursesCounter/Infrastructure/Persistence/DoctrineCoursesCounterRepository.php
index 2de9f4ebc..64622b072 100644
--- a/src/Mooc/CoursesCounter/Infrastructure/Persistence/DoctrineCoursesCounterRepository.php
+++ b/src/Mooc/CoursesCounter/Infrastructure/Persistence/DoctrineCoursesCounterRepository.php
@@ -10,13 +10,13 @@
final class DoctrineCoursesCounterRepository extends DoctrineRepository implements CoursesCounterRepository
{
- public function save(CoursesCounter $counter): void
- {
- $this->persist($counter);
- }
+ public function save(CoursesCounter $counter): void
+ {
+ $this->persist($counter);
+ }
- public function search(): ?CoursesCounter
- {
- return $this->repository(CoursesCounter::class)->findOneBy([]);
- }
+ public function search(): ?CoursesCounter
+ {
+ return $this->repository(CoursesCounter::class)->findOneBy([]);
+ }
}
diff --git a/src/Mooc/Shared/Domain/Videos/VideoUrl.php b/src/Mooc/Shared/Domain/Videos/VideoUrl.php
index 9eae75f37..bb5d099d4 100644
--- a/src/Mooc/Shared/Domain/Videos/VideoUrl.php
+++ b/src/Mooc/Shared/Domain/Videos/VideoUrl.php
@@ -9,17 +9,17 @@
final class VideoUrl extends StringValueObject
{
- public function __construct(string $value)
- {
- $this->ensureIsValidUrl($value);
+ public function __construct(string $value)
+ {
+ $this->ensureIsValidUrl($value);
- parent::__construct($value);
- }
+ parent::__construct($value);
+ }
- private function ensureIsValidUrl(string $url): void
- {
- if (filter_var($url, FILTER_VALIDATE_URL) === false) {
- throw new InvalidArgumentException(sprintf('The url <%s> is not well formatted', $url));
- }
- }
+ private function ensureIsValidUrl(string $url): void
+ {
+ 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 a6df25c8b..7b203d1fa 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
@@ -12,60 +12,60 @@
final class DbalTypesSearcher
{
- private const MAPPINGS_PATH = 'Infrastructure/Persistence/Doctrine';
-
- public static function inPath(string $path, string $contextName): array
- {
- $possibleDbalDirectories = self::possibleDbalPaths($path);
- $dbalDirectories = filter(self::isExistingDbalPath(), $possibleDbalDirectories);
-
- return reduce(self::dbalClassesSearcher($contextName), $dbalDirectories, []);
- }
-
- private static function modulesInPath(string $path): array
- {
- return filter(
- static fn (string $possibleModule): bool => !in_array($possibleModule, ['.', '..'], true),
- scandir($path)
- );
- }
-
- private static function possibleDbalPaths(string $path): array
- {
- return map(
- static function (mixed $_unused, string $module) use ($path) {
- $mappingsPath = self::MAPPINGS_PATH;
-
- return realpath("$path/$module/$mappingsPath");
- },
- array_flip(self::modulesInPath($path))
- );
- }
-
- private static function isExistingDbalPath(): callable
- {
- return static fn (string $path): bool => !empty($path);
- }
-
- private static function dbalClassesSearcher(string $contextName): callable
- {
- return static function (array $totalNamespaces, string $path) use ($contextName): array {
- $possibleFiles = scandir($path);
- $files = filter(static fn (string $file): bool => Utils::endsWith('Type.php', $file), $possibleFiles);
-
- $namespaces = map(
- static function (string $file) use ($path, $contextName): string {
- $fullPath = "$path/$file";
- $splittedPath = explode("/src/$contextName/", $fullPath);
-
- $classWithoutPrefix = str_replace(['.php', '/'], ['', '\\'], $splittedPath[1]);
-
- return "CodelyTv\\$contextName\\$classWithoutPrefix";
- },
- $files
- );
-
- return array_merge($totalNamespaces, $namespaces);
- };
- }
+ private const MAPPINGS_PATH = 'Infrastructure/Persistence/Doctrine';
+
+ public static function inPath(string $path, string $contextName): array
+ {
+ $possibleDbalDirectories = self::possibleDbalPaths($path);
+ $dbalDirectories = filter(self::isExistingDbalPath(), $possibleDbalDirectories);
+
+ return reduce(self::dbalClassesSearcher($contextName), $dbalDirectories, []);
+ }
+
+ private static function modulesInPath(string $path): array
+ {
+ return filter(
+ static fn (string $possibleModule): bool => !in_array($possibleModule, ['.', '..'], true),
+ scandir($path)
+ );
+ }
+
+ private static function possibleDbalPaths(string $path): array
+ {
+ return map(
+ static function (mixed $_unused, string $module) use ($path) {
+ $mappingsPath = self::MAPPINGS_PATH;
+
+ return realpath("$path/$module/$mappingsPath");
+ },
+ array_flip(self::modulesInPath($path))
+ );
+ }
+
+ private static function isExistingDbalPath(): callable
+ {
+ return static fn (string $path): bool => !empty($path);
+ }
+
+ private static function dbalClassesSearcher(string $contextName): callable
+ {
+ return static function (array $totalNamespaces, string $path) use ($contextName): array {
+ $possibleFiles = scandir($path);
+ $files = filter(static fn (string $file): bool => Utils::endsWith('Type.php', $file), $possibleFiles);
+
+ $namespaces = map(
+ static function (string $file) use ($path, $contextName): string {
+ $fullPath = "$path/$file";
+ $splittedPath = explode("/src/$contextName/", $fullPath);
+
+ $classWithoutPrefix = str_replace(['.php', '/'], ['', '\\'], $splittedPath[1]);
+
+ return "CodelyTv\\$contextName\\$classWithoutPrefix";
+ },
+ $files
+ );
+
+ return array_merge($totalNamespaces, $namespaces);
+ };
+ }
}
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
index ac1ae3c2e..85f65ed63 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DoctrinePrefixesSearcher.php
@@ -10,43 +10,43 @@
final class DoctrinePrefixesSearcher
{
- private const MAPPINGS_PATH = 'Infrastructure/Persistence/Doctrine';
-
- public static function inPath(string $path, string $baseNamespace): array
- {
- $possibleMappingDirectories = self::possibleMappingPaths($path);
- $mappingDirectories = filter(self::isExistingMappingPath(), $possibleMappingDirectories);
-
- return array_flip(reindex(self::namespaceFormatter($baseNamespace), $mappingDirectories));
- }
-
- private static function modulesInPath(string $path): array
- {
- return filter(
- static fn (string $possibleModule): bool => !in_array($possibleModule, ['.', '..'], true),
- scandir($path)
- );
- }
-
- private static function possibleMappingPaths(string $path): array
- {
- return map(
- static function (mixed $_unused, string $module) use ($path) {
- $mappingsPath = self::MAPPINGS_PATH;
-
- return realpath("$path/$module/$mappingsPath");
- },
- array_flip(self::modulesInPath($path))
- );
- }
-
- private static function isExistingMappingPath(): callable
- {
- return static fn (string $path): bool => !empty($path);
- }
-
- private static function namespaceFormatter(string $baseNamespace): callable
- {
- return static fn (string $path, string $module): string => "$baseNamespace\\$module\Domain";
- }
+ private const MAPPINGS_PATH = 'Infrastructure/Persistence/Doctrine';
+
+ public static function inPath(string $path, string $baseNamespace): array
+ {
+ $possibleMappingDirectories = self::possibleMappingPaths($path);
+ $mappingDirectories = filter(self::isExistingMappingPath(), $possibleMappingDirectories);
+
+ return array_flip(reindex(self::namespaceFormatter($baseNamespace), $mappingDirectories));
+ }
+
+ private static function modulesInPath(string $path): array
+ {
+ return filter(
+ static fn (string $possibleModule): bool => !in_array($possibleModule, ['.', '..'], true),
+ scandir($path)
+ );
+ }
+
+ private static function possibleMappingPaths(string $path): array
+ {
+ return map(
+ static function (mixed $_unused, string $module) use ($path) {
+ $mappingsPath = self::MAPPINGS_PATH;
+
+ return realpath("$path/$module/$mappingsPath");
+ },
+ array_flip(self::modulesInPath($path))
+ );
+ }
+
+ private static function isExistingMappingPath(): callable
+ {
+ return static fn (string $path): bool => !empty($path);
+ }
+
+ private static function namespaceFormatter(string $baseNamespace): callable
+ {
+ return static fn (string $path, string $module): string => "$baseNamespace\\$module\Domain";
+ }
}
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/MoocEntityManagerFactory.php b/src/Mooc/Shared/Infrastructure/Doctrine/MoocEntityManagerFactory.php
index 5c31fca56..71f0b4566 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/MoocEntityManagerFactory.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/MoocEntityManagerFactory.php
@@ -9,25 +9,25 @@
final class MoocEntityManagerFactory
{
- private const SCHEMA_PATH = __DIR__ . '/../../../../../etc/databases/mooc.sql';
-
- public static function create(array $parameters, string $environment): EntityManagerInterface
- {
- $isDevMode = $environment !== 'prod';
-
- $prefixes = array_merge(
- DoctrinePrefixesSearcher::inPath(__DIR__ . '/../../../../Mooc', 'CodelyTv\Mooc'),
- DoctrinePrefixesSearcher::inPath(__DIR__ . '/../../../../Backoffice', 'CodelyTv\Backoffice')
- );
-
- $dbalCustomTypesClasses = DbalTypesSearcher::inPath(__DIR__ . '/../../../../Mooc', 'Mooc');
-
- return DoctrineEntityManagerFactory::create(
- $parameters,
- $prefixes,
- $isDevMode,
- self::SCHEMA_PATH,
- $dbalCustomTypesClasses
- );
- }
+ private const SCHEMA_PATH = __DIR__ . '/../../../../../etc/databases/mooc.sql';
+
+ public static function create(array $parameters, string $environment): EntityManagerInterface
+ {
+ $isDevMode = $environment !== 'prod';
+
+ $prefixes = array_merge(
+ DoctrinePrefixesSearcher::inPath(__DIR__ . '/../../../../Mooc', 'CodelyTv\Mooc'),
+ DoctrinePrefixesSearcher::inPath(__DIR__ . '/../../../../Backoffice', 'CodelyTv\Backoffice')
+ );
+
+ $dbalCustomTypesClasses = DbalTypesSearcher::inPath(__DIR__ . '/../../../../Mooc', 'Mooc');
+
+ return DoctrineEntityManagerFactory::create(
+ $parameters,
+ $prefixes,
+ $isDevMode,
+ self::SCHEMA_PATH,
+ $dbalCustomTypesClasses
+ );
+ }
}
diff --git a/src/Mooc/Videos/Application/Create/CreateVideoCommand.php b/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
index d2104597b..0a94120f5 100644
--- a/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
+++ b/src/Mooc/Videos/Application/Create/CreateVideoCommand.php
@@ -8,36 +8,36 @@
final readonly class CreateVideoCommand implements Command
{
- public function __construct(
- private string $id,
- private string $type,
- private string $title,
- private string $url,
- private string $courseId
- ) {}
-
- public function id(): string
- {
- return $this->id;
- }
-
- public function type(): string
- {
- return $this->type;
- }
-
- public function title(): string
- {
- return $this->title;
- }
-
- public function url(): string
- {
- return $this->url;
- }
-
- public function courseId(): string
- {
- return $this->courseId;
- }
+ public function __construct(
+ private string $id,
+ private string $type,
+ private string $title,
+ private string $url,
+ private string $courseId
+ ) {}
+
+ public function id(): string
+ {
+ return $this->id;
+ }
+
+ public function type(): string
+ {
+ return $this->type;
+ }
+
+ public function title(): string
+ {
+ return $this->title;
+ }
+
+ public function url(): string
+ {
+ return $this->url;
+ }
+
+ public function courseId(): string
+ {
+ return $this->courseId;
+ }
}
diff --git a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
index 608900a2e..4e9222d0b 100644
--- a/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
+++ b/src/Mooc/Videos/Application/Create/CreateVideoCommandHandler.php
@@ -13,16 +13,16 @@
final readonly class CreateVideoCommandHandler implements CommandHandler
{
- public function __construct(private VideoCreator $creator) {}
+ public function __construct(private VideoCreator $creator) {}
- public function __invoke(CreateVideoCommand $command): void
- {
- $id = new VideoId($command->id());
- $type = VideoType::from($command->type());
- $title = new VideoTitle($command->title());
- $url = new VideoUrl($command->url());
- $courseId = new CourseId($command->courseId());
+ public function __invoke(CreateVideoCommand $command): void
+ {
+ $id = new VideoId($command->id());
+ $type = VideoType::from($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);
- }
+ $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 f2054a6ae..a3bb4a193 100644
--- a/src/Mooc/Videos/Application/Create/VideoCreator.php
+++ b/src/Mooc/Videos/Application/Create/VideoCreator.php
@@ -15,14 +15,14 @@
final readonly class VideoCreator
{
- public function __construct(private VideoRepository $repository, private 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
- {
- $video = Video::create($id, $type, $title, $url, $courseId);
+ public function create(VideoId $id, VideoType $type, VideoTitle $title, VideoUrl $url, CourseId $courseId): void
+ {
+ $video = Video::create($id, $type, $title, $url, $courseId);
- $this->repository->save($video);
+ $this->repository->save($video);
- $this->bus->publish(...$video->pullDomainEvents());
- }
+ $this->bus->publish(...$video->pullDomainEvents());
+ }
}
diff --git a/src/Mooc/Videos/Application/Find/FindVideoQuery.php b/src/Mooc/Videos/Application/Find/FindVideoQuery.php
index 1f3a652be..5df95d32b 100644
--- a/src/Mooc/Videos/Application/Find/FindVideoQuery.php
+++ b/src/Mooc/Videos/Application/Find/FindVideoQuery.php
@@ -8,10 +8,10 @@
final readonly class FindVideoQuery implements Query
{
- public function __construct(private string $id) {}
+ public function __construct(private string $id) {}
- public function id(): string
- {
- return $this->id;
- }
+ public function id(): string
+ {
+ return $this->id;
+ }
}
diff --git a/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php b/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php
index 377f08e39..c533ce272 100644
--- a/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php
+++ b/src/Mooc/Videos/Application/Find/FindVideoQueryHandler.php
@@ -11,19 +11,19 @@
final readonly class FindVideoQueryHandler implements QueryHandler
{
- private VideoResponseConverter $responseConverter;
+ private VideoResponseConverter $responseConverter;
- public function __construct(private VideoFinder $finder)
- {
- $this->responseConverter = new VideoResponseConverter();
- }
+ public function __construct(private VideoFinder $finder)
+ {
+ $this->responseConverter = new VideoResponseConverter();
+ }
- public function __invoke(FindVideoQuery $query): VideoResponse
- {
- $id = new VideoId($query->id());
+ public function __invoke(FindVideoQuery $query): VideoResponse
+ {
+ $id = new VideoId($query->id());
- $video = apply($this->finder, [$id]);
+ $video = apply($this->finder, [$id]);
- return apply($this->responseConverter, [$video]);
- }
+ return apply($this->responseConverter, [$video]);
+ }
}
diff --git a/src/Mooc/Videos/Application/Find/VideoFinder.php b/src/Mooc/Videos/Application/Find/VideoFinder.php
index 4e53fb8f7..103ff6e75 100644
--- a/src/Mooc/Videos/Application/Find/VideoFinder.php
+++ b/src/Mooc/Videos/Application/Find/VideoFinder.php
@@ -11,15 +11,15 @@
final class VideoFinder
{
- private readonly DomainVideoFinder $finder;
+ private readonly DomainVideoFinder $finder;
- public function __construct(VideoRepository $repository)
- {
- $this->finder = new DomainVideoFinder($repository);
- }
+ public function __construct(VideoRepository $repository)
+ {
+ $this->finder = new DomainVideoFinder($repository);
+ }
- public function __invoke(VideoId $id): Video
- {
- return $this->finder->__invoke($id);
- }
+ public function __invoke(VideoId $id): Video
+ {
+ return $this->finder->__invoke($id);
+ }
}
diff --git a/src/Mooc/Videos/Application/Find/VideoResponse.php b/src/Mooc/Videos/Application/Find/VideoResponse.php
index e261a18d0..fb1061754 100644
--- a/src/Mooc/Videos/Application/Find/VideoResponse.php
+++ b/src/Mooc/Videos/Application/Find/VideoResponse.php
@@ -8,11 +8,11 @@
final readonly class VideoResponse implements Response
{
- public function __construct(
- private string $id,
- private string $type,
- private string $title,
- private string $url,
- private string $courseId
- ) {}
+ public function __construct(
+ private string $id,
+ private string $type,
+ private string $title,
+ private string $url,
+ private string $courseId
+ ) {}
}
diff --git a/src/Mooc/Videos/Application/Find/VideoResponseConverter.php b/src/Mooc/Videos/Application/Find/VideoResponseConverter.php
index 23d890eb8..c766fe0cf 100644
--- a/src/Mooc/Videos/Application/Find/VideoResponseConverter.php
+++ b/src/Mooc/Videos/Application/Find/VideoResponseConverter.php
@@ -8,14 +8,14 @@
final class VideoResponseConverter
{
- public function __invoke(Video $video): VideoResponse
- {
- return new VideoResponse(
- $video->id()->value(),
- $video->type()->value,
- $video->title()->value(),
- $video->url()->value(),
- $video->courseId()->value()
- );
- }
+ public function __invoke(Video $video): VideoResponse
+ {
+ return new VideoResponse(
+ $video->id()->value(),
+ $video->type()->value,
+ $video->title()->value(),
+ $video->url()->value(),
+ $video->courseId()->value()
+ );
+ }
}
diff --git a/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php b/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
index f2dcea30b..bb2ab5038 100644
--- a/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
+++ b/src/Mooc/Videos/Application/Trim/TrimVideoCommand.php
@@ -8,20 +8,20 @@
final readonly class TrimVideoCommand implements Command
{
- public function __construct(private string $videoId, private int $keepFromSecond, private int $keepToSecond) {}
+ public function __construct(private string $videoId, private int $keepFromSecond, private int $keepToSecond) {}
- public function videoId(): string
- {
- return $this->videoId;
- }
+ public function videoId(): string
+ {
+ return $this->videoId;
+ }
- public function keepFromSecond(): int
- {
- return $this->keepFromSecond;
- }
+ public function keepFromSecond(): int
+ {
+ return $this->keepFromSecond;
+ }
- public function keepToSecond(): int
- {
- return $this->keepToSecond;
- }
+ public function keepToSecond(): int
+ {
+ return $this->keepToSecond;
+ }
}
diff --git a/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php b/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php
index e51a39cc4..94cf1e676 100644
--- a/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php
+++ b/src/Mooc/Videos/Application/Trim/TrimVideoCommandHandler.php
@@ -9,13 +9,13 @@
final readonly class TrimVideoCommandHandler
{
- public function __construct(private VideoTrimmer $trimmer) {}
+ public function __construct(private VideoTrimmer $trimmer) {}
- public function __invoke(TrimVideoCommand $command): void
- {
- $id = new VideoId($command->videoId());
- $interval = SecondsInterval::fromValues($command->keepFromSecond(), $command->keepToSecond());
+ public function __invoke(TrimVideoCommand $command): void
+ {
+ $id = new VideoId($command->videoId());
+ $interval = SecondsInterval::fromValues($command->keepFromSecond(), $command->keepToSecond());
- $this->trimmer->trim($id, $interval);
- }
+ $this->trimmer->trim($id, $interval);
+ }
}
diff --git a/src/Mooc/Videos/Application/Trim/VideoTrimmer.php b/src/Mooc/Videos/Application/Trim/VideoTrimmer.php
index 1f7fc8dd5..75a6d4624 100644
--- a/src/Mooc/Videos/Application/Trim/VideoTrimmer.php
+++ b/src/Mooc/Videos/Application/Trim/VideoTrimmer.php
@@ -9,5 +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 3670cb513..523217fbd 100644
--- a/src/Mooc/Videos/Application/Update/VideoTitleUpdater.php
+++ b/src/Mooc/Videos/Application/Update/VideoTitleUpdater.php
@@ -11,19 +11,19 @@
final readonly class VideoTitleUpdater
{
- private VideoFinder $finder;
+ private VideoFinder $finder;
- public function __construct(private VideoRepository $repository)
- {
- $this->finder = new VideoFinder($repository);
- }
+ public function __construct(private VideoRepository $repository)
+ {
+ $this->finder = new VideoFinder($repository);
+ }
- public function __invoke(VideoId $id, VideoTitle $newTitle): void
- {
- $video = $this->finder->__invoke($id);
+ public function __invoke(VideoId $id, VideoTitle $newTitle): void
+ {
+ $video = $this->finder->__invoke($id);
- $video->updateTitle($newTitle);
+ $video->updateTitle($newTitle);
- $this->repository->save($video);
- }
+ $this->repository->save($video);
+ }
}
diff --git a/src/Mooc/Videos/Domain/Video.php b/src/Mooc/Videos/Domain/Video.php
index 567d7231a..db7a35bdc 100644
--- a/src/Mooc/Videos/Domain/Video.php
+++ b/src/Mooc/Videos/Domain/Video.php
@@ -10,63 +10,57 @@
final class Video extends AggregateRoot
{
- public function __construct(
- private readonly VideoId $id,
- private readonly VideoType $type,
- private VideoTitle $title,
- private readonly VideoUrl $url,
- private readonly CourseId $courseId
- ) {}
+ public function __construct(
+ private readonly VideoId $id,
+ private readonly VideoType $type,
+ private VideoTitle $title,
+ private readonly VideoUrl $url,
+ private readonly CourseId $courseId
+ ) {}
- public static function create(
- VideoId $id,
- VideoType $type,
- VideoTitle $title,
- VideoUrl $url,
- CourseId $courseId
- ): self {
- $video = new self($id, $type, $title, $url, $courseId);
+ public static function create(
+ VideoId $id,
+ VideoType $type,
+ VideoTitle $title,
+ VideoUrl $url,
+ CourseId $courseId
+ ): self {
+ $video = new self($id, $type, $title, $url, $courseId);
- $video->record(
- new VideoCreatedDomainEvent(
- $id->value(),
- $type->value,
- $title->value(),
- $url->value(),
- $courseId->value()
- )
- );
+ $video->record(
+ new VideoCreatedDomainEvent($id->value(), $type->value, $title->value(), $url->value(), $courseId->value())
+ );
- return $video;
- }
+ return $video;
+ }
- public function updateTitle(VideoTitle $newTitle): void
- {
- $this->title = $newTitle;
- }
+ public function updateTitle(VideoTitle $newTitle): void
+ {
+ $this->title = $newTitle;
+ }
- public function id(): VideoId
- {
- return $this->id;
- }
+ public function id(): VideoId
+ {
+ return $this->id;
+ }
- public function type(): VideoType
- {
- return $this->type;
- }
+ public function type(): VideoType
+ {
+ return $this->type;
+ }
- public function title(): VideoTitle
- {
- return $this->title;
- }
+ public function title(): VideoTitle
+ {
+ return $this->title;
+ }
- public function url(): VideoUrl
- {
- return $this->url;
- }
+ public function url(): VideoUrl
+ {
+ return $this->url;
+ }
- public function courseId(): CourseId
- {
- return $this->courseId;
- }
+ public function courseId(): CourseId
+ {
+ return $this->courseId;
+ }
}
diff --git a/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php b/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php
index 829ee3884..61cd7f8e8 100644
--- a/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php
+++ b/src/Mooc/Videos/Domain/VideoCreatedDomainEvent.php
@@ -8,47 +8,47 @@
final class VideoCreatedDomainEvent extends DomainEvent
{
- public function __construct(
- string $id,
- private readonly string $type,
- private readonly string $title,
- private readonly string $url,
- private readonly string $courseId,
- string $eventId = null,
- string $occurredOn = null
- ) {
- parent::__construct($id, $eventId, $occurredOn);
- }
+ public function __construct(
+ string $id,
+ private readonly string $type,
+ private readonly string $title,
+ private readonly string $url,
+ private readonly string $courseId,
+ string $eventId = null,
+ string $occurredOn = null
+ ) {
+ parent::__construct($id, $eventId, $occurredOn);
+ }
- public static function eventName(): string
- {
- return 'video.created';
- }
+ public static function eventName(): string
+ {
+ return 'video.created';
+ }
- public static function fromPrimitives(
- string $aggregateId,
- array $body,
- string $eventId,
- string $occurredOn
- ): self {
- return new self(
- $aggregateId,
- $body['type'],
- $body['title'],
- $body['url'],
- $body['course_id'],
- $eventId,
- $occurredOn
- );
- }
+ public static function fromPrimitives(
+ string $aggregateId,
+ array $body,
+ string $eventId,
+ string $occurredOn
+ ): self {
+ return new self(
+ $aggregateId,
+ $body['type'],
+ $body['title'],
+ $body['url'],
+ $body['course_id'],
+ $eventId,
+ $occurredOn
+ );
+ }
- public function toPrimitives(): array
- {
- return [
- 'type' => $this->type,
- 'title' => $this->title,
- 'url' => $this->url,
- 'course_id' => $this->courseId,
- ];
- }
+ public function toPrimitives(): array
+ {
+ return [
+ '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 19109faf4..2386116ef 100644
--- a/src/Mooc/Videos/Domain/VideoFinder.php
+++ b/src/Mooc/Videos/Domain/VideoFinder.php
@@ -6,16 +6,16 @@
final readonly class VideoFinder
{
- public function __construct(private VideoRepository $repository) {}
+ public function __construct(private VideoRepository $repository) {}
- public function __invoke(VideoId $id): Video
- {
- $video = $this->repository->search($id);
+ public function __invoke(VideoId $id): Video
+ {
+ $video = $this->repository->search($id);
- if ($video === null) {
- throw new VideoNotFound($id);
- }
+ if ($video === null) {
+ throw new VideoNotFound($id);
+ }
- return $video;
- }
+ return $video;
+ }
}
diff --git a/src/Mooc/Videos/Domain/VideoNotFound.php b/src/Mooc/Videos/Domain/VideoNotFound.php
index 7ba9f1dfd..fdbdf69de 100644
--- a/src/Mooc/Videos/Domain/VideoNotFound.php
+++ b/src/Mooc/Videos/Domain/VideoNotFound.php
@@ -8,18 +8,18 @@
final class VideoNotFound extends DomainError
{
- public function __construct(private readonly VideoId $id)
- {
- parent::__construct();
- }
+ public function __construct(private readonly VideoId $id)
+ {
+ parent::__construct();
+ }
- public function errorCode(): string
- {
- return 'video_not_found';
- }
+ public function errorCode(): string
+ {
+ return 'video_not_found';
+ }
- protected function errorMessage(): string
- {
- return sprintf('The video <%s> has not been found', $this->id->value());
- }
+ protected function errorMessage(): string
+ {
+ return sprintf('The video <%s> has not been found', $this->id->value());
+ }
}
diff --git a/src/Mooc/Videos/Domain/VideoRepository.php b/src/Mooc/Videos/Domain/VideoRepository.php
index 7e68907a8..0cd6aae41 100644
--- a/src/Mooc/Videos/Domain/VideoRepository.php
+++ b/src/Mooc/Videos/Domain/VideoRepository.php
@@ -8,9 +8,9 @@
interface VideoRepository
{
- public function save(Video $video): void;
+ public function save(Video $video): void;
- public function search(VideoId $id): ?Video;
+ public function search(VideoId $id): ?Video;
- public function searchByCriteria(Criteria $criteria): Videos;
+ public function searchByCriteria(Criteria $criteria): Videos;
}
diff --git a/src/Mooc/Videos/Domain/VideoType.php b/src/Mooc/Videos/Domain/VideoType.php
index 7560b64cf..13a3a23f4 100644
--- a/src/Mooc/Videos/Domain/VideoType.php
+++ b/src/Mooc/Videos/Domain/VideoType.php
@@ -6,6 +6,6 @@
enum VideoType: string
{
- case SCREENCAST = 'screencast';
- case INTERVIEW = 'interview';
+ case SCREENCAST = 'screencast';
+ case INTERVIEW = 'interview';
}
diff --git a/src/Mooc/Videos/Domain/Videos.php b/src/Mooc/Videos/Domain/Videos.php
index e749b0726..9a21231d5 100644
--- a/src/Mooc/Videos/Domain/Videos.php
+++ b/src/Mooc/Videos/Domain/Videos.php
@@ -8,8 +8,8 @@
final class Videos extends Collection
{
- protected function type(): string
- {
- return Video::class;
- }
+ protected function type(): string
+ {
+ return Video::class;
+ }
}
diff --git a/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php b/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php
index 7f5eef170..2db8f8d8c 100644
--- a/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php
+++ b/src/Mooc/Videos/Infrastructure/Persistence/Doctrine/VideoIdType.php
@@ -9,8 +9,8 @@
final class VideoIdType extends UuidType
{
- protected function typeClassName(): string
- {
- return VideoId::class;
- }
+ protected function typeClassName(): string
+ {
+ return VideoId::class;
+ }
}
diff --git a/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php b/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php
index fffa093fe..76e4d8a0c 100644
--- a/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php
+++ b/src/Mooc/Videos/Infrastructure/Persistence/VideoRepositoryMySql.php
@@ -14,29 +14,29 @@
final class VideoRepositoryMySql extends DoctrineRepository implements VideoRepository
{
- private static array $criteriaToDoctrineFields = [
- 'id' => 'id',
- 'type' => 'type',
- 'title' => 'title',
- 'url' => 'url',
- 'course_id' => 'courseId',
- ];
-
- public function save(Video $video): void
- {
- $this->persist($video);
- }
-
- public function search(VideoId $id): ?Video
- {
- return $this->repository(Video::class)->find($id);
- }
-
- public function searchByCriteria(Criteria $criteria): Videos
- {
- $doctrineCriteria = DoctrineCriteriaConverter::convert($criteria, self::$criteriaToDoctrineFields);
- $videos = $this->repository(Video::class)->matching($doctrineCriteria)->toArray();
-
- return new Videos($videos);
- }
+ private static array $criteriaToDoctrineFields = [
+ 'id' => 'id',
+ 'type' => 'type',
+ 'title' => 'title',
+ 'url' => 'url',
+ 'course_id' => 'courseId',
+ ];
+
+ public function save(Video $video): void
+ {
+ $this->persist($video);
+ }
+
+ public function search(VideoId $id): ?Video
+ {
+ return $this->repository(Video::class)->find($id);
+ }
+
+ public function searchByCriteria(Criteria $criteria): Videos
+ {
+ $doctrineCriteria = DoctrineCriteriaConverter::convert($criteria, self::$criteriaToDoctrineFields);
+ $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 9c2d69d91..8162916cf 100644
--- a/src/Shared/Domain/Aggregate/AggregateRoot.php
+++ b/src/Shared/Domain/Aggregate/AggregateRoot.php
@@ -8,18 +8,18 @@
abstract class AggregateRoot
{
- private array $domainEvents = [];
+ private array $domainEvents = [];
- final public function pullDomainEvents(): array
- {
- $domainEvents = $this->domainEvents;
- $this->domainEvents = [];
+ final public function pullDomainEvents(): array
+ {
+ $domainEvents = $this->domainEvents;
+ $this->domainEvents = [];
- return $domainEvents;
- }
+ return $domainEvents;
+ }
- final protected function record(DomainEvent $domainEvent): void
- {
- $this->domainEvents[] = $domainEvent;
- }
+ final protected function record(DomainEvent $domainEvent): void
+ {
+ $this->domainEvents[] = $domainEvent;
+ }
}
diff --git a/src/Shared/Domain/Assert.php b/src/Shared/Domain/Assert.php
index 1a56c0387..d1c5f6e2d 100644
--- a/src/Shared/Domain/Assert.php
+++ b/src/Shared/Domain/Assert.php
@@ -8,19 +8,17 @@
final class Assert
{
- public static function arrayOf(string $class, array $items): void
- {
- foreach ($items as $item) {
- self::instanceOf($class, $item);
- }
- }
+ public static function arrayOf(string $class, array $items): void
+ {
+ foreach ($items as $item) {
+ self::instanceOf($class, $item);
+ }
+ }
- public static function instanceOf(string $class, mixed $item): void
- {
- if (!$item instanceof $class) {
- throw new InvalidArgumentException(
- sprintf('The object <%s> is not an instance of <%s>', $class, $item::class)
- );
- }
- }
+ public static function instanceOf(string $class, mixed $item): void
+ {
+ if (!$item instanceof $class) {
+ throw new InvalidArgumentException(sprintf('The object <%s> is not an instance of <%s>', $class, $item::class));
+ }
+ }
}
diff --git a/src/Shared/Domain/Bus/Command/CommandBus.php b/src/Shared/Domain/Bus/Command/CommandBus.php
index 2c82ef796..fdf5e9ef9 100644
--- a/src/Shared/Domain/Bus/Command/CommandBus.php
+++ b/src/Shared/Domain/Bus/Command/CommandBus.php
@@ -6,5 +6,5 @@
interface CommandBus
{
- public function dispatch(Command $command): void;
+ public function dispatch(Command $command): void;
}
diff --git a/src/Shared/Domain/Bus/Event/DomainEvent.php b/src/Shared/Domain/Bus/Event/DomainEvent.php
index 9ea835826..ffc7b0641 100644
--- a/src/Shared/Domain/Bus/Event/DomainEvent.php
+++ b/src/Shared/Domain/Bus/Event/DomainEvent.php
@@ -10,38 +10,38 @@
abstract class DomainEvent
{
- private readonly string $eventId;
- private readonly string $occurredOn;
-
- public function __construct(private readonly string $aggregateId, string $eventId = null, string $occurredOn = null)
- {
- $this->eventId = $eventId ?: SimpleUuid::random()->value();
- $this->occurredOn = $occurredOn ?: Utils::dateToString(new DateTimeImmutable());
- }
-
- abstract public static function fromPrimitives(
- string $aggregateId,
- array $body,
- string $eventId,
- string $occurredOn
- ): self;
-
- abstract public static function eventName(): string;
-
- abstract public function toPrimitives(): array;
-
- final public function aggregateId(): string
- {
- return $this->aggregateId;
- }
-
- final public function eventId(): string
- {
- return $this->eventId;
- }
-
- final public function occurredOn(): string
- {
- return $this->occurredOn;
- }
+ private readonly string $eventId;
+ private readonly string $occurredOn;
+
+ public function __construct(private readonly string $aggregateId, string $eventId = null, string $occurredOn = null)
+ {
+ $this->eventId = $eventId ?: SimpleUuid::random()->value();
+ $this->occurredOn = $occurredOn ?: Utils::dateToString(new DateTimeImmutable());
+ }
+
+ abstract public static function fromPrimitives(
+ string $aggregateId,
+ array $body,
+ string $eventId,
+ string $occurredOn
+ ): self;
+
+ abstract public static function eventName(): string;
+
+ abstract public function toPrimitives(): array;
+
+ final public function aggregateId(): string
+ {
+ return $this->aggregateId;
+ }
+
+ final public function eventId(): string
+ {
+ return $this->eventId;
+ }
+
+ final public function occurredOn(): string
+ {
+ return $this->occurredOn;
+ }
}
diff --git a/src/Shared/Domain/Bus/Event/DomainEventSubscriber.php b/src/Shared/Domain/Bus/Event/DomainEventSubscriber.php
index 54903808c..a94a22bc9 100644
--- a/src/Shared/Domain/Bus/Event/DomainEventSubscriber.php
+++ b/src/Shared/Domain/Bus/Event/DomainEventSubscriber.php
@@ -6,5 +6,5 @@
interface DomainEventSubscriber
{
- public static function subscribedTo(): array;
+ public static function subscribedTo(): array;
}
diff --git a/src/Shared/Domain/Bus/Event/EventBus.php b/src/Shared/Domain/Bus/Event/EventBus.php
index 164f77e9b..3be5d9782 100644
--- a/src/Shared/Domain/Bus/Event/EventBus.php
+++ b/src/Shared/Domain/Bus/Event/EventBus.php
@@ -6,5 +6,5 @@
interface EventBus
{
- public function publish(DomainEvent ...$events): void;
+ public function publish(DomainEvent ...$events): void;
}
diff --git a/src/Shared/Domain/Bus/Query/QueryBus.php b/src/Shared/Domain/Bus/Query/QueryBus.php
index dc74a4b9b..8abee3634 100644
--- a/src/Shared/Domain/Bus/Query/QueryBus.php
+++ b/src/Shared/Domain/Bus/Query/QueryBus.php
@@ -6,5 +6,5 @@
interface QueryBus
{
- public function ask(Query $query): ?Response;
+ public function ask(Query $query): ?Response;
}
diff --git a/src/Shared/Domain/Collection.php b/src/Shared/Domain/Collection.php
index a184dd3cb..c0b664aa8 100644
--- a/src/Shared/Domain/Collection.php
+++ b/src/Shared/Domain/Collection.php
@@ -12,25 +12,25 @@
/** @template-implements IteratorAggregate*/
abstract class Collection implements Countable, IteratorAggregate
{
- public function __construct(private readonly array $items)
- {
- Assert::arrayOf($this->type(), $items);
- }
-
- abstract protected function type(): string;
-
- final public function getIterator(): Traversable
- {
- return new ArrayIterator($this->items());
- }
-
- final public function count(): int
- {
- return count($this->items());
- }
-
- protected function items(): array
- {
- return $this->items;
- }
+ public function __construct(private readonly array $items)
+ {
+ Assert::arrayOf($this->type(), $items);
+ }
+
+ abstract protected function type(): string;
+
+ final public function getIterator(): Traversable
+ {
+ return new ArrayIterator($this->items());
+ }
+
+ final public function count(): int
+ {
+ return count($this->items());
+ }
+
+ protected function items(): array
+ {
+ return $this->items;
+ }
}
diff --git a/src/Shared/Domain/Criteria/Criteria.php b/src/Shared/Domain/Criteria/Criteria.php
index a1d7a85d9..876c9f441 100644
--- a/src/Shared/Domain/Criteria/Criteria.php
+++ b/src/Shared/Domain/Criteria/Criteria.php
@@ -6,56 +6,56 @@
final readonly class Criteria
{
- public function __construct(
- private Filters $filters,
- private Order $order,
- private ?int $offset,
- private ?int $limit
- ) {}
-
- public function hasFilters(): bool
- {
- return $this->filters->count() > 0;
- }
-
- public function hasOrder(): bool
- {
- return !$this->order->isNone();
- }
-
- public function plainFilters(): array
- {
- return $this->filters->filters();
- }
-
- public function filters(): Filters
- {
- return $this->filters;
- }
-
- public function order(): Order
- {
- return $this->order;
- }
-
- public function offset(): ?int
- {
- return $this->offset;
- }
-
- public function limit(): ?int
- {
- return $this->limit;
- }
-
- public function serialize(): string
- {
- return sprintf(
- '%s~~%s~~%s~~%s',
- $this->filters->serialize(),
- $this->order->serialize(),
- $this->offset ?? 'none',
- $this->limit ?? 'none'
- );
- }
+ public function __construct(
+ private Filters $filters,
+ private Order $order,
+ private ?int $offset,
+ private ?int $limit
+ ) {}
+
+ public function hasFilters(): bool
+ {
+ return $this->filters->count() > 0;
+ }
+
+ public function hasOrder(): bool
+ {
+ return !$this->order->isNone();
+ }
+
+ public function plainFilters(): array
+ {
+ return $this->filters->filters();
+ }
+
+ public function filters(): Filters
+ {
+ return $this->filters;
+ }
+
+ public function order(): Order
+ {
+ return $this->order;
+ }
+
+ public function offset(): ?int
+ {
+ return $this->offset;
+ }
+
+ public function limit(): ?int
+ {
+ return $this->limit;
+ }
+
+ public function serialize(): string
+ {
+ return sprintf(
+ '%s~~%s~~%s~~%s',
+ $this->filters->serialize(),
+ $this->order->serialize(),
+ $this->offset ?? 'none',
+ $this->limit ?? 'none'
+ );
+ }
}
diff --git a/src/Shared/Domain/Criteria/Filter.php b/src/Shared/Domain/Criteria/Filter.php
index 05afbb66c..33f15c365 100644
--- a/src/Shared/Domain/Criteria/Filter.php
+++ b/src/Shared/Domain/Criteria/Filter.php
@@ -6,38 +6,38 @@
final readonly class Filter
{
- public function __construct(
- private FilterField $field,
- private FilterOperator $operator,
- private FilterValue $value
- ) {}
-
- public static function fromValues(array $values): self
- {
- return new self(
- new FilterField($values['field']),
- FilterOperator::from($values['operator']),
- new FilterValue($values['value'])
- );
- }
-
- public function field(): FilterField
- {
- return $this->field;
- }
-
- public function operator(): FilterOperator
- {
- return $this->operator;
- }
-
- public function value(): FilterValue
- {
- return $this->value;
- }
-
- public function serialize(): string
- {
- return sprintf('%s.%s.%s', $this->field->value(), $this->operator->value, $this->value->value());
- }
+ public function __construct(
+ private FilterField $field,
+ private FilterOperator $operator,
+ private FilterValue $value
+ ) {}
+
+ public static function fromValues(array $values): self
+ {
+ return new self(
+ new FilterField($values['field']),
+ FilterOperator::from($values['operator']),
+ new FilterValue($values['value'])
+ );
+ }
+
+ public function field(): FilterField
+ {
+ return $this->field;
+ }
+
+ public function operator(): FilterOperator
+ {
+ return $this->operator;
+ }
+
+ public function value(): FilterValue
+ {
+ return $this->value;
+ }
+
+ public function serialize(): string
+ {
+ return sprintf('%s.%s.%s', $this->field->value(), $this->operator->value, $this->value->value());
+ }
}
diff --git a/src/Shared/Domain/Criteria/FilterOperator.php b/src/Shared/Domain/Criteria/FilterOperator.php
index 5f6f151ac..3bd946967 100644
--- a/src/Shared/Domain/Criteria/FilterOperator.php
+++ b/src/Shared/Domain/Criteria/FilterOperator.php
@@ -6,15 +6,15 @@
enum FilterOperator: string
{
- case EQUAL = '=';
- case NOT_EQUAL = '!=';
- case GT = '>';
- case LT = '<';
- case CONTAINS = 'CONTAINS';
- case NOT_CONTAINS = 'NOT_CONTAINS';
+ case EQUAL = '=';
+ case NOT_EQUAL = '!=';
+ case GT = '>';
+ case LT = '<';
+ case CONTAINS = 'CONTAINS';
+ case NOT_CONTAINS = 'NOT_CONTAINS';
- public function isContaining(): bool
- {
- return in_array($this->value, [self::CONTAINS->value, self::NOT_CONTAINS->value], true);
- }
+ public function isContaining(): bool
+ {
+ return in_array($this->value, [self::CONTAINS->value, self::NOT_CONTAINS->value], true);
+ }
}
diff --git a/src/Shared/Domain/Criteria/Filters.php b/src/Shared/Domain/Criteria/Filters.php
index 04af22fac..bea6863e3 100644
--- a/src/Shared/Domain/Criteria/Filters.php
+++ b/src/Shared/Domain/Criteria/Filters.php
@@ -10,41 +10,37 @@
final class Filters extends Collection
{
- public static function fromValues(array $values): self
- {
- return new self(array_map(self::filterBuilder(), $values));
- }
-
- private static function filterBuilder(): callable
- {
- return fn (array $values): Filter => Filter::fromValues($values);
- }
-
- public function add(Filter $filter): self
- {
- return new self(array_merge($this->items(), [$filter]));
- }
-
- public function filters(): array
- {
- return $this->items();
- }
-
- public function serialize(): string
- {
- return reduce(
- static fn (string $accumulate, Filter $filter): string => sprintf(
- '%s^%s',
- $accumulate,
- $filter->serialize()
- ),
- $this->items(),
- ''
- );
- }
-
- protected function type(): string
- {
- return Filter::class;
- }
+ public static function fromValues(array $values): self
+ {
+ return new self(array_map(self::filterBuilder(), $values));
+ }
+
+ private static function filterBuilder(): callable
+ {
+ return fn (array $values): Filter => Filter::fromValues($values);
+ }
+
+ public function add(Filter $filter): self
+ {
+ return new self(array_merge($this->items(), [$filter]));
+ }
+
+ public function filters(): array
+ {
+ return $this->items();
+ }
+
+ public function serialize(): string
+ {
+ return reduce(
+ static fn (string $accumulate, Filter $filter): string => sprintf('%s^%s', $accumulate, $filter->serialize()),
+ $this->items(),
+ ''
+ );
+ }
+
+ protected function type(): string
+ {
+ return Filter::class;
+ }
}
diff --git a/src/Shared/Domain/Criteria/Order.php b/src/Shared/Domain/Criteria/Order.php
index afcc3303f..dfbc8e016 100644
--- a/src/Shared/Domain/Criteria/Order.php
+++ b/src/Shared/Domain/Criteria/Order.php
@@ -6,43 +6,43 @@
final readonly class Order
{
- public function __construct(private OrderBy $orderBy, private OrderType $orderType) {}
-
- public static function createDesc(OrderBy $orderBy): self
- {
- return new self($orderBy, OrderType::DESC);
- }
-
- public static function fromValues(?string $orderBy, ?string $order): self
- {
- return ($orderBy === null || $order === null) ? self::none() : new self(
- new OrderBy($orderBy),
- OrderType::from($order)
- );
- }
-
- public static function none(): self
- {
- return new self(new OrderBy(''), OrderType::NONE);
- }
-
- public function orderBy(): OrderBy
- {
- return $this->orderBy;
- }
-
- public function orderType(): OrderType
- {
- return $this->orderType;
- }
-
- public function isNone(): bool
- {
- return $this->orderType()->isNone();
- }
-
- public function serialize(): string
- {
- return sprintf('%s.%s', $this->orderBy->value(), $this->orderType->value);
- }
+ public function __construct(private OrderBy $orderBy, private OrderType $orderType) {}
+
+ public static function createDesc(OrderBy $orderBy): self
+ {
+ return new self($orderBy, OrderType::DESC);
+ }
+
+ public static function fromValues(?string $orderBy, ?string $order): self
+ {
+ return ($orderBy === null || $order === null) ? self::none() : new self(
+ new OrderBy($orderBy),
+ OrderType::from($order)
+ );
+ }
+
+ public static function none(): self
+ {
+ return new self(new OrderBy(''), OrderType::NONE);
+ }
+
+ public function orderBy(): OrderBy
+ {
+ return $this->orderBy;
+ }
+
+ public function orderType(): OrderType
+ {
+ return $this->orderType;
+ }
+
+ public function isNone(): bool
+ {
+ return $this->orderType()->isNone();
+ }
+
+ public function serialize(): string
+ {
+ return sprintf('%s.%s', $this->orderBy->value(), $this->orderType->value);
+ }
}
diff --git a/src/Shared/Domain/Criteria/OrderType.php b/src/Shared/Domain/Criteria/OrderType.php
index 2ce357a95..851bc0c7f 100644
--- a/src/Shared/Domain/Criteria/OrderType.php
+++ b/src/Shared/Domain/Criteria/OrderType.php
@@ -6,12 +6,12 @@
enum OrderType: string
{
- case ASC = 'asc';
- case DESC = 'desc';
- case NONE = 'none';
+ case ASC = 'asc';
+ case DESC = 'desc';
+ case NONE = 'none';
- public function isNone(): bool
- {
- return $this->value === self::NONE->value;
- }
+ public function isNone(): bool
+ {
+ return $this->value === self::NONE->value;
+ }
}
diff --git a/src/Shared/Domain/DomainError.php b/src/Shared/Domain/DomainError.php
index 8ecd4725f..18eec3f93 100644
--- a/src/Shared/Domain/DomainError.php
+++ b/src/Shared/Domain/DomainError.php
@@ -8,12 +8,12 @@
abstract class DomainError extends DomainException
{
- public function __construct()
- {
- parent::__construct($this->errorMessage());
- }
+ public function __construct()
+ {
+ parent::__construct($this->errorMessage());
+ }
- abstract public function errorCode(): string;
+ abstract public function errorCode(): string;
- abstract protected function errorMessage(): string;
+ abstract protected function errorMessage(): string;
}
diff --git a/src/Shared/Domain/Logger.php b/src/Shared/Domain/Logger.php
index 37100e698..fbaa7710c 100644
--- a/src/Shared/Domain/Logger.php
+++ b/src/Shared/Domain/Logger.php
@@ -6,9 +6,9 @@
interface Logger
{
- public function info(string $message, array $context = []): void;
+ public function info(string $message, array $context = []): void;
- public function warning(string $message, array $context = []): void;
+ public function warning(string $message, array $context = []): void;
- public function critical(string $message, array $context = []): void;
+ public function critical(string $message, array $context = []): void;
}
diff --git a/src/Shared/Domain/Monitoring.php b/src/Shared/Domain/Monitoring.php
index cb831294e..2602a0f40 100644
--- a/src/Shared/Domain/Monitoring.php
+++ b/src/Shared/Domain/Monitoring.php
@@ -6,13 +6,13 @@
interface Monitoring
{
- public function incrementCounter(int $times): void;
+ public function incrementCounter(int $times): void;
- public function incrementGauge(int $times): void;
+ public function incrementGauge(int $times): void;
- public function decrementGauge(int $times): void;
+ public function decrementGauge(int $times): void;
- public function setGauge(int $value): void;
+ public function setGauge(int $value): void;
- public function observeHistogram(int $value, array $labels = []): void;
+ public function observeHistogram(int $value, array $labels = []): void;
}
diff --git a/src/Shared/Domain/RandomNumberGenerator.php b/src/Shared/Domain/RandomNumberGenerator.php
index fb8462781..6fe49b715 100644
--- a/src/Shared/Domain/RandomNumberGenerator.php
+++ b/src/Shared/Domain/RandomNumberGenerator.php
@@ -6,5 +6,5 @@
interface RandomNumberGenerator
{
- public function generate(): int;
+ public function generate(): int;
}
diff --git a/src/Shared/Domain/SecondsInterval.php b/src/Shared/Domain/SecondsInterval.php
index 1b6546342..9fdffeccf 100644
--- a/src/Shared/Domain/SecondsInterval.php
+++ b/src/Shared/Domain/SecondsInterval.php
@@ -8,20 +8,20 @@
final readonly class SecondsInterval
{
- public function __construct(private Second $from, private Second $to)
- {
- $this->ensureIntervalEndsAfterStart($from, $to);
- }
+ public function __construct(private Second $from, private Second $to)
+ {
+ $this->ensureIntervalEndsAfterStart($from, $to);
+ }
- public static function fromValues(int $from, int $to): self
- {
- return new self(new Second($from), new Second($to));
- }
+ public static function fromValues(int $from, int $to): self
+ {
+ return new self(new Second($from), new Second($to));
+ }
- private function ensureIntervalEndsAfterStart(Second $from, Second $to): void
- {
- if ($from->isBiggerThan($to)) {
- throw new DomainException('To is bigger than from');
- }
- }
+ private function ensureIntervalEndsAfterStart(Second $from, Second $to): void
+ {
+ if ($from->isBiggerThan($to)) {
+ throw new DomainException('To is bigger than from');
+ }
+ }
}
diff --git a/src/Shared/Domain/Utils.php b/src/Shared/Domain/Utils.php
index df64bfb87..7939ff26b 100644
--- a/src/Shared/Domain/Utils.php
+++ b/src/Shared/Domain/Utils.php
@@ -11,80 +11,80 @@
final class Utils
{
- public static function endsWith(string $needle, string $haystack): bool
- {
- $length = strlen($needle);
- if ($length === 0) {
- return true;
- }
-
- return substr($haystack, -$length) === $needle;
- }
-
- public static function dateToString(DateTimeInterface $date): string
- {
- return $date->format(DateTimeInterface::ATOM);
- }
-
- public static function stringToDate(string $date): DateTimeImmutable
- {
- return new DateTimeImmutable($date);
- }
-
- public static function jsonEncode(array $values): string
- {
- return json_encode($values, JSON_THROW_ON_ERROR);
- }
-
- public static function jsonDecode(string $json): array
- {
- $data = json_decode($json, true);
-
- if (json_last_error() !== JSON_ERROR_NONE) {
- throw new RuntimeException('Unable to parse response body into JSON: ' . json_last_error());
- }
-
- return $data;
- }
-
- public static function toSnakeCase(string $text): string
- {
- return ctype_lower($text) ? $text : strtolower((string) preg_replace('/([^A-Z\s])([A-Z])/', '$1_$2', $text));
- }
-
- public static function toCamelCase(string $text): string
- {
- return lcfirst(str_replace('_', '', ucwords($text, '_')));
- }
-
- 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, self::dot($value, $prepend . $key . '.'));
- } else {
- $results[$prepend . $key] = $value;
- }
- }
-
- return $results;
- }
-
- public static function filesIn(string $path, string $fileType): array
- {
- return filter(
- static fn (string $possibleModule): false|string => strstr($possibleModule, $fileType),
- scandir($path)
- );
- }
-
- public static function iterableToArray(iterable $iterable): array
- {
- if (is_array($iterable)) {
- return $iterable;
- }
-
- return iterator_to_array($iterable);
- }
+ public static function endsWith(string $needle, string $haystack): bool
+ {
+ $length = strlen($needle);
+ if ($length === 0) {
+ return true;
+ }
+
+ return substr($haystack, -$length) === $needle;
+ }
+
+ public static function dateToString(DateTimeInterface $date): string
+ {
+ return $date->format(DateTimeInterface::ATOM);
+ }
+
+ public static function stringToDate(string $date): DateTimeImmutable
+ {
+ return new DateTimeImmutable($date);
+ }
+
+ public static function jsonEncode(array $values): string
+ {
+ return json_encode($values, JSON_THROW_ON_ERROR);
+ }
+
+ public static function jsonDecode(string $json): array
+ {
+ $data = json_decode($json, true);
+
+ if (json_last_error() !== JSON_ERROR_NONE) {
+ throw new RuntimeException('Unable to parse response body into JSON: ' . json_last_error());
+ }
+
+ return $data;
+ }
+
+ public static function toSnakeCase(string $text): string
+ {
+ return ctype_lower($text) ? $text : strtolower((string) preg_replace('/([^A-Z\s])([A-Z])/', '$1_$2', $text));
+ }
+
+ public static function toCamelCase(string $text): string
+ {
+ return lcfirst(str_replace('_', '', ucwords($text, '_')));
+ }
+
+ 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, self::dot($value, $prepend . $key . '.'));
+ } else {
+ $results[$prepend . $key] = $value;
+ }
+ }
+
+ return $results;
+ }
+
+ public static function filesIn(string $path, string $fileType): array
+ {
+ return filter(
+ static fn (string $possibleModule): false|string => strstr($possibleModule, $fileType),
+ scandir($path)
+ );
+ }
+
+ public static function iterableToArray(iterable $iterable): array
+ {
+ if (is_array($iterable)) {
+ return $iterable;
+ }
+
+ return iterator_to_array($iterable);
+ }
}
diff --git a/src/Shared/Domain/UuidGenerator.php b/src/Shared/Domain/UuidGenerator.php
index 313b7c249..1064a6edc 100644
--- a/src/Shared/Domain/UuidGenerator.php
+++ b/src/Shared/Domain/UuidGenerator.php
@@ -6,5 +6,5 @@
interface UuidGenerator
{
- public function generate(): string;
+ public function generate(): string;
}
diff --git a/src/Shared/Domain/ValueObject/IntValueObject.php b/src/Shared/Domain/ValueObject/IntValueObject.php
index 60514d776..77e13cd76 100644
--- a/src/Shared/Domain/ValueObject/IntValueObject.php
+++ b/src/Shared/Domain/ValueObject/IntValueObject.php
@@ -6,15 +6,15 @@
abstract class IntValueObject
{
- public function __construct(protected int $value) {}
+ public function __construct(protected int $value) {}
- final public function value(): int
- {
- return $this->value;
- }
+ final public function value(): int
+ {
+ return $this->value;
+ }
- final public function isBiggerThan(self $other): bool
- {
- return $this->value() > $other->value();
- }
+ final public function isBiggerThan(self $other): bool
+ {
+ return $this->value() > $other->value();
+ }
}
diff --git a/src/Shared/Domain/ValueObject/StringValueObject.php b/src/Shared/Domain/ValueObject/StringValueObject.php
index 08d2b6e4b..19869b870 100644
--- a/src/Shared/Domain/ValueObject/StringValueObject.php
+++ b/src/Shared/Domain/ValueObject/StringValueObject.php
@@ -6,10 +6,10 @@
abstract class StringValueObject
{
- public function __construct(protected string $value) {}
+ public function __construct(protected string $value) {}
- final public function value(): string
- {
- return $this->value;
- }
+ final public function value(): string
+ {
+ return $this->value;
+ }
}
diff --git a/src/Shared/Domain/ValueObject/Uuid.php b/src/Shared/Domain/ValueObject/Uuid.php
index 200dcb667..63a30fcc8 100644
--- a/src/Shared/Domain/ValueObject/Uuid.php
+++ b/src/Shared/Domain/ValueObject/Uuid.php
@@ -10,35 +10,35 @@
abstract class Uuid implements Stringable
{
- final public function __construct(protected string $value)
- {
- $this->ensureIsValidUuid($value);
- }
-
- final public static function random(): self
- {
- return new static(RamseyUuid::uuid4()->toString());
- }
-
- final public function value(): string
- {
- return $this->value;
- }
-
- final public function equals(self $other): bool
- {
- return $this->value() === $other->value();
- }
-
- public function __toString(): string
- {
- return $this->value();
- }
-
- private function ensureIsValidUuid(string $id): void
- {
- if (!RamseyUuid::isValid($id)) {
- throw new InvalidArgumentException(sprintf('<%s> does not allow the value <%s>.', self::class, $id));
- }
- }
+ final public function __construct(protected string $value)
+ {
+ $this->ensureIsValidUuid($value);
+ }
+
+ final public static function random(): self
+ {
+ return new static(RamseyUuid::uuid4()->toString());
+ }
+
+ final public function value(): string
+ {
+ return $this->value;
+ }
+
+ final public function equals(self $other): bool
+ {
+ return $this->value() === $other->value();
+ }
+
+ public function __toString(): string
+ {
+ return $this->value();
+ }
+
+ private function ensureIsValidUuid(string $id): void
+ {
+ if (!RamseyUuid::isValid($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 9098fe2d4..23564a9e1 100644
--- a/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
+++ b/src/Shared/Infrastructure/Bus/CallableFirstParameterExtractor.php
@@ -16,65 +16,65 @@
final class CallableFirstParameterExtractor
{
- public static function forCallables(iterable $callables): array
- {
- return map(self::unflatten(), reindex(self::classExtractor(new self()), $callables));
- }
-
- public static function forPipedCallables(iterable $callables): array
- {
- return reduce(self::pipedCallablesReducer(), $callables, []);
- }
-
- private static function classExtractor(self $parameterExtractor): callable
- {
- return static fn (object $handler): ?string => $parameterExtractor->extract($handler);
- }
-
- private static function pipedCallablesReducer(): callable
- {
- return static function (array $subscribers, DomainEventSubscriber $subscriber): array {
- $subscribedEvents = $subscriber::subscribedTo();
-
- foreach ($subscribedEvents as $subscribedEvent) {
- $subscribers[$subscribedEvent][] = $subscriber;
- }
-
- return $subscribers;
- };
- }
-
- private static function unflatten(): callable
- {
- return static fn (mixed $value): array => [$value];
- }
-
- public function extract(object $class): ?string
- {
- $reflector = new ReflectionClass($class);
- $method = $reflector->getMethod('__invoke');
-
- if ($this->hasOnlyOneParameter($method)) {
- return $this->firstParameterClassFrom($method);
- }
-
- return null;
- }
-
- private function firstParameterClassFrom(ReflectionMethod $method): string
- {
- /** @var ReflectionNamedType|null $fistParameterType */
- $fistParameterType = $method->getParameters()[0]->getType();
-
- if ($fistParameterType === null) {
- throw new LogicException('Missing type hint for the first parameter of __invoke');
- }
-
- return $fistParameterType->getName();
- }
-
- private function hasOnlyOneParameter(ReflectionMethod $method): bool
- {
- return $method->getNumberOfParameters() === 1;
- }
+ public static function forCallables(iterable $callables): array
+ {
+ return map(self::unflatten(), reindex(self::classExtractor(new self()), $callables));
+ }
+
+ public static function forPipedCallables(iterable $callables): array
+ {
+ return reduce(self::pipedCallablesReducer(), $callables, []);
+ }
+
+ private static function classExtractor(self $parameterExtractor): callable
+ {
+ return static fn (object $handler): ?string => $parameterExtractor->extract($handler);
+ }
+
+ private static function pipedCallablesReducer(): callable
+ {
+ return static function (array $subscribers, DomainEventSubscriber $subscriber): array {
+ $subscribedEvents = $subscriber::subscribedTo();
+
+ foreach ($subscribedEvents as $subscribedEvent) {
+ $subscribers[$subscribedEvent][] = $subscriber;
+ }
+
+ return $subscribers;
+ };
+ }
+
+ private static function unflatten(): callable
+ {
+ return static fn (mixed $value): array => [$value];
+ }
+
+ public function extract(object $class): ?string
+ {
+ $reflector = new ReflectionClass($class);
+ $method = $reflector->getMethod('__invoke');
+
+ if ($this->hasOnlyOneParameter($method)) {
+ return $this->firstParameterClassFrom($method);
+ }
+
+ return null;
+ }
+
+ private function firstParameterClassFrom(ReflectionMethod $method): string
+ {
+ /** @var ReflectionNamedType|null $fistParameterType */
+ $fistParameterType = $method->getParameters()[0]->getType();
+
+ if ($fistParameterType === null) {
+ throw new LogicException('Missing type hint for the first parameter of __invoke');
+ }
+
+ return $fistParameterType->getName();
+ }
+
+ private function hasOnlyOneParameter(ReflectionMethod $method): bool
+ {
+ return $method->getNumberOfParameters() === 1;
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Command/CommandNotRegisteredError.php b/src/Shared/Infrastructure/Bus/Command/CommandNotRegisteredError.php
index 90efecda7..fdb18e189 100644
--- a/src/Shared/Infrastructure/Bus/Command/CommandNotRegisteredError.php
+++ b/src/Shared/Infrastructure/Bus/Command/CommandNotRegisteredError.php
@@ -9,10 +9,10 @@
final class CommandNotRegisteredError extends RuntimeException
{
- public function __construct(Command $command)
- {
- $commandClass = $command::class;
+ public function __construct(Command $command)
+ {
+ $commandClass = $command::class;
- parent::__construct("The command <$commandClass> hasn't a command handler associated");
- }
+ parent::__construct("The command <$commandClass> hasn't a command handler associated");
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php b/src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php
index ab94755cc..4f6bbed0e 100644
--- a/src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php
+++ b/src/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBus.php
@@ -15,27 +15,27 @@
final class InMemorySymfonyCommandBus implements CommandBus
{
- private readonly MessageBus $bus;
+ private readonly MessageBus $bus;
- public function __construct(iterable $commandHandlers)
- {
- $this->bus = new MessageBus(
- [
- new HandleMessageMiddleware(
- new HandlersLocator(CallableFirstParameterExtractor::forCallables($commandHandlers))
- ),
- ]
- );
- }
+ public function __construct(iterable $commandHandlers)
+ {
+ $this->bus = new MessageBus(
+ [
+ new HandleMessageMiddleware(
+ new HandlersLocator(CallableFirstParameterExtractor::forCallables($commandHandlers))
+ ),
+ ]
+ );
+ }
- public function dispatch(Command $command): void
- {
- try {
- $this->bus->dispatch($command);
- } catch (NoHandlerForMessageException) {
- throw new CommandNotRegisteredError($command);
- } catch (HandlerFailedException $error) {
- throw $error->getPrevious() ?? $error;
- }
- }
+ public function dispatch(Command $command): void
+ {
+ try {
+ $this->bus->dispatch($command);
+ } catch (NoHandlerForMessageException) {
+ throw new CommandNotRegisteredError($command);
+ } catch (HandlerFailedException $error) {
+ throw $error->getPrevious() ?? $error;
+ }
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
index 6f1f035d8..3d73fa61b 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonDeserializer.php
@@ -9,19 +9,19 @@
final readonly class DomainEventJsonDeserializer
{
- public function __construct(private DomainEventMapping $mapping) {}
+ public function __construct(private DomainEventMapping $mapping) {}
- public function deserialize(string $domainEvent): DomainEvent
- {
- $eventData = Utils::jsonDecode($domainEvent);
- $eventName = $eventData['data']['type'];
- $eventClass = $this->mapping->for($eventName);
+ public function deserialize(string $domainEvent): DomainEvent
+ {
+ $eventData = Utils::jsonDecode($domainEvent);
+ $eventName = $eventData['data']['type'];
+ $eventClass = $this->mapping->for($eventName);
- return $eventClass::fromPrimitives(
- $eventData['data']['attributes']['id'],
- $eventData['data']['attributes'],
- $eventData['data']['id'],
- $eventData['data']['occurred_on']
- );
- }
+ return $eventClass::fromPrimitives(
+ $eventData['data']['attributes']['id'],
+ $eventData['data']['attributes'],
+ $eventData['data']['id'],
+ $eventData['data']['occurred_on']
+ );
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonSerializer.php b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonSerializer.php
index 113528e2f..293e5f996 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventJsonSerializer.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventJsonSerializer.php
@@ -8,18 +8,18 @@
final class DomainEventJsonSerializer
{
- public static function serialize(DomainEvent $domainEvent): string
- {
- return json_encode(
- [
- 'data' => [
- 'id' => $domainEvent->eventId(),
- 'type' => $domainEvent::eventName(),
- 'occurred_on' => $domainEvent->occurredOn(),
- 'attributes' => array_merge($domainEvent->toPrimitives(), ['id' => $domainEvent->aggregateId()]),
- ],
- 'meta' => [],
- ]
- );
- }
+ public static function serialize(DomainEvent $domainEvent): string
+ {
+ return json_encode(
+ [
+ 'data' => [
+ 'id' => $domainEvent->eventId(),
+ 'type' => $domainEvent::eventName(),
+ 'occurred_on' => $domainEvent->occurredOn(),
+ '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 66d37f0b4..697acad8d 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventMapping.php
@@ -12,32 +12,32 @@
final class DomainEventMapping
{
- private array $mapping;
-
- public function __construct(iterable $mapping)
- {
- $this->mapping = reduce($this->eventsExtractor(), $mapping, []);
- }
-
- public function for(string $name): string
- {
- if (!isset($this->mapping[$name])) {
- throw new RuntimeException("The Domain Event Class for <$name> doesn't exists or have no subscribers");
- }
-
- return $this->mapping[$name];
- }
-
- private function eventsExtractor(): callable
- {
- return fn (array $mapping, DomainEventSubscriber $subscriber): array => array_merge(
- $mapping,
- reindex($this->eventNameExtractor(), $subscriber::subscribedTo())
- );
- }
-
- private function eventNameExtractor(): callable
- {
- return static fn (string $eventClass): string => $eventClass::eventName();
- }
+ private array $mapping;
+
+ public function __construct(iterable $mapping)
+ {
+ $this->mapping = reduce($this->eventsExtractor(), $mapping, []);
+ }
+
+ public function for(string $name): string
+ {
+ if (!isset($this->mapping[$name])) {
+ throw new RuntimeException("The Domain Event Class for <$name> doesn't exists or have no subscribers");
+ }
+
+ return $this->mapping[$name];
+ }
+
+ private function eventsExtractor(): callable
+ {
+ return fn (array $mapping, DomainEventSubscriber $subscriber): array => array_merge(
+ $mapping,
+ reindex($this->eventNameExtractor(), $subscriber::subscribedTo())
+ );
+ }
+
+ private function eventNameExtractor(): callable
+ {
+ return static fn (string $eventClass): string => $eventClass::eventName();
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
index 9dabe2ef4..b7d4f1f20 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
@@ -14,37 +14,37 @@
final class DomainEventSubscriberLocator
{
- private readonly array $mapping;
-
- public function __construct(Traversable $mapping)
- {
- $this->mapping = iterator_to_array($mapping);
- }
-
- public function allSubscribedTo(string $eventClass): array
- {
- $formatted = CallableFirstParameterExtractor::forPipedCallables($this->mapping);
-
- return $formatted[$eventClass];
- }
-
- public function withRabbitMqQueueNamed(string $queueName): callable|DomainEventSubscriber
- {
- $subscriber = search(
- static fn (DomainEventSubscriber $subscriber): bool => RabbitMqQueueNameFormatter::format($subscriber) ===
- $queueName,
- $this->mapping
- );
-
- if ($subscriber === null) {
- throw new RuntimeException("There are no subscribers for the <$queueName> queue");
- }
-
- return $subscriber;
- }
-
- public function all(): array
- {
- return $this->mapping;
- }
+ private readonly array $mapping;
+
+ public function __construct(Traversable $mapping)
+ {
+ $this->mapping = iterator_to_array($mapping);
+ }
+
+ public function allSubscribedTo(string $eventClass): array
+ {
+ $formatted = CallableFirstParameterExtractor::forPipedCallables($this->mapping);
+
+ return $formatted[$eventClass];
+ }
+
+ public function withRabbitMqQueueNamed(string $queueName): callable|DomainEventSubscriber
+ {
+ $subscriber = search(
+ static fn (DomainEventSubscriber $subscriber): bool => RabbitMqQueueNameFormatter::format($subscriber) ===
+ $queueName,
+ $this->mapping
+ );
+
+ if ($subscriber === null) {
+ throw new RuntimeException("There are no subscribers for the <$queueName> queue");
+ }
+
+ return $subscriber;
+ }
+
+ public function all(): array
+ {
+ return $this->mapping;
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php b/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php
index f7bc03b52..db19cb695 100644
--- a/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/InMemory/InMemorySymfonyEventBus.php
@@ -14,26 +14,26 @@
class InMemorySymfonyEventBus implements EventBus
{
- private readonly MessageBus $bus;
+ private readonly MessageBus $bus;
- public function __construct(iterable $subscribers)
- {
- $this->bus = new MessageBus(
- [
- new HandleMessageMiddleware(
- new HandlersLocator(CallableFirstParameterExtractor::forPipedCallables($subscribers))
- ),
- ]
- );
- }
+ public function __construct(iterable $subscribers)
+ {
+ $this->bus = new MessageBus(
+ [
+ new HandleMessageMiddleware(
+ new HandlersLocator(CallableFirstParameterExtractor::forPipedCallables($subscribers))
+ ),
+ ]
+ );
+ }
- public function publish(DomainEvent ...$events): void
- {
- foreach ($events as $event) {
- try {
- $this->bus->dispatch($event);
- } catch (NoHandlerForMessageException) {
- }
- }
- }
+ public function publish(DomainEvent ...$events): void
+ {
+ foreach ($events as $event) {
+ try {
+ $this->bus->dispatch($event);
+ } catch (NoHandlerForMessageException) {
+ }
+ }
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
index e81e525dd..a07e3b09f 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineDomainEventsConsumer.php
@@ -16,53 +16,53 @@
final readonly class MySqlDoctrineDomainEventsConsumer
{
- private Connection $connection;
+ private Connection $connection;
- public function __construct(EntityManager $entityManager, private DomainEventMapping $eventMapping)
- {
- $this->connection = $entityManager->getConnection();
- }
+ public function __construct(EntityManager $entityManager, private DomainEventMapping $eventMapping)
+ {
+ $this->connection = $entityManager->getConnection();
+ }
- public function consume(callable $subscribers, int $eventsToConsume): void
- {
- $events = $this->connection
- ->executeQuery("SELECT * FROM domain_events ORDER BY occurred_on ASC LIMIT $eventsToConsume")
- ->fetchAllAssociative();
+ public function consume(callable $subscribers, int $eventsToConsume): void
+ {
+ $events = $this->connection
+ ->executeQuery("SELECT * FROM domain_events ORDER BY occurred_on ASC LIMIT $eventsToConsume")
+ ->fetchAllAssociative();
- each($this->executeSubscribers($subscribers), $events);
+ each($this->executeSubscribers($subscribers), $events);
- $ids = implode(', ', map($this->idExtractor(), $events));
+ $ids = implode(', ', map($this->idExtractor(), $events));
- if (!empty($ids)) {
- $this->connection->executeStatement("DELETE FROM domain_events WHERE id IN ($ids)");
- }
- }
+ if (!empty($ids)) {
+ $this->connection->executeStatement("DELETE FROM domain_events WHERE id IN ($ids)");
+ }
+ }
- private function executeSubscribers(callable $subscribers): callable
- {
- return function (array $rawEvent) use ($subscribers): void {
- try {
- $domainEventClass = $this->eventMapping->for($rawEvent['name']);
- $domainEvent = $domainEventClass::fromPrimitives(
- $rawEvent['aggregate_id'],
- Utils::jsonDecode($rawEvent['body']),
- $rawEvent['id'],
- $this->formatDate($rawEvent['occurred_on'])
- );
+ private function executeSubscribers(callable $subscribers): callable
+ {
+ return function (array $rawEvent) use ($subscribers): void {
+ try {
+ $domainEventClass = $this->eventMapping->for($rawEvent['name']);
+ $domainEvent = $domainEventClass::fromPrimitives(
+ $rawEvent['aggregate_id'],
+ Utils::jsonDecode($rawEvent['body']),
+ $rawEvent['id'],
+ $this->formatDate($rawEvent['occurred_on'])
+ );
- $subscribers($domainEvent);
- } catch (RuntimeException) {
- }
- };
- }
+ $subscribers($domainEvent);
+ } catch (RuntimeException) {
+ }
+ };
+ }
- private function formatDate(mixed $stringDate): string
- {
- return Utils::dateToString(new DateTimeImmutable($stringDate));
- }
+ private function formatDate(mixed $stringDate): string
+ {
+ return Utils::dateToString(new DateTimeImmutable($stringDate));
+ }
- private function idExtractor(): callable
- {
- return static fn (array $event): string => "'{$event['id']}'";
- }
+ private function idExtractor(): callable
+ {
+ 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 8876aec99..2b21c3897 100644
--- a/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBus.php
@@ -14,36 +14,36 @@
final class MySqlDoctrineEventBus implements EventBus
{
- private const DATABASE_TIMESTAMP_FORMAT = 'Y-m-d H:i:s';
- private readonly Connection $connection;
-
- public function __construct(EntityManager $entityManager)
- {
- $this->connection = $entityManager->getConnection();
- }
-
- public function publish(DomainEvent ...$events): void
- {
- each($this->publisher(), $events);
- }
-
- private function publisher(): callable
- {
- return function (DomainEvent $domainEvent): void {
- $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(
- Utils::stringToDate($domainEvent->occurredOn())->format(self::DATABASE_TIMESTAMP_FORMAT)
- );
-
- $this->connection->executeStatement(
- <<connection = $entityManager->getConnection();
+ }
+
+ public function publish(DomainEvent ...$events): void
+ {
+ each($this->publisher(), $events);
+ }
+
+ private function publisher(): callable
+ {
+ return function (DomainEvent $domainEvent): void {
+ $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(
+ Utils::stringToDate($domainEvent->occurredOn())->format(self::DATABASE_TIMESTAMP_FORMAT)
+ );
+
+ $this->connection->executeStatement(
+ <<declareExchange($exchangeName);
- $this->declareExchange($retryExchangeName);
- $this->declareExchange($deadLetterExchangeName);
-
- $this->declareQueues($exchangeName, $retryExchangeName, $deadLetterExchangeName, ...$subscribers);
- }
-
- private function declareExchange(string $exchangeName): void
- {
- $exchange = $this->connection->exchange($exchangeName);
- $exchange->setType(AMQP_EX_TYPE_TOPIC);
- $exchange->setFlags(AMQP_DURABLE);
- $exchange->declareExchange();
- }
-
- private function declareQueues(
- string $exchangeName,
- string $retryExchangeName,
- string $deadLetterExchangeName,
- DomainEventSubscriber ...$subscribers
- ): void {
- each($this->queueDeclarator($exchangeName, $retryExchangeName, $deadLetterExchangeName), $subscribers);
- }
-
- private function queueDeclarator(
- string $exchangeName,
- string $retryExchangeName,
- string $deadLetterExchangeName
- ): callable {
- return function (DomainEventSubscriber $subscriber) use (
- $exchangeName,
- $retryExchangeName,
- $deadLetterExchangeName
- ): void {
- $queueName = RabbitMqQueueNameFormatter::format($subscriber);
- $retryQueueName = RabbitMqQueueNameFormatter::formatRetry($subscriber);
- $deadLetterQueueName = RabbitMqQueueNameFormatter::formatDeadLetter($subscriber);
-
- $queue = $this->declareQueue($queueName);
- $retryQueue = $this->declareQueue($retryQueueName, $exchangeName, $queueName, 1000);
- $deadLetterQueue = $this->declareQueue($deadLetterQueueName);
-
- $queue->bind($exchangeName, $queueName);
- $retryQueue->bind($retryExchangeName, $queueName);
- $deadLetterQueue->bind($deadLetterExchangeName, $queueName);
-
- foreach ($subscriber::subscribedTo() as $eventClass) {
- $queue->bind($exchangeName, $eventClass::eventName());
- }
- };
- }
-
- private function declareQueue(
- string $name,
- string $deadLetterExchange = null,
- string $deadLetterRoutingKey = null,
- int $messageTtl = null
- ): AMQPQueue {
- $queue = $this->connection->queue($name);
-
- if ($deadLetterExchange !== null) {
- $queue->setArgument('x-dead-letter-exchange', $deadLetterExchange);
- }
-
- if ($deadLetterRoutingKey !== null) {
- $queue->setArgument('x-dead-letter-routing-key', $deadLetterRoutingKey);
- }
-
- if ($messageTtl !== null) {
- $queue->setArgument('x-message-ttl', $messageTtl);
- }
-
- $queue->setFlags(AMQP_DURABLE);
- $queue->declareQueue();
-
- return $queue;
- }
+ public function __construct(private RabbitMqConnection $connection) {}
+
+ public function configure(string $exchangeName, DomainEventSubscriber ...$subscribers): void
+ {
+ $retryExchangeName = RabbitMqExchangeNameFormatter::retry($exchangeName);
+ $deadLetterExchangeName = RabbitMqExchangeNameFormatter::deadLetter($exchangeName);
+
+ $this->declareExchange($exchangeName);
+ $this->declareExchange($retryExchangeName);
+ $this->declareExchange($deadLetterExchangeName);
+
+ $this->declareQueues($exchangeName, $retryExchangeName, $deadLetterExchangeName, ...$subscribers);
+ }
+
+ private function declareExchange(string $exchangeName): void
+ {
+ $exchange = $this->connection->exchange($exchangeName);
+ $exchange->setType(AMQP_EX_TYPE_TOPIC);
+ $exchange->setFlags(AMQP_DURABLE);
+ $exchange->declareExchange();
+ }
+
+ private function declareQueues(
+ string $exchangeName,
+ string $retryExchangeName,
+ string $deadLetterExchangeName,
+ DomainEventSubscriber ...$subscribers
+ ): void {
+ each($this->queueDeclarator($exchangeName, $retryExchangeName, $deadLetterExchangeName), $subscribers);
+ }
+
+ private function queueDeclarator(
+ string $exchangeName,
+ string $retryExchangeName,
+ string $deadLetterExchangeName
+ ): callable {
+ return function (DomainEventSubscriber $subscriber) use (
+ $exchangeName,
+ $retryExchangeName,
+ $deadLetterExchangeName
+ ): void {
+ $queueName = RabbitMqQueueNameFormatter::format($subscriber);
+ $retryQueueName = RabbitMqQueueNameFormatter::formatRetry($subscriber);
+ $deadLetterQueueName = RabbitMqQueueNameFormatter::formatDeadLetter($subscriber);
+
+ $queue = $this->declareQueue($queueName);
+ $retryQueue = $this->declareQueue($retryQueueName, $exchangeName, $queueName, 1000);
+ $deadLetterQueue = $this->declareQueue($deadLetterQueueName);
+
+ $queue->bind($exchangeName, $queueName);
+ $retryQueue->bind($retryExchangeName, $queueName);
+ $deadLetterQueue->bind($deadLetterExchangeName, $queueName);
+
+ foreach ($subscriber::subscribedTo() as $eventClass) {
+ $queue->bind($exchangeName, $eventClass::eventName());
+ }
+ };
+ }
+
+ private function declareQueue(
+ string $name,
+ string $deadLetterExchange = null,
+ string $deadLetterRoutingKey = null,
+ int $messageTtl = null
+ ): AMQPQueue {
+ $queue = $this->connection->queue($name);
+
+ if ($deadLetterExchange !== null) {
+ $queue->setArgument('x-dead-letter-exchange', $deadLetterExchange);
+ }
+
+ if ($deadLetterRoutingKey !== null) {
+ $queue->setArgument('x-dead-letter-routing-key', $deadLetterRoutingKey);
+ }
+
+ if ($messageTtl !== null) {
+ $queue->setArgument('x-message-ttl', $messageTtl);
+ }
+
+ $queue->setFlags(AMQP_DURABLE);
+ $queue->declareQueue();
+
+ return $queue;
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php
index 5242ce758..ea3bcb9fd 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqConnection.php
@@ -11,58 +11,58 @@
final class RabbitMqConnection
{
- private static ?AMQPConnection $connection = 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 queue(string $name): AMQPQueue
- {
- if (!array_key_exists($name, self::$queues)) {
- $queue = new AMQPQueue($this->channel());
- $queue->setName($name);
-
- self::$queues[$name] = $queue;
- }
-
- return self::$queues[$name];
- }
-
- public function exchange(string $name): AMQPExchange
- {
- if (!array_key_exists($name, self::$exchanges)) {
- $exchange = new AMQPExchange($this->channel());
- $exchange->setName($name);
-
- self::$exchanges[$name] = $exchange;
- }
-
- return self::$exchanges[$name];
- }
-
- private function channel(): AMQPChannel
- {
- if (!self::$channel?->isConnected()) {
- self::$channel = new AMQPChannel($this->connection());
- }
-
- return self::$channel;
- }
-
- private function connection(): AMQPConnection
- {
- if (self::$connection === null) {
- self::$connection = new AMQPConnection($this->configuration);
- }
-
- if (!self::$connection->isConnected()) {
- self::$connection->pconnect();
- }
-
- return self::$connection;
- }
+ private static ?AMQPConnection $connection = 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 queue(string $name): AMQPQueue
+ {
+ if (!array_key_exists($name, self::$queues)) {
+ $queue = new AMQPQueue($this->channel());
+ $queue->setName($name);
+
+ self::$queues[$name] = $queue;
+ }
+
+ return self::$queues[$name];
+ }
+
+ public function exchange(string $name): AMQPExchange
+ {
+ if (!array_key_exists($name, self::$exchanges)) {
+ $exchange = new AMQPExchange($this->channel());
+ $exchange->setName($name);
+
+ self::$exchanges[$name] = $exchange;
+ }
+
+ return self::$exchanges[$name];
+ }
+
+ private function channel(): AMQPChannel
+ {
+ if (!self::$channel?->isConnected()) {
+ self::$channel = new AMQPChannel($this->connection());
+ }
+
+ return self::$channel;
+ }
+
+ private function connection(): AMQPConnection
+ {
+ if (self::$connection === null) {
+ self::$connection = new AMQPConnection($this->configuration);
+ }
+
+ if (!self::$connection->isConnected()) {
+ self::$connection->pconnect();
+ }
+
+ return self::$connection;
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
index c6afe08e1..cef77aca2 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
@@ -16,78 +16,78 @@
final readonly class RabbitMqDomainEventsConsumer
{
- public function __construct(
- private RabbitMqConnection $connection,
- private DomainEventJsonDeserializer $deserializer,
- private string $exchangeName,
- private int $maxRetries
- ) {}
-
- public function consume(callable|DomainEventSubscriber $subscriber, string $queueName): void
- {
- try {
- $this->connection->queue($queueName)->consume($this->consumer($subscriber));
- } catch (AMQPQueueException) {
- // We don't want to raise an error if there are no messages in the queue
- }
- }
-
- private function consumer(callable $subscriber): callable
- {
- return function (AMQPEnvelope $envelope, AMQPQueue $queue) use ($subscriber): void {
- $event = $this->deserializer->deserialize($envelope->getBody());
-
- try {
- $subscriber($event);
- } catch (Throwable $error) {
- $this->handleConsumptionError($envelope, $queue);
-
- throw $error;
- }
-
- $queue->ack($envelope->getDeliveryTag());
- };
- }
-
- private function handleConsumptionError(AMQPEnvelope $envelope, AMQPQueue $queue): void
- {
- $this->hasBeenRedeliveredTooMuch($envelope)
- ? $this->sendToDeadLetter($envelope, $queue)
- : $this->sendToRetry($envelope, $queue);
-
- $queue->ack($envelope->getDeliveryTag());
- }
-
- private function hasBeenRedeliveredTooMuch(AMQPEnvelope $envelope): bool
- {
- return get('redelivery_count', $envelope->getHeaders(), 0) >= $this->maxRetries;
- }
-
- private function sendToDeadLetter(AMQPEnvelope $envelope, AMQPQueue $queue): void
- {
- $this->sendMessageTo(RabbitMqExchangeNameFormatter::deadLetter($this->exchangeName), $envelope, $queue);
- }
-
- private function sendToRetry(AMQPEnvelope $envelope, AMQPQueue $queue): void
- {
- $this->sendMessageTo(RabbitMqExchangeNameFormatter::retry($this->exchangeName), $envelope, $queue);
- }
-
- private function sendMessageTo(string $exchangeName, AMQPEnvelope $envelope, AMQPQueue $queue): void
- {
- $headers = $envelope->getHeaders();
-
- $this->connection->exchange($exchangeName)->publish(
- $envelope->getBody(),
- $queue->getName(),
- AMQP_NOPARAM,
- [
- '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),
- ]
- );
- }
+ public function __construct(
+ private RabbitMqConnection $connection,
+ private DomainEventJsonDeserializer $deserializer,
+ private string $exchangeName,
+ private int $maxRetries
+ ) {}
+
+ public function consume(callable|DomainEventSubscriber $subscriber, string $queueName): void
+ {
+ try {
+ $this->connection->queue($queueName)->consume($this->consumer($subscriber));
+ } catch (AMQPQueueException) {
+ // We don't want to raise an error if there are no messages in the queue
+ }
+ }
+
+ private function consumer(callable $subscriber): callable
+ {
+ return function (AMQPEnvelope $envelope, AMQPQueue $queue) use ($subscriber): void {
+ $event = $this->deserializer->deserialize($envelope->getBody());
+
+ try {
+ $subscriber($event);
+ } catch (Throwable $error) {
+ $this->handleConsumptionError($envelope, $queue);
+
+ throw $error;
+ }
+
+ $queue->ack($envelope->getDeliveryTag());
+ };
+ }
+
+ private function handleConsumptionError(AMQPEnvelope $envelope, AMQPQueue $queue): void
+ {
+ $this->hasBeenRedeliveredTooMuch($envelope)
+ ? $this->sendToDeadLetter($envelope, $queue)
+ : $this->sendToRetry($envelope, $queue);
+
+ $queue->ack($envelope->getDeliveryTag());
+ }
+
+ private function hasBeenRedeliveredTooMuch(AMQPEnvelope $envelope): bool
+ {
+ return get('redelivery_count', $envelope->getHeaders(), 0) >= $this->maxRetries;
+ }
+
+ private function sendToDeadLetter(AMQPEnvelope $envelope, AMQPQueue $queue): void
+ {
+ $this->sendMessageTo(RabbitMqExchangeNameFormatter::deadLetter($this->exchangeName), $envelope, $queue);
+ }
+
+ private function sendToRetry(AMQPEnvelope $envelope, AMQPQueue $queue): void
+ {
+ $this->sendMessageTo(RabbitMqExchangeNameFormatter::retry($this->exchangeName), $envelope, $queue);
+ }
+
+ private function sendMessageTo(string $exchangeName, AMQPEnvelope $envelope, AMQPQueue $queue): void
+ {
+ $headers = $envelope->getHeaders();
+
+ $this->connection->exchange($exchangeName)->publish(
+ $envelope->getBody(),
+ $queue->getName(),
+ AMQP_NOPARAM,
+ [
+ '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),
+ ]
+ );
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
index ddd46d98a..1d7bc1a89 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBus.php
@@ -14,43 +14,43 @@
final readonly class RabbitMqEventBus implements EventBus
{
- public function __construct(
- private RabbitMqConnection $connection,
- private string $exchangeName,
- private MySqlDoctrineEventBus $failoverPublisher
- ) {}
-
- public function publish(DomainEvent ...$events): void
- {
- each($this->publisher(), $events);
- }
-
- private function publisher(): callable
- {
- return function (DomainEvent $event): void {
- try {
- $this->publishEvent($event);
- } catch (AMQPException) {
- $this->failoverPublisher->publish($event);
- }
- };
- }
-
- private function publishEvent(DomainEvent $event): void
- {
- $body = DomainEventJsonSerializer::serialize($event);
- $routingKey = $event::eventName();
- $messageId = $event->eventId();
-
- $this->connection->exchange($this->exchangeName)->publish(
- $body,
- $routingKey,
- AMQP_NOPARAM,
- [
- 'message_id' => $messageId,
- 'content_type' => 'application/json',
- 'content_encoding' => 'utf-8',
- ]
- );
- }
+ public function __construct(
+ private RabbitMqConnection $connection,
+ private string $exchangeName,
+ private MySqlDoctrineEventBus $failoverPublisher
+ ) {}
+
+ public function publish(DomainEvent ...$events): void
+ {
+ each($this->publisher(), $events);
+ }
+
+ private function publisher(): callable
+ {
+ return function (DomainEvent $event): void {
+ try {
+ $this->publishEvent($event);
+ } catch (AMQPException) {
+ $this->failoverPublisher->publish($event);
+ }
+ };
+ }
+
+ private function publishEvent(DomainEvent $event): void
+ {
+ $body = DomainEventJsonSerializer::serialize($event);
+ $routingKey = $event::eventName();
+ $messageId = $event->eventId();
+
+ $this->connection->exchange($this->exchangeName)->publish(
+ $body,
+ $routingKey,
+ AMQP_NOPARAM,
+ [
+ 'message_id' => $messageId,
+ 'content_type' => 'application/json',
+ 'content_encoding' => 'utf-8',
+ ]
+ );
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqExchangeNameFormatter.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqExchangeNameFormatter.php
index db78767b7..7e9be1dc9 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqExchangeNameFormatter.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqExchangeNameFormatter.php
@@ -6,13 +6,13 @@
final class RabbitMqExchangeNameFormatter
{
- public static function retry(string $exchangeName): string
- {
- return "retry-$exchangeName";
- }
+ public static function retry(string $exchangeName): string
+ {
+ return "retry-$exchangeName";
+ }
- public static function deadLetter(string $exchangeName): string
- {
- return "dead_letter-$exchangeName";
- }
+ public static function deadLetter(string $exchangeName): string
+ {
+ return "dead_letter-$exchangeName";
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php
index 0e648c280..052380602 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqQueueNameFormatter.php
@@ -12,43 +12,43 @@
final class RabbitMqQueueNameFormatter
{
- public static function format(DomainEventSubscriber $subscriber): string
- {
- $subscriberClassPaths = explode('\\', str_replace('CodelyTv', 'codelytv', $subscriber::class));
+ public static function format(DomainEventSubscriber $subscriber): string
+ {
+ $subscriberClassPaths = explode('\\', str_replace('CodelyTv', 'codelytv', $subscriber::class));
- $queueNameParts = [
- $subscriberClassPaths[0],
- $subscriberClassPaths[1],
- $subscriberClassPaths[2],
- last($subscriberClassPaths),
- ];
+ $queueNameParts = [
+ $subscriberClassPaths[0],
+ $subscriberClassPaths[1],
+ $subscriberClassPaths[2],
+ last($subscriberClassPaths),
+ ];
- return implode('.', map(self::toSnakeCase(), $queueNameParts));
- }
+ return implode('.', map(self::toSnakeCase(), $queueNameParts));
+ }
- public static function formatRetry(DomainEventSubscriber $subscriber): string
- {
- $queueName = self::format($subscriber);
+ public static function formatRetry(DomainEventSubscriber $subscriber): string
+ {
+ $queueName = self::format($subscriber);
- return "retry.$queueName";
- }
+ return "retry.$queueName";
+ }
- public static function formatDeadLetter(DomainEventSubscriber $subscriber): string
- {
- $queueName = self::format($subscriber);
+ public static function formatDeadLetter(DomainEventSubscriber $subscriber): string
+ {
+ $queueName = self::format($subscriber);
- return "dead_letter.$queueName";
- }
+ return "dead_letter.$queueName";
+ }
- public static function shortFormat(DomainEventSubscriber $subscriber): string
- {
- $subscriberCamelCaseName = (string) last(explode('\\', $subscriber::class));
+ public static function shortFormat(DomainEventSubscriber $subscriber): string
+ {
+ $subscriberCamelCaseName = (string) last(explode('\\', $subscriber::class));
- return Utils::toSnakeCase($subscriberCamelCaseName);
- }
+ return Utils::toSnakeCase($subscriberCamelCaseName);
+ }
- private static function toSnakeCase(): callable
- {
- return static fn (string $text): string => Utils::toSnakeCase($text);
- }
+ private static function toSnakeCase(): callable
+ {
+ return static fn (string $text): string => Utils::toSnakeCase($text);
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php b/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
index b404f19cf..c94edfdcc 100644
--- a/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
+++ b/src/Shared/Infrastructure/Bus/Event/WithMonitoring/WithPrometheusMonitoringEventBus.php
@@ -12,23 +12,23 @@
final readonly class WithPrometheusMonitoringEventBus implements EventBus
{
- public function __construct(
- private PrometheusMonitor $monitor,
- private string $appName,
- private EventBus $bus
- ) {}
-
- public function publish(DomainEvent ...$events): void
- {
- $counter = $this->monitor->registry()->getOrRegisterCounter(
- $this->appName,
- 'domain_event',
- 'Domain Events',
- ['name']
- );
-
- each(fn (DomainEvent $event) => $counter->inc(['name' => $event::eventName()]), $events);
-
- $this->bus->publish(...$events);
- }
+ public function __construct(
+ private PrometheusMonitor $monitor,
+ private string $appName,
+ private EventBus $bus
+ ) {}
+
+ public function publish(DomainEvent ...$events): void
+ {
+ $counter = $this->monitor->registry()->getOrRegisterCounter(
+ $this->appName,
+ 'domain_event',
+ 'Domain Events',
+ ['name']
+ );
+
+ each(fn (DomainEvent $event) => $counter->inc(['name' => $event::eventName()]), $events);
+
+ $this->bus->publish(...$events);
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php b/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php
index e08643fcd..4812214d0 100644
--- a/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php
+++ b/src/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBus.php
@@ -16,28 +16,26 @@
final readonly class InMemorySymfonyQueryBus implements QueryBus
{
- private MessageBus $bus;
+ private MessageBus $bus;
- public function __construct(iterable $queryHandlers)
- {
- $this->bus = new MessageBus(
- [
- new HandleMessageMiddleware(
- new HandlersLocator(CallableFirstParameterExtractor::forCallables($queryHandlers))
- ),
- ]
- );
- }
+ public function __construct(iterable $queryHandlers)
+ {
+ $this->bus = new MessageBus(
+ [
+ new HandleMessageMiddleware(new HandlersLocator(CallableFirstParameterExtractor::forCallables($queryHandlers))),
+ ]
+ );
+ }
- public function ask(Query $query): ?Response
- {
- try {
- /** @var HandledStamp $stamp */
- $stamp = $this->bus->dispatch($query)->last(HandledStamp::class);
+ public function ask(Query $query): ?Response
+ {
+ try {
+ /** @var HandledStamp $stamp */
+ $stamp = $this->bus->dispatch($query)->last(HandledStamp::class);
- return $stamp->getResult();
- } catch (NoHandlerForMessageException) {
- throw new QueryNotRegisteredError($query);
- }
- }
+ return $stamp->getResult();
+ } catch (NoHandlerForMessageException) {
+ throw new QueryNotRegisteredError($query);
+ }
+ }
}
diff --git a/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php b/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php
index ea5926271..c79d4859c 100644
--- a/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php
+++ b/src/Shared/Infrastructure/Bus/Query/QueryNotRegisteredError.php
@@ -9,10 +9,10 @@
final class QueryNotRegisteredError extends RuntimeException
{
- public function __construct(Query $query)
- {
- $queryClass = $query::class;
+ public function __construct(Query $query)
+ {
+ $queryClass = $query::class;
- parent::__construct("The query <$queryClass> has no associated query handler");
- }
+ parent::__construct("The query <$queryClass> has no associated query handler");
+ }
}
diff --git a/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php b/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php
index a00220d6a..86b62015a 100644
--- a/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php
+++ b/src/Shared/Infrastructure/Doctrine/DatabaseConnections.php
@@ -13,20 +13,20 @@
final class DatabaseConnections
{
- private readonly array $connections;
-
- public function __construct(iterable $connections)
- {
- $this->connections = Utils::iterableToArray($connections);
- }
-
- public function clear(): void
- {
- each(fn (EntityManager $entityManager) => $entityManager->clear(), $this->connections);
- }
-
- public function truncate(): void
- {
- apply(new MySqlDatabaseCleaner(), array_values($this->connections));
- }
+ private readonly array $connections;
+
+ public function __construct(iterable $connections)
+ {
+ $this->connections = Utils::iterableToArray($connections);
+ }
+
+ public function clear(): void
+ {
+ each(fn (EntityManager $entityManager) => $entityManager->clear(), $this->connections);
+ }
+
+ public function truncate(): void
+ {
+ apply(new MySqlDatabaseCleaner(), array_values($this->connections));
+ }
}
diff --git a/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php b/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php
index c552cf7e7..e76a46c3b 100644
--- a/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php
+++ b/src/Shared/Infrastructure/Doctrine/Dbal/DbalCustomTypesRegistrar.php
@@ -10,23 +10,23 @@
final class DbalCustomTypesRegistrar
{
- private static bool $initialized = false;
+ private static bool $initialized = false;
- public static function register(array $customTypeClassNames): void
- {
- if (!self::$initialized) {
- each(self::registerType(), $customTypeClassNames);
+ public static function register(array $customTypeClassNames): void
+ {
+ if (!self::$initialized) {
+ each(self::registerType(), $customTypeClassNames);
- self::$initialized = true;
- }
- }
+ self::$initialized = true;
+ }
+ }
- private static function registerType(): callable
- {
- return static function (mixed $customTypeClassName): void {
- $name = $customTypeClassName::customTypeName();
+ private static function registerType(): callable
+ {
+ return static function (mixed $customTypeClassName): void {
+ $name = $customTypeClassName::customTypeName();
- Type::addType($name, $customTypeClassName);
- };
- }
+ Type::addType($name, $customTypeClassName);
+ };
+ }
}
diff --git a/src/Shared/Infrastructure/Doctrine/Dbal/DoctrineCustomType.php b/src/Shared/Infrastructure/Doctrine/Dbal/DoctrineCustomType.php
index 38e761666..9a6cde085 100644
--- a/src/Shared/Infrastructure/Doctrine/Dbal/DoctrineCustomType.php
+++ b/src/Shared/Infrastructure/Doctrine/Dbal/DoctrineCustomType.php
@@ -6,5 +6,5 @@
interface DoctrineCustomType
{
- public static function customTypeName(): string;
+ public static function customTypeName(): string;
}
diff --git a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
index 13da3a40f..35442dacf 100644
--- a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
+++ b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
@@ -19,66 +19,66 @@
final class DoctrineEntityManagerFactory
{
- private static array $sharedPrefixes = [
- __DIR__ . '/../../../Shared/Infrastructure/Persistence/Mappings' => 'CodelyTv\Shared\Domain',
- ];
-
- public static function create(
- array $parameters,
- array $contextPrefixes,
- bool $isDevMode,
- string $schemaFile,
- array $dbalCustomTypesClasses
- ): EntityManager {
- if ($isDevMode) {
- self::generateDatabaseIfNotExists($parameters, $schemaFile);
- }
-
- DbalCustomTypesRegistrar::register($dbalCustomTypesClasses);
-
- $config = self::createConfiguration($contextPrefixes, $isDevMode);
-
- return new EntityManager(DriverManager::getConnection($parameters, $config, new EventManager()), $config);
- }
-
- private static function generateDatabaseIfNotExists(array $parameters, string $schemaFile): void
- {
- self::ensureSchemaFileExists($schemaFile);
-
- $databaseName = $parameters['dbname'];
- $parametersWithoutDatabaseName = dissoc($parameters, 'dbname');
- $connection = DriverManager::getConnection($parametersWithoutDatabaseName);
- $platform = new MariaDBPlatform();
- $schemaManager = new MySQLSchemaManager($connection, $platform);
-
- if (!self::databaseExists($databaseName, $schemaManager)) {
- $schemaManager->createDatabase($databaseName);
-
- $connection->executeStatement(sprintf('USE %s', $databaseName));
- $connection->executeStatement(file_get_contents(realpath($schemaFile)));
- }
-
- $connection->close();
- }
-
- private static function databaseExists(string $databaseName, MySqlSchemaManager $schemaManager): bool
- {
- return in_array($databaseName, $schemaManager->listDatabases(), true);
- }
-
- private static function ensureSchemaFileExists(string $schemaFile): void
- {
- if (!file_exists($schemaFile)) {
- throw new RuntimeException(sprintf('The file <%s> does not exist', $schemaFile));
- }
- }
-
- private static function createConfiguration(array $contextPrefixes, bool $isDevMode): Configuration
- {
- $config = ORMSetup::createConfiguration($isDevMode);
-
- $config->setMetadataDriverImpl(new SimplifiedXmlDriver(array_merge(self::$sharedPrefixes, $contextPrefixes)));
-
- return $config;
- }
+ private static array $sharedPrefixes = [
+ __DIR__ . '/../../../Shared/Infrastructure/Persistence/Mappings' => 'CodelyTv\Shared\Domain',
+ ];
+
+ public static function create(
+ array $parameters,
+ array $contextPrefixes,
+ bool $isDevMode,
+ string $schemaFile,
+ array $dbalCustomTypesClasses
+ ): EntityManager {
+ if ($isDevMode) {
+ self::generateDatabaseIfNotExists($parameters, $schemaFile);
+ }
+
+ DbalCustomTypesRegistrar::register($dbalCustomTypesClasses);
+
+ $config = self::createConfiguration($contextPrefixes, $isDevMode);
+
+ return new EntityManager(DriverManager::getConnection($parameters, $config, new EventManager()), $config);
+ }
+
+ private static function generateDatabaseIfNotExists(array $parameters, string $schemaFile): void
+ {
+ self::ensureSchemaFileExists($schemaFile);
+
+ $databaseName = $parameters['dbname'];
+ $parametersWithoutDatabaseName = dissoc($parameters, 'dbname');
+ $connection = DriverManager::getConnection($parametersWithoutDatabaseName);
+ $platform = new MariaDBPlatform();
+ $schemaManager = new MySQLSchemaManager($connection, $platform);
+
+ if (!self::databaseExists($databaseName, $schemaManager)) {
+ $schemaManager->createDatabase($databaseName);
+
+ $connection->executeStatement(sprintf('USE %s', $databaseName));
+ $connection->executeStatement(file_get_contents(realpath($schemaFile)));
+ }
+
+ $connection->close();
+ }
+
+ private static function databaseExists(string $databaseName, MySqlSchemaManager $schemaManager): bool
+ {
+ return in_array($databaseName, $schemaManager->listDatabases(), true);
+ }
+
+ private static function ensureSchemaFileExists(string $schemaFile): void
+ {
+ if (!file_exists($schemaFile)) {
+ throw new RuntimeException(sprintf('The file <%s> does not exist', $schemaFile));
+ }
+ }
+
+ private static function createConfiguration(array $contextPrefixes, bool $isDevMode): Configuration
+ {
+ $config = ORMSetup::createConfiguration($isDevMode);
+
+ $config->setMetadataDriverImpl(new SimplifiedXmlDriver(array_merge(self::$sharedPrefixes, $contextPrefixes)));
+
+ return $config;
+ }
}
diff --git a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
index d338b38cd..41480e009 100644
--- a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
+++ b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClient.php
@@ -8,26 +8,26 @@
final readonly class ElasticsearchClient
{
- public function __construct(private Client $client, private 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,
- ]
- );
- }
+ public function persist(string $aggregateName, string $identifier, array $plainBody): void
+ {
+ $this->client->index(
+ [
+ 'index' => sprintf('%s_%s', $this->indexPrefix, $aggregateName),
+ 'id' => $identifier,
+ 'body' => $plainBody,
+ ]
+ );
+ }
- public function client(): Client
- {
- return $this->client;
- }
+ public function client(): Client
+ {
+ return $this->client;
+ }
- public function indexPrefix(): string
- {
- return $this->indexPrefix;
- }
+ public function indexPrefix(): string
+ {
+ return $this->indexPrefix;
+ }
}
diff --git a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClientFactory.php b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClientFactory.php
index 13a038ed4..a5472afb9 100644
--- a/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClientFactory.php
+++ b/src/Shared/Infrastructure/Elasticsearch/ElasticsearchClientFactory.php
@@ -11,50 +11,50 @@
final class ElasticsearchClientFactory
{
- public function __invoke(
- string $host,
- string $indexPrefix,
- string $schemasFolder,
- string $environment
- ): ElasticsearchClient {
- $client = ClientBuilder::create()->setHosts([$host])->build();
-
- $this->generateIndexIfNotExists($client, $indexPrefix, $schemasFolder, $environment);
-
- return new ElasticsearchClient($client, $indexPrefix);
- }
-
- private function generateIndexIfNotExists(
- Client $client,
- string $indexPrefix,
- string $schemasFolder,
- string $environment
- ): void {
- if ($environment !== 'prod') {
- return;
- }
-
- $indexes = Utils::filesIn($schemasFolder, '.json');
-
- foreach ($indexes as $index) {
- $indexName = str_replace('.json', '', sprintf('%s_%s', $indexPrefix, $index));
-
- if (!$this->indexExists($client, $indexName)) {
- $indexBody = Utils::jsonDecode(file_get_contents("$schemasFolder/$index"));
-
- $client->indices()->create(['index' => $indexName, 'body' => $indexBody]);
- }
- }
- }
-
- private function indexExists(Client $client, string $indexName): bool
- {
- try {
- $client->indices()->getSettings(['index' => $indexName]);
-
- return true;
- } catch (Missing404Exception) {
- return false;
- }
- }
+ public function __invoke(
+ string $host,
+ string $indexPrefix,
+ string $schemasFolder,
+ string $environment
+ ): ElasticsearchClient {
+ $client = ClientBuilder::create()->setHosts([$host])->build();
+
+ $this->generateIndexIfNotExists($client, $indexPrefix, $schemasFolder, $environment);
+
+ return new ElasticsearchClient($client, $indexPrefix);
+ }
+
+ private function generateIndexIfNotExists(
+ Client $client,
+ string $indexPrefix,
+ string $schemasFolder,
+ string $environment
+ ): void {
+ if ($environment !== 'prod') {
+ return;
+ }
+
+ $indexes = Utils::filesIn($schemasFolder, '.json');
+
+ foreach ($indexes as $index) {
+ $indexName = str_replace('.json', '', sprintf('%s_%s', $indexPrefix, $index));
+
+ if (!$this->indexExists($client, $indexName)) {
+ $indexBody = Utils::jsonDecode(file_get_contents("$schemasFolder/$index"));
+
+ $client->indices()->create(['index' => $indexName, 'body' => $indexBody]);
+ }
+ }
+ }
+
+ private function indexExists(Client $client, string $indexName): bool
+ {
+ try {
+ $client->indices()->getSettings(['index' => $indexName]);
+
+ return true;
+ } catch (Missing404Exception) {
+ return false;
+ }
+ }
}
diff --git a/src/Shared/Infrastructure/Logger/MonologLogger.php b/src/Shared/Infrastructure/Logger/MonologLogger.php
index 9dca53c91..1e0928028 100644
--- a/src/Shared/Infrastructure/Logger/MonologLogger.php
+++ b/src/Shared/Infrastructure/Logger/MonologLogger.php
@@ -8,20 +8,20 @@
final readonly class MonologLogger implements Logger
{
- public function __construct(private \Monolog\Logger $logger) {}
+ public function __construct(private \Monolog\Logger $logger) {}
- public function info(string $message, array $context = []): void
- {
- $this->logger->info($message, $context);
- }
+ public function info(string $message, array $context = []): void
+ {
+ $this->logger->info($message, $context);
+ }
- public function warning(string $message, array $context = []): void
- {
- $this->logger->warning($message, $context);
- }
+ public function warning(string $message, array $context = []): void
+ {
+ $this->logger->warning($message, $context);
+ }
- public function critical(string $message, array $context = []): void
- {
- $this->logger->critical($message, $context);
- }
+ public function critical(string $message, array $context = []): void
+ {
+ $this->logger->critical($message, $context);
+ }
}
diff --git a/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php b/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php
index f504d288d..162c0482e 100644
--- a/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php
+++ b/src/Shared/Infrastructure/Monitoring/PrometheusMonitor.php
@@ -9,15 +9,15 @@
final readonly class PrometheusMonitor
{
- private CollectorRegistry $registry;
+ private CollectorRegistry $registry;
- public function __construct()
- {
- $this->registry = new CollectorRegistry(new APC());
- }
+ public function __construct()
+ {
+ $this->registry = new CollectorRegistry(new APC());
+ }
- public function registry(): CollectorRegistry
- {
- return $this->registry;
- }
+ public function registry(): CollectorRegistry
+ {
+ return $this->registry;
+ }
}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
index bb2f73604..88bd57083 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineCriteriaConverter.php
@@ -14,86 +14,86 @@
final readonly class DoctrineCriteriaConverter
{
- public function __construct(
- private Criteria $criteria,
- private array $criteriaToDoctrineFields = [],
- private array $hydrators = []
- ) {}
-
- public static function convert(
- Criteria $criteria,
- array $criteriaToDoctrineFields = [],
- array $hydrators = []
- ): DoctrineCriteria {
- $converter = new self($criteria, $criteriaToDoctrineFields, $hydrators);
-
- return $converter->convertToDoctrineCriteria();
- }
-
- private function convertToDoctrineCriteria(): DoctrineCriteria
- {
- return new DoctrineCriteria(
- $this->buildExpression($this->criteria),
- $this->formatOrder($this->criteria),
- $this->criteria->offset(),
- $this->criteria->limit()
- );
- }
-
- private function buildExpression(Criteria $criteria): ?CompositeExpression
- {
- if ($criteria->hasFilters()) {
- return new CompositeExpression(
- CompositeExpression::TYPE_AND,
- array_map($this->buildComparison(), $criteria->plainFilters())
- );
- }
-
- return null;
- }
-
- private function buildComparison(): callable
- {
- return function (Filter $filter): Comparison {
- $field = $this->mapFieldValue($filter->field());
- $value = $this->existsHydratorFor($field)
- ? $this->hydrate($field, $filter->value()->value())
- : $filter->value()->value();
-
- return new Comparison($field, $filter->operator()->value, $value);
- };
- }
-
- private function mapFieldValue(FilterField $field): mixed
- {
- return array_key_exists($field->value(), $this->criteriaToDoctrineFields)
- ? $this->criteriaToDoctrineFields[$field->value()]
- : $field->value();
- }
-
- private function formatOrder(Criteria $criteria): ?array
- {
- if (!$criteria->hasOrder()) {
- return null;
- }
-
- return [$this->mapOrderBy($criteria->order()->orderBy()) => $criteria->order()->orderType()];
- }
-
- private function mapOrderBy(OrderBy $field): mixed
- {
- return array_key_exists($field->value(), $this->criteriaToDoctrineFields)
- ? $this->criteriaToDoctrineFields[$field->value()]
- : $field->value();
- }
-
- private function existsHydratorFor(mixed $field): bool
- {
- return array_key_exists($field, $this->hydrators);
- }
-
- private function hydrate(mixed $field, string $value): mixed
- {
- return $this->hydrators[$field]($value);
- }
+ public function __construct(
+ private Criteria $criteria,
+ private array $criteriaToDoctrineFields = [],
+ private array $hydrators = []
+ ) {}
+
+ public static function convert(
+ Criteria $criteria,
+ array $criteriaToDoctrineFields = [],
+ array $hydrators = []
+ ): DoctrineCriteria {
+ $converter = new self($criteria, $criteriaToDoctrineFields, $hydrators);
+
+ return $converter->convertToDoctrineCriteria();
+ }
+
+ private function convertToDoctrineCriteria(): DoctrineCriteria
+ {
+ return new DoctrineCriteria(
+ $this->buildExpression($this->criteria),
+ $this->formatOrder($this->criteria),
+ $this->criteria->offset(),
+ $this->criteria->limit()
+ );
+ }
+
+ private function buildExpression(Criteria $criteria): ?CompositeExpression
+ {
+ if ($criteria->hasFilters()) {
+ return new CompositeExpression(
+ CompositeExpression::TYPE_AND,
+ array_map($this->buildComparison(), $criteria->plainFilters())
+ );
+ }
+
+ return null;
+ }
+
+ private function buildComparison(): callable
+ {
+ return function (Filter $filter): Comparison {
+ $field = $this->mapFieldValue($filter->field());
+ $value = $this->existsHydratorFor($field)
+ ? $this->hydrate($field, $filter->value()->value())
+ : $filter->value()->value();
+
+ return new Comparison($field, $filter->operator()->value, $value);
+ };
+ }
+
+ private function mapFieldValue(FilterField $field): mixed
+ {
+ return array_key_exists($field->value(), $this->criteriaToDoctrineFields)
+ ? $this->criteriaToDoctrineFields[$field->value()]
+ : $field->value();
+ }
+
+ private function formatOrder(Criteria $criteria): ?array
+ {
+ if (!$criteria->hasOrder()) {
+ return null;
+ }
+
+ return [$this->mapOrderBy($criteria->order()->orderBy()) => $criteria->order()->orderType()];
+ }
+
+ private function mapOrderBy(OrderBy $field): mixed
+ {
+ return array_key_exists($field->value(), $this->criteriaToDoctrineFields)
+ ? $this->criteriaToDoctrineFields[$field->value()]
+ : $field->value();
+ }
+
+ private function existsHydratorFor(mixed $field): bool
+ {
+ return array_key_exists($field, $this->hydrators);
+ }
+
+ private function hydrate(mixed $field, string $value): mixed
+ {
+ return $this->hydrators[$field]($value);
+ }
}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php
index 44d9835c1..dc6cdd9bb 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/DoctrineRepository.php
@@ -11,36 +11,36 @@
abstract class DoctrineRepository
{
- public function __construct(private readonly EntityManager $entityManager) {}
-
- protected function entityManager(): EntityManager
- {
- return $this->entityManager;
- }
-
- protected function persist(AggregateRoot $entity): void
- {
- $this->entityManager()->persist($entity);
- $this->entityManager()->flush($entity);
- }
-
- protected function remove(AggregateRoot $entity): void
- {
- $this->entityManager()->remove($entity);
- $this->entityManager()->flush($entity);
- }
-
- /**
- * @template T of object
- *
- * @psalm-param class-string $entityClass
- *
- * @psalm-return EntityRepository
- *
- * @throws NotSupported
- */
- protected function repository(string $entityClass): EntityRepository
- {
- return $this->entityManager->getRepository($entityClass);
- }
+ public function __construct(private readonly EntityManager $entityManager) {}
+
+ protected function entityManager(): EntityManager
+ {
+ return $this->entityManager;
+ }
+
+ protected function persist(AggregateRoot $entity): void
+ {
+ $this->entityManager()->persist($entity);
+ $this->entityManager()->flush($entity);
+ }
+
+ protected function remove(AggregateRoot $entity): void
+ {
+ $this->entityManager()->remove($entity);
+ $this->entityManager()->flush($entity);
+ }
+
+ /**
+ * @template T of object
+ *
+ * @psalm-param class-string $entityClass
+ *
+ * @psalm-return EntityRepository
+ *
+ * @throws NotSupported
+ */
+ protected function repository(string $entityClass): EntityRepository
+ {
+ return $this->entityManager->getRepository($entityClass);
+ }
}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
index f4668c11f..f90ebbe32 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
@@ -14,28 +14,28 @@
abstract class UuidType extends StringType implements DoctrineCustomType
{
- abstract protected function typeClassName(): string;
-
- final public static function customTypeName(): string
- {
- return Utils::toSnakeCase(str_replace('Type', '', (string) last(explode('\\', static::class))));
- }
-
- final public function getName(): string
- {
- return self::customTypeName();
- }
-
- final public function convertToPHPValue($value, AbstractPlatform $platform)
- {
- $className = $this->typeClassName();
-
- return new $className($value);
- }
-
- final public function convertToDatabaseValue($value, AbstractPlatform $platform)
- {
- /** @var Uuid $value */
- return $value->value();
- }
+ abstract protected function typeClassName(): string;
+
+ final public static function customTypeName(): string
+ {
+ return Utils::toSnakeCase(str_replace('Type', '', (string) last(explode('\\', static::class))));
+ }
+
+ final public function getName(): string
+ {
+ return self::customTypeName();
+ }
+
+ final public function convertToPHPValue($value, AbstractPlatform $platform)
+ {
+ $className = $this->typeClassName();
+
+ return new $className($value);
+ }
+
+ 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 55c34782d..885066f5e 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticQueryGenerator.php
@@ -9,44 +9,44 @@
final class ElasticQueryGenerator
{
- 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_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());
- $valueTemplate = $filter->operator()->isContaining() ? '*%s*' : '%s';
-
- return array_merge_recursive(
- $query,
- [
- $type => [
- $termLevel => [
- $filter->field()->value() => sprintf($valueTemplate, strtolower($filter->value()->value())),
- ],
- ],
- ]
- );
- }
-
- private function typeFor(FilterOperator $operator): string
- {
- return in_array($operator->value, self::$mustNotFields, true) ? self::MUST_NOT_TYPE : self::MUST_TYPE;
- }
-
- private function termLevelFor(FilterOperator $operator): string
- {
- return match ($operator) {
- FilterOperator::EQUAL => self::TERM_TERM,
- FilterOperator::NOT_EQUAL => '!=',
- FilterOperator::GT, FilterOperator::LT => self::TERM_RANGE,
- FilterOperator::CONTAINS, FilterOperator::NOT_CONTAINS => self::TERM_WILDCARD,
- };
- }
+ 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_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());
+ $valueTemplate = $filter->operator()->isContaining() ? '*%s*' : '%s';
+
+ return array_merge_recursive(
+ $query,
+ [
+ $type => [
+ $termLevel => [
+ $filter->field()->value() => sprintf($valueTemplate, strtolower($filter->value()->value())),
+ ],
+ ],
+ ]
+ );
+ }
+
+ private function typeFor(FilterOperator $operator): string
+ {
+ return in_array($operator->value, self::$mustNotFields, true) ? self::MUST_NOT_TYPE : self::MUST_TYPE;
+ }
+
+ private function termLevelFor(FilterOperator $operator): string
+ {
+ return match ($operator) {
+ FilterOperator::EQUAL => self::TERM_TERM,
+ FilterOperator::NOT_EQUAL => '!=',
+ FilterOperator::GT, FilterOperator::LT => self::TERM_RANGE,
+ FilterOperator::CONTAINS, FilterOperator::NOT_CONTAINS => self::TERM_WILDCARD,
+ };
+ }
}
diff --git a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php
index d215a7e33..257e531b3 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchCriteriaConverter.php
@@ -10,44 +10,44 @@
final class ElasticsearchCriteriaConverter
{
- public function convert(Criteria $criteria): array
- {
- return [
- 'body' => array_merge(
- ['from' => $criteria->offset() ?: 0, 'size' => $criteria->limit() ?: 1000],
- $this->formatQuery($criteria),
- $this->formatSort($criteria)
- ),
- ];
- }
-
- private function formatQuery(Criteria $criteria): array
- {
- if ($criteria->hasFilters()) {
- return [
- 'query' => [
- 'bool' => reduce(new ElasticQueryGenerator(), $criteria->filters(), []),
- ],
- ];
- }
-
- return [];
- }
-
- private function formatSort(Criteria $criteria): array
- {
- if ($criteria->hasOrder()) {
- $order = $criteria->order();
-
- return [
- 'sort' => [
- $order->orderBy()->value() => [
- 'order' => $order->orderType()->value,
- ],
- ],
- ];
- }
-
- return [];
- }
+ public function convert(Criteria $criteria): array
+ {
+ return [
+ 'body' => array_merge(
+ ['from' => $criteria->offset() ?: 0, 'size' => $criteria->limit() ?: 1000],
+ $this->formatQuery($criteria),
+ $this->formatSort($criteria)
+ ),
+ ];
+ }
+
+ private function formatQuery(Criteria $criteria): array
+ {
+ if ($criteria->hasFilters()) {
+ return [
+ 'query' => [
+ 'bool' => reduce(new ElasticQueryGenerator(), $criteria->filters(), []),
+ ],
+ ];
+ }
+
+ return [];
+ }
+
+ private function formatSort(Criteria $criteria): array
+ {
+ if ($criteria->hasOrder()) {
+ $order = $criteria->order();
+
+ 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 6d10df4be..3236dd248 100644
--- a/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
+++ b/src/Shared/Infrastructure/Persistence/Elasticsearch/ElasticsearchRepository.php
@@ -13,49 +13,49 @@
abstract class ElasticsearchRepository
{
- public function __construct(private readonly ElasticsearchClient $client) {}
+ public function __construct(private readonly ElasticsearchClient $client) {}
- abstract protected function aggregateName(): string;
+ abstract protected function aggregateName(): string;
- final public function searchByCriteria(Criteria $criteria): array
- {
- $converter = new ElasticsearchCriteriaConverter();
+ final public function searchByCriteria(Criteria $criteria): array
+ {
+ $converter = new ElasticsearchCriteriaConverter();
- $query = $converter->convert($criteria);
+ $query = $converter->convert($criteria);
- return $this->searchRawElasticsearchQuery($query);
- }
+ return $this->searchRawElasticsearchQuery($query);
+ }
- protected function persist(string $id, array $plainBody): void
- {
- $this->client->persist($this->aggregateName(), $id, $plainBody);
- }
+ protected function persist(string $id, array $plainBody): void
+ {
+ $this->client->persist($this->aggregateName(), $id, $plainBody);
+ }
- protected function searchAllInElastic(): array
- {
- return $this->searchRawElasticsearchQuery([]);
- }
+ protected function searchAllInElastic(): array
+ {
+ return $this->searchRawElasticsearchQuery([]);
+ }
- protected function searchRawElasticsearchQuery(array $params): array
- {
- try {
- $result = $this->client->client()->search(array_merge(['index' => $this->indexName()], $params));
+ protected function searchRawElasticsearchQuery(array $params): array
+ {
+ try {
+ $result = $this->client->client()->search(array_merge(['index' => $this->indexName()], $params));
- $hits = (array) get_in(['hits', 'hits'], $result, []);
+ $hits = (array) get_in(['hits', 'hits'], $result, []);
- return map($this->elasticValuesExtractor(), $hits);
- } catch (Missing404Exception) {
- return [];
- }
- }
+ return map($this->elasticValuesExtractor(), $hits);
+ } catch (Missing404Exception) {
+ return [];
+ }
+ }
- protected function indexName(): string
- {
- return sprintf('%s_%s', $this->client->indexPrefix(), $this->aggregateName());
- }
+ protected function indexName(): string
+ {
+ return sprintf('%s_%s', $this->client->indexPrefix(), $this->aggregateName());
+ }
- private function elasticValuesExtractor(): callable
- {
- return static fn (array $elasticValues): array => $elasticValues['_source'];
- }
+ private function elasticValuesExtractor(): callable
+ {
+ return static fn (array $elasticValues): array => $elasticValues['_source'];
+ }
}
diff --git a/src/Shared/Infrastructure/PhpRandomNumberGenerator.php b/src/Shared/Infrastructure/PhpRandomNumberGenerator.php
index b01b0463d..b32a8be34 100644
--- a/src/Shared/Infrastructure/PhpRandomNumberGenerator.php
+++ b/src/Shared/Infrastructure/PhpRandomNumberGenerator.php
@@ -8,8 +8,8 @@
final class PhpRandomNumberGenerator implements RandomNumberGenerator
{
- public function generate(): int
- {
- return random_int(1, 5);
- }
+ public function generate(): int
+ {
+ return random_int(1, 5);
+ }
}
diff --git a/src/Shared/Infrastructure/RamseyUuidGenerator.php b/src/Shared/Infrastructure/RamseyUuidGenerator.php
index 36e46a640..8a8b703de 100644
--- a/src/Shared/Infrastructure/RamseyUuidGenerator.php
+++ b/src/Shared/Infrastructure/RamseyUuidGenerator.php
@@ -9,8 +9,8 @@
final class RamseyUuidGenerator implements UuidGenerator
{
- public function generate(): string
- {
- return Uuid::uuid4()->toString();
- }
+ public function generate(): string
+ {
+ return Uuid::uuid4()->toString();
+ }
}
diff --git a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
index 0d8883c57..0930af5ee 100644
--- a/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
+++ b/src/Shared/Infrastructure/Symfony/AddJsonBodyToRequestListener.php
@@ -11,30 +11,30 @@
final class AddJsonBodyToRequestListener
{
- public function onKernelRequest(RequestEvent $event): void
- {
- $request = $event->getRequest();
- $requestContents = $request->getContent();
+ public function onKernelRequest(RequestEvent $event): void
+ {
+ $request = $event->getRequest();
+ $requestContents = $request->getContent();
- if (!empty($requestContents) && $this->containsHeader($request, 'Content-Type', 'application/json')) {
- $jsonData = json_decode($requestContents, true, 512, JSON_THROW_ON_ERROR);
- if (!$jsonData) {
- throw new HttpException(Response::HTTP_BAD_REQUEST, 'Invalid json data');
- }
- $jsonDataLowerCase = [];
- foreach ($jsonData as $key => $value) {
- $jsonDataLowerCase[preg_replace_callback(
- '/_(.)/',
- static fn ($matches): string => strtoupper((string) $matches[1]),
- (string) $key
- )] = $value;
- }
- $request->request->replace($jsonDataLowerCase);
- }
- }
+ if (!empty($requestContents) && $this->containsHeader($request, 'Content-Type', 'application/json')) {
+ $jsonData = json_decode($requestContents, true, 512, JSON_THROW_ON_ERROR);
+ if (!$jsonData) {
+ throw new HttpException(Response::HTTP_BAD_REQUEST, 'Invalid json data');
+ }
+ $jsonDataLowerCase = [];
+ foreach ($jsonData as $key => $value) {
+ $jsonDataLowerCase[preg_replace_callback(
+ '/_(.)/',
+ static fn ($matches): string => strtoupper((string) $matches[1]),
+ (string) $key
+ )] = $value;
+ }
+ $request->request->replace($jsonDataLowerCase);
+ }
+ }
- private function containsHeader(Request $request, string $name, string $value): bool
- {
- return str_starts_with((string) $request->headers->get($name), $value);
- }
+ private function containsHeader(Request $request, string $name, string $value): bool
+ {
+ return str_starts_with((string) $request->headers->get($name), $value);
+ }
}
diff --git a/src/Shared/Infrastructure/Symfony/ApiController.php b/src/Shared/Infrastructure/Symfony/ApiController.php
index 50fcdd989..09dd9be51 100644
--- a/src/Shared/Infrastructure/Symfony/ApiController.php
+++ b/src/Shared/Infrastructure/Symfony/ApiController.php
@@ -14,26 +14,26 @@
abstract class ApiController
{
- public function __construct(
- private readonly QueryBus $queryBus,
- private readonly CommandBus $commandBus,
- ApiExceptionsHttpStatusCodeMapping $exceptionHandler
- ) {
- each(
- fn (int $httpCode, string $exceptionClass) => $exceptionHandler->register($exceptionClass, $httpCode),
- $this->exceptions()
- );
- }
-
- abstract protected function exceptions(): array;
-
- protected function ask(Query $query): ?Response
- {
- return $this->queryBus->ask($query);
- }
-
- protected function dispatch(Command $command): void
- {
- $this->commandBus->dispatch($command);
- }
+ public function __construct(
+ private readonly QueryBus $queryBus,
+ private readonly CommandBus $commandBus,
+ ApiExceptionsHttpStatusCodeMapping $exceptionHandler
+ ) {
+ each(
+ fn (int $httpCode, string $exceptionClass) => $exceptionHandler->register($exceptionClass, $httpCode),
+ $this->exceptions()
+ );
+ }
+
+ abstract protected function exceptions(): array;
+
+ protected function ask(Query $query): ?Response
+ {
+ return $this->queryBus->ask($query);
+ }
+
+ protected function dispatch(Command $command): void
+ {
+ $this->commandBus->dispatch($command);
+ }
}
diff --git a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
index 80ef312df..d913d8766 100644
--- a/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
+++ b/src/Shared/Infrastructure/Symfony/ApiExceptionListener.php
@@ -13,36 +13,36 @@
final readonly class ApiExceptionListener
{
- public function __construct(private ApiExceptionsHttpStatusCodeMapping $exceptionHandler) {}
-
- public function onException(ExceptionEvent $event): void
- {
- $exception = $event->getThrowable();
-
- $event->setResponse(
- new JsonResponse(
- [
- 'code' => $this->exceptionCodeFor($exception),
- 'message' => $exception->getMessage(),
- ],
- $this->exceptionHandler->statusCodeFor($exception::class)
- )
- );
- }
-
- private function exceptionCodeFor(Throwable $error): string
- {
- $domainErrorClass = DomainError::class;
-
- return $error instanceof $domainErrorClass
- ? $error->errorCode()
- : Utils::toSnakeCase($this->extractClassName($error));
- }
-
- private function extractClassName(object $object): string
- {
- $reflect = new ReflectionClass($object);
-
- return $reflect->getShortName();
- }
+ public function __construct(private ApiExceptionsHttpStatusCodeMapping $exceptionHandler) {}
+
+ public function onException(ExceptionEvent $event): void
+ {
+ $exception = $event->getThrowable();
+
+ $event->setResponse(
+ new JsonResponse(
+ [
+ 'code' => $this->exceptionCodeFor($exception),
+ 'message' => $exception->getMessage(),
+ ],
+ $this->exceptionHandler->statusCodeFor($exception::class)
+ )
+ );
+ }
+
+ private function exceptionCodeFor(Throwable $error): string
+ {
+ $domainErrorClass = DomainError::class;
+
+ return $error instanceof $domainErrorClass
+ ? $error->errorCode()
+ : Utils::toSnakeCase($this->extractClassName($error));
+ }
+
+ private function extractClassName(object $object): string
+ {
+ $reflect = new ReflectionClass($object);
+
+ return $reflect->getShortName();
+ }
}
diff --git a/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php b/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php
index 2a8694347..8b1ad8a11 100644
--- a/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php
+++ b/src/Shared/Infrastructure/Symfony/ApiExceptionsHttpStatusCodeMapping.php
@@ -12,25 +12,25 @@
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,
- ];
-
- public function register(string $exceptionClass, int $statusCode): void
- {
- $this->exceptions[$exceptionClass] = $statusCode;
- }
-
- public function statusCodeFor(string $exceptionClass): int
- {
- $statusCode = get($exceptionClass, $this->exceptions, self::DEFAULT_STATUS_CODE);
-
- if ($statusCode === null) {
- throw new InvalidArgumentException("There are no status code mapping for <$exceptionClass>");
- }
-
- return $statusCode;
- }
+ 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,
+ ];
+
+ public function register(string $exceptionClass, int $statusCode): void
+ {
+ $this->exceptions[$exceptionClass] = $statusCode;
+ }
+
+ public function statusCodeFor(string $exceptionClass): int
+ {
+ $statusCode = get($exceptionClass, $this->exceptions, self::DEFAULT_STATUS_CODE);
+
+ if ($statusCode === null) {
+ throw new InvalidArgumentException("There are no status code mapping for <$exceptionClass>");
+ }
+
+ return $statusCode;
+ }
}
diff --git a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
index 4443de0f5..ad1106448 100644
--- a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
+++ b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
@@ -14,49 +14,49 @@
final readonly class BasicHttpAuthMiddleware
{
- public function __construct(private CommandBus $bus) {}
-
- public function onKernelRequest(RequestEvent $event): void
- {
- $shouldAuthenticate = $event->getRequest()->attributes->get('auth', false);
-
- if ($shouldAuthenticate) {
- $user = $event->getRequest()->headers->get('php-auth-user');
- $pass = $event->getRequest()->headers->get('php-auth-pw');
-
- $this->hasIntroducedCredentials($user)
- ? $this->authenticate($user, $pass, $event)
- : $this->askForCredentials($event);
- }
- }
-
- private function hasIntroducedCredentials(?string $user): bool
- {
- return $user !== null;
- }
-
- private function authenticate(string $user, string $pass, RequestEvent $event): void
- {
- try {
- $this->bus->dispatch(new AuthenticateUserCommand($user, $pass));
-
- $this->addUserDataToRequest($user, $event);
- } catch (InvalidAuthCredentials|InvalidAuthUsername) {
- $event->setResponse(new JsonResponse(['error' => 'Invalid credentials'], Response::HTTP_FORBIDDEN));
- }
- }
-
- private function addUserDataToRequest(string $user, RequestEvent $event): void
- {
- $event->getRequest()->attributes->set('authenticated_username', $user);
- }
-
- private function askForCredentials(RequestEvent $event): void
- {
- $event->setResponse(
- new Response('', Response::HTTP_UNAUTHORIZED, [
+ public function __construct(private CommandBus $bus) {}
+
+ public function onKernelRequest(RequestEvent $event): void
+ {
+ $shouldAuthenticate = $event->getRequest()->attributes->get('auth', false);
+
+ if ($shouldAuthenticate) {
+ $user = $event->getRequest()->headers->get('php-auth-user');
+ $pass = $event->getRequest()->headers->get('php-auth-pw');
+
+ $this->hasIntroducedCredentials($user)
+ ? $this->authenticate($user, $pass, $event)
+ : $this->askForCredentials($event);
+ }
+ }
+
+ private function hasIntroducedCredentials(?string $user): bool
+ {
+ return $user !== null;
+ }
+
+ private function authenticate(string $user, string $pass, RequestEvent $event): void
+ {
+ try {
+ $this->bus->dispatch(new AuthenticateUserCommand($user, $pass));
+
+ $this->addUserDataToRequest($user, $event);
+ } catch (InvalidAuthCredentials|InvalidAuthUsername) {
+ $event->setResponse(new JsonResponse(['error' => 'Invalid credentials'], Response::HTTP_FORBIDDEN));
+ }
+ }
+
+ private function addUserDataToRequest(string $user, RequestEvent $event): void
+ {
+ $event->getRequest()->attributes->set('authenticated_username', $user);
+ }
+
+ private function askForCredentials(RequestEvent $event): void
+ {
+ $event->setResponse(
+ new Response('', Response::HTTP_UNAUTHORIZED, [
'WWW-Authenticate' => 'Basic realm="CodelyTV"',
])
- );
- }
+ );
+ }
}
diff --git a/src/Shared/Infrastructure/Symfony/FlashSession.php b/src/Shared/Infrastructure/Symfony/FlashSession.php
index 812c2a8b0..61bc6a523 100644
--- a/src/Shared/Infrastructure/Symfony/FlashSession.php
+++ b/src/Shared/Infrastructure/Symfony/FlashSession.php
@@ -9,34 +9,34 @@
final class FlashSession
{
- private static array $flashes = [];
-
- public function __construct(RequestStack $requestStack)
- {
- self::$flashes = Utils::dot($requestStack->getSession()->getFlashBag()->all());
- }
-
- public function get(string $key, $default = null)
- {
- if (array_key_exists($key, self::$flashes)) {
- return self::$flashes[$key];
- }
-
- if (array_key_exists($key . '.0', self::$flashes)) {
- return self::$flashes[$key . '.0'];
- }
-
- if (array_key_exists($key . '.0.0', self::$flashes)) {
- return self::$flashes[$key . '.0.0'];
- }
-
- return $default;
- }
-
- public function has(string $key): bool
- {
- return array_key_exists($key, self::$flashes)
- || array_key_exists($key . '.0', self::$flashes)
- || array_key_exists($key . '.0.0', self::$flashes);
- }
+ private static array $flashes = [];
+
+ public function __construct(RequestStack $requestStack)
+ {
+ self::$flashes = Utils::dot($requestStack->getSession()->getFlashBag()->all());
+ }
+
+ public function get(string $key, $default = null)
+ {
+ if (array_key_exists($key, self::$flashes)) {
+ return self::$flashes[$key];
+ }
+
+ if (array_key_exists($key . '.0', self::$flashes)) {
+ return self::$flashes[$key . '.0'];
+ }
+
+ if (array_key_exists($key . '.0.0', self::$flashes)) {
+ return self::$flashes[$key . '.0.0'];
+ }
+
+ return $default;
+ }
+
+ public function has(string $key): bool
+ {
+ return array_key_exists($key, self::$flashes)
+ || array_key_exists($key . '.0', self::$flashes)
+ || array_key_exists($key . '.0.0', self::$flashes);
+ }
}
diff --git a/src/Shared/Infrastructure/Symfony/WebController.php b/src/Shared/Infrastructure/Symfony/WebController.php
index 26bbecf23..741d764f0 100644
--- a/src/Shared/Infrastructure/Symfony/WebController.php
+++ b/src/Shared/Infrastructure/Symfony/WebController.php
@@ -16,59 +16,59 @@
abstract class WebController extends ApiController
{
- public function __construct(
- 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 __construct(
+ private readonly Environment $twig,
+ private readonly RouterInterface $router,
+ private readonly RequestStack $requestStack,
+ QueryBus $queryBus,
+ CommandBus $commandBus,
+ ApiExceptionsHttpStatusCodeMapping $exceptionHandler
+ ) {
+ parent::__construct($queryBus, $commandBus, $exceptionHandler);
+ }
- final public function render(string $templatePath, array $arguments = []): SymfonyResponse
- {
- return new SymfonyResponse($this->twig->render($templatePath, $arguments));
- }
+ final public function render(string $templatePath, array $arguments = []): SymfonyResponse
+ {
+ return new SymfonyResponse($this->twig->render($templatePath, $arguments));
+ }
- final public function redirect(string $routeName): RedirectResponse
- {
- return new RedirectResponse($this->router->generate($routeName), 302);
- }
+ final public function redirect(string $routeName): RedirectResponse
+ {
+ return new RedirectResponse($this->router->generate($routeName), 302);
+ }
- final public function redirectWithMessage(string $routeName, string $message): RedirectResponse
- {
- $this->addFlashFor('message', [$message]);
+ final public function redirectWithMessage(string $routeName, string $message): RedirectResponse
+ {
+ $this->addFlashFor('message', [$message]);
- return $this->redirect($routeName);
- }
+ return $this->redirect($routeName);
+ }
- final public function redirectWithErrors(
- string $routeName,
- ConstraintViolationListInterface $errors,
- Request $request
- ): RedirectResponse {
- $this->addFlashFor('errors', $this->formatFlashErrors($errors));
- $this->addFlashFor('inputs', $request->request->all());
+ final public function redirectWithErrors(
+ string $routeName,
+ ConstraintViolationListInterface $errors,
+ Request $request
+ ): RedirectResponse {
+ $this->addFlashFor('errors', $this->formatFlashErrors($errors));
+ $this->addFlashFor('inputs', $request->request->all());
- return new RedirectResponse($this->router->generate($routeName), 302);
- }
+ return new RedirectResponse($this->router->generate($routeName), 302);
+ }
- private function formatFlashErrors(ConstraintViolationListInterface $violations): array
- {
- $errors = [];
- foreach ($violations as $violation) {
- $errors[str_replace(['[', ']'], ['', ''], $violation->getPropertyPath())] = $violation->getMessage();
- }
+ private function formatFlashErrors(ConstraintViolationListInterface $violations): array
+ {
+ $errors = [];
+ foreach ($violations as $violation) {
+ $errors[str_replace(['[', ']'], ['', ''], $violation->getPropertyPath())] = $violation->getMessage();
+ }
- return $errors;
- }
+ return $errors;
+ }
- private function addFlashFor(string $prefix, array $messages): void
- {
- foreach ($messages as $key => $message) {
- $this->requestStack->getSession()->getFlashBag()->set($prefix . '.' . $key, $message);
- }
- }
+ private function addFlashFor(string $prefix, array $messages): void
+ {
+ foreach ($messages as $key => $message) {
+ $this->requestStack->getSession()->getFlashBag()->set($prefix . '.' . $key, $message);
+ }
+ }
}
diff --git a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php
index a5fc8a61c..320be5d69 100644
--- a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php
+++ b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php
@@ -14,49 +14,49 @@
final class AuthenticateUserCommandHandlerTest extends AuthModuleUnitTestCase
{
- private AuthenticateUserCommandHandler|null $handler;
+ private AuthenticateUserCommandHandler|null $handler;
- protected function setUp(): void
- {
- parent::setUp();
+ protected function setUp(): void
+ {
+ parent::setUp();
- $this->handler = new AuthenticateUserCommandHandler(new UserAuthenticator($this->repository()));
- }
+ $this->handler = new AuthenticateUserCommandHandler(new UserAuthenticator($this->repository()));
+ }
- /** @test */
- public function it_should_authenticate_a_valid_user(): void
- {
- $command = AuthenticateUserCommandMother::create();
- $authUser = AuthUserMother::fromCommand($command);
+ /** @test */
+ public function it_should_authenticate_a_valid_user(): void
+ {
+ $command = AuthenticateUserCommandMother::create();
+ $authUser = AuthUserMother::fromCommand($command);
- $this->shouldSearch($authUser->username(), $authUser);
+ $this->shouldSearch($authUser->username(), $authUser);
- $this->dispatch($command, $this->handler);
- }
+ $this->dispatch($command, $this->handler);
+ }
- /** @test */
- public function it_should_throw_an_exception_when_the_user_does_not_exist(): void
- {
- $this->expectException(InvalidAuthUsername::class);
+ /** @test */
+ public function it_should_throw_an_exception_when_the_user_does_not_exist(): void
+ {
+ $this->expectException(InvalidAuthUsername::class);
- $command = AuthenticateUserCommandMother::create();
- $username = AuthUsernameMother::create($command->username());
+ $command = AuthenticateUserCommandMother::create();
+ $username = AuthUsernameMother::create($command->username());
- $this->shouldSearch($username);
+ $this->shouldSearch($username);
- $this->dispatch($command, $this->handler);
- }
+ $this->dispatch($command, $this->handler);
+ }
- /** @test */
- public function it_should_throw_an_exception_when_the_password_does_not_math(): void
- {
- $this->expectException(InvalidAuthCredentials::class);
+ /** @test */
+ public function it_should_throw_an_exception_when_the_password_does_not_math(): void
+ {
+ $this->expectException(InvalidAuthCredentials::class);
- $command = AuthenticateUserCommandMother::create();
- $authUser = AuthUserMother::create(username: AuthUsernameMother::create($command->username()));
+ $command = AuthenticateUserCommandMother::create();
+ $authUser = AuthUserMother::create(username: AuthUsernameMother::create($command->username()));
- $this->shouldSearch($authUser->username(), $authUser);
+ $this->shouldSearch($authUser->username(), $authUser);
- $this->dispatch($command, $this->handler);
- }
+ $this->dispatch($command, $this->handler);
+ }
}
diff --git a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandMother.php b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandMother.php
index d42c37d95..4418e2b9f 100644
--- a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandMother.php
+++ b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandMother.php
@@ -12,13 +12,13 @@
final class AuthenticateUserCommandMother
{
- public static function create(
- ?AuthUsername $username = null,
- ?AuthPassword $password = null
- ): AuthenticateUserCommand {
- return new AuthenticateUserCommand(
- $username?->value() ?? AuthUsernameMother::create()->value(),
- $password?->value() ?? AuthPasswordMother::create()->value()
- );
- }
+ public static function create(
+ ?AuthUsername $username = null,
+ ?AuthPassword $password = null
+ ): AuthenticateUserCommand {
+ return new AuthenticateUserCommand(
+ $username?->value() ?? AuthUsernameMother::create()->value(),
+ $password?->value() ?? AuthPasswordMother::create()->value()
+ );
+ }
}
diff --git a/tests/Backoffice/Auth/AuthModuleUnitTestCase.php b/tests/Backoffice/Auth/AuthModuleUnitTestCase.php
index a5402858a..3abdfa568 100644
--- a/tests/Backoffice/Auth/AuthModuleUnitTestCase.php
+++ b/tests/Backoffice/Auth/AuthModuleUnitTestCase.php
@@ -12,19 +12,19 @@
abstract class AuthModuleUnitTestCase extends UnitTestCase
{
- private AuthRepository|MockInterface|null $repository = null;
+ private AuthRepository|MockInterface|null $repository = null;
- protected function shouldSearch(AuthUsername $username, AuthUser $authUser = null): void
- {
- $this->repository()
- ->shouldReceive('search')
- ->with($this->similarTo($username))
- ->once()
- ->andReturn($authUser);
- }
+ protected function shouldSearch(AuthUsername $username, AuthUser $authUser = null): void
+ {
+ $this->repository()
+ ->shouldReceive('search')
+ ->with($this->similarTo($username))
+ ->once()
+ ->andReturn($authUser);
+ }
- protected function repository(): AuthRepository|MockInterface
- {
- return $this->repository ??= $this->mock(AuthRepository::class);
- }
+ protected function repository(): AuthRepository|MockInterface
+ {
+ return $this->repository ??= $this->mock(AuthRepository::class);
+ }
}
diff --git a/tests/Backoffice/Auth/Domain/AuthPasswordMother.php b/tests/Backoffice/Auth/Domain/AuthPasswordMother.php
index 6b344f818..9426c01c6 100644
--- a/tests/Backoffice/Auth/Domain/AuthPasswordMother.php
+++ b/tests/Backoffice/Auth/Domain/AuthPasswordMother.php
@@ -9,8 +9,8 @@
final class AuthPasswordMother
{
- public static function create(?string $value = null): AuthPassword
- {
- return new AuthPassword($value ?? UuidMother::create());
- }
+ public static function create(?string $value = null): AuthPassword
+ {
+ return new AuthPassword($value ?? UuidMother::create());
+ }
}
diff --git a/tests/Backoffice/Auth/Domain/AuthUserMother.php b/tests/Backoffice/Auth/Domain/AuthUserMother.php
index 0776c4838..76e3d34dc 100644
--- a/tests/Backoffice/Auth/Domain/AuthUserMother.php
+++ b/tests/Backoffice/Auth/Domain/AuthUserMother.php
@@ -11,16 +11,16 @@
final class AuthUserMother
{
- public static function create(?AuthUsername $username = null, ?AuthPassword $password = null): AuthUser
- {
- return new AuthUser($username ?? AuthUsernameMother::create(), $password ?? AuthPasswordMother::create());
- }
+ public static function create(?AuthUsername $username = null, ?AuthPassword $password = null): AuthUser
+ {
+ return new AuthUser($username ?? AuthUsernameMother::create(), $password ?? AuthPasswordMother::create());
+ }
- public static function fromCommand(AuthenticateUserCommand $command): AuthUser
- {
- return self::create(
- AuthUsernameMother::create($command->username()),
- AuthPasswordMother::create($command->password())
- );
- }
+ public static function fromCommand(AuthenticateUserCommand $command): AuthUser
+ {
+ return self::create(
+ AuthUsernameMother::create($command->username()),
+ AuthPasswordMother::create($command->password())
+ );
+ }
}
diff --git a/tests/Backoffice/Auth/Domain/AuthUsernameMother.php b/tests/Backoffice/Auth/Domain/AuthUsernameMother.php
index 128f15382..988cedff5 100644
--- a/tests/Backoffice/Auth/Domain/AuthUsernameMother.php
+++ b/tests/Backoffice/Auth/Domain/AuthUsernameMother.php
@@ -9,8 +9,8 @@
final class AuthUsernameMother
{
- public static function create(?string $value = null): AuthUsername
- {
- return new AuthUsername($value ?? WordMother::create());
- }
+ public static function create(?string $value = null): AuthUsername
+ {
+ return new AuthUsername($value ?? WordMother::create());
+ }
}
diff --git a/tests/Backoffice/Courses/BackofficeCoursesModuleInfrastructureTestCase.php b/tests/Backoffice/Courses/BackofficeCoursesModuleInfrastructureTestCase.php
index b39b1b249..fe07bd4ae 100644
--- a/tests/Backoffice/Courses/BackofficeCoursesModuleInfrastructureTestCase.php
+++ b/tests/Backoffice/Courses/BackofficeCoursesModuleInfrastructureTestCase.php
@@ -11,13 +11,13 @@
abstract class BackofficeCoursesModuleInfrastructureTestCase extends BackofficeContextInfrastructureTestCase
{
- protected function mySqlRepository(): MySqlBackofficeCourseRepository
- {
- return new MySqlBackofficeCourseRepository($this->service(EntityManager::class));
- }
+ protected function mySqlRepository(): MySqlBackofficeCourseRepository
+ {
+ return new MySqlBackofficeCourseRepository($this->service(EntityManager::class));
+ }
- protected function elasticRepository(): ElasticsearchBackofficeCourseRepository
- {
- return $this->service(ElasticsearchBackofficeCourseRepository::class);
- }
+ protected function elasticRepository(): ElasticsearchBackofficeCourseRepository
+ {
+ return $this->service(ElasticsearchBackofficeCourseRepository::class);
+ }
}
diff --git a/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php b/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php
index d6620c4ad..666d30ab0 100644
--- a/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php
+++ b/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php
@@ -11,16 +11,16 @@
final class BackofficeCourseCriteriaMother
{
- public static function nameContains(string $text): Criteria
- {
- return CriteriaMother::create(
- FiltersMother::createOne(
- FilterMother::fromValues([
- 'field' => 'name',
- 'operator' => 'CONTAINS',
- 'value' => $text,
- ])
- )
- );
- }
+ public static function nameContains(string $text): Criteria
+ {
+ return CriteriaMother::create(
+ FiltersMother::createOne(
+ FilterMother::fromValues([
+ 'field' => 'name',
+ 'operator' => 'CONTAINS',
+ 'value' => $text,
+ ])
+ )
+ );
+ }
}
diff --git a/tests/Backoffice/Courses/Domain/BackofficeCourseMother.php b/tests/Backoffice/Courses/Domain/BackofficeCourseMother.php
index a28a35032..9d2ffbe35 100644
--- a/tests/Backoffice/Courses/Domain/BackofficeCourseMother.php
+++ b/tests/Backoffice/Courses/Domain/BackofficeCourseMother.php
@@ -11,12 +11,12 @@
final class BackofficeCourseMother
{
- public static function create(?string $id = null, ?string $name = null, ?string $duration = null): BackofficeCourse
- {
- return new BackofficeCourse(
- $id ?? CourseIdMother::create()->value(),
- $name ?? CourseNameMother::create()->value(),
- $duration ?? CourseDurationMother::create()->value()
- );
- }
+ public static function create(?string $id = null, ?string $name = null, ?string $duration = null): BackofficeCourse
+ {
+ return new BackofficeCourse(
+ $id ?? CourseIdMother::create()->value(),
+ $name ?? CourseNameMother::create()->value(),
+ $duration ?? CourseDurationMother::create()->value()
+ );
+ }
}
diff --git a/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php b/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php
index 10212414f..a45718666 100644
--- a/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php
+++ b/tests/Backoffice/Courses/Infrastructure/Persistence/ElasticsearchBackofficeCourseRepositoryTest.php
@@ -11,59 +11,56 @@
final class ElasticsearchBackofficeCourseRepositoryTest extends BackofficeCoursesModuleInfrastructureTestCase
{
- /** @test */
- public function it_should_save_a_valid_course(): void
- {
- $this->elasticRepository()->save(BackofficeCourseMother::create());
- }
+ /** @test */
+ public function it_should_save_a_valid_course(): void
+ {
+ $this->elasticRepository()->save(BackofficeCourseMother::create());
+ }
- /** @test */
- public function it_should_search_all_existing_courses(): void
- {
- $existingCourse = BackofficeCourseMother::create();
- $anotherExistingCourse = BackofficeCourseMother::create();
- $existingCourses = [$existingCourse, $anotherExistingCourse];
+ /** @test */
+ public function it_should_search_all_existing_courses(): void
+ {
+ $existingCourse = BackofficeCourseMother::create();
+ $anotherExistingCourse = BackofficeCourseMother::create();
+ $existingCourses = [$existingCourse, $anotherExistingCourse];
- $this->elasticRepository()->save($existingCourse);
- $this->elasticRepository()->save($anotherExistingCourse);
+ $this->elasticRepository()->save($existingCourse);
+ $this->elasticRepository()->save($anotherExistingCourse);
- $this->eventually(fn () => $this->assertSimilar($existingCourses, $this->elasticRepository()->searchAll()));
- }
+ $this->eventually(fn () => $this->assertSimilar($existingCourses, $this->elasticRepository()->searchAll()));
+ }
- /** @test */
- public function it_should_search_all_existing_courses_with_an_empty_criteria(): void
- {
- $existingCourse = BackofficeCourseMother::create();
- $anotherExistingCourse = BackofficeCourseMother::create();
- $existingCourses = [$existingCourse, $anotherExistingCourse];
+ /** @test */
+ public function it_should_search_all_existing_courses_with_an_empty_criteria(): void
+ {
+ $existingCourse = BackofficeCourseMother::create();
+ $anotherExistingCourse = BackofficeCourseMother::create();
+ $existingCourses = [$existingCourse, $anotherExistingCourse];
- $this->elasticRepository()->save($existingCourse);
- $this->elasticRepository()->save($anotherExistingCourse);
+ $this->elasticRepository()->save($existingCourse);
+ $this->elasticRepository()->save($anotherExistingCourse);
- $this->eventually(
- fn () => $this->assertSimilar(
- $existingCourses,
- $this->elasticRepository()->matching(CriteriaMother::empty())
- )
- );
- }
+ $this->eventually(
+ fn () => $this->assertSimilar($existingCourses, $this->elasticRepository()->matching(CriteriaMother::empty()))
+ );
+ }
- /** @test */
- public function it_should_filter_by_criteria(): void
- {
- $dddInPhpCourse = BackofficeCourseMother::create(name: 'DDD en PHP');
- $dddInJavaCourse = BackofficeCourseMother::create(name: 'DDD en Java');
- $intellijCourse = BackofficeCourseMother::create(name: 'Exprimiendo Intellij');
- $dddCourses = [$dddInPhpCourse, $dddInJavaCourse];
+ /** @test */
+ public function it_should_filter_by_criteria(): void
+ {
+ $dddInPhpCourse = BackofficeCourseMother::create(name: 'DDD en PHP');
+ $dddInJavaCourse = BackofficeCourseMother::create(name: 'DDD en Java');
+ $intellijCourse = BackofficeCourseMother::create(name: 'Exprimiendo Intellij');
+ $dddCourses = [$dddInPhpCourse, $dddInJavaCourse];
- $nameContainsDddCriteria = BackofficeCourseCriteriaMother::nameContains('DDD');
+ $nameContainsDddCriteria = BackofficeCourseCriteriaMother::nameContains('DDD');
- $this->elasticRepository()->save($dddInJavaCourse);
- $this->elasticRepository()->save($dddInPhpCourse);
- $this->elasticRepository()->save($intellijCourse);
+ $this->elasticRepository()->save($dddInJavaCourse);
+ $this->elasticRepository()->save($dddInPhpCourse);
+ $this->elasticRepository()->save($intellijCourse);
- $this->eventually(
- fn () => $this->assertSimilar($dddCourses, $this->elasticRepository()->matching($nameContainsDddCriteria))
- );
- }
+ $this->eventually(
+ fn () => $this->assertSimilar($dddCourses, $this->elasticRepository()->matching($nameContainsDddCriteria))
+ );
+ }
}
diff --git a/tests/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepositoryTest.php b/tests/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepositoryTest.php
index eb2f3b457..300d01d99 100644
--- a/tests/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepositoryTest.php
+++ b/tests/Backoffice/Courses/Infrastructure/Persistence/MySqlBackofficeCourseRepositoryTest.php
@@ -11,54 +11,54 @@
final class MySqlBackofficeCourseRepositoryTest extends BackofficeCoursesModuleInfrastructureTestCase
{
- /** @test */
- public function it_should_save_a_valid_course(): void
- {
- $this->mySqlRepository()->save(BackofficeCourseMother::create());
- }
+ /** @test */
+ public function it_should_save_a_valid_course(): void
+ {
+ $this->mySqlRepository()->save(BackofficeCourseMother::create());
+ }
- /** @test */
- public function it_should_search_all_existing_courses(): void
- {
- $existingCourse = BackofficeCourseMother::create();
- $anotherExistingCourse = BackofficeCourseMother::create();
- $existingCourses = [$existingCourse, $anotherExistingCourse];
+ /** @test */
+ public function it_should_search_all_existing_courses(): void
+ {
+ $existingCourse = BackofficeCourseMother::create();
+ $anotherExistingCourse = BackofficeCourseMother::create();
+ $existingCourses = [$existingCourse, $anotherExistingCourse];
- $this->mySqlRepository()->save($existingCourse);
- $this->mySqlRepository()->save($anotherExistingCourse);
+ $this->mySqlRepository()->save($existingCourse);
+ $this->mySqlRepository()->save($anotherExistingCourse);
- $this->assertSimilar($existingCourses, $this->mySqlRepository()->searchAll());
- }
+ $this->assertSimilar($existingCourses, $this->mySqlRepository()->searchAll());
+ }
- /** @test */
- public function it_should_search_all_existing_courses_with_an_empty_criteria(): void
- {
- $existingCourse = BackofficeCourseMother::create();
- $anotherExistingCourse = BackofficeCourseMother::create();
- $existingCourses = [$existingCourse, $anotherExistingCourse];
+ /** @test */
+ public function it_should_search_all_existing_courses_with_an_empty_criteria(): void
+ {
+ $existingCourse = BackofficeCourseMother::create();
+ $anotherExistingCourse = BackofficeCourseMother::create();
+ $existingCourses = [$existingCourse, $anotherExistingCourse];
- $this->mySqlRepository()->save($existingCourse);
- $this->mySqlRepository()->save($anotherExistingCourse);
- $this->clearUnitOfWork();
+ $this->mySqlRepository()->save($existingCourse);
+ $this->mySqlRepository()->save($anotherExistingCourse);
+ $this->clearUnitOfWork();
- $this->assertSimilar($existingCourses, $this->mySqlRepository()->matching(CriteriaMother::empty()));
- }
+ $this->assertSimilar($existingCourses, $this->mySqlRepository()->matching(CriteriaMother::empty()));
+ }
- /** @test */
- public function it_should_filter_by_criteria(): void
- {
- $dddInPhpCourse = BackofficeCourseMother::create(name: 'DDD en PHP');
- $dddInJavaCourse = BackofficeCourseMother::create(name: 'DDD en Java');
- $intellijCourse = BackofficeCourseMother::create(name: 'Exprimiendo Intellij');
- $dddCourses = [$dddInPhpCourse, $dddInJavaCourse];
+ /** @test */
+ public function it_should_filter_by_criteria(): void
+ {
+ $dddInPhpCourse = BackofficeCourseMother::create(name: 'DDD en PHP');
+ $dddInJavaCourse = BackofficeCourseMother::create(name: 'DDD en Java');
+ $intellijCourse = BackofficeCourseMother::create(name: 'Exprimiendo Intellij');
+ $dddCourses = [$dddInPhpCourse, $dddInJavaCourse];
- $nameContainsDddCriteria = BackofficeCourseCriteriaMother::nameContains('DDD');
+ $nameContainsDddCriteria = BackofficeCourseCriteriaMother::nameContains('DDD');
- $this->mySqlRepository()->save($dddInJavaCourse);
- $this->mySqlRepository()->save($dddInPhpCourse);
- $this->mySqlRepository()->save($intellijCourse);
- $this->clearUnitOfWork();
+ $this->mySqlRepository()->save($dddInJavaCourse);
+ $this->mySqlRepository()->save($dddInPhpCourse);
+ $this->mySqlRepository()->save($intellijCourse);
+ $this->clearUnitOfWork();
- $this->assertSimilar($dddCourses, $this->mySqlRepository()->matching($nameContainsDddCriteria));
- }
+ $this->assertSimilar($dddCourses, $this->mySqlRepository()->matching($nameContainsDddCriteria));
+ }
}
diff --git a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeContextInfrastructureTestCase.php b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeContextInfrastructureTestCase.php
index a64387798..0292a6623 100644
--- a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeContextInfrastructureTestCase.php
+++ b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeContextInfrastructureTestCase.php
@@ -11,20 +11,20 @@
abstract class BackofficeContextInfrastructureTestCase extends InfrastructureTestCase
{
- protected function setUp(): void
- {
- parent::setUp();
+ protected function setUp(): void
+ {
+ parent::setUp();
- $arranger = new BackofficeEnvironmentArranger(
- $this->service(ElasticsearchClient::class),
- $this->service(EntityManager::class)
- );
+ $arranger = new BackofficeEnvironmentArranger(
+ $this->service(ElasticsearchClient::class),
+ $this->service(EntityManager::class)
+ );
- $arranger->arrange();
- }
+ $arranger->arrange();
+ }
- protected function kernelClass(): string
- {
- return BackofficeBackendKernel::class;
- }
+ protected function kernelClass(): string
+ {
+ return BackofficeBackendKernel::class;
+ }
}
diff --git a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php
index 4bee80f16..33a33ea05 100644
--- a/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php
+++ b/tests/Backoffice/Shared/Infraestructure/PhpUnit/BackofficeEnvironmentArranger.php
@@ -14,13 +14,13 @@
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
- {
- apply(new ElasticDatabaseCleaner(), [$this->elasticsearchClient]);
- apply(new MySqlDatabaseCleaner(), [$this->entityManager]);
- }
+ public function arrange(): void
+ {
+ apply(new ElasticDatabaseCleaner(), [$this->elasticsearchClient]);
+ 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 fa17355db..e2c723de9 100644
--- a/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php
+++ b/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php
@@ -12,26 +12,26 @@
final class CreateCourseCommandHandlerTest extends CoursesModuleUnitTestCase
{
- private CreateCourseCommandHandler|null $handler;
+ private CreateCourseCommandHandler|null $handler;
- protected function setUp(): void
- {
- parent::setUp();
+ protected function setUp(): void
+ {
+ parent::setUp();
- $this->handler = new CreateCourseCommandHandler(new CourseCreator($this->repository(), $this->eventBus()));
- }
+ $this->handler = new CreateCourseCommandHandler(new CourseCreator($this->repository(), $this->eventBus()));
+ }
- /** @test */
- public function it_should_create_a_valid_course(): void
- {
- $command = CreateCourseCommandMother::create();
+ /** @test */
+ public function it_should_create_a_valid_course(): void
+ {
+ $command = CreateCourseCommandMother::create();
- $course = CourseMother::fromRequest($command);
- $domainEvent = CourseCreatedDomainEventMother::fromCourse($course);
+ $course = CourseMother::fromRequest($command);
+ $domainEvent = CourseCreatedDomainEventMother::fromCourse($course);
- $this->shouldSave($course);
- $this->shouldPublishDomainEvent($domainEvent);
+ $this->shouldSave($course);
+ $this->shouldPublishDomainEvent($domainEvent);
- $this->dispatch($command, $this->handler);
- }
+ $this->dispatch($command, $this->handler);
+ }
}
diff --git a/tests/Mooc/Courses/Application/Create/CreateCourseCommandMother.php b/tests/Mooc/Courses/Application/Create/CreateCourseCommandMother.php
index a1ba53fe2..9d4b31fea 100644
--- a/tests/Mooc/Courses/Application/Create/CreateCourseCommandMother.php
+++ b/tests/Mooc/Courses/Application/Create/CreateCourseCommandMother.php
@@ -14,15 +14,15 @@
final class CreateCourseCommandMother
{
- public static function create(
- ?CourseId $id = null,
- ?CourseName $name = null,
- ?CourseDuration $duration = null
- ): CreateCourseCommand {
- return new CreateCourseCommand(
- $id?->value() ?? CourseIdMother::create()->value(),
- $name?->value() ?? CourseNameMother::create()->value(),
- $duration?->value() ?? CourseDurationMother::create()->value()
- );
- }
+ public static function create(
+ ?CourseId $id = null,
+ ?CourseName $name = null,
+ ?CourseDuration $duration = null
+ ): CreateCourseCommand {
+ return new CreateCourseCommand(
+ $id?->value() ?? CourseIdMother::create()->value(),
+ $name?->value() ?? CourseNameMother::create()->value(),
+ $duration?->value() ?? CourseDurationMother::create()->value()
+ );
+ }
}
diff --git a/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php b/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php
index 9481c0557..ff1f1b8b5 100644
--- a/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php
+++ b/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php
@@ -14,38 +14,38 @@
final class CourseRenamerTest extends CoursesModuleUnitTestCase
{
- private CourseRenamer|null $renamer;
+ private CourseRenamer|null $renamer;
- protected function setUp(): void
- {
- parent::setUp();
+ protected function setUp(): void
+ {
+ parent::setUp();
- $this->renamer = new CourseRenamer($this->repository(), $this->eventBus());
- }
+ $this->renamer = new CourseRenamer($this->repository(), $this->eventBus());
+ }
- /** @test */
- public function it_should_rename_an_existing_course(): void
- {
- $course = CourseMother::create();
- $newName = CourseNameMother::create();
- $renamedCourse = DuplicatorMother::with($course, ['name' => $newName]);
+ /** @test */
+ public function it_should_rename_an_existing_course(): void
+ {
+ $course = CourseMother::create();
+ $newName = CourseNameMother::create();
+ $renamedCourse = DuplicatorMother::with($course, ['name' => $newName]);
- $this->shouldSearch($course->id(), $course);
- $this->shouldSave($renamedCourse);
- $this->shouldNotPublishDomainEvent();
+ $this->shouldSearch($course->id(), $course);
+ $this->shouldSave($renamedCourse);
+ $this->shouldNotPublishDomainEvent();
- $this->renamer->__invoke($course->id(), $newName);
- }
+ $this->renamer->__invoke($course->id(), $newName);
+ }
- /** @test */
- public function it_should_throw_an_exception_when_the_course_not_exist(): void
- {
- $this->expectException(CourseNotExist::class);
+ /** @test */
+ public function it_should_throw_an_exception_when_the_course_not_exist(): void
+ {
+ $this->expectException(CourseNotExist::class);
- $id = CourseIdMother::create();
+ $id = CourseIdMother::create();
- $this->shouldSearch($id, null);
+ $this->shouldSearch($id, null);
- $this->renamer->__invoke($id, CourseNameMother::create());
- }
+ $this->renamer->__invoke($id, CourseNameMother::create());
+ }
}
diff --git a/tests/Mooc/Courses/CoursesModuleInfrastructureTestCase.php b/tests/Mooc/Courses/CoursesModuleInfrastructureTestCase.php
index b81e7d9e8..67ad24223 100644
--- a/tests/Mooc/Courses/CoursesModuleInfrastructureTestCase.php
+++ b/tests/Mooc/Courses/CoursesModuleInfrastructureTestCase.php
@@ -9,8 +9,8 @@
abstract class CoursesModuleInfrastructureTestCase extends MoocContextInfrastructureTestCase
{
- protected function repository(): CourseRepository
- {
- return $this->service(CourseRepository::class);
- }
+ protected function repository(): CourseRepository
+ {
+ return $this->service(CourseRepository::class);
+ }
}
diff --git a/tests/Mooc/Courses/CoursesModuleUnitTestCase.php b/tests/Mooc/Courses/CoursesModuleUnitTestCase.php
index 3de440cdf..6fd84ad21 100644
--- a/tests/Mooc/Courses/CoursesModuleUnitTestCase.php
+++ b/tests/Mooc/Courses/CoursesModuleUnitTestCase.php
@@ -12,28 +12,28 @@
abstract class CoursesModuleUnitTestCase extends UnitTestCase
{
- private CourseRepository|MockInterface|null $repository = null;
+ private CourseRepository|MockInterface|null $repository = null;
- protected function shouldSave(Course $course): void
- {
- $this->repository()
- ->shouldReceive('save')
- ->with($this->similarTo($course))
- ->once()
- ->andReturnNull();
- }
+ protected function shouldSave(Course $course): void
+ {
+ $this->repository()
+ ->shouldReceive('save')
+ ->with($this->similarTo($course))
+ ->once()
+ ->andReturnNull();
+ }
- protected function shouldSearch(CourseId $id, ?Course $course): void
- {
- $this->repository()
- ->shouldReceive('search')
- ->with($this->similarTo($id))
- ->once()
- ->andReturn($course);
- }
+ protected function shouldSearch(CourseId $id, ?Course $course): void
+ {
+ $this->repository()
+ ->shouldReceive('search')
+ ->with($this->similarTo($id))
+ ->once()
+ ->andReturn($course);
+ }
- protected function repository(): CourseRepository|MockInterface
- {
- return $this->repository ??= $this->mock(CourseRepository::class);
- }
+ protected function repository(): CourseRepository|MockInterface
+ {
+ return $this->repository ??= $this->mock(CourseRepository::class);
+ }
}
diff --git a/tests/Mooc/Courses/Domain/CourseCreatedDomainEventMother.php b/tests/Mooc/Courses/Domain/CourseCreatedDomainEventMother.php
index 00044f5fe..b04f7109d 100644
--- a/tests/Mooc/Courses/Domain/CourseCreatedDomainEventMother.php
+++ b/tests/Mooc/Courses/Domain/CourseCreatedDomainEventMother.php
@@ -12,20 +12,20 @@
final class CourseCreatedDomainEventMother
{
- public static function create(
- ?CourseId $id = null,
- ?CourseName $name = null,
- ?CourseDuration $duration = null
- ): CourseCreatedDomainEvent {
- return new CourseCreatedDomainEvent(
- $id?->value() ?? CourseIdMother::create()->value(),
- $name?->value() ?? CourseNameMother::create()->value(),
- $duration?->value() ?? CourseDurationMother::create()->value()
- );
- }
+ public static function create(
+ ?CourseId $id = null,
+ ?CourseName $name = null,
+ ?CourseDuration $duration = null
+ ): CourseCreatedDomainEvent {
+ return new CourseCreatedDomainEvent(
+ $id?->value() ?? CourseIdMother::create()->value(),
+ $name?->value() ?? CourseNameMother::create()->value(),
+ $duration?->value() ?? CourseDurationMother::create()->value()
+ );
+ }
- public static function fromCourse(Course $course): CourseCreatedDomainEvent
- {
- return self::create($course->id(), $course->name(), $course->duration());
- }
+ public static function fromCourse(Course $course): CourseCreatedDomainEvent
+ {
+ return self::create($course->id(), $course->name(), $course->duration());
+ }
}
diff --git a/tests/Mooc/Courses/Domain/CourseDurationMother.php b/tests/Mooc/Courses/Domain/CourseDurationMother.php
index a3b78ae84..2cfc68c06 100644
--- a/tests/Mooc/Courses/Domain/CourseDurationMother.php
+++ b/tests/Mooc/Courses/Domain/CourseDurationMother.php
@@ -10,17 +10,17 @@
final class CourseDurationMother
{
- public static function create(?string $value = null): CourseDuration
- {
- return new CourseDuration($value ?? self::random());
- }
+ public static function create(?string $value = null): CourseDuration
+ {
+ return new CourseDuration($value ?? self::random());
+ }
- private static function random(): string
- {
- return sprintf(
- '%s %s',
- IntegerMother::lessThan(100),
- RandomElementPicker::from('months', 'years', 'days', 'hours', 'minutes', 'seconds')
- );
- }
+ private static function random(): string
+ {
+ return sprintf(
+ '%s %s',
+ IntegerMother::lessThan(100),
+ RandomElementPicker::from('months', 'years', 'days', 'hours', 'minutes', 'seconds')
+ );
+ }
}
diff --git a/tests/Mooc/Courses/Domain/CourseIdMother.php b/tests/Mooc/Courses/Domain/CourseIdMother.php
index f80119695..2b180910f 100644
--- a/tests/Mooc/Courses/Domain/CourseIdMother.php
+++ b/tests/Mooc/Courses/Domain/CourseIdMother.php
@@ -9,8 +9,8 @@
final class CourseIdMother
{
- public static function create(?string $value = null): CourseId
- {
- return new CourseId($value ?? UuidMother::create());
- }
+ public static function create(?string $value = null): CourseId
+ {
+ return new CourseId($value ?? UuidMother::create());
+ }
}
diff --git a/tests/Mooc/Courses/Domain/CourseMother.php b/tests/Mooc/Courses/Domain/CourseMother.php
index 31a622989..019770869 100644
--- a/tests/Mooc/Courses/Domain/CourseMother.php
+++ b/tests/Mooc/Courses/Domain/CourseMother.php
@@ -12,24 +12,24 @@
final class CourseMother
{
- public static function create(
- ?CourseId $id = null,
- ?CourseName $name = null,
- ?CourseDuration $duration = null
- ): Course {
- return new Course(
- $id ?? CourseIdMother::create(),
- $name ?? CourseNameMother::create(),
- $duration ?? CourseDurationMother::create()
- );
- }
+ public static function create(
+ ?CourseId $id = null,
+ ?CourseName $name = null,
+ ?CourseDuration $duration = null
+ ): Course {
+ return new Course(
+ $id ?? CourseIdMother::create(),
+ $name ?? CourseNameMother::create(),
+ $duration ?? CourseDurationMother::create()
+ );
+ }
- public static function fromRequest(CreateCourseCommand $request): Course
- {
- return self::create(
- CourseIdMother::create($request->id()),
- CourseNameMother::create($request->name()),
- CourseDurationMother::create($request->duration())
- );
- }
+ public static function fromRequest(CreateCourseCommand $request): Course
+ {
+ return self::create(
+ CourseIdMother::create($request->id()),
+ CourseNameMother::create($request->name()),
+ CourseDurationMother::create($request->duration())
+ );
+ }
}
diff --git a/tests/Mooc/Courses/Domain/CourseNameMother.php b/tests/Mooc/Courses/Domain/CourseNameMother.php
index 210496b49..72c4e7e02 100644
--- a/tests/Mooc/Courses/Domain/CourseNameMother.php
+++ b/tests/Mooc/Courses/Domain/CourseNameMother.php
@@ -9,8 +9,8 @@
final class CourseNameMother
{
- public static function create(?string $value = null): CourseName
- {
- return new CourseName($value ?? WordMother::create());
- }
+ public static function create(?string $value = null): CourseName
+ {
+ return new CourseName($value ?? WordMother::create());
+ }
}
diff --git a/tests/Mooc/Courses/Infrastructure/Persistence/CourseRepositoryTest.php b/tests/Mooc/Courses/Infrastructure/Persistence/CourseRepositoryTest.php
index 25b23b6b9..56f84522c 100644
--- a/tests/Mooc/Courses/Infrastructure/Persistence/CourseRepositoryTest.php
+++ b/tests/Mooc/Courses/Infrastructure/Persistence/CourseRepositoryTest.php
@@ -10,27 +10,27 @@
final class CourseRepositoryTest extends CoursesModuleInfrastructureTestCase
{
- /** @test */
- public function it_should_save_a_course(): void
- {
- $course = CourseMother::create();
+ /** @test */
+ public function it_should_save_a_course(): void
+ {
+ $course = CourseMother::create();
- $this->repository()->save($course);
- }
+ $this->repository()->save($course);
+ }
- /** @test */
- public function it_should_return_an_existing_course(): void
- {
- $course = CourseMother::create();
+ /** @test */
+ public function it_should_return_an_existing_course(): void
+ {
+ $course = CourseMother::create();
- $this->repository()->save($course);
+ $this->repository()->save($course);
- $this->assertEquals($course, $this->repository()->search($course->id()));
- }
+ $this->assertEquals($course, $this->repository()->search($course->id()));
+ }
- /** @test */
- public function it_should_not_return_a_non_existing_course(): void
- {
- $this->assertNull($this->repository()->search(CourseIdMother::create()));
- }
+ /** @test */
+ public function it_should_not_return_a_non_existing_course(): void
+ {
+ $this->assertNull($this->repository()->search(CourseIdMother::create()));
+ }
}
diff --git a/tests/Mooc/CoursesCounter/Application/Find/CoursesCounterResponseMother.php b/tests/Mooc/CoursesCounter/Application/Find/CoursesCounterResponseMother.php
index 7abaed048..07a588148 100644
--- a/tests/Mooc/CoursesCounter/Application/Find/CoursesCounterResponseMother.php
+++ b/tests/Mooc/CoursesCounter/Application/Find/CoursesCounterResponseMother.php
@@ -10,8 +10,8 @@
final class CoursesCounterResponseMother
{
- public static function create(?CoursesCounterTotal $total = null): CoursesCounterResponse
- {
- return new CoursesCounterResponse($total?->value() ?? CoursesCounterTotalMother::create()->value());
- }
+ public static function create(?CoursesCounterTotal $total = null): CoursesCounterResponse
+ {
+ return new CoursesCounterResponse($total?->value() ?? CoursesCounterTotalMother::create()->value());
+ }
}
diff --git a/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php b/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php
index 9d6bf0573..db8887486 100644
--- a/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php
+++ b/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php
@@ -13,34 +13,34 @@
final class FindCoursesCounterQueryHandlerTest extends CoursesCounterModuleUnitTestCase
{
- private FindCoursesCounterQueryHandler|null $handler;
+ private FindCoursesCounterQueryHandler|null $handler;
- protected function setUp(): void
- {
- parent::setUp();
+ protected function setUp(): void
+ {
+ parent::setUp();
- $this->handler = new FindCoursesCounterQueryHandler(new CoursesCounterFinder($this->repository()));
- }
+ $this->handler = new FindCoursesCounterQueryHandler(new CoursesCounterFinder($this->repository()));
+ }
- /** @test */
- public function it_should_find_an_existing_courses_counter(): void
- {
- $counter = CoursesCounterMother::create();
- $query = new FindCoursesCounterQuery();
- $response = CoursesCounterResponseMother::create($counter->total());
+ /** @test */
+ public function it_should_find_an_existing_courses_counter(): void
+ {
+ $counter = CoursesCounterMother::create();
+ $query = new FindCoursesCounterQuery();
+ $response = CoursesCounterResponseMother::create($counter->total());
- $this->shouldSearch($counter);
+ $this->shouldSearch($counter);
- $this->assertAskResponse($response, $query, $this->handler);
- }
+ $this->assertAskResponse($response, $query, $this->handler);
+ }
- /** @test */
- public function it_should_throw_an_exception_when_courses_counter_does_not_exists(): void
- {
- $query = new FindCoursesCounterQuery();
+ /** @test */
+ public function it_should_throw_an_exception_when_courses_counter_does_not_exists(): void
+ {
+ $query = new FindCoursesCounterQuery();
- $this->shouldSearch(null);
+ $this->shouldSearch(null);
- $this->assertAskThrowsException(CoursesCounterNotExist::class, $query, $this->handler);
- }
+ $this->assertAskThrowsException(CoursesCounterNotExist::class, $query, $this->handler);
+ }
}
diff --git a/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php b/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php
index f7aa9b16d..6e9c9039b 100644
--- a/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php
+++ b/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php
@@ -14,61 +14,61 @@
final class IncrementCoursesCounterOnCourseCreatedTest extends CoursesCounterModuleUnitTestCase
{
- private IncrementCoursesCounterOnCourseCreated|null $subscriber;
+ private IncrementCoursesCounterOnCourseCreated|null $subscriber;
- protected function setUp(): void
- {
- parent::setUp();
+ protected function setUp(): void
+ {
+ parent::setUp();
- $this->subscriber = new IncrementCoursesCounterOnCourseCreated(
- new CoursesCounterIncrementer($this->repository(), $this->uuidGenerator(), $this->eventBus())
- );
- }
+ $this->subscriber = new IncrementCoursesCounterOnCourseCreated(
+ new CoursesCounterIncrementer($this->repository(), $this->uuidGenerator(), $this->eventBus())
+ );
+ }
- /** @test */
- public function it_should_initialize_a_new_counter(): void
- {
- $event = CourseCreatedDomainEventMother::create();
+ /** @test */
+ public function it_should_initialize_a_new_counter(): void
+ {
+ $event = CourseCreatedDomainEventMother::create();
- $courseId = CourseIdMother::create($event->aggregateId());
- $newCounter = CoursesCounterMother::withOne($courseId);
- $domainEvent = CoursesCounterIncrementedDomainEventMother::fromCounter($newCounter);
+ $courseId = CourseIdMother::create($event->aggregateId());
+ $newCounter = CoursesCounterMother::withOne($courseId);
+ $domainEvent = CoursesCounterIncrementedDomainEventMother::fromCounter($newCounter);
- $this->shouldSearch(null);
- $this->shouldGenerateUuid($newCounter->id()->value());
- $this->shouldSave($newCounter);
- $this->shouldPublishDomainEvent($domainEvent);
+ $this->shouldSearch(null);
+ $this->shouldGenerateUuid($newCounter->id()->value());
+ $this->shouldSave($newCounter);
+ $this->shouldPublishDomainEvent($domainEvent);
- $this->notify($event, $this->subscriber);
- }
+ $this->notify($event, $this->subscriber);
+ }
- /** @test */
- public function it_should_increment_an_existing_counter(): void
- {
- $event = CourseCreatedDomainEventMother::create();
+ /** @test */
+ public function it_should_increment_an_existing_counter(): void
+ {
+ $event = CourseCreatedDomainEventMother::create();
- $courseId = CourseIdMother::create($event->aggregateId());
- $existingCounter = CoursesCounterMother::create();
- $incrementedCounter = CoursesCounterMother::incrementing($existingCounter, $courseId);
- $domainEvent = CoursesCounterIncrementedDomainEventMother::fromCounter($incrementedCounter);
+ $courseId = CourseIdMother::create($event->aggregateId());
+ $existingCounter = CoursesCounterMother::create();
+ $incrementedCounter = CoursesCounterMother::incrementing($existingCounter, $courseId);
+ $domainEvent = CoursesCounterIncrementedDomainEventMother::fromCounter($incrementedCounter);
- $this->shouldSearch($existingCounter);
- $this->shouldSave($incrementedCounter);
- $this->shouldPublishDomainEvent($domainEvent);
+ $this->shouldSearch($existingCounter);
+ $this->shouldSave($incrementedCounter);
+ $this->shouldPublishDomainEvent($domainEvent);
- $this->notify($event, $this->subscriber);
- }
+ $this->notify($event, $this->subscriber);
+ }
- /** @test */
- public function it_should_not_increment_an_already_incremented_course(): void
- {
- $event = CourseCreatedDomainEventMother::create();
+ /** @test */
+ public function it_should_not_increment_an_already_incremented_course(): void
+ {
+ $event = CourseCreatedDomainEventMother::create();
- $courseId = CourseIdMother::create($event->aggregateId());
- $existingCounter = CoursesCounterMother::withOne($courseId);
+ $courseId = CourseIdMother::create($event->aggregateId());
+ $existingCounter = CoursesCounterMother::withOne($courseId);
- $this->shouldSearch($existingCounter);
+ $this->shouldSearch($existingCounter);
- $this->notify($event, $this->subscriber);
- }
+ $this->notify($event, $this->subscriber);
+ }
}
diff --git a/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php b/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php
index 366cb59c9..2de4db1a7 100644
--- a/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php
+++ b/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php
@@ -11,27 +11,27 @@
abstract class CoursesCounterModuleUnitTestCase extends UnitTestCase
{
- private CoursesCounterRepository|MockInterface|null $repository = null;
+ private CoursesCounterRepository|MockInterface|null $repository = null;
- protected function shouldSave(CoursesCounter $course): void
- {
- $this->repository()
- ->shouldReceive('save')
- ->once()
- ->with($this->similarTo($course))
- ->andReturnNull();
- }
+ protected function shouldSave(CoursesCounter $course): void
+ {
+ $this->repository()
+ ->shouldReceive('save')
+ ->once()
+ ->with($this->similarTo($course))
+ ->andReturnNull();
+ }
- protected function shouldSearch(?CoursesCounter $counter): void
- {
- $this->repository()
- ->shouldReceive('search')
- ->once()
- ->andReturn($counter);
- }
+ protected function shouldSearch(?CoursesCounter $counter): void
+ {
+ $this->repository()
+ ->shouldReceive('search')
+ ->once()
+ ->andReturn($counter);
+ }
- protected function repository(): CoursesCounterRepository|MockInterface
- {
- return $this->repository ??= $this->mock(CoursesCounterRepository::class);
- }
+ protected function repository(): CoursesCounterRepository|MockInterface
+ {
+ return $this->repository ??= $this->mock(CoursesCounterRepository::class);
+ }
}
diff --git a/tests/Mooc/CoursesCounter/Domain/CoursesCounterIdMother.php b/tests/Mooc/CoursesCounter/Domain/CoursesCounterIdMother.php
index e0dfc9c57..98bf659a1 100644
--- a/tests/Mooc/CoursesCounter/Domain/CoursesCounterIdMother.php
+++ b/tests/Mooc/CoursesCounter/Domain/CoursesCounterIdMother.php
@@ -9,8 +9,8 @@
final class CoursesCounterIdMother
{
- public static function create(?string $value = null): CoursesCounterId
- {
- return new CoursesCounterId($value ?? UuidMother::create());
- }
+ public static function create(?string $value = null): CoursesCounterId
+ {
+ return new CoursesCounterId($value ?? UuidMother::create());
+ }
}
diff --git a/tests/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEventMother.php b/tests/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEventMother.php
index f3fc1e4d3..a3dc0b881 100644
--- a/tests/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEventMother.php
+++ b/tests/Mooc/CoursesCounter/Domain/CoursesCounterIncrementedDomainEventMother.php
@@ -11,18 +11,18 @@
final class CoursesCounterIncrementedDomainEventMother
{
- public static function create(
- ?CoursesCounterId $id = null,
- ?CoursesCounterTotal $total = null
- ): CoursesCounterIncrementedDomainEvent {
- return new CoursesCounterIncrementedDomainEvent(
- $id?->value() ?? CoursesCounterIdMother::create()->value(),
- $total?->value() ?? CoursesCounterTotalMother::create()->value()
- );
- }
+ public static function create(
+ ?CoursesCounterId $id = null,
+ ?CoursesCounterTotal $total = null
+ ): CoursesCounterIncrementedDomainEvent {
+ return new CoursesCounterIncrementedDomainEvent(
+ $id?->value() ?? CoursesCounterIdMother::create()->value(),
+ $total?->value() ?? CoursesCounterTotalMother::create()->value()
+ );
+ }
- public static function fromCounter(CoursesCounter $counter): CoursesCounterIncrementedDomainEvent
- {
- return self::create($counter->id(), $counter->total());
- }
+ public static function fromCounter(CoursesCounter $counter): CoursesCounterIncrementedDomainEvent
+ {
+ return self::create($counter->id(), $counter->total());
+ }
}
diff --git a/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php b/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php
index 7b199b90a..d5200a5cd 100644
--- a/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php
+++ b/tests/Mooc/CoursesCounter/Domain/CoursesCounterMother.php
@@ -13,31 +13,29 @@
final class CoursesCounterMother
{
- public static function create(
- ?CoursesCounterId $id = null,
- ?CoursesCounterTotal $total = null,
- CourseId ...$existingCourses
- ): CoursesCounter {
- return new CoursesCounter(
- $id ?? CoursesCounterIdMother::create(),
- $total ?? CoursesCounterTotalMother::create(),
- ...count($existingCourses) ? $existingCourses : Repeater::random(
- fn (): CourseId => CourseIdMother::create()
- )
- );
- }
+ public static function create(
+ ?CoursesCounterId $id = null,
+ ?CoursesCounterTotal $total = null,
+ CourseId ...$existingCourses
+ ): CoursesCounter {
+ return new CoursesCounter(
+ $id ?? CoursesCounterIdMother::create(),
+ $total ?? CoursesCounterTotalMother::create(),
+ ...count($existingCourses) ? $existingCourses : Repeater::random(fn (): CourseId => CourseIdMother::create())
+ );
+ }
- public static function withOne(CourseId $courseId): CoursesCounter
- {
- return self::create(CoursesCounterIdMother::create(), CoursesCounterTotalMother::one(), $courseId);
- }
+ public static function withOne(CourseId $courseId): CoursesCounter
+ {
+ return self::create(CoursesCounterIdMother::create(), CoursesCounterTotalMother::one(), $courseId);
+ }
- public static function incrementing(CoursesCounter $existingCounter, CourseId $courseId): CoursesCounter
- {
- return self::create(
- $existingCounter->id(),
- CoursesCounterTotalMother::create($existingCounter->total()->value() + 1),
- ...array_merge($existingCounter->existingCourses(), [$courseId])
- );
- }
+ public static function incrementing(CoursesCounter $existingCounter, CourseId $courseId): CoursesCounter
+ {
+ return self::create(
+ $existingCounter->id(),
+ CoursesCounterTotalMother::create($existingCounter->total()->value() + 1),
+ ...array_merge($existingCounter->existingCourses(), [$courseId])
+ );
+ }
}
diff --git a/tests/Mooc/CoursesCounter/Domain/CoursesCounterTotalMother.php b/tests/Mooc/CoursesCounter/Domain/CoursesCounterTotalMother.php
index 49115ea90..0c29d090a 100644
--- a/tests/Mooc/CoursesCounter/Domain/CoursesCounterTotalMother.php
+++ b/tests/Mooc/CoursesCounter/Domain/CoursesCounterTotalMother.php
@@ -9,18 +9,18 @@
final class CoursesCounterTotalMother
{
- public static function create(?int $value = null): CoursesCounterTotal
- {
- return new CoursesCounterTotal($value ?? IntegerMother::create());
- }
+ public static function create(?int $value = null): CoursesCounterTotal
+ {
+ return new CoursesCounterTotal($value ?? IntegerMother::create());
+ }
- public static function one(): CoursesCounterTotal
- {
- return self::create(1);
- }
+ public static function one(): CoursesCounterTotal
+ {
+ return self::create(1);
+ }
- public static function random(): CoursesCounterTotal
- {
- return self::create(IntegerMother::create());
- }
+ public static function random(): CoursesCounterTotal
+ {
+ return self::create(IntegerMother::create());
+ }
}
diff --git a/tests/Mooc/MoocArchitectureTest.php b/tests/Mooc/MoocArchitectureTest.php
index a1cf75f57..e1e57197f 100644
--- a/tests/Mooc/MoocArchitectureTest.php
+++ b/tests/Mooc/MoocArchitectureTest.php
@@ -11,46 +11,46 @@
final class MoocArchitectureTest
{
- public function test_mooc_domain_should_only_import_itself_and_shared(): Rule
- {
- return PHPat::rule()
- ->classes(Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Domain/', true))
- ->canOnlyDependOn()
- ->classes(...array_merge(ArchitectureTest::languageClasses(), [
- // Itself
- Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Domain/', true),
- // Shared
- Selector::inNamespace('CodelyTv\Shared\Domain'),
- ]))
- ->because('mooc domain can only import itself and shared domain');
- }
+ public function test_mooc_domain_should_only_import_itself_and_shared(): Rule
+ {
+ return PHPat::rule()
+ ->classes(Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Domain/', true))
+ ->canOnlyDependOn()
+ ->classes(...array_merge(ArchitectureTest::languageClasses(), [
+ // Itself
+ Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Domain/', true),
+ // Shared
+ Selector::inNamespace('CodelyTv\Shared\Domain'),
+ ]))
+ ->because('mooc domain can only import itself and shared domain');
+ }
- public function test_mooc_application_should_only_import_itself_and_domain(): Rule
- {
- return PHPat::rule()
- ->classes(Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Application/', true))
- ->canOnlyDependOn()
- ->classes(...array_merge(ArchitectureTest::languageClasses(), [
- // Itself
- Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Application/', true),
- Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Domain/', true),
- // Shared
- Selector::inNamespace('CodelyTv\Shared'),
- ]))
- ->because('mooc application can only import itself and shared');
- }
+ public function test_mooc_application_should_only_import_itself_and_domain(): Rule
+ {
+ return PHPat::rule()
+ ->classes(Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Application/', true))
+ ->canOnlyDependOn()
+ ->classes(...array_merge(ArchitectureTest::languageClasses(), [
+ // Itself
+ Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Application/', true),
+ Selector::inNamespace('/^CodelyTv\\\\Mooc\\\\.+\\\\Domain/', true),
+ // Shared
+ Selector::inNamespace('CodelyTv\Shared'),
+ ]))
+ ->because('mooc application can only import itself and shared');
+ }
- public function test_mooc_infrastructure_should_not_import_other_contexts_beside_shared(): Rule
- {
- return PHPat::rule()
- ->classes(Selector::inNamespace('CodelyTv\Mooc'))
- ->shouldNotDependOn()
- ->classes(Selector::inNamespace('CodelyTv'))
- ->excluding(
- // Itself
- Selector::inNamespace('CodelyTv\Mooc'),
- // Shared
- Selector::inNamespace('CodelyTv\Shared'),
- );
- }
+ public function test_mooc_infrastructure_should_not_import_other_contexts_beside_shared(): Rule
+ {
+ return PHPat::rule()
+ ->classes(Selector::inNamespace('CodelyTv\Mooc'))
+ ->shouldNotDependOn()
+ ->classes(Selector::inNamespace('CodelyTv'))
+ ->excluding(
+ // Itself
+ Selector::inNamespace('CodelyTv\Mooc'),
+ // Shared
+ Selector::inNamespace('CodelyTv\Shared'),
+ );
+ }
}
diff --git a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocContextInfrastructureTestCase.php b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocContextInfrastructureTestCase.php
index a793d0d7b..fb4bef7bf 100644
--- a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocContextInfrastructureTestCase.php
+++ b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocContextInfrastructureTestCase.php
@@ -10,26 +10,26 @@
abstract class MoocContextInfrastructureTestCase extends InfrastructureTestCase
{
- protected function setUp(): void
- {
- parent::setUp();
+ protected function setUp(): void
+ {
+ parent::setUp();
- $arranger = new MoocEnvironmentArranger($this->service(EntityManager::class));
+ $arranger = new MoocEnvironmentArranger($this->service(EntityManager::class));
- $arranger->arrange();
- }
+ $arranger->arrange();
+ }
- protected function tearDown(): void
- {
- $arranger = new MoocEnvironmentArranger($this->service(EntityManager::class));
+ protected function tearDown(): void
+ {
+ $arranger = new MoocEnvironmentArranger($this->service(EntityManager::class));
- $arranger->close();
+ $arranger->close();
- parent::tearDown();
- }
+ parent::tearDown();
+ }
- protected function kernelClass(): string
- {
- return MoocBackendKernel::class;
- }
+ protected function kernelClass(): string
+ {
+ return MoocBackendKernel::class;
+ }
}
diff --git a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php
index 96a9024a0..39ddf5ef5 100644
--- a/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php
+++ b/tests/Mooc/Shared/Infrastructure/PhpUnit/MoocEnvironmentArranger.php
@@ -12,12 +12,12 @@
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 arrange(): void
+ {
+ apply(new MySqlDatabaseCleaner(), [$this->entityManager]);
+ }
- public function close(): void {}
+ public function close(): void {}
}
diff --git a/tests/Shared/Domain/Criteria/CriteriaMother.php b/tests/Shared/Domain/Criteria/CriteriaMother.php
index 4fe2bb6b6..b46d45089 100644
--- a/tests/Shared/Domain/Criteria/CriteriaMother.php
+++ b/tests/Shared/Domain/Criteria/CriteriaMother.php
@@ -10,17 +10,17 @@
final class CriteriaMother
{
- public static function create(
- Filters $filters,
- Order $order = null,
- int $offset = null,
- int $limit = null
- ): Criteria {
- return new Criteria($filters, $order ?: OrderMother::none(), $offset, $limit);
- }
+ public static function create(
+ Filters $filters,
+ Order $order = null,
+ int $offset = null,
+ int $limit = null
+ ): Criteria {
+ return new Criteria($filters, $order ?: OrderMother::none(), $offset, $limit);
+ }
- public static function empty(): Criteria
- {
- return self::create(FiltersMother::blank(), OrderMother::none());
- }
+ public static function empty(): Criteria
+ {
+ return self::create(FiltersMother::blank(), OrderMother::none());
+ }
}
diff --git a/tests/Shared/Domain/Criteria/FilterFieldMother.php b/tests/Shared/Domain/Criteria/FilterFieldMother.php
index 01f35645e..fdf89a4ae 100644
--- a/tests/Shared/Domain/Criteria/FilterFieldMother.php
+++ b/tests/Shared/Domain/Criteria/FilterFieldMother.php
@@ -9,8 +9,8 @@
final class FilterFieldMother
{
- public static function create(?string $fieldName = null): FilterField
- {
- return new FilterField($fieldName ?? WordMother::create());
- }
+ public static function create(?string $fieldName = null): FilterField
+ {
+ return new FilterField($fieldName ?? WordMother::create());
+ }
}
diff --git a/tests/Shared/Domain/Criteria/FilterMother.php b/tests/Shared/Domain/Criteria/FilterMother.php
index 40473422e..ece793fd6 100644
--- a/tests/Shared/Domain/Criteria/FilterMother.php
+++ b/tests/Shared/Domain/Criteria/FilterMother.php
@@ -12,34 +12,34 @@
final class FilterMother
{
- public static function create(
- ?FilterField $field = null,
- ?FilterOperator $operator = null,
- ?FilterValue $value = null
- ): Filter {
- return new Filter(
- $field ?? FilterFieldMother::create(),
- $operator ?? self::randomOperator(),
- $value ?? FilterValueMother::create()
- );
- }
+ public static function create(
+ ?FilterField $field = null,
+ ?FilterOperator $operator = null,
+ ?FilterValue $value = null
+ ): Filter {
+ return new Filter(
+ $field ?? FilterFieldMother::create(),
+ $operator ?? self::randomOperator(),
+ $value ?? FilterValueMother::create()
+ );
+ }
- /** @param string[] $values */
- public static function fromValues(array $values): Filter
- {
- return Filter::fromValues($values);
- }
+ /** @param string[] $values */
+ public static function fromValues(array $values): Filter
+ {
+ return Filter::fromValues($values);
+ }
- private static function randomOperator(): FilterOperator
- {
- return RandomElementPicker::from(
- FilterOperator::EQUAL,
- FilterOperator::NOT_EQUAL,
- FilterOperator::GT,
- FilterOperator::LT,
- FilterOperator::CONTAINS,
- FilterOperator::NOT_CONTAINS
- );
- }
+ private static function randomOperator(): FilterOperator
+ {
+ return RandomElementPicker::from(
+ FilterOperator::EQUAL,
+ FilterOperator::NOT_EQUAL,
+ FilterOperator::GT,
+ FilterOperator::LT,
+ FilterOperator::CONTAINS,
+ FilterOperator::NOT_CONTAINS
+ );
+ }
}
diff --git a/tests/Shared/Domain/Criteria/FilterValueMother.php b/tests/Shared/Domain/Criteria/FilterValueMother.php
index aa78e74a0..77c42c2e1 100644
--- a/tests/Shared/Domain/Criteria/FilterValueMother.php
+++ b/tests/Shared/Domain/Criteria/FilterValueMother.php
@@ -9,8 +9,8 @@
final class FilterValueMother
{
- public static function create(?string $value = null): FilterValue
- {
- return new FilterValue($value ?? WordMother::create());
- }
+ public static function create(?string $value = null): FilterValue
+ {
+ return new FilterValue($value ?? WordMother::create());
+ }
}
diff --git a/tests/Shared/Domain/Criteria/FiltersMother.php b/tests/Shared/Domain/Criteria/FiltersMother.php
index fe0009f5f..08678f850 100644
--- a/tests/Shared/Domain/Criteria/FiltersMother.php
+++ b/tests/Shared/Domain/Criteria/FiltersMother.php
@@ -9,19 +9,19 @@
final class FiltersMother
{
- /** @param Filter[] $filters */
- public static function create(array $filters): Filters
- {
- return new Filters($filters);
- }
+ /** @param Filter[] $filters */
+ public static function create(array $filters): Filters
+ {
+ return new Filters($filters);
+ }
- public static function createOne(Filter $filter): Filters
- {
- return self::create([$filter]);
- }
+ public static function createOne(Filter $filter): Filters
+ {
+ return self::create([$filter]);
+ }
- public static function blank(): Filters
- {
- return self::create([]);
- }
+ public static function blank(): Filters
+ {
+ return self::create([]);
+ }
}
diff --git a/tests/Shared/Domain/Criteria/OrderByMother.php b/tests/Shared/Domain/Criteria/OrderByMother.php
index 457e35bf6..1a1cf2df3 100644
--- a/tests/Shared/Domain/Criteria/OrderByMother.php
+++ b/tests/Shared/Domain/Criteria/OrderByMother.php
@@ -9,8 +9,8 @@
final class OrderByMother
{
- public static function create(?string $fieldName = null): OrderBy
- {
- return new OrderBy($fieldName ?? WordMother::create());
- }
+ public static function create(?string $fieldName = null): OrderBy
+ {
+ return new OrderBy($fieldName ?? WordMother::create());
+ }
}
diff --git a/tests/Shared/Domain/Criteria/OrderMother.php b/tests/Shared/Domain/Criteria/OrderMother.php
index 81c606e07..e574061ea 100644
--- a/tests/Shared/Domain/Criteria/OrderMother.php
+++ b/tests/Shared/Domain/Criteria/OrderMother.php
@@ -11,18 +11,18 @@
final class OrderMother
{
- public static function create(?OrderBy $orderBy = null, ?OrderType $orderType = null): Order
- {
- return new Order($orderBy ?? OrderByMother::create(), $orderType ?? self::randomOrderType());
- }
+ public static function create(?OrderBy $orderBy = null, ?OrderType $orderType = null): Order
+ {
+ return new Order($orderBy ?? OrderByMother::create(), $orderType ?? self::randomOrderType());
+ }
- public static function none(): Order
- {
- return Order::none();
- }
+ public static function none(): Order
+ {
+ return Order::none();
+ }
- private static function randomOrderType(): Order
- {
- return RandomElementPicker::from(OrderType::ASC, OrderType::DESC, OrderType::NONE);
- }
+ private static function randomOrderType(): Order
+ {
+ return RandomElementPicker::from(OrderType::ASC, OrderType::DESC, OrderType::NONE);
+ }
}
diff --git a/tests/Shared/Domain/DuplicatorMother.php b/tests/Shared/Domain/DuplicatorMother.php
index ab7fa25d9..b22f40efa 100644
--- a/tests/Shared/Domain/DuplicatorMother.php
+++ b/tests/Shared/Domain/DuplicatorMother.php
@@ -11,21 +11,21 @@
final class DuplicatorMother
{
- public static function with(mixed $object, array $newParams): mixed
- {
- $duplicated = clone $object;
- $reflection = new ReflectionObject($duplicated);
+ public static function with(mixed $object, array $newParams): mixed
+ {
+ $duplicated = clone $object;
+ $reflection = new ReflectionObject($duplicated);
- each(
- static function (ReflectionProperty $property) use ($duplicated, $newParams): void {
- if (isset($newParams[$property->getName()])) {
- $property->setAccessible(true);
- $property->setValue($duplicated, $newParams[$property->getName()]);
- }
- },
- $reflection->getProperties()
- );
+ each(
+ static function (ReflectionProperty $property) use ($duplicated, $newParams): void {
+ if (isset($newParams[$property->getName()])) {
+ $property->setAccessible(true);
+ $property->setValue($duplicated, $newParams[$property->getName()]);
+ }
+ },
+ $reflection->getProperties()
+ );
- return $duplicated;
- }
+ return $duplicated;
+ }
}
diff --git a/tests/Shared/Domain/IntegerMother.php b/tests/Shared/Domain/IntegerMother.php
index b164ea31c..910a08cc8 100644
--- a/tests/Shared/Domain/IntegerMother.php
+++ b/tests/Shared/Domain/IntegerMother.php
@@ -6,18 +6,18 @@
final class IntegerMother
{
- public static function create(): int
- {
- return self::between(1);
- }
+ public static function create(): int
+ {
+ return self::between(1);
+ }
- public static function between(int $min, int $max = PHP_INT_MAX): int
- {
- return MotherCreator::random()->numberBetween($min, $max);
- }
+ public static function between(int $min, int $max = PHP_INT_MAX): int
+ {
+ return MotherCreator::random()->numberBetween($min, $max);
+ }
- public static function lessThan(int $max): int
- {
- return self::between(1, $max);
- }
+ public static function lessThan(int $max): int
+ {
+ return self::between(1, $max);
+ }
}
diff --git a/tests/Shared/Domain/MotherCreator.php b/tests/Shared/Domain/MotherCreator.php
index 30a98bce7..f2da13923 100644
--- a/tests/Shared/Domain/MotherCreator.php
+++ b/tests/Shared/Domain/MotherCreator.php
@@ -9,10 +9,10 @@
final class MotherCreator
{
- private static ?Generator $faker = null;
+ private static ?Generator $faker = null;
- public static function random(): Generator
- {
- return self::$faker ??= Factory::create();
- }
+ public static function random(): Generator
+ {
+ return self::$faker ??= Factory::create();
+ }
}
diff --git a/tests/Shared/Domain/RandomElementPicker.php b/tests/Shared/Domain/RandomElementPicker.php
index 2663ac72f..76e8b1eda 100644
--- a/tests/Shared/Domain/RandomElementPicker.php
+++ b/tests/Shared/Domain/RandomElementPicker.php
@@ -6,8 +6,8 @@
final class RandomElementPicker
{
- public static function from(mixed ...$elements): mixed
- {
- return MotherCreator::random()->randomElement($elements);
- }
+ public static function from(mixed ...$elements): mixed
+ {
+ return MotherCreator::random()->randomElement($elements);
+ }
}
diff --git a/tests/Shared/Domain/Repeater.php b/tests/Shared/Domain/Repeater.php
index eef4fdbc2..19781e14f 100644
--- a/tests/Shared/Domain/Repeater.php
+++ b/tests/Shared/Domain/Repeater.php
@@ -8,13 +8,13 @@
final class Repeater
{
- public static function repeat(callable $function, int $quantity): array
- {
- return repeat($function, $quantity);
- }
+ public static function repeat(callable $function, int $quantity): array
+ {
+ return repeat($function, $quantity);
+ }
- public static function random(callable $function): array
- {
- return self::repeat($function, IntegerMother::lessThan(5));
- }
+ public static function random(callable $function): array
+ {
+ return self::repeat($function, IntegerMother::lessThan(5));
+ }
}
diff --git a/tests/Shared/Domain/TestUtils.php b/tests/Shared/Domain/TestUtils.php
index 2d560e6fd..141bfea5e 100644
--- a/tests/Shared/Domain/TestUtils.php
+++ b/tests/Shared/Domain/TestUtils.php
@@ -9,22 +9,22 @@
final class TestUtils
{
- public static function isSimilar(mixed $expected, mixed $actual): bool
- {
- $constraint = new CodelyTvConstraintIsSimilar($expected);
+ public static function isSimilar(mixed $expected, mixed $actual): bool
+ {
+ $constraint = new CodelyTvConstraintIsSimilar($expected);
- return $constraint->evaluate($actual, '', true);
- }
+ return $constraint->evaluate($actual, '', true);
+ }
- public static function assertSimilar(mixed $expected, mixed $actual): void
- {
- $constraint = new CodelyTvConstraintIsSimilar($expected);
+ public static function assertSimilar(mixed $expected, mixed $actual): void
+ {
+ $constraint = new CodelyTvConstraintIsSimilar($expected);
- $constraint->evaluate($actual);
- }
+ $constraint->evaluate($actual);
+ }
- public static function similarTo(mixed $value, float $delta = 0.0): CodelyTvMatcherIsSimilar
- {
- return new CodelyTvMatcherIsSimilar($value, $delta);
- }
+ public static function similarTo(mixed $value, float $delta = 0.0): CodelyTvMatcherIsSimilar
+ {
+ return new CodelyTvMatcherIsSimilar($value, $delta);
+ }
}
diff --git a/tests/Shared/Domain/UuidMother.php b/tests/Shared/Domain/UuidMother.php
index 524e2f72e..20bd3516c 100644
--- a/tests/Shared/Domain/UuidMother.php
+++ b/tests/Shared/Domain/UuidMother.php
@@ -6,8 +6,8 @@
final class UuidMother
{
- public static function create(): string
- {
- return MotherCreator::random()->unique()->uuid;
- }
+ public static function create(): string
+ {
+ return MotherCreator::random()->unique()->uuid;
+ }
}
diff --git a/tests/Shared/Domain/WordMother.php b/tests/Shared/Domain/WordMother.php
index 424fe1774..4bf988e35 100644
--- a/tests/Shared/Domain/WordMother.php
+++ b/tests/Shared/Domain/WordMother.php
@@ -6,8 +6,8 @@
final class WordMother
{
- public static function create(): string
- {
- return MotherCreator::random()->word;
- }
+ public static function create(): string
+ {
+ return MotherCreator::random()->word;
+ }
}
diff --git a/tests/Shared/Infrastructure/ArchitectureTest.php b/tests/Shared/Infrastructure/ArchitectureTest.php
index 17d97198b..6a82b2b18 100644
--- a/tests/Shared/Infrastructure/ArchitectureTest.php
+++ b/tests/Shared/Infrastructure/ArchitectureTest.php
@@ -20,21 +20,21 @@
final class ArchitectureTest
{
- public static function languageClasses(): array
- {
- return [
- Selector::classname(Throwable::class),
- Selector::classname(InvalidArgumentException::class),
- Selector::classname(RuntimeException::class),
- Selector::classname(DateTimeImmutable::class),
- Selector::classname(DateTimeInterface::class),
- Selector::classname(DomainException::class),
- Selector::classname(Stringable::class),
- Selector::classname(BackedEnum::class),
- Selector::classname(Countable::class),
- Selector::classname(IteratorAggregate::class),
- Selector::classname(Traversable::class),
- Selector::classname(ArrayIterator::class),
- ];
- }
+ public static function languageClasses(): array
+ {
+ return [
+ Selector::classname(Throwable::class),
+ Selector::classname(InvalidArgumentException::class),
+ Selector::classname(RuntimeException::class),
+ Selector::classname(DateTimeImmutable::class),
+ Selector::classname(DateTimeInterface::class),
+ Selector::classname(DomainException::class),
+ Selector::classname(Stringable::class),
+ Selector::classname(BackedEnum::class),
+ Selector::classname(Countable::class),
+ Selector::classname(IteratorAggregate::class),
+ Selector::classname(Traversable::class),
+ Selector::classname(ArrayIterator::class),
+ ];
+ }
}
diff --git a/tests/Shared/Infrastructure/Arranger/EnvironmentArranger.php b/tests/Shared/Infrastructure/Arranger/EnvironmentArranger.php
index aeb983a7a..525b38852 100644
--- a/tests/Shared/Infrastructure/Arranger/EnvironmentArranger.php
+++ b/tests/Shared/Infrastructure/Arranger/EnvironmentArranger.php
@@ -6,7 +6,7 @@
interface EnvironmentArranger
{
- public function arrange(): void;
+ public function arrange(): void;
- public function close(): void;
+ public function close(): void;
}
diff --git a/tests/Shared/Infrastructure/Behat/ApiContext.php b/tests/Shared/Infrastructure/Behat/ApiContext.php
index a3bd747eb..eeddfca35 100644
--- a/tests/Shared/Infrastructure/Behat/ApiContext.php
+++ b/tests/Shared/Infrastructure/Behat/ApiContext.php
@@ -13,96 +13,96 @@
final class ApiContext extends RawMinkContext
{
- private readonly MinkHelper $sessionHelper;
- private readonly MinkSessionRequestHelper $request;
-
- public function __construct(private readonly Session $minkSession)
- {
- $this->sessionHelper = new MinkHelper($this->minkSession);
- $this->request = new MinkSessionRequestHelper(new MinkHelper($minkSession));
- }
-
- /**
- * @Given I send a :method request to :url
- */
- public function iSendARequestTo(string $method, string $url): void
- {
- $this->request->sendRequest($method, $this->locatePath($url));
- }
-
- /**
- * @Given I send a :method request to :url with body:
- */
- public function iSendARequestToWithBody(string $method, string $url, PyStringNode $body): void
- {
- $this->request->sendRequestWithPyStringNode($method, $this->locatePath($url), $body);
- }
-
- /**
- * @Then the response content should be:
- */
- public function theResponseContentShouldBe(PyStringNode $expectedResponse): void
- {
- $expected = $this->sanitizeOutput($expectedResponse->getRaw());
- $actual = $this->sanitizeOutput($this->sessionHelper->getResponse());
-
- if ($expected === false || $actual === false) {
- throw new RuntimeException('The outputs could not be parsed as JSON');
- }
-
- if ($expected !== $actual) {
- throw new RuntimeException(
- sprintf("The outputs does not match!\n\n-- Expected:\n%s\n\n-- Actual:\n%s", $expected, $actual)
- );
- }
- }
-
- /**
- * @Then the response should be empty
- */
- 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));
- }
- }
-
- /**
- * @Then print last api response
- */
- public function printApiResponse(): void
- {
- print_r($this->sessionHelper->getResponse());
- }
-
- /**
- * @Then print response headers
- */
- public function printResponseHeaders(): void
- {
- print_r($this->sessionHelper->getResponseHeaders());
- }
-
- /**
- * @Then the response status code should be :expectedResponseCode
- */
- public function theResponseStatusCodeShouldBe(mixed $expectedResponseCode): void
- {
- if ($this->minkSession->getStatusCode() !== (int) $expectedResponseCode) {
- throw new RuntimeException(
- sprintf(
- 'The status code <%s> does not match the expected <%s>',
- $this->minkSession->getStatusCode(),
- $expectedResponseCode
- )
- );
- }
- }
-
- private function sanitizeOutput(string $output): false|string
- {
- return json_encode(json_decode(trim($output), true, 512, JSON_THROW_ON_ERROR), JSON_THROW_ON_ERROR);
- }
+ private readonly MinkHelper $sessionHelper;
+ private readonly MinkSessionRequestHelper $request;
+
+ public function __construct(private readonly Session $minkSession)
+ {
+ $this->sessionHelper = new MinkHelper($this->minkSession);
+ $this->request = new MinkSessionRequestHelper(new MinkHelper($minkSession));
+ }
+
+ /**
+ * @Given I send a :method request to :url
+ */
+ public function iSendARequestTo(string $method, string $url): void
+ {
+ $this->request->sendRequest($method, $this->locatePath($url));
+ }
+
+ /**
+ * @Given I send a :method request to :url with body:
+ */
+ public function iSendARequestToWithBody(string $method, string $url, PyStringNode $body): void
+ {
+ $this->request->sendRequestWithPyStringNode($method, $this->locatePath($url), $body);
+ }
+
+ /**
+ * @Then the response content should be:
+ */
+ public function theResponseContentShouldBe(PyStringNode $expectedResponse): void
+ {
+ $expected = $this->sanitizeOutput($expectedResponse->getRaw());
+ $actual = $this->sanitizeOutput($this->sessionHelper->getResponse());
+
+ if ($expected === false || $actual === false) {
+ throw new RuntimeException('The outputs could not be parsed as JSON');
+ }
+
+ if ($expected !== $actual) {
+ throw new RuntimeException(
+ sprintf("The outputs does not match!\n\n-- Expected:\n%s\n\n-- Actual:\n%s", $expected, $actual)
+ );
+ }
+ }
+
+ /**
+ * @Then the response should be empty
+ */
+ 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));
+ }
+ }
+
+ /**
+ * @Then print last api response
+ */
+ public function printApiResponse(): void
+ {
+ print_r($this->sessionHelper->getResponse());
+ }
+
+ /**
+ * @Then print response headers
+ */
+ public function printResponseHeaders(): void
+ {
+ print_r($this->sessionHelper->getResponseHeaders());
+ }
+
+ /**
+ * @Then the response status code should be :expectedResponseCode
+ */
+ public function theResponseStatusCodeShouldBe(mixed $expectedResponseCode): void
+ {
+ if ($this->minkSession->getStatusCode() !== (int) $expectedResponseCode) {
+ throw new RuntimeException(
+ sprintf(
+ 'The status code <%s> does not match the expected <%s>',
+ $this->minkSession->getStatusCode(),
+ $expectedResponseCode
+ )
+ );
+ }
+ }
+
+ private function sanitizeOutput(string $output): false|string
+ {
+ 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 157041b44..29d6788a8 100644
--- a/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php
+++ b/tests/Shared/Infrastructure/Behat/ApplicationFeatureContext.php
@@ -12,26 +12,26 @@
final readonly class ApplicationFeatureContext implements Context
{
- public function __construct(
- private DatabaseConnections $connections,
- private InMemorySymfonyEventBus $bus,
- private DomainEventJsonDeserializer $deserializer
- ) {}
+ public function __construct(
+ private DatabaseConnections $connections,
+ private InMemorySymfonyEventBus $bus,
+ private DomainEventJsonDeserializer $deserializer
+ ) {}
- /** @BeforeScenario */
- public function cleanEnvironment(): void
- {
- $this->connections->clear();
- $this->connections->truncate();
- }
+ /** @BeforeScenario */
+ public function cleanEnvironment(): void
+ {
+ $this->connections->clear();
+ $this->connections->truncate();
+ }
- /**
- * @Given /^I send an event to the event bus:$/
- */
- public function iSendAnEventToTheEventBus(PyStringNode $event): void
- {
- $domainEvent = $this->deserializer->deserialize($event->getRaw());
+ /**
+ * @Given /^I send an event to the event bus:$/
+ */
+ public function iSendAnEventToTheEventBus(PyStringNode $event): void
+ {
+ $domainEvent = $this->deserializer->deserialize($event->getRaw());
- $this->bus->publish($domainEvent);
- }
+ $this->bus->publish($domainEvent);
+ }
}
diff --git a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
index 291e9eb14..27133c192 100644
--- a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
@@ -13,43 +13,43 @@
final class InMemorySymfonyCommandBusTest extends UnitTestCase
{
- private InMemorySymfonyCommandBus|null $commandBus;
-
- protected function setUp(): void
- {
- parent::setUp();
-
- $this->commandBus = new InMemorySymfonyCommandBus([$this->commandHandler()]);
- }
-
- /** @test */
- public function it_should_be_able_to_handle_a_command(): void
- {
- $this->expectException(RuntimeException::class);
-
- $this->commandBus->dispatch(new FakeCommand());
- }
-
- /** @test */
- public function it_should_raise_an_exception_dispatching_a_non_registered_command(): void
- {
- $this->expectException(CommandNotRegisteredError::class);
-
- $this->commandBus->dispatch($this->command());
- }
-
- private function commandHandler(): object
- {
- return new class() {
- public function __invoke(FakeCommand $command): never
- {
- throw new RuntimeException('This works fine!');
- }
- };
- }
-
- private function command(): Command|MockInterface
- {
- return $this->mock(Command::class);
- }
+ private InMemorySymfonyCommandBus|null $commandBus;
+
+ protected function setUp(): void
+ {
+ parent::setUp();
+
+ $this->commandBus = new InMemorySymfonyCommandBus([$this->commandHandler()]);
+ }
+
+ /** @test */
+ public function it_should_be_able_to_handle_a_command(): void
+ {
+ $this->expectException(RuntimeException::class);
+
+ $this->commandBus->dispatch(new FakeCommand());
+ }
+
+ /** @test */
+ public function it_should_raise_an_exception_dispatching_a_non_registered_command(): void
+ {
+ $this->expectException(CommandNotRegisteredError::class);
+
+ $this->commandBus->dispatch($this->command());
+ }
+
+ private function commandHandler(): object
+ {
+ return new class() {
+ public function __invoke(FakeCommand $command): never
+ {
+ throw new RuntimeException('This works fine!');
+ }
+ };
+ }
+
+ private function command(): Command|MockInterface
+ {
+ return $this->mock(Command::class);
+ }
}
diff --git a/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php b/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
index 8b3f48364..4ad562ae1 100644
--- a/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
@@ -16,39 +16,36 @@
final class MySqlDoctrineEventBusTest extends InfrastructureTestCase
{
- private MySqlDoctrineEventBus|null $bus;
- private MySqlDoctrineDomainEventsConsumer|null $consumer;
-
- protected function setUp(): void
- {
- parent::setUp();
-
- $this->bus = new MySqlDoctrineEventBus($this->service(EntityManager::class));
- $this->consumer = new MySqlDoctrineDomainEventsConsumer(
- $this->service(EntityManager::class),
- $this->service(DomainEventMapping::class)
- );
- }
-
- /** @test */
- public function it_should_publish_and_consume_domain_events_from_msql(): void
- {
- $domainEvent = CourseCreatedDomainEventMother::create();
- $anotherDomainEvent = CoursesCounterIncrementedDomainEventMother::create();
-
- $this->bus->publish($domainEvent, $anotherDomainEvent);
-
- $this->consumer->consume(
- subscribers: fn (DomainEvent ...$expectedEvents) => $this->assertContainsEquals(
- $domainEvent,
- $expectedEvents
- ),
- eventsToConsume: 2
- );
- }
-
- protected function kernelClass(): string
- {
- return MoocBackendKernel::class;
- }
+ private MySqlDoctrineEventBus|null $bus;
+ private MySqlDoctrineDomainEventsConsumer|null $consumer;
+
+ protected function setUp(): void
+ {
+ parent::setUp();
+
+ $this->bus = new MySqlDoctrineEventBus($this->service(EntityManager::class));
+ $this->consumer = new MySqlDoctrineDomainEventsConsumer(
+ $this->service(EntityManager::class),
+ $this->service(DomainEventMapping::class)
+ );
+ }
+
+ /** @test */
+ public function it_should_publish_and_consume_domain_events_from_msql(): void
+ {
+ $domainEvent = CourseCreatedDomainEventMother::create();
+ $anotherDomainEvent = CoursesCounterIncrementedDomainEventMother::create();
+
+ $this->bus->publish($domainEvent, $anotherDomainEvent);
+
+ $this->consumer->consume(
+ subscribers: fn (DomainEvent ...$expectedEvents) => $this->assertContainsEquals($domainEvent, $expectedEvents),
+ eventsToConsume: 2
+ );
+ }
+
+ protected function kernelClass(): string
+ {
+ return MoocBackendKernel::class;
+ }
}
diff --git a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
index e57638dbc..b3d5b09e8 100644
--- a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqEventBusTest.php
@@ -21,164 +21,161 @@
final class RabbitMqEventBusTest extends InfrastructureTestCase
{
- private mixed $connection;
- private string $exchangeName;
- private RabbitMqConfigurer $configurer;
- private RabbitMqEventBus $publisher;
- private RabbitMqDomainEventsConsumer $consumer;
- private TestAllWorksOnRabbitMqEventsPublished $fakeSubscriber;
- private bool $consumerHasBeenExecuted;
+ private mixed $connection;
+ private string $exchangeName;
+ private RabbitMqConfigurer $configurer;
+ private RabbitMqEventBus $publisher;
+ private RabbitMqDomainEventsConsumer $consumer;
+ private TestAllWorksOnRabbitMqEventsPublished $fakeSubscriber;
+ private bool $consumerHasBeenExecuted;
- protected function setUp(): void
- {
- parent::setUp();
+ protected function setUp(): void
+ {
+ parent::setUp();
- $this->connection = $this->service(RabbitMqConnection::class);
+ $this->connection = $this->service(RabbitMqConnection::class);
- $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->connection,
- $this->service(DomainEventJsonDeserializer::class),
- $this->exchangeName,
- $maxRetries = 1
- );
- $this->fakeSubscriber = new TestAllWorksOnRabbitMqEventsPublished();
- $this->consumerHasBeenExecuted = false;
+ $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->connection,
+ $this->service(DomainEventJsonDeserializer::class),
+ $this->exchangeName,
+ $maxRetries = 1
+ );
+ $this->fakeSubscriber = new TestAllWorksOnRabbitMqEventsPublished();
+ $this->consumerHasBeenExecuted = false;
- $this->cleanEnvironment($this->connection);
- }
+ $this->cleanEnvironment($this->connection);
+ }
- /** @test */
- public function it_should_publish_and_consume_domain_events_from_rabbitmq(): void
- {
- $domainEvent = CourseCreatedDomainEventMother::create();
+ /** @test */
+ public function it_should_publish_and_consume_domain_events_from_rabbitmq(): void
+ {
+ $domainEvent = CourseCreatedDomainEventMother::create();
- $this->configurer->configure($this->exchangeName, $this->fakeSubscriber);
-
- $this->publisher->publish($domainEvent);
+ $this->configurer->configure($this->exchangeName, $this->fakeSubscriber);
- $this->consumer->consume(
- $this->assertConsumer($domainEvent),
- RabbitMqQueueNameFormatter::format($this->fakeSubscriber)
- );
-
- $this->assertTrue($this->consumerHasBeenExecuted);
- }
-
- /** @test */
- public function it_should_throw_an_exception_consuming_non_existing_domain_events(): void
- {
- $this->expectException(RuntimeException::class);
-
- $domainEvent = CoursesCounterIncrementedDomainEventMother::create();
-
- $this->configurer->configure($this->exchangeName, $this->fakeSubscriber);
-
- $this->publisher->publish($domainEvent);
-
- $this->consumer->consume(
- $this->assertConsumer($domainEvent),
- RabbitMqQueueNameFormatter::format($this->fakeSubscriber)
- );
-
- $this->assertTrue($this->consumerHasBeenExecuted);
- }
-
- /** @test */
- public function it_should_retry_failed_domain_events(): void
- {
- $domainEvent = CourseCreatedDomainEventMother::create();
-
- $this->configurer->configure($this->exchangeName, $this->fakeSubscriber);
-
- $this->publisher->publish($domainEvent);
-
- $this->simulateErrorConsuming();
-
- sleep(1);
-
- $this->consumer->consume(
- $this->assertConsumer($domainEvent),
- RabbitMqQueueNameFormatter::format($this->fakeSubscriber)
- );
-
- $this->assertTrue($this->consumerHasBeenExecuted);
- }
-
- /** @test */
- public function it_should_send_events_to_dead_letter_after_retry_failed_domain_events(): void
- {
- $domainEvent = CourseCreatedDomainEventMother::create();
-
- $this->configurer->configure($this->exchangeName, $this->fakeSubscriber);
-
- $this->publisher->publish($domainEvent);
-
- $this->simulateErrorConsuming();
-
- sleep(1);
-
- $this->simulateErrorConsuming();
-
- $this->assertDeadLetterContainsEvent(1);
- }
+ $this->publisher->publish($domainEvent);
- protected function kernelClass(): string
- {
- return MoocBackendKernel::class;
- }
-
- private function assertConsumer(DomainEvent ...$expectedDomainEvents): callable
- {
- return function (DomainEvent $domainEvent) use ($expectedDomainEvents): void {
- $this->assertContainsEquals($domainEvent, $expectedDomainEvents);
+ $this->consumer->consume(
+ $this->assertConsumer($domainEvent),
+ RabbitMqQueueNameFormatter::format($this->fakeSubscriber)
+ );
- $this->consumerHasBeenExecuted = true;
- };
- }
+ $this->assertTrue($this->consumerHasBeenExecuted);
+ }
- private function failingConsumer(): callable
- {
- return static function (DomainEvent $domainEvent): never {
- throw new RuntimeException('To test');
- };
- }
+ /** @test */
+ public function it_should_throw_an_exception_consuming_non_existing_domain_events(): void
+ {
+ $this->expectException(RuntimeException::class);
- private function simulateErrorConsuming(): void
- {
- try {
- $this->consumer->consume(
- $this->failingConsumer(),
- RabbitMqQueueNameFormatter::format($this->fakeSubscriber)
- );
- } catch (Throwable $error) {
- $this->assertInstanceOf(RuntimeException::class, $error);
- }
- }
+ $domainEvent = CoursesCounterIncrementedDomainEventMother::create();
+
+ $this->configurer->configure($this->exchangeName, $this->fakeSubscriber);
+
+ $this->publisher->publish($domainEvent);
+
+ $this->consumer->consume(
+ $this->assertConsumer($domainEvent),
+ RabbitMqQueueNameFormatter::format($this->fakeSubscriber)
+ );
+
+ $this->assertTrue($this->consumerHasBeenExecuted);
+ }
+
+ /** @test */
+ public function it_should_retry_failed_domain_events(): void
+ {
+ $domainEvent = CourseCreatedDomainEventMother::create();
+
+ $this->configurer->configure($this->exchangeName, $this->fakeSubscriber);
+
+ $this->publisher->publish($domainEvent);
+
+ $this->simulateErrorConsuming();
+
+ sleep(1);
+
+ $this->consumer->consume(
+ $this->assertConsumer($domainEvent),
+ RabbitMqQueueNameFormatter::format($this->fakeSubscriber)
+ );
+
+ $this->assertTrue($this->consumerHasBeenExecuted);
+ }
+
+ /** @test */
+ public function it_should_send_events_to_dead_letter_after_retry_failed_domain_events(): void
+ {
+ $domainEvent = CourseCreatedDomainEventMother::create();
+
+ $this->configurer->configure($this->exchangeName, $this->fakeSubscriber);
+
+ $this->publisher->publish($domainEvent);
+
+ $this->simulateErrorConsuming();
+
+ sleep(1);
- private function cleanEnvironment(RabbitMqConnection $connection): void
- {
- $connection->queue(RabbitMqQueueNameFormatter::format($this->fakeSubscriber))->delete();
- $connection->queue(RabbitMqQueueNameFormatter::formatRetry($this->fakeSubscriber))->delete();
- $connection->queue(RabbitMqQueueNameFormatter::formatDeadLetter($this->fakeSubscriber))->delete();
- }
+ $this->simulateErrorConsuming();
- private function assertDeadLetterContainsEvent(int $expectedNumberOfEvents): void
- {
- $totalEventsInDeadLetter = 0;
+ $this->assertDeadLetterContainsEvent(1);
+ }
- while ($this->connection->queue(RabbitMqQueueNameFormatter::formatDeadLetter($this->fakeSubscriber))->get(
- AMQP_AUTOACK
- )) {
- $totalEventsInDeadLetter++;
- }
+ protected function kernelClass(): string
+ {
+ return MoocBackendKernel::class;
+ }
- $this->assertSame($expectedNumberOfEvents, $totalEventsInDeadLetter);
- }
+ private function assertConsumer(DomainEvent ...$expectedDomainEvents): callable
+ {
+ return function (DomainEvent $domainEvent) use ($expectedDomainEvents): void {
+ $this->assertContainsEquals($domainEvent, $expectedDomainEvents);
+
+ $this->consumerHasBeenExecuted = true;
+ };
+ }
+
+ private function failingConsumer(): callable
+ {
+ return static function (DomainEvent $domainEvent): never {
+ throw new RuntimeException('To test');
+ };
+ }
+
+ private function simulateErrorConsuming(): void
+ {
+ try {
+ $this->consumer->consume($this->failingConsumer(), RabbitMqQueueNameFormatter::format($this->fakeSubscriber));
+ } catch (Throwable $error) {
+ $this->assertInstanceOf(RuntimeException::class, $error);
+ }
+ }
+
+ private function cleanEnvironment(RabbitMqConnection $connection): void
+ {
+ $connection->queue(RabbitMqQueueNameFormatter::format($this->fakeSubscriber))->delete();
+ $connection->queue(RabbitMqQueueNameFormatter::formatRetry($this->fakeSubscriber))->delete();
+ $connection->queue(RabbitMqQueueNameFormatter::formatDeadLetter($this->fakeSubscriber))->delete();
+ }
+
+ private function assertDeadLetterContainsEvent(int $expectedNumberOfEvents): void
+ {
+ $totalEventsInDeadLetter = 0;
+
+ while ($this->connection->queue(RabbitMqQueueNameFormatter::formatDeadLetter($this->fakeSubscriber))->get(
+ AMQP_AUTOACK
+ )) {
+ $totalEventsInDeadLetter++;
+ }
+
+ $this->assertSame($expectedNumberOfEvents, $totalEventsInDeadLetter);
+ }
}
diff --git a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php
index 70a8623e4..61debc9ee 100644
--- a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php
+++ b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php
@@ -10,10 +10,10 @@
final class TestAllWorksOnRabbitMqEventsPublished implements DomainEventSubscriber
{
- public static function subscribedTo(): array
- {
- return [CourseCreatedDomainEvent::class, CoursesCounterIncrementedDomainEvent::class, ];
- }
+ public static function subscribedTo(): array
+ {
+ 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/FakeResponse.php b/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php
index 323c50493..41386dca5 100644
--- a/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php
+++ b/tests/Shared/Infrastructure/Bus/Query/FakeResponse.php
@@ -8,10 +8,10 @@
final readonly class FakeResponse implements Response
{
- public function __construct(private int $number) {}
+ public function __construct(private int $number) {}
- public function number(): int
- {
- return $this->number;
- }
+ public function number(): int
+ {
+ return $this->number;
+ }
}
diff --git a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
index 3dbb86fe8..5037795cb 100644
--- a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
@@ -13,43 +13,43 @@
final class InMemorySymfonyQueryBusTest extends UnitTestCase
{
- private InMemorySymfonyQueryBus|null $queryBus;
-
- protected function setUp(): void
- {
- parent::setUp();
-
- $this->queryBus = new InMemorySymfonyQueryBus([$this->queryHandler()]);
- }
-
- /** @test */
- public function it_should_return_a_response_successfully(): void
- {
- $this->expectException(RuntimeException::class);
-
- $this->queryBus->ask(new FakeQuery());
- }
-
- /** @test */
- public function it_should_raise_an_exception_dispatching_a_non_registered_query(): void
- {
- $this->expectException(QueryNotRegisteredError::class);
-
- $this->queryBus->ask($this->query());
- }
-
- private function queryHandler(): object
- {
- return new class() {
- public function __invoke(FakeQuery $query): never
- {
- throw new RuntimeException('This works fine!');
- }
- };
- }
-
- private function query(): MockInterface|Query
- {
- return $this->mock(Query::class);
- }
+ private InMemorySymfonyQueryBus|null $queryBus;
+
+ protected function setUp(): void
+ {
+ parent::setUp();
+
+ $this->queryBus = new InMemorySymfonyQueryBus([$this->queryHandler()]);
+ }
+
+ /** @test */
+ public function it_should_return_a_response_successfully(): void
+ {
+ $this->expectException(RuntimeException::class);
+
+ $this->queryBus->ask(new FakeQuery());
+ }
+
+ /** @test */
+ public function it_should_raise_an_exception_dispatching_a_non_registered_query(): void
+ {
+ $this->expectException(QueryNotRegisteredError::class);
+
+ $this->queryBus->ask($this->query());
+ }
+
+ private function queryHandler(): object
+ {
+ return new class() {
+ public function __invoke(FakeQuery $query): never
+ {
+ throw new RuntimeException('This works fine!');
+ }
+ };
+ }
+
+ private function query(): MockInterface|Query
+ {
+ return $this->mock(Query::class);
+ }
}
diff --git a/tests/Shared/Infrastructure/ConstantRandomNumberGenerator.php b/tests/Shared/Infrastructure/ConstantRandomNumberGenerator.php
index 2a5ef9eb7..810e216cc 100644
--- a/tests/Shared/Infrastructure/ConstantRandomNumberGenerator.php
+++ b/tests/Shared/Infrastructure/ConstantRandomNumberGenerator.php
@@ -8,8 +8,8 @@
final class ConstantRandomNumberGenerator implements RandomNumberGenerator
{
- public function generate(): int
- {
- return 1;
- }
+ public function generate(): int
+ {
+ return 1;
+ }
}
diff --git a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
index c58c5ce57..3c7cf7afc 100644
--- a/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
+++ b/tests/Shared/Infrastructure/Doctrine/MySqlDatabaseCleaner.php
@@ -12,30 +12,30 @@
final class MySqlDatabaseCleaner
{
- public function __invoke(EntityManagerInterface $entityManager): void
- {
- $connection = $entityManager->getConnection();
+ public function __invoke(EntityManagerInterface $entityManager): void
+ {
+ $connection = $entityManager->getConnection();
- $tables = $this->tables($connection);
- $truncateTablesSql = $this->truncateDatabaseSql($tables);
+ $tables = $this->tables($connection);
+ $truncateTablesSql = $this->truncateDatabaseSql($tables);
- $connection->executeQuery($truncateTablesSql);
- }
+ $connection->executeQuery($truncateTablesSql);
+ }
- private function truncateDatabaseSql(array $tables): string
- {
- $truncateTables = map($this->truncateTableSql(), $tables);
+ private function truncateDatabaseSql(array $tables): string
+ {
+ $truncateTables = map($this->truncateTableSql(), $tables);
- return sprintf('SET FOREIGN_KEY_CHECKS = 0; %s SET FOREIGN_KEY_CHECKS = 1;', implode(' ', $truncateTables));
- }
+ return sprintf('SET FOREIGN_KEY_CHECKS = 0; %s SET FOREIGN_KEY_CHECKS = 1;', implode(' ', $truncateTables));
+ }
- private function truncateTableSql(): callable
- {
- return fn (array $table): string => sprintf('TRUNCATE TABLE `%s`;', (string) first($table));
- }
+ private function truncateTableSql(): callable
+ {
+ return fn (array $table): string => sprintf('TRUNCATE TABLE `%s`;', (string) first($table));
+ }
- private function tables(Connection $connection): array
- {
- return $connection->executeQuery('SHOW TABLES')->fetchAllAssociative();
- }
+ private function tables(Connection $connection): array
+ {
+ return $connection->executeQuery('SHOW TABLES')->fetchAllAssociative();
+ }
}
diff --git a/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php b/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php
index 4dc86b3c3..293d5284a 100644
--- a/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php
+++ b/tests/Shared/Infrastructure/Elastic/ElasticDatabaseCleaner.php
@@ -10,18 +10,18 @@
final class ElasticDatabaseCleaner
{
- public function __invoke(ElasticsearchClient $client): void
- {
- $indices = $client->client()->cat()->indices();
+ public function __invoke(ElasticsearchClient $client): void
+ {
+ $indices = $client->client()->cat()->indices();
- each(
- static function (array $index) use ($client): void {
- $indexName = $index['index'];
+ each(
+ static function (array $index) use ($client): void {
+ $indexName = $index['index'];
- $client->client()->indices()->delete(['index' => $indexName]);
- $client->client()->indices()->create(['index' => $indexName]);
- },
- $indices
- );
- }
+ $client->client()->indices()->delete(['index' => $indexName]);
+ $client->client()->indices()->create(['index' => $indexName]);
+ },
+ $indices
+ );
+ }
}
diff --git a/tests/Shared/Infrastructure/Mink/MinkHelper.php b/tests/Shared/Infrastructure/Mink/MinkHelper.php
index 976ccc0d5..1d9da8a1c 100644
--- a/tests/Shared/Infrastructure/Mink/MinkHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkHelper.php
@@ -11,80 +11,78 @@
final readonly class MinkHelper
{
- public function __construct(private Session $session) {}
-
- public function sendRequest(string $method, string $url, array $optionalParams = []): Crawler
- {
- $defaultOptionalParams = [
- 'parameters' => [],
- 'files' => [],
- 'server' => ['HTTP_ACCEPT' => 'application/json', 'CONTENT_TYPE' => 'application/json'],
- 'content' => null,
- 'changeHistory' => true,
- ];
-
- $optionalParams = array_merge($defaultOptionalParams, $optionalParams);
-
- $crawler = $this->getClient()->request(
- $method,
- $url,
- $optionalParams['parameters'],
- $optionalParams['files'],
- $optionalParams['server'],
- $optionalParams['content'],
- $optionalParams['changeHistory']
- );
-
- $this->resetRequestStuff();
-
- return $crawler;
- }
-
- public function getResponse(): string
- {
- return $this->getSession()->getPage()->getContent();
- }
-
- public function getResponseHeaders(): array
- {
- return $this->normalizeHeaders(
- array_change_key_case($this->getSession()->getResponseHeaders(), CASE_LOWER)
- );
- }
-
- public function resetServerParameters(): void
- {
- $this->getClient()->setServerParameters([]);
- }
-
- public function getRequest(): object
- {
- return $this->getClient()->getRequest();
- }
-
- private function getSession(): Session
- {
- return $this->session;
- }
-
- private function getDriver(): DriverInterface
- {
- return $this->getSession()->getDriver();
- }
-
- private function getClient(): AbstractBrowser
- {
- return $this->getDriver()->getClient();
- }
-
- private function normalizeHeaders(array $headers): array
- {
- return array_map('implode', array_filter($headers));
- }
-
- private function resetRequestStuff(): void
- {
- $this->getSession()->reset();
- $this->resetServerParameters();
- }
+ public function __construct(private Session $session) {}
+
+ public function sendRequest(string $method, string $url, array $optionalParams = []): Crawler
+ {
+ $defaultOptionalParams = [
+ 'parameters' => [],
+ 'files' => [],
+ 'server' => ['HTTP_ACCEPT' => 'application/json', 'CONTENT_TYPE' => 'application/json'],
+ 'content' => null,
+ 'changeHistory' => true,
+ ];
+
+ $optionalParams = array_merge($defaultOptionalParams, $optionalParams);
+
+ $crawler = $this->getClient()->request(
+ $method,
+ $url,
+ $optionalParams['parameters'],
+ $optionalParams['files'],
+ $optionalParams['server'],
+ $optionalParams['content'],
+ $optionalParams['changeHistory']
+ );
+
+ $this->resetRequestStuff();
+
+ return $crawler;
+ }
+
+ public function getResponse(): string
+ {
+ return $this->getSession()->getPage()->getContent();
+ }
+
+ public function getResponseHeaders(): array
+ {
+ return $this->normalizeHeaders(array_change_key_case($this->getSession()->getResponseHeaders(), CASE_LOWER));
+ }
+
+ public function resetServerParameters(): void
+ {
+ $this->getClient()->setServerParameters([]);
+ }
+
+ public function getRequest(): object
+ {
+ return $this->getClient()->getRequest();
+ }
+
+ private function getSession(): Session
+ {
+ return $this->session;
+ }
+
+ private function getDriver(): DriverInterface
+ {
+ return $this->getSession()->getDriver();
+ }
+
+ private function getClient(): AbstractBrowser
+ {
+ return $this->getDriver()->getClient();
+ }
+
+ private function normalizeHeaders(array $headers): array
+ {
+ return array_map('implode', array_filter($headers));
+ }
+
+ private function resetRequestStuff(): void
+ {
+ $this->getSession()->reset();
+ $this->resetServerParameters();
+ }
}
diff --git a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
index c5909ef43..df914dd98 100644
--- a/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkSessionRequestHelper.php
@@ -9,20 +9,20 @@
final readonly class MinkSessionRequestHelper
{
- public function __construct(private MinkHelper $sessionHelper) {}
+ public function __construct(private MinkHelper $sessionHelper) {}
- public function sendRequest($method, $url, array $optionalParams = []): void
- {
- $this->request($method, $url, $optionalParams);
- }
+ public function sendRequest($method, $url, array $optionalParams = []): void
+ {
+ $this->request($method, $url, $optionalParams);
+ }
- public function sendRequestWithPyStringNode($method, $url, PyStringNode $body): void
- {
- $this->request($method, $url, ['content' => $body->getRaw()]);
- }
+ public function sendRequestWithPyStringNode($method, $url, PyStringNode $body): void
+ {
+ $this->request($method, $url, ['content' => $body->getRaw()]);
+ }
- public function request(string $method, string $url, array $optionalParams = []): Crawler
- {
- return $this->sessionHelper->sendRequest($method, $url, $optionalParams);
- }
+ public function request(string $method, string $url, array $optionalParams = []): Crawler
+ {
+ return $this->sessionHelper->sendRequest($method, $url, $optionalParams);
+ }
}
diff --git a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
index 00271c0a6..430373dc4 100644
--- a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
+++ b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
@@ -10,22 +10,22 @@
final class CodelyTvMatcherIsSimilar extends MatcherAbstract implements Stringable
{
- private readonly CodelyTvConstraintIsSimilar $constraint;
+ private readonly CodelyTvConstraintIsSimilar $constraint;
- public function __construct(mixed $value, float $delta = 0.0)
- {
- parent::__construct($value);
+ public function __construct(mixed $value, float $delta = 0.0)
+ {
+ parent::__construct($value);
- $this->constraint = new CodelyTvConstraintIsSimilar($value, $delta);
- }
+ $this->constraint = new CodelyTvConstraintIsSimilar($value, $delta);
+ }
- public function match(&$actual): bool
- {
- return $this->constraint->evaluate($actual, '', true);
- }
+ public function match(&$actual): bool
+ {
+ return $this->constraint->evaluate($actual, '', true);
+ }
- public function __toString(): string
- {
- return 'Is similar';
- }
+ public function __toString(): string
+ {
+ return 'Is similar';
+ }
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
index 25d4017d6..22ee1fccf 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootArraySimilarComparator.php
@@ -15,35 +15,35 @@
final class AggregateRootArraySimilarComparator extends Comparator
{
- public function accepts($expected, $actual): bool
- {
- return is_array($expected)
- && is_array($actual)
- && (all(instance_of(AggregateRoot::class), $expected)
- && all(instance_of(AggregateRoot::class), $actual));
- }
-
- public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
- {
- if (!$this->contains($expected, $actual) || count($expected) !== count($actual)) {
- throw new ComparisonFailure(
- $expected,
- $actual,
- $this->exporter->export($expected),
- $this->exporter->export($actual),
- false,
- 'Failed asserting the collection of AGs contains all the expected elements.'
- );
- }
- }
-
- private function contains(array $expectedArray, array $actualArray): bool
- {
- $exists = fn (AggregateRoot $expected): bool => any(
- fn (AggregateRoot $actual): bool => TestUtils::isSimilar($expected, $actual),
- $actualArray
- );
-
- return all($exists, $expectedArray);
- }
+ public function accepts($expected, $actual): bool
+ {
+ return is_array($expected)
+ && is_array($actual)
+ && (all(instance_of(AggregateRoot::class), $expected)
+ && all(instance_of(AggregateRoot::class), $actual));
+ }
+
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
+ {
+ if (!$this->contains($expected, $actual) || count($expected) !== count($actual)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->exporter->export($expected),
+ $this->exporter->export($actual),
+ false,
+ 'Failed asserting the collection of AGs contains all the expected elements.'
+ );
+ }
+ }
+
+ private function contains(array $expectedArray, array $actualArray): bool
+ {
+ $exists = fn (AggregateRoot $expected): bool => any(
+ fn (AggregateRoot $actual): bool => TestUtils::isSimilar($expected, $actual),
+ $actualArray
+ );
+
+ return all($exists, $expectedArray);
+ }
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php
index b475419ea..aefd86a36 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/AggregateRootSimilarComparator.php
@@ -12,63 +12,63 @@
final class AggregateRootSimilarComparator extends Comparator
{
- public function accepts($expected, $actual): bool
- {
- $aggregateRootClass = AggregateRoot::class;
-
- return $expected instanceof $aggregateRootClass && $actual instanceof $aggregateRootClass;
- }
-
- public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
- {
- $actualEntity = clone $actual;
- $actualEntity->pullDomainEvents();
-
- if (!$this->aggregateRootsAreSimilar($expected, $actualEntity)) {
- throw new ComparisonFailure(
- $expected,
- $actual,
- $this->exporter->export($expected),
- $this->exporter->export($actual),
- false,
- 'Failed asserting the aggregate roots are equal.'
- );
- }
- }
-
- private function aggregateRootsAreSimilar(AggregateRoot $expected, AggregateRoot $actual): bool
- {
- if (!$this->aggregateRootsAreTheSameClass($expected, $actual)) {
- return false;
- }
-
- return $this->aggregateRootPropertiesAreSimilar($expected, $actual);
- }
-
- private function aggregateRootsAreTheSameClass(AggregateRoot $expected, AggregateRoot $actual): bool
- {
- return $expected::class === $actual::class;
- }
-
- private function aggregateRootPropertiesAreSimilar(AggregateRoot $expected, AggregateRoot $actual): bool
- {
- $expectedReflected = new ReflectionObject($expected);
- $actualReflected = new ReflectionObject($actual);
-
- foreach ($expectedReflected->getProperties() as $expectedReflectedProperty) {
- $actualReflectedProperty = $actualReflected->getProperty($expectedReflectedProperty->getName());
-
- $expectedReflectedProperty->setAccessible(true);
- $actualReflectedProperty->setAccessible(true);
-
- $expectedProperty = $expectedReflectedProperty->getValue($expected);
- $actualProperty = $actualReflectedProperty->getValue($actual);
-
- if (!TestUtils::isSimilar($expectedProperty, $actualProperty)) {
- return false;
- }
- }
-
- return true;
- }
+ public function accepts($expected, $actual): bool
+ {
+ $aggregateRootClass = AggregateRoot::class;
+
+ return $expected instanceof $aggregateRootClass && $actual instanceof $aggregateRootClass;
+ }
+
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
+ {
+ $actualEntity = clone $actual;
+ $actualEntity->pullDomainEvents();
+
+ if (!$this->aggregateRootsAreSimilar($expected, $actualEntity)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->exporter->export($expected),
+ $this->exporter->export($actual),
+ false,
+ 'Failed asserting the aggregate roots are equal.'
+ );
+ }
+ }
+
+ private function aggregateRootsAreSimilar(AggregateRoot $expected, AggregateRoot $actual): bool
+ {
+ if (!$this->aggregateRootsAreTheSameClass($expected, $actual)) {
+ return false;
+ }
+
+ return $this->aggregateRootPropertiesAreSimilar($expected, $actual);
+ }
+
+ private function aggregateRootsAreTheSameClass(AggregateRoot $expected, AggregateRoot $actual): bool
+ {
+ return $expected::class === $actual::class;
+ }
+
+ private function aggregateRootPropertiesAreSimilar(AggregateRoot $expected, AggregateRoot $actual): bool
+ {
+ $expectedReflected = new ReflectionObject($expected);
+ $actualReflected = new ReflectionObject($actual);
+
+ foreach ($expectedReflected->getProperties() as $expectedReflectedProperty) {
+ $actualReflectedProperty = $actualReflected->getProperty($expectedReflectedProperty->getName());
+
+ $expectedReflectedProperty->setAccessible(true);
+ $actualReflectedProperty->setAccessible(true);
+
+ $expectedProperty = $expectedReflectedProperty->getValue($expected);
+ $actualProperty = $actualReflectedProperty->getValue($actual);
+
+ if (!TestUtils::isSimilar($expectedProperty, $actualProperty)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php
index ad064d3e1..67d3b5605 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeSimilarComparator.php
@@ -12,39 +12,39 @@
final class DateTimeSimilarComparator extends ObjectComparator
{
- public function accepts($expected, $actual): bool
- {
- return $expected instanceof DateTimeInterface && $actual instanceof DateTimeInterface;
- }
-
- public function assertEquals(
- $expected,
- $actual,
- $delta = 0.0,
- $canonicalize = false,
- $ignoreCase = false,
- array &$processed = []
- ): void {
- $normalizedDelta = $delta === 0.0 ? 10 : $delta;
- $intervalWithDelta = new DateInterval(sprintf('PT%sS', abs($normalizedDelta)));
-
- $expectedLower = clone $expected;
- $expectedUpper = clone $expected;
-
- if ($actual < $expectedLower->sub($intervalWithDelta) || $actual > $expectedUpper->add($intervalWithDelta)) {
- throw new ComparisonFailure(
- $expected,
- $actual,
- $this->dateTimeToString($expected),
- $this->dateTimeToString($actual),
- false,
- 'Failed asserting that two DateTime objects are equal.'
- );
- }
- }
-
- protected function dateTimeToString(DateTimeInterface $datetime): string
- {
- return $datetime->format(DateTime::ATOM) ?: 'Invalid DateTime object';
- }
+ public function accepts($expected, $actual): bool
+ {
+ return $expected instanceof DateTimeInterface && $actual instanceof DateTimeInterface;
+ }
+
+ public function assertEquals(
+ $expected,
+ $actual,
+ $delta = 0.0,
+ $canonicalize = false,
+ $ignoreCase = false,
+ array &$processed = []
+ ): void {
+ $normalizedDelta = $delta === 0.0 ? 10 : $delta;
+ $intervalWithDelta = new DateInterval(sprintf('PT%sS', abs($normalizedDelta)));
+
+ $expectedLower = clone $expected;
+ $expectedUpper = clone $expected;
+
+ if ($actual < $expectedLower->sub($intervalWithDelta) || $actual > $expectedUpper->add($intervalWithDelta)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->dateTimeToString($expected),
+ $this->dateTimeToString($actual),
+ false,
+ 'Failed asserting that two DateTime objects are equal.'
+ );
+ }
+ }
+
+ protected function dateTimeToString(DateTimeInterface $datetime): string
+ {
+ return $datetime->format(DateTime::ATOM) ?: 'Invalid DateTime object';
+ }
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php
index e3cc9d557..546c75cb9 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DateTimeStringSimilarComparator.php
@@ -14,58 +14,58 @@
final class DateTimeStringSimilarComparator extends ObjectComparator
{
- public function accepts($expected, $actual): bool
- {
- return is_string($expected)
- && is_string($actual)
- && $this->isValidDateTimeString($expected)
- && $this->isValidDateTimeString($actual);
- }
+ public function accepts($expected, $actual): bool
+ {
+ return is_string($expected)
+ && is_string($actual)
+ && $this->isValidDateTimeString($expected)
+ && $this->isValidDateTimeString($actual);
+ }
- public function assertEquals(
- $expected,
- $actual,
- $delta = 0.0,
- $canonicalize = false,
- $ignoreCase = false,
- array &$processed = []
- ): void {
- $expectedDate = new DateTimeImmutable($expected);
- $actualDate = new DateTimeImmutable($actual);
+ public function assertEquals(
+ $expected,
+ $actual,
+ $delta = 0.0,
+ $canonicalize = false,
+ $ignoreCase = false,
+ array &$processed = []
+ ): void {
+ $expectedDate = new DateTimeImmutable($expected);
+ $actualDate = new DateTimeImmutable($actual);
- $normalizedDelta = $delta === 0.0 ? 10 : $delta;
- $intervalWithDelta = new DateInterval(sprintf('PT%sS', abs($normalizedDelta)));
+ $normalizedDelta = $delta === 0.0 ? 10 : $delta;
+ $intervalWithDelta = new DateInterval(sprintf('PT%sS', abs($normalizedDelta)));
- if ($actualDate < $expectedDate->sub($intervalWithDelta)
- || $actualDate > $expectedDate->add($intervalWithDelta)) {
- throw new ComparisonFailure(
- $expectedDate,
- $actualDate,
- $this->dateTimeToString($expectedDate),
- $this->dateTimeToString($actualDate),
- false,
- 'Failed asserting that two DateTime strings are equal.'
- );
- }
- }
+ if ($actualDate < $expectedDate->sub($intervalWithDelta)
+ || $actualDate > $expectedDate->add($intervalWithDelta)) {
+ throw new ComparisonFailure(
+ $expectedDate,
+ $actualDate,
+ $this->dateTimeToString($expectedDate),
+ $this->dateTimeToString($actualDate),
+ false,
+ 'Failed asserting that two DateTime strings are equal.'
+ );
+ }
+ }
- protected function dateTimeToString(DateTimeInterface $datetime): string
- {
- $string = $datetime->format(DateTime::ATOM);
+ protected function dateTimeToString(DateTimeInterface $datetime): string
+ {
+ $string = $datetime->format(DateTime::ATOM);
- return $string ?: 'Invalid DateTime object';
- }
+ return $string ?: 'Invalid DateTime object';
+ }
- private function isValidDateTimeString(string $expected): bool
- {
- $isValid = true;
+ private function isValidDateTimeString(string $expected): bool
+ {
+ $isValid = true;
- try {
- new DateTimeImmutable($expected);
- } catch (Throwable) {
- $isValid = false;
- }
+ try {
+ new DateTimeImmutable($expected);
+ } catch (Throwable) {
+ $isValid = false;
+ }
- return $isValid;
- }
+ return $isValid;
+ }
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
index db43dfd09..c191f7fb0 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventArraySimilarComparator.php
@@ -15,35 +15,35 @@
final class DomainEventArraySimilarComparator extends Comparator
{
- public function accepts($expected, $actual): bool
- {
- return is_array($expected)
- && is_array($actual)
- && (all(instance_of(DomainEvent::class), $expected)
- && all(instance_of(DomainEvent::class), $actual));
- }
-
- public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
- {
- if (!$this->contains($expected, $actual) || count($expected) !== count($actual)) {
- throw new ComparisonFailure(
- $expected,
- $actual,
- $this->exporter->export($expected),
- $this->exporter->export($actual),
- false,
- 'Failed asserting the collection of Events contains all the expected elements.'
- );
- }
- }
-
- private function contains(array $expectedArray, array $actualArray): bool
- {
- $exists = static fn (DomainEvent $expected): bool => any(
- static fn (DomainEvent $actual): bool => TestUtils::isSimilar($expected, $actual),
- $actualArray
- );
-
- return all($exists, $expectedArray);
- }
+ public function accepts($expected, $actual): bool
+ {
+ return is_array($expected)
+ && is_array($actual)
+ && (all(instance_of(DomainEvent::class), $expected)
+ && all(instance_of(DomainEvent::class), $actual));
+ }
+
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
+ {
+ if (!$this->contains($expected, $actual) || count($expected) !== count($actual)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->exporter->export($expected),
+ $this->exporter->export($actual),
+ false,
+ 'Failed asserting the collection of Events contains all the expected elements.'
+ );
+ }
+ }
+
+ private function contains(array $expectedArray, array $actualArray): bool
+ {
+ $exists = static fn (DomainEvent $expected): bool => any(
+ static fn (DomainEvent $actual): bool => TestUtils::isSimilar($expected, $actual),
+ $actualArray
+ );
+
+ return all($exists, $expectedArray);
+ }
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php
index 34f061ebf..f14cb6a77 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Comparator/DomainEventSimilarComparator.php
@@ -12,64 +12,64 @@
final class DomainEventSimilarComparator extends Comparator
{
- private static array $ignoredAttributes = ['eventId', 'occurredOn'];
-
- public function accepts($expected, $actual): bool
- {
- $domainEventRootClass = DomainEvent::class;
-
- return $expected instanceof $domainEventRootClass && $actual instanceof $domainEventRootClass;
- }
-
- public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
- {
- if (!$this->areSimilar($expected, $actual)) {
- throw new ComparisonFailure(
- $expected,
- $actual,
- $this->exporter->export($expected),
- $this->exporter->export($actual),
- false,
- 'Failed asserting the events are equal.'
- );
- }
- }
-
- private function areSimilar(DomainEvent $expected, DomainEvent $actual): bool
- {
- if (!$this->areTheSameClass($expected, $actual)) {
- return false;
- }
-
- return $this->propertiesAreSimilar($expected, $actual);
- }
-
- private function areTheSameClass(DomainEvent $expected, DomainEvent $actual): bool
- {
- return $expected::class === $actual::class;
- }
-
- private function propertiesAreSimilar(DomainEvent $expected, DomainEvent $actual): bool
- {
- $expectedReflected = new ReflectionObject($expected);
- $actualReflected = new ReflectionObject($actual);
-
- foreach ($expectedReflected->getProperties() as $expectedReflectedProperty) {
- if (!in_array($expectedReflectedProperty->getName(), self::$ignoredAttributes, false)) {
- $actualReflectedProperty = $actualReflected->getProperty($expectedReflectedProperty->getName());
-
- $expectedReflectedProperty->setAccessible(true);
- $actualReflectedProperty->setAccessible(true);
-
- $expectedProperty = $expectedReflectedProperty->getValue($expected);
- $actualProperty = $actualReflectedProperty->getValue($actual);
-
- if (!TestUtils::isSimilar($expectedProperty, $actualProperty)) {
- return false;
- }
- }
- }
-
- return true;
- }
+ private static array $ignoredAttributes = ['eventId', 'occurredOn'];
+
+ public function accepts($expected, $actual): bool
+ {
+ $domainEventRootClass = DomainEvent::class;
+
+ return $expected instanceof $domainEventRootClass && $actual instanceof $domainEventRootClass;
+ }
+
+ public function assertEquals($expected, $actual, $delta = 0.0, $canonicalize = false, $ignoreCase = false): void
+ {
+ if (!$this->areSimilar($expected, $actual)) {
+ throw new ComparisonFailure(
+ $expected,
+ $actual,
+ $this->exporter->export($expected),
+ $this->exporter->export($actual),
+ false,
+ 'Failed asserting the events are equal.'
+ );
+ }
+ }
+
+ private function areSimilar(DomainEvent $expected, DomainEvent $actual): bool
+ {
+ if (!$this->areTheSameClass($expected, $actual)) {
+ return false;
+ }
+
+ return $this->propertiesAreSimilar($expected, $actual);
+ }
+
+ private function areTheSameClass(DomainEvent $expected, DomainEvent $actual): bool
+ {
+ return $expected::class === $actual::class;
+ }
+
+ private function propertiesAreSimilar(DomainEvent $expected, DomainEvent $actual): bool
+ {
+ $expectedReflected = new ReflectionObject($expected);
+ $actualReflected = new ReflectionObject($actual);
+
+ foreach ($expectedReflected->getProperties() as $expectedReflectedProperty) {
+ if (!in_array($expectedReflectedProperty->getName(), self::$ignoredAttributes, false)) {
+ $actualReflectedProperty = $actualReflected->getProperty($expectedReflectedProperty->getName());
+
+ $expectedReflectedProperty->setAccessible(true);
+ $actualReflectedProperty->setAccessible(true);
+
+ $expectedProperty = $expectedReflectedProperty->getValue($expected);
+ $actualProperty = $actualReflectedProperty->getValue($actual);
+
+ if (!TestUtils::isSimilar($expectedProperty, $actualProperty)) {
+ return false;
+ }
+ }
+ }
+
+ return true;
+ }
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php b/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
index 7c8847dcc..e5b4ca53a 100644
--- a/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
+++ b/tests/Shared/Infrastructure/PhpUnit/Constraint/CodelyTvConstraintIsSimilar.php
@@ -21,55 +21,55 @@
// Based on \PHPUnit\Framework\Constraint\IsEqual
final class CodelyTvConstraintIsSimilar extends Constraint
{
- public function __construct(private $value, private readonly float $delta = 0.0) {}
+ public function __construct(private $value, private readonly float $delta = 0.0) {}
- public function evaluate($other, $description = '', $returnResult = false): bool
- {
- if ($this->value === $other) {
- return true;
- }
+ public function evaluate($other, $description = '', $returnResult = false): bool
+ {
+ if ($this->value === $other) {
+ return true;
+ }
- $isValid = true;
- $comparatorFactory = new Factory();
+ $isValid = true;
+ $comparatorFactory = new Factory();
- $comparatorFactory->register(new AggregateRootArraySimilarComparator());
- $comparatorFactory->register(new AggregateRootSimilarComparator());
- $comparatorFactory->register(new DomainEventArraySimilarComparator());
- $comparatorFactory->register(new DomainEventSimilarComparator());
- $comparatorFactory->register(new DateTimeSimilarComparator());
- $comparatorFactory->register(new DateTimeStringSimilarComparator());
+ $comparatorFactory->register(new AggregateRootArraySimilarComparator());
+ $comparatorFactory->register(new AggregateRootSimilarComparator());
+ $comparatorFactory->register(new DomainEventArraySimilarComparator());
+ $comparatorFactory->register(new DomainEventSimilarComparator());
+ $comparatorFactory->register(new DateTimeSimilarComparator());
+ $comparatorFactory->register(new DateTimeStringSimilarComparator());
- try {
- $comparator = $comparatorFactory->getComparatorFor($other, $this->value);
+ try {
+ $comparator = $comparatorFactory->getComparatorFor($other, $this->value);
- $comparator->assertEquals($this->value, $other, $this->delta);
- } catch (ComparisonFailure $f) {
- if (!$returnResult) {
- throw new ExpectationFailedException(trim($description . "\n" . $f->getMessage()), $f);
- }
+ $comparator->assertEquals($this->value, $other, $this->delta);
+ } catch (ComparisonFailure $f) {
+ if (!$returnResult) {
+ throw new ExpectationFailedException(trim($description . "\n" . $f->getMessage()), $f);
+ }
- $isValid = false;
- }
+ $isValid = false;
+ }
- return $isValid;
- }
+ return $isValid;
+ }
- public function toString(): string
- {
- $delta = '';
+ public function toString(): string
+ {
+ $delta = '';
- if (is_string($this->value)) {
- if (str_contains($this->value, "\n")) {
- return 'is equal to ';
- }
+ if (is_string($this->value)) {
+ if (str_contains($this->value, "\n")) {
+ 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);
- }
+ if ($this->delta !== 0) {
+ $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 5ef80b395..52438a8f0 100644
--- a/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
+++ b/tests/Shared/Infrastructure/PhpUnit/InfrastructureTestCase.php
@@ -11,54 +11,54 @@
abstract class InfrastructureTestCase extends KernelTestCase
{
- abstract protected function kernelClass(): string;
+ abstract protected function kernelClass(): string;
- protected function setUp(): void
- {
- $_SERVER['KERNEL_CLASS'] = $this->kernelClass();
+ protected function setUp(): void
+ {
+ $_SERVER['KERNEL_CLASS'] = $this->kernelClass();
- self::bootKernel(['environment' => 'test']);
+ self::bootKernel(['environment' => 'test']);
- parent::setUp();
- }
+ parent::setUp();
+ }
- protected function assertSimilar(mixed $expected, mixed $actual): void
- {
- TestUtils::assertSimilar($expected, $actual);
- }
+ protected function assertSimilar(mixed $expected, mixed $actual): void
+ {
+ TestUtils::assertSimilar($expected, $actual);
+ }
- protected function service(string $id): mixed
- {
- return self::getContainer()->get($id);
- }
+ protected function service(string $id): mixed
+ {
+ return self::getContainer()->get($id);
+ }
- protected function parameter(string $parameter): mixed
- {
- return self::getContainer()->getParameter($parameter);
- }
+ protected function parameter(string $parameter): mixed
+ {
+ return self::getContainer()->getParameter($parameter);
+ }
- protected function clearUnitOfWork(): void
- {
- $this->service(EntityManager::class)->clear();
- }
+ protected function clearUnitOfWork(): void
+ {
+ $this->service(EntityManager::class)->clear();
+ }
- /** @param int<0, max> $timeToWaitOnErrorInSeconds */
- protected function eventually(
- callable $fn,
- int $totalRetries = 3,
- int $timeToWaitOnErrorInSeconds = 1,
- int $attempt = 0
- ): void {
- try {
- $fn();
- } catch (Throwable $error) {
- if ($totalRetries === $attempt) {
- throw $error;
- }
+ /** @param int<0, max> $timeToWaitOnErrorInSeconds */
+ protected function eventually(
+ callable $fn,
+ int $totalRetries = 3,
+ int $timeToWaitOnErrorInSeconds = 1,
+ int $attempt = 0
+ ): void {
+ try {
+ $fn();
+ } catch (Throwable $error) {
+ if ($totalRetries === $attempt) {
+ throw $error;
+ }
- sleep($timeToWaitOnErrorInSeconds);
+ sleep($timeToWaitOnErrorInSeconds);
- $this->eventually($fn, $totalRetries, $timeToWaitOnErrorInSeconds, $attempt + 1);
- }
- }
+ $this->eventually($fn, $totalRetries, $timeToWaitOnErrorInSeconds, $attempt + 1);
+ }
+ }
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
index 1776ca089..3ffac0ca0 100644
--- a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
+++ b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
@@ -19,86 +19,86 @@
abstract class UnitTestCase extends MockeryTestCase
{
- private EventBus|MockInterface|null $eventBus = null;
- private MockInterface|UuidGenerator|null $uuidGenerator = null;
-
- protected function mock(string $className): MockInterface
- {
- return Mockery::mock($className);
- }
-
- protected function shouldPublishDomainEvent(DomainEvent $domainEvent): void
- {
- $this->eventBus()
- ->shouldReceive('publish')
- ->with($this->similarTo($domainEvent))
- ->andReturnNull();
- }
-
- protected function shouldNotPublishDomainEvent(): void
- {
- $this->eventBus()
- ->shouldReceive('publish')
- ->withNoArgs()
- ->andReturnNull();
- }
-
- protected function eventBus(): EventBus|MockInterface
- {
- return $this->eventBus ??= $this->mock(EventBus::class);
- }
-
- protected function shouldGenerateUuid(string $uuid): void
- {
- $this->uuidGenerator()
- ->shouldReceive('generate')
- ->once()
- ->withNoArgs()
- ->andReturn($uuid);
- }
-
- protected function uuidGenerator(): MockInterface|UuidGenerator
- {
- return $this->uuidGenerator ??= $this->mock(UuidGenerator::class);
- }
-
- protected function notify(DomainEvent $event, callable $subscriber): void
- {
- $subscriber($event);
- }
-
- protected function dispatch(Command $command, callable $commandHandler): void
- {
- $commandHandler($command);
- }
-
- protected function assertAskResponse(Response $expected, Query $query, callable $queryHandler): void
- {
- $actual = $queryHandler($query);
-
- $this->assertEquals($expected, $actual);
- }
-
- /** @param class-string $expectedErrorClass */
- protected function assertAskThrowsException(string $expectedErrorClass, Query $query, callable $queryHandler): void
- {
- $this->expectException($expectedErrorClass);
-
- $queryHandler($query);
- }
-
- protected function isSimilar(mixed $expected, mixed $actual): bool
- {
- return TestUtils::isSimilar($expected, $actual);
- }
-
- protected function assertSimilar(mixed $expected, mixed $actual): void
- {
- TestUtils::assertSimilar($expected, $actual);
- }
-
- protected function similarTo(mixed $value, float $delta = 0.0): MatcherAbstract
- {
- return TestUtils::similarTo($value, $delta);
- }
+ private EventBus|MockInterface|null $eventBus = null;
+ private MockInterface|UuidGenerator|null $uuidGenerator = null;
+
+ protected function mock(string $className): MockInterface
+ {
+ return Mockery::mock($className);
+ }
+
+ protected function shouldPublishDomainEvent(DomainEvent $domainEvent): void
+ {
+ $this->eventBus()
+ ->shouldReceive('publish')
+ ->with($this->similarTo($domainEvent))
+ ->andReturnNull();
+ }
+
+ protected function shouldNotPublishDomainEvent(): void
+ {
+ $this->eventBus()
+ ->shouldReceive('publish')
+ ->withNoArgs()
+ ->andReturnNull();
+ }
+
+ protected function eventBus(): EventBus|MockInterface
+ {
+ return $this->eventBus ??= $this->mock(EventBus::class);
+ }
+
+ protected function shouldGenerateUuid(string $uuid): void
+ {
+ $this->uuidGenerator()
+ ->shouldReceive('generate')
+ ->once()
+ ->withNoArgs()
+ ->andReturn($uuid);
+ }
+
+ protected function uuidGenerator(): MockInterface|UuidGenerator
+ {
+ return $this->uuidGenerator ??= $this->mock(UuidGenerator::class);
+ }
+
+ protected function notify(DomainEvent $event, callable $subscriber): void
+ {
+ $subscriber($event);
+ }
+
+ protected function dispatch(Command $command, callable $commandHandler): void
+ {
+ $commandHandler($command);
+ }
+
+ protected function assertAskResponse(Response $expected, Query $query, callable $queryHandler): void
+ {
+ $actual = $queryHandler($query);
+
+ $this->assertEquals($expected, $actual);
+ }
+
+ /** @param class-string $expectedErrorClass */
+ protected function assertAskThrowsException(string $expectedErrorClass, Query $query, callable $queryHandler): void
+ {
+ $this->expectException($expectedErrorClass);
+
+ $queryHandler($query);
+ }
+
+ protected function isSimilar(mixed $expected, mixed $actual): bool
+ {
+ return TestUtils::isSimilar($expected, $actual);
+ }
+
+ protected function assertSimilar(mixed $expected, mixed $actual): void
+ {
+ TestUtils::assertSimilar($expected, $actual);
+ }
+
+ protected function similarTo(mixed $value, float $delta = 0.0): MatcherAbstract
+ {
+ return TestUtils::similarTo($value, $delta);
+ }
}
diff --git a/tests/Shared/SharedArchitectureTest.php b/tests/Shared/SharedArchitectureTest.php
index 08561532d..4e7489762 100644
--- a/tests/Shared/SharedArchitectureTest.php
+++ b/tests/Shared/SharedArchitectureTest.php
@@ -16,46 +16,46 @@
final class SharedArchitectureTest
{
- public function test_shared_domain_should_not_import_from_outside(): Rule
- {
- return PHPat::rule()
- ->classes(Selector::inNamespace('CodelyTv\Shared\Domain'))
- ->canOnlyDependOn()
- ->classes(...array_merge(ArchitectureTest::languageClasses(), [
- // Itself
- Selector::inNamespace('CodelyTv\Shared\Domain'),
- // Dependencies treated as domain
- Selector::classname(Uuid::class),
- ]))
- ->because('shared domain cannot import from outside');
- }
+ public function test_shared_domain_should_not_import_from_outside(): Rule
+ {
+ return PHPat::rule()
+ ->classes(Selector::inNamespace('CodelyTv\Shared\Domain'))
+ ->canOnlyDependOn()
+ ->classes(...array_merge(ArchitectureTest::languageClasses(), [
+ // Itself
+ Selector::inNamespace('CodelyTv\Shared\Domain'),
+ // Dependencies treated as domain
+ Selector::classname(Uuid::class),
+ ]))
+ ->because('shared domain cannot import from outside');
+ }
- public function test_shared_infrastructure_should_not_import_from_other_contexts(): Rule
- {
- return PHPat::rule()
- ->classes(Selector::inNamespace('CodelyTv\Shared\Infrastructure'))
- ->shouldNotDependOn()
- ->classes(Selector::inNamespace('CodelyTv'))
- ->excluding(
- // Itself
- Selector::inNamespace('CodelyTv\Shared'),
- // This need to be refactored
- Selector::classname(MySqlDatabaseCleaner::class),
- Selector::classname(AuthenticateUserCommand::class),
- );
- }
+ public function test_shared_infrastructure_should_not_import_from_other_contexts(): Rule
+ {
+ return PHPat::rule()
+ ->classes(Selector::inNamespace('CodelyTv\Shared\Infrastructure'))
+ ->shouldNotDependOn()
+ ->classes(Selector::inNamespace('CodelyTv'))
+ ->excluding(
+ // Itself
+ Selector::inNamespace('CodelyTv\Shared'),
+ // This need to be refactored
+ Selector::classname(MySqlDatabaseCleaner::class),
+ Selector::classname(AuthenticateUserCommand::class),
+ );
+ }
- public function test_all_use_cases_can_only_have_one_public_method(): Rule
- {
- return PHPat::rule()
- ->classes(
- Selector::classname('/^CodelyTv\\\\.+\\\\.+\\\\Application\\\\.+\\\\(?!.*(?:Command|Query)$).*$/', true)
- )
- ->excluding(
- Selector::implements(Response::class),
- Selector::implements(DomainEventSubscriber::class),
- Selector::inNamespace('/.*\\\\Tests\\\\.*/', true)
- )
- ->shouldHaveOnlyOnePublicMethod();
- }
+ public function test_all_use_cases_can_only_have_one_public_method(): Rule
+ {
+ return PHPat::rule()
+ ->classes(
+ Selector::classname('/^CodelyTv\\\\.+\\\\.+\\\\Application\\\\.+\\\\(?!.*(?:Command|Query)$).*$/', true)
+ )
+ ->excluding(
+ Selector::implements(Response::class),
+ Selector::implements(DomainEventSubscriber::class),
+ Selector::inNamespace('/.*\\\\Tests\\\\.*/', true)
+ )
+ ->shouldHaveOnlyOnePublicMethod();
+ }
}
From b34318ba74db5370269ae9f19b634607bd17b398 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Mon, 23 Oct 2023 12:19:24 +0200
Subject: [PATCH 29/40] feat: update codely coding standard
---
composer.lock | 14 +++++++-------
ecs.php | 2 +-
2 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/composer.lock b/composer.lock
index 7f2369ac4..4c9c29173 100644
--- a/composer.lock
+++ b/composer.lock
@@ -6064,16 +6064,16 @@
},
{
"name": "codelytv/coding-style",
- "version": "1.0.0",
+ "version": "1.0.1",
"source": {
"type": "git",
"url": "https://github.com/CodelyTV/php-coding_style-codely.git",
- "reference": "6aa1ff99eb1ac817dbf2be6bf3288b7925784e9d"
+ "reference": "2d350ba91ba0f56a4d159d81f5f193410dd7484c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/6aa1ff99eb1ac817dbf2be6bf3288b7925784e9d",
- "reference": "6aa1ff99eb1ac817dbf2be6bf3288b7925784e9d",
+ "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/2d350ba91ba0f56a4d159d81f5f193410dd7484c",
+ "reference": "2d350ba91ba0f56a4d159d81f5f193410dd7484c",
"shasum": ""
},
"require": {
@@ -6082,7 +6082,7 @@
"type": "library",
"autoload": {
"psr-4": {
- "Codelytv\\CodingStyle\\": "src/"
+ "CodelyTv\\CodingStyle\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -6096,7 +6096,7 @@
],
"support": {
"issues": "https://github.com/CodelyTV/php-coding_style-codely/issues",
- "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.0.0"
+ "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.0.1"
},
"funding": [
{
@@ -6104,7 +6104,7 @@
"type": "custom"
}
],
- "time": "2023-10-23T09:55:18+00:00"
+ "time": "2023-10-23T10:16:47+00:00"
},
{
"name": "composer/package-versions-deprecated",
diff --git a/ecs.php b/ecs.php
index 97f55586a..34bc1f191 100644
--- a/ecs.php
+++ b/ecs.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-use Codelytv\CodingStyle\CodelyRules;
+use CodelyTv\CodingStyle\CodelyRules;
use PhpCsFixer\Fixer\ClassNotation\FinalClassFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
From 5f4fc51b3cd08f6d98369e9ae696d8f04011433a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Mon, 23 Oct 2023 12:58:56 +0200
Subject: [PATCH 30/40] feat: update codely coding standard
---
composer.json | 2 +-
composer.lock | 22 ++++++++++++++--------
ecs.php | 4 ++--
3 files changed, 17 insertions(+), 11 deletions(-)
diff --git a/composer.json b/composer.json
index a616f67eb..635ba2e6d 100644
--- a/composer.json
+++ b/composer.json
@@ -61,7 +61,7 @@
"phpstan/phpstan": "^1.10",
"phpat/phpat": "^0.10.10",
"phpmd/phpmd": "^2.14",
- "codelytv/coding-style": "^1.0"
+ "codelytv/coding-style": "^1.1"
},
"autoload": {
"psr-4": {
diff --git a/composer.lock b/composer.lock
index 4c9c29173..dd6f12abd 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "ba195cf69db5f97d61146955643ca749",
+ "content-hash": "9718b84494ae39b585647c5eb80984df",
"packages": [
{
"name": "brick/math",
@@ -6064,16 +6064,16 @@
},
{
"name": "codelytv/coding-style",
- "version": "1.0.1",
+ "version": "1.1.1",
"source": {
"type": "git",
"url": "https://github.com/CodelyTV/php-coding_style-codely.git",
- "reference": "2d350ba91ba0f56a4d159d81f5f193410dd7484c"
+ "reference": "9178d43b9b8996e6b04108f102dac358fe642df1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/2d350ba91ba0f56a4d159d81f5f193410dd7484c",
- "reference": "2d350ba91ba0f56a4d159d81f5f193410dd7484c",
+ "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/9178d43b9b8996e6b04108f102dac358fe642df1",
+ "reference": "9178d43b9b8996e6b04108f102dac358fe642df1",
"shasum": ""
},
"require": {
@@ -6082,13 +6082,19 @@
"type": "library",
"autoload": {
"psr-4": {
- "CodelyTv\\CodingStyle\\": "src/"
+ "CodelyTv\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"AGPL-3.0-or-later"
],
+ "authors": [
+ {
+ "name": "Codely",
+ "homepage": "https://codely.com"
+ }
+ ],
"description": "PHP Coding Style rules we use in Codely",
"keywords": [
"Code style",
@@ -6096,7 +6102,7 @@
],
"support": {
"issues": "https://github.com/CodelyTV/php-coding_style-codely/issues",
- "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.0.1"
+ "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.1.1"
},
"funding": [
{
@@ -6104,7 +6110,7 @@
"type": "custom"
}
],
- "time": "2023-10-23T10:16:47+00:00"
+ "time": "2023-10-23T10:56:55+00:00"
},
{
"name": "composer/package-versions-deprecated",
diff --git a/ecs.php b/ecs.php
index 34bc1f191..3e87e64ce 100644
--- a/ecs.php
+++ b/ecs.php
@@ -2,7 +2,7 @@
declare(strict_types=1);
-use CodelyTv\CodingStyle\CodelyRules;
+use CodelyTv\CodingStyle;
use PhpCsFixer\Fixer\ClassNotation\FinalClassFixer;
use Symplify\EasyCodingStandard\Config\ECSConfig;
@@ -13,7 +13,7 @@
__DIR__ . '/tests',
]);
- $ecsConfig->sets([CodelyRules::CODING_STYLE]);
+ $ecsConfig->sets([CodingStyle::DEFAULT]);
$ecsConfig->skip([
FinalClassFixer::class => [
From 0fb5690cb5c33b941dc86db594509629d1a745fe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Mon, 23 Oct 2023 13:31:34 +0200
Subject: [PATCH 31/40] feat: update codely coding standard to indent arrays
---
.../src/Controller/Home/HomeGetWebController.php | 6 +++---
composer.lock | 12 ++++++------
.../Symfony/BasicHttpAuthMiddleware.php | 4 ++--
.../Domain/BackofficeCourseCriteriaMother.php | 8 ++++----
4 files changed, 15 insertions(+), 15 deletions(-)
diff --git a/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php b/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php
index b318f388a..30e011847 100644
--- a/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php
+++ b/apps/backoffice/frontend/src/Controller/Home/HomeGetWebController.php
@@ -13,9 +13,9 @@ final class HomeGetWebController extends WebController
public function __invoke(Request $request): Response
{
return $this->render('pages/home.html.twig', [
- 'title' => 'Welcome',
- 'description' => 'CodelyTV - Backoffice',
- ]);
+ 'title' => 'Welcome',
+ 'description' => 'CodelyTV - Backoffice',
+ ]);
}
protected function exceptions(): array
diff --git a/composer.lock b/composer.lock
index dd6f12abd..a5f25e0d0 100644
--- a/composer.lock
+++ b/composer.lock
@@ -6064,16 +6064,16 @@
},
{
"name": "codelytv/coding-style",
- "version": "1.1.1",
+ "version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/CodelyTV/php-coding_style-codely.git",
- "reference": "9178d43b9b8996e6b04108f102dac358fe642df1"
+ "reference": "2e00fde930bb1a51d6e7494bfc3a44cb60196fff"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/9178d43b9b8996e6b04108f102dac358fe642df1",
- "reference": "9178d43b9b8996e6b04108f102dac358fe642df1",
+ "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/2e00fde930bb1a51d6e7494bfc3a44cb60196fff",
+ "reference": "2e00fde930bb1a51d6e7494bfc3a44cb60196fff",
"shasum": ""
},
"require": {
@@ -6102,7 +6102,7 @@
],
"support": {
"issues": "https://github.com/CodelyTV/php-coding_style-codely/issues",
- "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.1.1"
+ "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.1.2"
},
"funding": [
{
@@ -6110,7 +6110,7 @@
"type": "custom"
}
],
- "time": "2023-10-23T10:56:55+00:00"
+ "time": "2023-10-23T11:29:20+00:00"
},
{
"name": "composer/package-versions-deprecated",
diff --git a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
index ad1106448..410b6a295 100644
--- a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
+++ b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
@@ -55,8 +55,8 @@ private function askForCredentials(RequestEvent $event): void
{
$event->setResponse(
new Response('', Response::HTTP_UNAUTHORIZED, [
-'WWW-Authenticate' => 'Basic realm="CodelyTV"',
-])
+ 'WWW-Authenticate' => 'Basic realm="CodelyTV"',
+ ])
);
}
}
diff --git a/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php b/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php
index 666d30ab0..58e38d029 100644
--- a/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php
+++ b/tests/Backoffice/Courses/Domain/BackofficeCourseCriteriaMother.php
@@ -16,10 +16,10 @@ public static function nameContains(string $text): Criteria
return CriteriaMother::create(
FiltersMother::createOne(
FilterMother::fromValues([
- 'field' => 'name',
- 'operator' => 'CONTAINS',
- 'value' => $text,
- ])
+ 'field' => 'name',
+ 'operator' => 'CONTAINS',
+ 'value' => $text,
+ ])
)
);
}
From ecf8d27ea25885a8f21cbc60da87e9912daf4aba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Mon, 23 Oct 2023 18:18:49 +0200
Subject: [PATCH 32/40] chore: add always var folders
---
.gitignore | 1 +
apps/backoffice/backend/var/.gitkeep | 0
apps/backoffice/frontend/var/.gitkeep | 0
apps/mooc/backend/var/.gitkeep | 0
apps/mooc/frontend/var/.gitkeep | 0
5 files changed, 1 insertion(+)
create mode 100644 apps/backoffice/backend/var/.gitkeep
create mode 100644 apps/backoffice/frontend/var/.gitkeep
create mode 100644 apps/mooc/backend/var/.gitkeep
create mode 100644 apps/mooc/frontend/var/.gitkeep
diff --git a/.gitignore b/.gitignore
index ee27af29d..a4b4f3437 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,7 @@
/.env.*.local
/apps/*/*/var/
+!/apps/*/*/var/.gitkeep
/apps/*/*/build/
!/apps/*/*/build/supervisor/.gitkeep
diff --git a/apps/backoffice/backend/var/.gitkeep b/apps/backoffice/backend/var/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/backoffice/frontend/var/.gitkeep b/apps/backoffice/frontend/var/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/mooc/backend/var/.gitkeep b/apps/mooc/backend/var/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/apps/mooc/frontend/var/.gitkeep b/apps/mooc/frontend/var/.gitkeep
new file mode 100644
index 000000000..e69de29bb
From de40b2673dfd18853567d0fbfd27f283349a69a9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Mon, 20 Nov 2023 16:47:52 +0100
Subject: [PATCH 33/40] chore: add cdc pattern example (#369)
* chore: add mutations table
* refactor: use codely for commands instead of codelytv
* chore: remove symfony deprecations
* chore: add command to publish mutations as domain events
* fix: no finalize kernel classes
---
.../backend/src/BackofficeBackendKernel.php | 2 +-
.../frontend/src/BackofficeFrontendKernel.php | 2 +-
.../MySql/ConsumeMySqlDomainEventsCommand.php | 8 +-
...ublishDomainEventsFromMutationsCommand.php | 91 ++++++++++++++
.../RabbitMq/ConfigureRabbitMqCommand.php | 12 +-
.../ConsumeRabbitMqDomainEventsCommand.php | 8 +-
...SupervisorRabbitMqConsumerFilesCommand.php | 12 +-
apps/mooc/backend/src/MoocBackendKernel.php | 2 +-
ecs.php | 32 +++--
etc/databases/mooc.sql | 112 ++++++++++++++----
...baseMutationToCourseCreatedDomainEvent.php | 40 +++++++
.../Persistence/Doctrine/CourseIdsType.php | 4 +-
.../Cdc/DatabaseMutationAction.php | 12 ++
.../Cdc/DatabaseMutationToDomainEvent.php | 17 +++
.../Doctrine/DoctrineEntityManagerFactory.php | 9 +-
.../Persistence/Doctrine/UuidType.php | 4 +-
16 files changed, 297 insertions(+), 70 deletions(-)
create mode 100644 apps/mooc/backend/src/Command/DomainEvents/PublishDomainEventsFromMutationsCommand.php
create mode 100644 src/Mooc/Courses/Infrastructure/Cdc/DatabaseMutationToCourseCreatedDomainEvent.php
create mode 100644 src/Shared/Infrastructure/Cdc/DatabaseMutationAction.php
create mode 100644 src/Shared/Infrastructure/Cdc/DatabaseMutationToDomainEvent.php
diff --git a/apps/backoffice/backend/src/BackofficeBackendKernel.php b/apps/backoffice/backend/src/BackofficeBackendKernel.php
index 793ede8c0..6ed60b1be 100644
--- a/apps/backoffice/backend/src/BackofficeBackendKernel.php
+++ b/apps/backoffice/backend/src/BackofficeBackendKernel.php
@@ -36,7 +36,7 @@ public function getProjectDir(): string
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
{
$container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
- $container->setParameter('container.dumper.inline_class_loader', true);
+ $container->setParameter('.container.dumper.inline_class_loader', true);
$confDir = $this->getProjectDir() . '/config';
$loader->load($confDir . '/services' . self::CONFIG_EXTS, 'glob');
diff --git a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
index 28852a38a..dd793f7ab 100644
--- a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
+++ b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
@@ -36,7 +36,7 @@ public function getProjectDir(): string
protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void
{
$container->addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
- $container->setParameter('container.dumper.inline_class_loader', true);
+ $container->setParameter('.container.dumper.inline_class_loader', true);
$confDir = $this->getProjectDir() . '/config';
$loader->load($confDir . '/services' . self::CONFIG_EXTS, 'glob');
diff --git a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
index 359264a69..16d96c2a6 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/MySql/ConsumeMySqlDomainEventsCommand.php
@@ -8,6 +8,7 @@
use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventSubscriberLocator;
use CodelyTv\Shared\Infrastructure\Bus\Event\MySql\MySqlDoctrineDomainEventsConsumer;
use CodelyTv\Shared\Infrastructure\Doctrine\DatabaseConnections;
+use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
@@ -15,10 +16,9 @@
use function Lambdish\Phunctional\pipe;
+#[AsCommand(name: 'codely:domain-events:mysql:consume', description: 'Consume domain events from MySql',)]
final class ConsumeMySqlDomainEventsCommand extends Command
{
- protected static $defaultName = 'codelytv:domain-events:mysql:consume';
-
public function __construct(
private readonly MySqlDoctrineDomainEventsConsumer $consumer,
private readonly DatabaseConnections $connections,
@@ -29,9 +29,7 @@ public function __construct(
protected function configure(): void
{
- $this
- ->setDescription('Consume domain events from MySql')
- ->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of events to process');
+ $this->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of events to process');
}
protected function execute(InputInterface $input, OutputInterface $output): int
diff --git a/apps/mooc/backend/src/Command/DomainEvents/PublishDomainEventsFromMutationsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/PublishDomainEventsFromMutationsCommand.php
new file mode 100644
index 000000000..945784311
--- /dev/null
+++ b/apps/mooc/backend/src/Command/DomainEvents/PublishDomainEventsFromMutationsCommand.php
@@ -0,0 +1,91 @@
+transformers = [
+ 'courses' => [
+ DatabaseMutationAction::INSERT->value => DatabaseMutationToCourseCreatedDomainEvent::class,
+ DatabaseMutationAction::UPDATE->value => null,
+ DatabaseMutationAction::DELETE->value => null,
+ ],
+ ];
+ }
+
+ protected function configure(): void
+ {
+ $this->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of mutations to process');
+ }
+
+ protected function execute(InputInterface $input, OutputInterface $output): int
+ {
+ $totalMutations = (int) $input->getArgument('quantity');
+
+ $this->entityManager->wrapInTransaction(function (EntityManager $entityManager) use ($totalMutations) {
+ $mutations = $entityManager->getConnection()
+ ->executeQuery("SELECT * FROM mutations ORDER BY id ASC LIMIT $totalMutations FOR UPDATE")
+ ->fetchAllAssociative();
+
+ foreach ($mutations as $mutation) {
+ $transformer = $this->findTransformer($mutation['table_name'], $mutation['operation']);
+
+ if ($transformer === null) {
+ echo sprintf("Ignoring %s %s\n", $mutation['table_name'], $mutation['operation']);
+ continue;
+ }
+
+ $domainEvents = $transformer->transform($mutation);
+
+ $this->eventBus->publish(...$domainEvents);
+ }
+
+ $entityManager->getConnection()->executeStatement(
+ sprintf('DELETE FROM mutations WHERE id IN (%s)', implode(',', array_column($mutations, 'id')))
+ );
+ });
+
+ return 0;
+ }
+
+ private function findTransformer(string $tableName, string $operation): ?DatabaseMutationToDomainEvent
+ {
+ if (!array_key_exists($tableName, $this->transformers) && array_key_exists(
+ $operation,
+ $this->transformers[$tableName]
+ )) {
+ throw new RuntimeException("Transformer not found for table $tableName and operation $operation");
+ }
+
+ /** @var class-string|null $class */
+ $class = $this->transformers[$tableName][$operation];
+
+ return $class ? new $class() : null;
+ }
+}
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php
index e42c35ba6..72801af71 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConfigureRabbitMqCommand.php
@@ -5,15 +5,18 @@
namespace CodelyTv\Apps\Mooc\Backend\Command\DomainEvents\RabbitMq;
use CodelyTv\Shared\Infrastructure\Bus\Event\RabbitMq\RabbitMqConfigurer;
+use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Traversable;
+#[AsCommand(
+ name: 'codely:domain-events:rabbitmq:configure',
+ description: 'Configure the RabbitMQ to allow publish & consume domain events',
+)]
final class ConfigureRabbitMqCommand extends Command
{
- protected static $defaultName = 'codelytv:domain-events:rabbitmq:configure';
-
public function __construct(
private readonly RabbitMqConfigurer $configurer,
private readonly string $exchangeName,
@@ -22,11 +25,6 @@ public function __construct(
parent::__construct();
}
- protected function configure(): void
- {
- $this->setDescription('Configure the RabbitMQ to allow publish & consume domain events');
- }
-
protected function execute(InputInterface $input, OutputInterface $output): int
{
$this->configurer->configure($this->exchangeName, ...iterator_to_array($this->subscribers));
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
index 856f40b04..c29c056d8 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/ConsumeRabbitMqDomainEventsCommand.php
@@ -7,6 +7,7 @@
use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventSubscriberLocator;
use CodelyTv\Shared\Infrastructure\Bus\Event\RabbitMq\RabbitMqDomainEventsConsumer;
use CodelyTv\Shared\Infrastructure\Doctrine\DatabaseConnections;
+use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
@@ -14,10 +15,12 @@
use function Lambdish\Phunctional\repeat;
+#[AsCommand(
+ name: 'codely:domain-events:rabbitmq:consume',
+ description: 'Consume domain events from the RabbitMQ',
+)]
final class ConsumeRabbitMqDomainEventsCommand extends Command
{
- protected static $defaultName = 'codelytv:domain-events:rabbitmq:consume';
-
public function __construct(
private readonly RabbitMqDomainEventsConsumer $consumer,
private readonly DatabaseConnections $connections,
@@ -29,7 +32,6 @@ public function __construct(
protected function configure(): void
{
$this
- ->setDescription('Consume domain events from the RabbitMQ')
->addArgument('queue', InputArgument::REQUIRED, 'Queue name')
->addArgument('quantity', InputArgument::REQUIRED, 'Quantity of events to process');
}
diff --git a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
index f806d57da..646392bf3 100644
--- a/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
+++ b/apps/mooc/backend/src/Command/DomainEvents/RabbitMq/GenerateSupervisorRabbitMqConsumerFilesCommand.php
@@ -7,6 +7,7 @@
use CodelyTv\Shared\Domain\Bus\Event\DomainEventSubscriber;
use CodelyTv\Shared\Infrastructure\Bus\Event\DomainEventSubscriberLocator;
use CodelyTv\Shared\Infrastructure\Bus\Event\RabbitMq\RabbitMqQueueNameFormatter;
+use Symfony\Component\Console\Attribute\AsCommand;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
@@ -14,12 +15,15 @@
use function Lambdish\Phunctional\each;
+#[AsCommand(
+ name: 'codely:domain-events:rabbitmq:generate-supervisor-files',
+ description: 'Generate the supervisor configuration for every RabbitMQ subscriber',
+)]
final class GenerateSupervisorRabbitMqConsumerFilesCommand extends Command
{
private const EVENTS_TO_PROCESS_AT_TIME = 200;
private const NUMBERS_OF_PROCESSES_PER_SUBSCRIBER = 1;
private const SUPERVISOR_PATH = __DIR__ . '/../../../../build/supervisor';
- protected static $defaultName = 'codelytv:domain-events:rabbitmq:generate-supervisor-files';
public function __construct(private readonly DomainEventSubscriberLocator $locator)
{
@@ -28,9 +32,7 @@ public function __construct(private readonly DomainEventSubscriberLocator $locat
protected function configure(): void
{
- $this
- ->setDescription('Generate the supervisor configuration for every RabbitMQ subscriber')
- ->addArgument('command-path', InputArgument::OPTIONAL, 'Path on this is gonna be deployed', '/var/www');
+ $this->addArgument('command-path', InputArgument::OPTIONAL, 'Path on this is gonna be deployed', '/var/www');
}
protected function execute(InputInterface $input, OutputInterface $output): int
@@ -68,7 +70,7 @@ private function template(): string
{
return <<addResource(new FileResource($this->getProjectDir() . '/config/bundles.php'));
- $container->setParameter('container.dumper.inline_class_loader', true);
+ $container->setParameter('.container.dumper.inline_class_loader', true);
$confDir = $this->getProjectDir() . '/config';
$loader->load($confDir . '/services' . self::CONFIG_EXTS, 'glob');
diff --git a/ecs.php b/ecs.php
index 3e87e64ce..e3ed961ba 100644
--- a/ecs.php
+++ b/ecs.php
@@ -7,24 +7,20 @@
use Symplify\EasyCodingStandard\Config\ECSConfig;
return function (ECSConfig $ecsConfig): void {
- $ecsConfig->paths([
- __DIR__ . '/apps',
- __DIR__ . '/src',
- __DIR__ . '/tests',
- ]);
+ $ecsConfig->paths([__DIR__ . '/apps', __DIR__ . '/src', __DIR__ . '/tests', ]);
- $ecsConfig->sets([CodingStyle::DEFAULT]);
+ $ecsConfig->sets([CodingStyle::DEFAULT]);
- $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',
- ],
- __DIR__ . '/apps/backoffice/backend/var',
- __DIR__ . '/apps/backoffice/frontend/var',
- __DIR__ . '/apps/mooc/backend/var',
- __DIR__ . '/apps/mooc/frontend/var',
- ]);
+ $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',
+ ],
+ __DIR__ . '/apps/backoffice/backend/var',
+ __DIR__ . '/apps/backoffice/frontend/var',
+ __DIR__ . '/apps/mooc/backend/var',
+ __DIR__ . '/apps/mooc/frontend/var',
+ ]);
};
diff --git a/etc/databases/mooc.sql b/etc/databases/mooc.sql
index e236cbc46..a999ef78e 100644
--- a/etc/databases/mooc.sql
+++ b/etc/databases/mooc.sql
@@ -1,31 +1,95 @@
+/* -------------------------
+ MOOC CONTEXT
+---------------------------- */
+
+-- Generic tables
+
+CREATE TABLE `mutations` (
+ `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
+ `table_name` VARCHAR(255) NOT NULL,
+ `operation` ENUM ('INSERT', 'UPDATE', 'DELETE') NOT NULL,
+ `old_value` JSON NULL,
+ `new_value` JSON NULL,
+ `mutation_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_unicode_ci;
+
+CREATE TABLE `domain_events` (
+ `id` CHAR(36) NOT NULL,
+ `aggregate_id` CHAR(36) NOT NULL,
+ `name` VARCHAR(255) NOT NULL,
+ `body` JSON NOT NULL,
+ `occurred_on` TIMESTAMP NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_unicode_ci;
+
+-- Aggregates tables
+
CREATE TABLE `courses` (
- `id` CHAR(36) NOT NULL,
- `name` VARCHAR(255) NOT NULL,
- `duration` VARCHAR(255) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ `id` CHAR(36) NOT NULL,
+ `name` VARCHAR(255) NOT NULL,
+ `duration` VARCHAR(255) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_unicode_ci;
+
+CREATE TRIGGER after_courses_insert
+ AFTER INSERT
+ ON courses
+ FOR EACH ROW
+BEGIN
+ INSERT INTO mutations (table_name, operation, new_value, mutation_timestamp)
+ VALUES ('courses', 'INSERT', JSON_OBJECT('id', new.id, 'name', new.name, 'duration', new.duration), NOW());
+END;
+
+CREATE TRIGGER after_courses_update
+ AFTER UPDATE
+ ON courses
+ FOR EACH ROW
+BEGIN
+ INSERT INTO mutations (table_name, operation, old_value, new_value, mutation_timestamp)
+ VALUES ('courses',
+ 'UPDATE',
+ JSON_OBJECT('id', old.id, 'name', old.name, 'duration', old.duration),
+ JSON_OBJECT('id', new.id, 'name', new.name, 'duration', new.duration),
+ NOW());
+END;
+
+CREATE TRIGGER after_courses_delete
+ AFTER DELETE
+ ON courses
+ FOR EACH ROW
+BEGIN
+ INSERT INTO mutations (table_name, operation, old_value, mutation_timestamp)
+ VALUES ('courses', 'DELETE', JSON_OBJECT('id', old.id, 'name', old.name, 'duration', old.duration), NOW());
+END;
CREATE TABLE `courses_counter` (
- `id` CHAR(36) NOT NULL,
- `total` INT NOT NULL,
- `existing_courses` JSON NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ `id` CHAR(36) NOT NULL,
+ `total` INT NOT NULL,
+ `existing_courses` JSON NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_unicode_ci;
-INSERT INTO `courses_counter` VALUES ("cdf26d7d-3deb-4e8c-9f73-4ac085a8d6f3", 0, "[]");
+INSERT INTO `courses_counter`
+VALUES ("cdf26d7d-3deb-4e8c-9f73-4ac085a8d6f3", 0, "[]");
-CREATE TABLE `domain_events` (
- `id` CHAR(36) NOT NULL,
- `aggregate_id` CHAR(36) NOT NULL,
- `name` VARCHAR(255) NOT NULL,
- `body` JSON NOT NULL,
- `occurred_on` timestamp NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+/* -------------------------
+ BACKOFFICE CONTEXT
+---------------------------- */
CREATE TABLE `backoffice_courses` (
- `id` CHAR(36) NOT NULL,
- `name` VARCHAR(255) NOT NULL,
- `duration` VARCHAR(255) NOT NULL,
- PRIMARY KEY (`id`)
-) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+ `id` CHAR(36) NOT NULL,
+ `name` VARCHAR(255) NOT NULL,
+ `duration` VARCHAR(255) NOT NULL,
+ PRIMARY KEY (`id`)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_unicode_ci;
diff --git a/src/Mooc/Courses/Infrastructure/Cdc/DatabaseMutationToCourseCreatedDomainEvent.php b/src/Mooc/Courses/Infrastructure/Cdc/DatabaseMutationToCourseCreatedDomainEvent.php
new file mode 100644
index 000000000..59f78fe54
--- /dev/null
+++ b/src/Mooc/Courses/Infrastructure/Cdc/DatabaseMutationToCourseCreatedDomainEvent.php
@@ -0,0 +1,40 @@
+ $id->value(), $value), $platform);
}
- public function convertToPHPValue($value, AbstractPlatform $platform)
+ public function convertToPHPValue($value, AbstractPlatform $platform): array
{
$scalars = parent::convertToPHPValue($value, $platform);
diff --git a/src/Shared/Infrastructure/Cdc/DatabaseMutationAction.php b/src/Shared/Infrastructure/Cdc/DatabaseMutationAction.php
new file mode 100644
index 000000000..fdad67057
--- /dev/null
+++ b/src/Shared/Infrastructure/Cdc/DatabaseMutationAction.php
@@ -0,0 +1,12 @@
+setMetadataDriverImpl(new SimplifiedXmlDriver(array_merge(self::$sharedPrefixes, $contextPrefixes)));
+ $config->setSchemaManagerFactory(new DefaultSchemaManagerFactory());
return $config;
}
diff --git a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
index f90ebbe32..1ef8213bc 100644
--- a/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
+++ b/src/Shared/Infrastructure/Persistence/Doctrine/UuidType.php
@@ -26,14 +26,14 @@ final public function getName(): string
return self::customTypeName();
}
- final public function convertToPHPValue($value, AbstractPlatform $platform)
+ final public function convertToPHPValue($value, AbstractPlatform $platform): mixed
{
$className = $this->typeClassName();
return new $className($value);
}
- final public function convertToDatabaseValue($value, AbstractPlatform $platform)
+ final public function convertToDatabaseValue($value, AbstractPlatform $platform): string
{
/** @var Uuid $value */
return $value->value();
From faf1a6a30ad37e1e98ddfb1c2105aa0288422b43 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Javier=20Ferrer=20Gonz=C3=A1lez?=
Date: Mon, 4 Dec 2023 17:32:16 +0100
Subject: [PATCH 34/40] chore: update to PHP 8.3 (#371)
* chore: update Docker image to PHP 8.3
* chore: update PHP extensions for PHP 8.3
* chore: enable APCu in CLI
* chore: explicitly enable APCu
---
Dockerfile | 4 +-
composer.json | 6 +-
composer.lock | 1992 +++++++++---------------
etc/infrastructure/php/conf.d/apcu.ini | 2 +
4 files changed, 753 insertions(+), 1251 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index 5a269cece..dd0f725bf 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,10 +1,10 @@
-FROM php:8.2-fpm-alpine
+FROM php:8.3-fpm-alpine
WORKDIR /app
RUN apk --update upgrade \
&& apk add --no-cache autoconf automake make gcc g++ git 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 pecl install apcu-5.1.23 && pecl install amqp-2.1.1 && pecl install xdebug-3.3.0
RUN docker-php-ext-install -j$(nproc) \
bcmath \
diff --git a/composer.json b/composer.json
index 635ba2e6d..4a6249ffe 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.2",
+ "php": "^8.3",
"ext-amqp": "*",
"ext-apcu": "*",
@@ -33,7 +33,7 @@
"elasticsearch/elasticsearch": "^7",
"monolog/monolog": "^3",
- "endclothing/prometheus_client_php": "^1"
+ "promphp/prometheus_client_php": "^2.7.2"
},
"require-dev": {
"ext-xdebug": "*",
@@ -54,7 +54,7 @@
"symplify/easy-coding-standard": "^12.0",
"vimeo/psalm": "^5.15",
- "rector/rector": "^0.18.4",
+ "rector/rector": "^0.18.12",
"psalm/plugin-mockery": "^1.1",
"psalm/plugin-symfony": "^5.0",
"psalm/plugin-phpunit": "^0.18.4",
diff --git a/composer.lock b/composer.lock
index a5f25e0d0..794251bd2 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "9718b84494ae39b585647c5eb80984df",
+ "content-hash": "49058a852a48e51de5183cc45f049da6",
"packages": [
{
"name": "brick/math",
@@ -156,16 +156,16 @@
},
{
"name": "doctrine/collections",
- "version": "2.1.3",
+ "version": "2.1.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
- "reference": "3023e150f90a38843856147b58190aa8b46cc155"
+ "reference": "72328a11443a0de79967104ad36ba7b30bded134"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/3023e150f90a38843856147b58190aa8b46cc155",
- "reference": "3023e150f90a38843856147b58190aa8b46cc155",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/72328a11443a0de79967104ad36ba7b30bded134",
+ "reference": "72328a11443a0de79967104ad36ba7b30bded134",
"shasum": ""
},
"require": {
@@ -173,7 +173,7 @@
"php": "^8.1"
},
"require-dev": {
- "doctrine/coding-standard": "^10.0",
+ "doctrine/coding-standard": "^12",
"ext-json": "*",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.0",
@@ -222,7 +222,7 @@
],
"support": {
"issues": "https://github.com/doctrine/collections/issues",
- "source": "https://github.com/doctrine/collections/tree/2.1.3"
+ "source": "https://github.com/doctrine/collections/tree/2.1.4"
},
"funding": [
{
@@ -238,7 +238,7 @@
"type": "tidelift"
}
],
- "time": "2023-07-06T15:15:36+00:00"
+ "time": "2023-10-03T09:22:33+00:00"
},
{
"name": "doctrine/common",
@@ -333,16 +333,16 @@
},
{
"name": "doctrine/dbal",
- "version": "3.7.0",
+ "version": "3.7.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf"
+ "reference": "0ac3c270590e54910715e9a1a044cc368df282b2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/00d03067f07482f025d41ab55e4ba0db5eca2cdf",
- "reference": "00d03067f07482f025d41ab55e4ba0db5eca2cdf",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2",
+ "reference": "0ac3c270590e54910715e9a1a044cc368df282b2",
"shasum": ""
},
"require": {
@@ -358,7 +358,7 @@
"doctrine/coding-standard": "12.0.0",
"fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.1",
- "phpstan/phpstan": "1.10.35",
+ "phpstan/phpstan": "1.10.42",
"phpstan/phpstan-strict-rules": "^1.5",
"phpunit/phpunit": "9.6.13",
"psalm/plugin-phpunit": "0.18.4",
@@ -426,7 +426,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/3.7.0"
+ "source": "https://github.com/doctrine/dbal/tree/3.7.2"
},
"funding": [
{
@@ -442,20 +442,20 @@
"type": "tidelift"
}
],
- "time": "2023-09-26T20:56:55+00:00"
+ "time": "2023-11-19T08:06:58+00:00"
},
{
"name": "doctrine/deprecations",
- "version": "v1.1.1",
+ "version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
- "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"
+ "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
- "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
+ "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
"shasum": ""
},
"require": {
@@ -487,9 +487,9 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/v1.1.1"
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.2"
},
- "time": "2023-06-03T09:27:29+00:00"
+ "time": "2023-09-27T20:04:15+00:00"
},
{
"name": "doctrine/event-manager",
@@ -823,16 +823,16 @@
},
{
"name": "doctrine/orm",
- "version": "2.16.2",
+ "version": "2.17.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
- "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0"
+ "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/orm/zipball/17500f56eaa930f5cd14d765bc2cd851c7d37cc0",
- "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0",
+ "url": "https://api.github.com/repos/doctrine/orm/zipball/1a4fe6e0bb67762370937a7e6cee3da40a9122d1",
+ "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1",
"shasum": ""
},
"require": {
@@ -850,7 +850,7 @@
"ext-ctype": "*",
"php": "^7.1 || ^8.0",
"psr/cache": "^1 || ^2 || ^3",
- "symfony/console": "^4.2 || ^5.0 || ^6.0",
+ "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0",
"symfony/polyfill-php72": "^1.23",
"symfony/polyfill-php80": "^1.16"
},
@@ -861,14 +861,14 @@
"doctrine/annotations": "^1.13 || ^2",
"doctrine/coding-standard": "^9.0.2 || ^12.0",
"phpbench/phpbench": "^0.16.10 || ^1.0",
- "phpstan/phpstan": "~1.4.10 || 1.10.28",
+ "phpstan/phpstan": "~1.4.10 || 1.10.35",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6",
"psr/log": "^1 || ^2 || ^3",
"squizlabs/php_codesniffer": "3.7.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.30.0 || 5.14.1"
+ "vimeo/psalm": "4.30.0 || 5.15.0"
},
"suggest": {
"ext-dom": "Provides support for XSD validation for XML mapping files",
@@ -918,9 +918,9 @@
],
"support": {
"issues": "https://github.com/doctrine/orm/issues",
- "source": "https://github.com/doctrine/orm/tree/2.16.2"
+ "source": "https://github.com/doctrine/orm/tree/2.17.1"
},
- "time": "2023-08-27T18:21:56+00:00"
+ "time": "2023-11-17T06:25:40+00:00"
},
{
"name": "doctrine/persistence",
@@ -1083,55 +1083,6 @@
],
"time": "2023-04-21T15:31:12+00:00"
},
- {
- "name": "endclothing/prometheus_client_php",
- "version": "1.0.1",
- "source": {
- "type": "git",
- "url": "https://github.com/endclothing/prometheus_client_php.git",
- "reference": "ae61369d8667343cfff70fec648b3448a2076778"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/endclothing/prometheus_client_php/zipball/ae61369d8667343cfff70fec648b3448a2076778",
- "reference": "ae61369d8667343cfff70fec648b3448a2076778",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "guzzlehttp/guzzle": "^6.2",
- "php": "^7.1",
- "symfony/polyfill-apcu": "^1.6"
- },
- "require-dev": {
- "phpunit/phpunit": "^7.5"
- },
- "suggest": {
- "ext-apc": "Required if using APCu.",
- "ext-redis": "Required if using Redis."
- },
- "type": "library",
- "autoload": {
- "psr-4": {
- "Prometheus\\": "src/Prometheus/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "Apache-2.0"
- ],
- "authors": [
- {
- "name": "Daniel Noel-Davies",
- "email": "Daniel.Noel-Davies@endclothing.com"
- }
- ],
- "support": {
- "issues": "https://github.com/endclothing/prometheus_client_php/issues",
- "source": "https://github.com/endclothing/prometheus_client_php/tree/v1.0.1"
- },
- "time": "2019-10-04T10:46:29+00:00"
- },
{
"name": "ezimuel/guzzlestreams",
"version": "3.1.0",
@@ -1324,305 +1275,6 @@
],
"time": "2023-05-24T07:17:17+00:00"
},
- {
- "name": "guzzlehttp/guzzle",
- "version": "6.5.8",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/guzzle.git",
- "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/a52f0440530b54fa079ce76e8c5d196a42cad981",
- "reference": "a52f0440530b54fa079ce76e8c5d196a42cad981",
- "shasum": ""
- },
- "require": {
- "ext-json": "*",
- "guzzlehttp/promises": "^1.0",
- "guzzlehttp/psr7": "^1.9",
- "php": ">=5.5",
- "symfony/polyfill-intl-idn": "^1.17"
- },
- "require-dev": {
- "ext-curl": "*",
- "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0",
- "psr/log": "^1.1"
- },
- "suggest": {
- "psr/log": "Required for using the Log middleware"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "6.5-dev"
- }
- },
- "autoload": {
- "files": [
- "src/functions_include.php"
- ],
- "psr-4": {
- "GuzzleHttp\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Jeremy Lindblom",
- "email": "jeremeamia@gmail.com",
- "homepage": "https://github.com/jeremeamia"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "Guzzle is a PHP HTTP client library",
- "homepage": "http://guzzlephp.org/",
- "keywords": [
- "client",
- "curl",
- "framework",
- "http",
- "http client",
- "rest",
- "web service"
- ],
- "support": {
- "issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/6.5.8"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle",
- "type": "tidelift"
- }
- ],
- "time": "2022-06-20T22:16:07+00:00"
- },
- {
- "name": "guzzlehttp/promises",
- "version": "1.5.3",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/promises.git",
- "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e",
- "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e",
- "shasum": ""
- },
- "require": {
- "php": ">=5.5"
- },
- "require-dev": {
- "symfony/phpunit-bridge": "^4.4 || ^5.1"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/functions_include.php"
- ],
- "psr-4": {
- "GuzzleHttp\\Promise\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "Guzzle promises library",
- "keywords": [
- "promise"
- ],
- "support": {
- "issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/1.5.3"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises",
- "type": "tidelift"
- }
- ],
- "time": "2023-05-21T12:31:43+00:00"
- },
- {
- "name": "guzzlehttp/psr7",
- "version": "1.9.1",
- "source": {
- "type": "git",
- "url": "https://github.com/guzzle/psr7.git",
- "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/guzzle/psr7/zipball/e4490cabc77465aaee90b20cfc9a770f8c04be6b",
- "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4.0",
- "psr/http-message": "~1.0",
- "ralouphie/getallheaders": "^2.0.5 || ^3.0.0"
- },
- "provide": {
- "psr/http-message-implementation": "1.0"
- },
- "require-dev": {
- "ext-zlib": "*",
- "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10"
- },
- "suggest": {
- "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/functions_include.php"
- ],
- "psr-4": {
- "GuzzleHttp\\Psr7\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Graham Campbell",
- "email": "hello@gjcampbell.co.uk",
- "homepage": "https://github.com/GrahamCampbell"
- },
- {
- "name": "Michael Dowling",
- "email": "mtdowling@gmail.com",
- "homepage": "https://github.com/mtdowling"
- },
- {
- "name": "George Mponos",
- "email": "gmponos@gmail.com",
- "homepage": "https://github.com/gmponos"
- },
- {
- "name": "Tobias Nyholm",
- "email": "tobias.nyholm@gmail.com",
- "homepage": "https://github.com/Nyholm"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com",
- "homepage": "https://github.com/sagikazarmark"
- },
- {
- "name": "Tobias Schultze",
- "email": "webmaster@tubo-world.de",
- "homepage": "https://github.com/Tobion"
- }
- ],
- "description": "PSR-7 message implementation that also provides common utility methods",
- "keywords": [
- "http",
- "message",
- "psr-7",
- "request",
- "response",
- "stream",
- "uri",
- "url"
- ],
- "support": {
- "issues": "https://github.com/guzzle/psr7/issues",
- "source": "https://github.com/guzzle/psr7/tree/1.9.1"
- },
- "funding": [
- {
- "url": "https://github.com/GrahamCampbell",
- "type": "github"
- },
- {
- "url": "https://github.com/Nyholm",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7",
- "type": "tidelift"
- }
- ],
- "time": "2023-04-17T16:00:37+00:00"
- },
{
"name": "lambdish/phunctional",
"version": "v2.1.0",
@@ -1681,29 +1333,29 @@
},
{
"name": "laminas/laminas-code",
- "version": "4.12.0",
+ "version": "4.13.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-code.git",
- "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0"
+ "reference": "7353d4099ad5388e84737dd16994316a04f48dbf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-code/zipball/36cbee228b427446419dd51944bdfb6bb8ddbcd0",
- "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0",
+ "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf",
+ "reference": "7353d4099ad5388e84737dd16994316a04f48dbf",
"shasum": ""
},
"require": {
- "php": "~8.1.0 || ~8.2.0"
+ "php": "~8.1.0 || ~8.2.0 || ~8.3.0"
},
"require-dev": {
- "doctrine/annotations": "^2.0.0",
+ "doctrine/annotations": "^2.0.1",
"ext-phar": "*",
- "laminas/laminas-coding-standard": "^2.3.0",
- "laminas/laminas-stdlib": "^3.6.1",
- "phpunit/phpunit": "^10.0.9",
+ "laminas/laminas-coding-standard": "^2.5.0",
+ "laminas/laminas-stdlib": "^3.17.0",
+ "phpunit/phpunit": "^10.3.3",
"psalm/plugin-phpunit": "^0.18.4",
- "vimeo/psalm": "^5.7.1"
+ "vimeo/psalm": "^5.15.0"
},
"suggest": {
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
@@ -1740,30 +1392,30 @@
"type": "community_bridge"
}
],
- "time": "2023-09-06T14:56:25+00:00"
+ "time": "2023-10-18T10:00:55+00:00"
},
{
"name": "laminas/laminas-zendframework-bridge",
- "version": "1.7.0",
+ "version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
- "reference": "5ef52e26392777a26dbb8f20fe24f91b406459f6"
+ "reference": "eb0d96c708b92177a92bc2239543d3ed523452c6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/5ef52e26392777a26dbb8f20fe24f91b406459f6",
- "reference": "5ef52e26392777a26dbb8f20fe24f91b406459f6",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/eb0d96c708b92177a92bc2239543d3ed523452c6",
+ "reference": "eb0d96c708b92177a92bc2239543d3ed523452c6",
"shasum": ""
},
"require": {
- "php": "~8.0.0 || ~8.1.0 || ~8.2.0"
+ "php": "~8.1.0 || ~8.2.0 || ~8.3.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.5.26",
+ "phpunit/phpunit": "^10.4",
"psalm/plugin-phpunit": "^0.18.0",
"squizlabs/php_codesniffer": "^3.7.1",
- "vimeo/psalm": "^4.29.0"
+ "vimeo/psalm": "^5.16.0"
},
"type": "library",
"extra": {
@@ -1802,20 +1454,21 @@
"type": "community_bridge"
}
],
- "time": "2022-12-12T11:44:10+00:00"
+ "abandoned": true,
+ "time": "2023-11-24T13:56:19+00:00"
},
{
"name": "monolog/monolog",
- "version": "3.4.0",
+ "version": "3.5.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "e2392369686d420ca32df3803de28b5d6f76867d"
+ "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d",
- "reference": "e2392369686d420ca32df3803de28b5d6f76867d",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448",
+ "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448",
"shasum": ""
},
"require": {
@@ -1891,7 +1544,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/3.4.0"
+ "source": "https://github.com/Seldaek/monolog/tree/3.5.0"
},
"funding": [
{
@@ -1903,7 +1556,74 @@
"type": "tidelift"
}
],
- "time": "2023-06-21T08:46:11+00:00"
+ "time": "2023-10-27T15:32:31+00:00"
+ },
+ {
+ "name": "promphp/prometheus_client_php",
+ "version": "v2.7.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/PromPHP/prometheus_client_php.git",
+ "reference": "735ace7ec6f5ff66d73b91baf8f6d36cbe3f8b76"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/PromPHP/prometheus_client_php/zipball/735ace7ec6f5ff66d73b91baf8f6d36cbe3f8b76",
+ "reference": "735ace7ec6f5ff66d73b91baf8f6d36cbe3f8b76",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "php": "^7.2|^8.0"
+ },
+ "replace": {
+ "endclothing/prometheus_client_php": "*",
+ "jimdo/prometheus_client_php": "*",
+ "lkaemmerling/prometheus_client_php": "*"
+ },
+ "require-dev": {
+ "guzzlehttp/guzzle": "^6.3|^7.0",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^1.5.4",
+ "phpstan/phpstan-phpunit": "^1.1.0",
+ "phpstan/phpstan-strict-rules": "^1.1.0",
+ "phpunit/phpunit": "^9.4",
+ "squizlabs/php_codesniffer": "^3.6",
+ "symfony/polyfill-apcu": "^1.6"
+ },
+ "suggest": {
+ "ext-apc": "Required if using APCu.",
+ "ext-redis": "Required if using Redis.",
+ "promphp/prometheus_push_gateway_php": "An easy client for using Prometheus PushGateway.",
+ "symfony/polyfill-apcu": "Required if you use APCu on PHP8.0+"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prometheus\\": "src/Prometheus/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Lukas Kämmerling",
+ "email": "kontakt@lukas-kaemmerling.de"
+ }
+ ],
+ "description": "Prometheus instrumentation library for PHP applications.",
+ "support": {
+ "issues": "https://github.com/PromPHP/prometheus_client_php/issues",
+ "source": "https://github.com/PromPHP/prometheus_client_php/tree/v2.7.2"
+ },
+ "time": "2023-11-06T12:38:23+00:00"
},
{
"name": "psr/cache",
@@ -2105,59 +1825,6 @@
},
"time": "2019-01-08T18:20:26+00:00"
},
- {
- "name": "psr/http-message",
- "version": "1.1",
- "source": {
- "type": "git",
- "url": "https://github.com/php-fig/http-message.git",
- "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
- "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
- "shasum": ""
- },
- "require": {
- "php": "^7.2 || ^8.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Psr\\Http\\Message\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
- }
- ],
- "description": "Common interface for HTTP messages",
- "homepage": "https://github.com/php-fig/http-message",
- "keywords": [
- "http",
- "http-message",
- "psr",
- "psr-7",
- "request",
- "response"
- ],
- "support": {
- "source": "https://github.com/php-fig/http-message/tree/1.1"
- },
- "time": "2023-04-04T09:50:52+00:00"
- },
{
"name": "psr/log",
"version": "3.0.0",
@@ -2208,50 +1875,6 @@
},
"time": "2021-07-14T16:46:02+00:00"
},
- {
- "name": "ralouphie/getallheaders",
- "version": "3.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/ralouphie/getallheaders.git",
- "reference": "120b605dfeb996808c31b6477290a714d356e822"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822",
- "reference": "120b605dfeb996808c31b6477290a714d356e822",
- "shasum": ""
- },
- "require": {
- "php": ">=5.6"
- },
- "require-dev": {
- "php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpunit": "^5 || ^6.5"
- },
- "type": "library",
- "autoload": {
- "files": [
- "src/getallheaders.php"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Ralph Khattar",
- "email": "ralph.khattar@gmail.com"
- }
- ],
- "description": "A polyfill for getallheaders.",
- "support": {
- "issues": "https://github.com/ralouphie/getallheaders/issues",
- "source": "https://github.com/ralouphie/getallheaders/tree/develop"
- },
- "time": "2019-03-08T08:55:37+00:00"
- },
{
"name": "ramsey/collection",
"version": "2.0.0",
@@ -2343,16 +1966,16 @@
},
{
"name": "ramsey/uuid",
- "version": "4.7.4",
+ "version": "4.7.5",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "60a4c63ab724854332900504274f6150ff26d286"
+ "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286",
- "reference": "60a4c63ab724854332900504274f6150ff26d286",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
"shasum": ""
},
"require": {
@@ -2419,7 +2042,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.7.4"
+ "source": "https://github.com/ramsey/uuid/tree/4.7.5"
},
"funding": [
{
@@ -2431,27 +2054,27 @@
"type": "tidelift"
}
],
- "time": "2023-04-15T23:01:58+00:00"
+ "time": "2023-11-08T05:53:05+00:00"
},
{
"name": "react/promise",
- "version": "v2.10.0",
+ "version": "v2.11.0",
"source": {
"type": "git",
"url": "https://github.com/reactphp/promise.git",
- "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38"
+ "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/reactphp/promise/zipball/f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38",
- "reference": "f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38",
+ "url": "https://api.github.com/repos/reactphp/promise/zipball/1a8460931ea36dc5c76838fec5734d55c88c6831",
+ "reference": "1a8460931ea36dc5c76838fec5734d55c88c6831",
"shasum": ""
},
"require": {
"php": ">=5.4.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.36"
+ "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36"
},
"type": "library",
"autoload": {
@@ -2495,7 +2118,7 @@
],
"support": {
"issues": "https://github.com/reactphp/promise/issues",
- "source": "https://github.com/reactphp/promise/tree/v2.10.0"
+ "source": "https://github.com/reactphp/promise/tree/v2.11.0"
},
"funding": [
{
@@ -2503,20 +2126,20 @@
"type": "open_collective"
}
],
- "time": "2023-05-02T15:15:43+00:00"
+ "time": "2023-11-16T16:16:50+00:00"
},
{
"name": "symfony/cache",
- "version": "v6.3.4",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "e60d00b4f633efa4c1ef54e77c12762d9073e7b3"
+ "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/e60d00b4f633efa4c1ef54e77c12762d9073e7b3",
- "reference": "e60d00b4f633efa4c1ef54e77c12762d9073e7b3",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a",
+ "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a",
"shasum": ""
},
"require": {
@@ -2525,7 +2148,7 @@
"psr/log": "^1.1|^2|^3",
"symfony/cache-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3",
- "symfony/var-exporter": "^6.2.10"
+ "symfony/var-exporter": "^6.3.6|^7.0"
},
"conflict": {
"doctrine/dbal": "<2.13.1",
@@ -2540,15 +2163,15 @@
},
"require-dev": {
"cache/integration-tests": "dev-master",
- "doctrine/dbal": "^2.13.1|^3.0",
+ "doctrine/dbal": "^2.13.1|^3|^4",
"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",
- "symfony/filesystem": "^5.4|^6.0",
- "symfony/http-kernel": "^5.4|^6.0",
- "symfony/messenger": "^5.4|^6.0",
- "symfony/var-dumper": "^5.4|^6.0"
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/filesystem": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2583,7 +2206,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v6.3.4"
+ "source": "https://github.com/symfony/cache/tree/v6.4.0"
},
"funding": [
{
@@ -2599,20 +2222,20 @@
"type": "tidelift"
}
],
- "time": "2023-08-05T09:10:27+00:00"
+ "time": "2023-11-24T19:28:07+00:00"
},
{
"name": "symfony/cache-contracts",
- "version": "v3.3.0",
+ "version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache-contracts.git",
- "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b"
+ "reference": "1d74b127da04ffa87aa940abe15446fa89653778"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/ad945640ccc0ae6e208bcea7d7de4b39b569896b",
- "reference": "ad945640ccc0ae6e208bcea7d7de4b39b569896b",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778",
+ "reference": "1d74b127da04ffa87aa940abe15446fa89653778",
"shasum": ""
},
"require": {
@@ -2659,7 +2282,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/cache-contracts/tree/v3.3.0"
+ "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0"
},
"funding": [
{
@@ -2675,25 +2298,26 @@
"type": "tidelift"
}
],
- "time": "2023-05-23T14:45:45+00:00"
+ "time": "2023-09-25T12:52:38+00:00"
},
{
"name": "symfony/clock",
- "version": "v6.3.4",
+ "version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/clock.git",
- "reference": "a74086d3db70d0f06ffd84480daa556248706e98"
+ "reference": "c696b075befdd4bcffe5ef2eab9a32a1a9c0d29d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/clock/zipball/a74086d3db70d0f06ffd84480daa556248706e98",
- "reference": "a74086d3db70d0f06ffd84480daa556248706e98",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/c696b075befdd4bcffe5ef2eab9a32a1a9c0d29d",
+ "reference": "c696b075befdd4bcffe5ef2eab9a32a1a9c0d29d",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "psr/clock": "^1.0"
+ "php": ">=8.2",
+ "psr/clock": "^1.0",
+ "symfony/polyfill-php83": "^1.28"
},
"provide": {
"psr/clock-implementation": "1.0"
@@ -2732,7 +2356,7 @@
"time"
],
"support": {
- "source": "https://github.com/symfony/clock/tree/v6.3.4"
+ "source": "https://github.com/symfony/clock/tree/v7.0.0"
},
"funding": [
{
@@ -2748,26 +2372,26 @@
"type": "tidelift"
}
],
- "time": "2023-07-31T11:35:03+00:00"
+ "time": "2023-11-25T20:15:12+00:00"
},
{
"name": "symfony/config",
- "version": "v6.3.2",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467"
+ "reference": "5d33e0fb707d603330e0edfd4691803a1253572e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/b47ca238b03e7b0d7880ffd1cf06e8d637ca1467",
- "reference": "b47ca238b03e7b0d7880ffd1cf06e8d637ca1467",
+ "url": "https://api.github.com/repos/symfony/config/zipball/5d33e0fb707d603330e0edfd4691803a1253572e",
+ "reference": "5d33e0fb707d603330e0edfd4691803a1253572e",
"shasum": ""
},
"require": {
"php": ">=8.1",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/filesystem": "^5.4|^6.0",
+ "symfony/filesystem": "^5.4|^6.0|^7.0",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
@@ -2775,11 +2399,11 @@
"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/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/yaml": "^5.4|^6.0"
+ "symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2807,7 +2431,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.3.2"
+ "source": "https://github.com/symfony/config/tree/v6.4.0"
},
"funding": [
{
@@ -2823,20 +2447,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-19T20:22:16+00:00"
+ "time": "2023-11-09T08:28:32+00:00"
},
{
"name": "symfony/console",
- "version": "v6.3.4",
+ "version": "v6.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6"
+ "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6",
- "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6",
+ "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd",
+ "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd",
"shasum": ""
},
"require": {
@@ -2844,7 +2468,7 @@
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^5.4|^6.0"
+ "symfony/string": "^5.4|^6.0|^7.0"
},
"conflict": {
"symfony/dependency-injection": "<5.4",
@@ -2858,12 +2482,16 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/event-dispatcher": "^5.4|^6.0",
- "symfony/lock": "^5.4|^6.0",
- "symfony/process": "^5.4|^6.0",
- "symfony/var-dumper": "^5.4|^6.0"
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/lock": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2897,7 +2525,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.3.4"
+ "source": "https://github.com/symfony/console/tree/v6.4.1"
},
"funding": [
{
@@ -2913,20 +2541,20 @@
"type": "tidelift"
}
],
- "time": "2023-08-16T10:10:12+00:00"
+ "time": "2023-11-30T10:54:28+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v6.3.4",
+ "version": "v6.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "68a5a9570806a087982f383f6109c5e925892a49"
+ "reference": "f88ff6428afbeb17cc648c8003bd608534750baf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/68a5a9570806a087982f383f6109c5e925892a49",
- "reference": "68a5a9570806a087982f383f6109c5e925892a49",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f88ff6428afbeb17cc648c8003bd608534750baf",
+ "reference": "f88ff6428afbeb17cc648c8003bd608534750baf",
"shasum": ""
},
"require": {
@@ -2934,7 +2562,7 @@
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/service-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^6.2.10"
+ "symfony/var-exporter": "^6.2.10|^7.0"
},
"conflict": {
"ext-psr": "<1.1|>=2",
@@ -2948,9 +2576,9 @@
"symfony/service-implementation": "1.1|2.0|3.0"
},
"require-dev": {
- "symfony/config": "^6.1",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/yaml": "^5.4|^6.0"
+ "symfony/config": "^6.1|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -2978,7 +2606,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.3.4"
+ "source": "https://github.com/symfony/dependency-injection/tree/v6.4.1"
},
"funding": [
{
@@ -2994,11 +2622,11 @@
"type": "tidelift"
}
],
- "time": "2023-08-16T17:55:17+00:00"
+ "time": "2023-12-01T14:56:37+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.3.0",
+ "version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
@@ -3045,7 +2673,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.3.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0"
},
"funding": [
{
@@ -3065,16 +2693,16 @@
},
{
"name": "symfony/dotenv",
- "version": "v6.3.0",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e"
+ "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/ceadb434fe2a6763a03d2d110441745834f3dd1e",
- "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/d0d584a91422ddaa2c94317200d4c4e5b935555f",
+ "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f",
"shasum": ""
},
"require": {
@@ -3085,8 +2713,8 @@
"symfony/process": "<5.4"
},
"require-dev": {
- "symfony/console": "^5.4|^6.0",
- "symfony/process": "^5.4|^6.0"
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -3119,7 +2747,7 @@
"environment"
],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v6.3.0"
+ "source": "https://github.com/symfony/dotenv/tree/v6.4.0"
},
"funding": [
{
@@ -3135,34 +2763,35 @@
"type": "tidelift"
}
],
- "time": "2023-04-21T14:41:17+00:00"
+ "time": "2023-10-26T18:19:48+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v6.3.2",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a"
+ "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/85fd65ed295c4078367c784e8a5a6cee30348b7a",
- "reference": "85fd65ed295c4078367c784e8a5a6cee30348b7a",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788",
+ "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/log": "^1|^2|^3",
- "symfony/var-dumper": "^5.4|^6.0"
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"conflict": {
- "symfony/deprecation-contracts": "<2.5"
+ "symfony/deprecation-contracts": "<2.5",
+ "symfony/http-kernel": "<6.4"
},
"require-dev": {
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/http-kernel": "^5.4|^6.0",
- "symfony/serializer": "^5.4|^6.0"
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/serializer": "^5.4|^6.0|^7.0"
},
"bin": [
"Resources/bin/patch-type-declarations"
@@ -3193,7 +2822,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.3.2"
+ "source": "https://github.com/symfony/error-handler/tree/v6.4.0"
},
"funding": [
{
@@ -3209,20 +2838,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-16T17:05:46+00:00"
+ "time": "2023-10-18T09:43:34+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v6.3.2",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e"
+ "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
- "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6",
+ "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6",
"shasum": ""
},
"require": {
@@ -3239,13 +2868,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/error-handler": "^5.4|^6.0",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/error-handler": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/stopwatch": "^5.4|^6.0"
+ "symfony/stopwatch": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -3273,7 +2902,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.3.2"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0"
},
"funding": [
{
@@ -3289,11 +2918,11 @@
"type": "tidelift"
}
],
- "time": "2023-07-06T06:56:43+00:00"
+ "time": "2023-07-27T06:52:43+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.3.0",
+ "version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
@@ -3349,7 +2978,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
},
"funding": [
{
@@ -3369,20 +2998,20 @@
},
{
"name": "symfony/filesystem",
- "version": "v6.3.1",
+ "version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae"
+ "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
- "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7",
+ "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
@@ -3412,7 +3041,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v6.3.1"
+ "source": "https://github.com/symfony/filesystem/tree/v7.0.0"
},
"funding": [
{
@@ -3428,27 +3057,27 @@
"type": "tidelift"
}
],
- "time": "2023-06-01T08:30:39+00:00"
+ "time": "2023-07-27T06:33:22+00:00"
},
{
"name": "symfony/finder",
- "version": "v6.3.3",
+ "version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e"
+ "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e",
- "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
+ "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2"
},
"require-dev": {
- "symfony/filesystem": "^6.0"
+ "symfony/filesystem": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -3476,7 +3105,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v6.3.3"
+ "source": "https://github.com/symfony/finder/tree/v7.0.0"
},
"funding": [
{
@@ -3492,38 +3121,38 @@
"type": "tidelift"
}
],
- "time": "2023-07-31T08:31:44+00:00"
+ "time": "2023-10-31T17:59:56+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v6.3.4",
+ "version": "v6.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "f822f54ff05cd88878910b4559f66c12176d952c"
+ "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f822f54ff05cd88878910b4559f66c12176d952c",
- "reference": "f822f54ff05cd88878910b4559f66c12176d952c",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ac22d760bf9ff4440a1b6c7caef34d38b44290aa",
+ "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa",
"shasum": ""
},
"require": {
"composer-runtime-api": ">=2.1",
"ext-xml": "*",
"php": ">=8.1",
- "symfony/cache": "^5.4|^6.0",
- "symfony/config": "^6.1",
- "symfony/dependency-injection": "^6.3.1",
+ "symfony/cache": "^5.4|^6.0|^7.0",
+ "symfony/config": "^6.1|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
"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": "^6.3",
- "symfony/http-kernel": "^6.3",
+ "symfony/error-handler": "^6.1|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/filesystem": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/routing": "^5.4|^6.0"
+ "symfony/routing": "^6.4|^7.0"
},
"conflict": {
"doctrine/annotations": "<1.13.1",
@@ -3531,67 +3160,71 @@
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
"symfony/asset": "<5.4",
+ "symfony/asset-mapper": "<6.4",
"symfony/clock": "<6.3",
"symfony/console": "<5.4",
- "symfony/dom-crawler": "<6.3",
+ "symfony/dom-crawler": "<6.4",
"symfony/dotenv": "<5.4",
"symfony/form": "<5.4",
"symfony/http-client": "<6.3",
"symfony/lock": "<5.4",
"symfony/mailer": "<5.4",
"symfony/messenger": "<6.3",
- "symfony/mime": "<6.2",
+ "symfony/mime": "<6.4",
"symfony/property-access": "<5.4",
"symfony/property-info": "<5.4",
+ "symfony/scheduler": "<6.4",
"symfony/security-core": "<5.4",
"symfony/security-csrf": "<5.4",
- "symfony/serializer": "<6.3",
+ "symfony/serializer": "<6.4",
"symfony/stopwatch": "<5.4",
- "symfony/translation": "<6.2.8",
+ "symfony/translation": "<6.4",
"symfony/twig-bridge": "<5.4",
"symfony/twig-bundle": "<5.4",
- "symfony/validator": "<6.3",
- "symfony/web-profiler-bundle": "<5.4",
- "symfony/workflow": "<5.4"
+ "symfony/validator": "<6.4",
+ "symfony/web-profiler-bundle": "<6.4",
+ "symfony/workflow": "<6.4"
},
"require-dev": {
"doctrine/annotations": "^1.13.1|^2",
"doctrine/persistence": "^1.3|^2|^3",
+ "dragonmantank/cron-expression": "^3.1",
"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": "^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": "^6.3",
- "symfony/lock": "^5.4|^6.0",
- "symfony/mailer": "^5.4|^6.0",
- "symfony/messenger": "^6.3",
- "symfony/mime": "^6.2",
- "symfony/notifier": "^5.4|^6.0",
+ "seld/jsonlint": "^1.10",
+ "symfony/asset": "^5.4|^6.0|^7.0",
+ "symfony/asset-mapper": "^6.4|^7.0",
+ "symfony/browser-kit": "^5.4|^6.0|^7.0",
+ "symfony/clock": "^6.2|^7.0",
+ "symfony/console": "^5.4.9|^6.0.9|^7.0",
+ "symfony/css-selector": "^5.4|^6.0|^7.0",
+ "symfony/dom-crawler": "^6.4|^7.0",
+ "symfony/dotenv": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/form": "^5.4|^6.0|^7.0",
+ "symfony/html-sanitizer": "^6.1|^7.0",
+ "symfony/http-client": "^6.3|^7.0",
+ "symfony/lock": "^5.4|^6.0|^7.0",
+ "symfony/mailer": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^6.3|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/notifier": "^5.4|^6.0|^7.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.3",
- "symfony/stopwatch": "^5.4|^6.0",
- "symfony/string": "^5.4|^6.0",
- "symfony/translation": "^6.2.8",
- "symfony/twig-bundle": "^5.4|^6.0",
- "symfony/uid": "^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",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/property-info": "^5.4|^6.0|^7.0",
+ "symfony/rate-limiter": "^5.4|^6.0|^7.0",
+ "symfony/scheduler": "^6.4|^7.0",
+ "symfony/security-bundle": "^5.4|^6.0|^7.0",
+ "symfony/semaphore": "^5.4|^6.0|^7.0",
+ "symfony/serializer": "^6.4|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/string": "^5.4|^6.0|^7.0",
+ "symfony/translation": "^6.4|^7.0",
+ "symfony/twig-bundle": "^5.4|^6.0|^7.0",
+ "symfony/uid": "^5.4|^6.0|^7.0",
+ "symfony/validator": "^6.4|^7.0",
+ "symfony/web-link": "^5.4|^6.0|^7.0",
+ "symfony/workflow": "^6.4|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0",
"twig/twig": "^2.10|^3.0"
},
"type": "symfony-bundle",
@@ -3620,7 +3253,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.3.4"
+ "source": "https://github.com/symfony/framework-bundle/tree/v6.4.1"
},
"funding": [
{
@@ -3636,40 +3269,40 @@
"type": "tidelift"
}
],
- "time": "2023-08-16T18:04:38+00:00"
+ "time": "2023-12-01T16:35:22+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v6.3.4",
+ "version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "cac1556fdfdf6719668181974104e6fcfa60e844"
+ "reference": "47d72323200934694def5d57083899d774a2b110"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cac1556fdfdf6719668181974104e6fcfa60e844",
- "reference": "cac1556fdfdf6719668181974104e6fcfa60e844",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/47d72323200934694def5d57083899d774a2b110",
+ "reference": "47d72323200934694def5d57083899d774a2b110",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/deprecation-contracts": "^2.5|^3",
+ "php": ">=8.2",
"symfony/polyfill-mbstring": "~1.1",
"symfony/polyfill-php83": "^1.27"
},
"conflict": {
- "symfony/cache": "<6.2"
+ "doctrine/dbal": "<3.6",
+ "symfony/cache": "<6.4"
},
"require-dev": {
- "doctrine/dbal": "^2.13.1|^3.0",
+ "doctrine/dbal": "^3.6|^4",
"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/http-kernel": "^5.4.12|^6.0.12|^6.1.4",
- "symfony/mime": "^5.4|^6.0",
- "symfony/rate-limiter": "^5.2|^6.0"
+ "symfony/cache": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/rate-limiter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -3697,7 +3330,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.3.4"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.0.0"
},
"funding": [
{
@@ -3713,29 +3346,29 @@
"type": "tidelift"
}
],
- "time": "2023-08-22T08:20:46+00:00"
+ "time": "2023-11-07T15:10:37+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v6.3.4",
+ "version": "v6.4.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb"
+ "reference": "2953274c16a229b3933ef73a6898e18388e12e1b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb",
- "reference": "36abb425b4af863ae1fe54d8a8b8b4c76a2bccdb",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b",
+ "reference": "2953274c16a229b3933ef73a6898e18388e12e1b",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/error-handler": "^6.3",
- "symfony/event-dispatcher": "^5.4|^6.0",
- "symfony/http-foundation": "^6.3.4",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
@@ -3743,7 +3376,7 @@
"symfony/cache": "<5.4",
"symfony/config": "<6.1",
"symfony/console": "<5.4",
- "symfony/dependency-injection": "<6.3.4",
+ "symfony/dependency-injection": "<6.4",
"symfony/doctrine-bridge": "<5.4",
"symfony/form": "<5.4",
"symfony/http-client": "<5.4",
@@ -3753,7 +3386,7 @@
"symfony/translation": "<5.4",
"symfony/translation-contracts": "<2.5",
"symfony/twig-bridge": "<5.4",
- "symfony/validator": "<5.4",
+ "symfony/validator": "<6.4",
"symfony/var-dumper": "<6.3",
"twig/twig": "<2.13"
},
@@ -3762,26 +3395,26 @@
},
"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.3.4",
- "symfony/dom-crawler": "^5.4|^6.0",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/finder": "^5.4|^6.0",
+ "symfony/browser-kit": "^5.4|^6.0|^7.0",
+ "symfony/clock": "^6.2|^7.0",
+ "symfony/config": "^6.1|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/css-selector": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/dom-crawler": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
"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/process": "^5.4|^6.0|^7.0",
+ "symfony/property-access": "^5.4.5|^6.0.5|^7.0",
+ "symfony/routing": "^5.4|^6.0|^7.0",
+ "symfony/serializer": "^6.3|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/translation": "^5.4|^6.0|^7.0",
"symfony/translation-contracts": "^2.5|^3",
- "symfony/uid": "^5.4|^6.0",
- "symfony/validator": "^6.3",
- "symfony/var-exporter": "^6.2",
+ "symfony/uid": "^5.4|^6.0|^7.0",
+ "symfony/validator": "^6.4|^7.0",
+ "symfony/var-exporter": "^6.2|^7.0",
"twig/twig": "^2.13|^3.0.4"
},
"type": "library",
@@ -3810,7 +3443,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.3.4"
+ "source": "https://github.com/symfony/http-kernel/tree/v6.4.1"
},
"funding": [
{
@@ -3826,28 +3459,30 @@
"type": "tidelift"
}
],
- "time": "2023-08-26T13:54:49+00:00"
+ "time": "2023-12-01T17:02:02+00:00"
},
{
"name": "symfony/messenger",
- "version": "v6.3.4",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/messenger.git",
- "reference": "bf460982736a4b99d11a3a90005ef438c3780df7"
+ "reference": "a6f32d0e9b9c7d2d47c7bea3cd1e8a9c0f781fb4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/messenger/zipball/bf460982736a4b99d11a3a90005ef438c3780df7",
- "reference": "bf460982736a4b99d11a3a90005ef438c3780df7",
+ "url": "https://api.github.com/repos/symfony/messenger/zipball/a6f32d0e9b9c7d2d47c7bea3cd1e8a9c0f781fb4",
+ "reference": "a6f32d0e9b9c7d2d47c7bea3cd1e8a9c0f781fb4",
"shasum": ""
},
"require": {
"php": ">=8.1",
"psr/log": "^1|^2|^3",
- "symfony/clock": "^6.3"
+ "symfony/clock": "^6.3|^7.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
+ "symfony/console": "<6.3",
"symfony/event-dispatcher": "<5.4",
"symfony/event-dispatcher-contracts": "<2.5",
"symfony/framework-bundle": "<5.4",
@@ -3856,19 +3491,18 @@
},
"require-dev": {
"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/console": "^6.3|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/property-access": "^5.4|^6.0|^7.0",
+ "symfony/rate-limiter": "^5.4|^6.0|^7.0",
+ "symfony/routing": "^5.4|^6.0|^7.0",
+ "symfony/serializer": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/stopwatch": "^5.4|^6.0",
- "symfony/validator": "^5.4|^6.0"
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/validator": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -3896,7 +3530,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.3.4"
+ "source": "https://github.com/symfony/messenger/tree/v6.4.0"
},
"funding": [
{
@@ -3912,84 +3546,7 @@
"type": "tidelift"
}
],
- "time": "2023-08-14T14:06:04+00:00"
- },
- {
- "name": "symfony/polyfill-apcu",
- "version": "v1.28.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-apcu.git",
- "reference": "c6c2c0f5f4cb0b100c5dfea807ef5cd27bbe9899"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/c6c2c0f5f4cb0b100c5dfea807ef5cd27bbe9899",
- "reference": "c6c2c0f5f4cb0b100c5dfea807ef5cd27bbe9899",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Apcu\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions",
- "homepage": "https://symfony.com",
- "keywords": [
- "apcu",
- "compatibility",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-apcu/tree/v1.28.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-01-26T09:26:14+00:00"
+ "time": "2023-11-24T19:28:07+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -4154,93 +3711,6 @@
],
"time": "2023-01-26T09:26:14+00:00"
},
- {
- "name": "symfony/polyfill-intl-idn",
- "version": "v1.28.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "ecaafce9f77234a6a449d29e49267ba10499116d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/ecaafce9f77234a6a449d29e49267ba10499116d",
- "reference": "ecaafce9f77234a6a449d29e49267ba10499116d",
- "shasum": ""
- },
- "require": {
- "php": ">=7.1",
- "symfony/polyfill-intl-normalizer": "^1.10",
- "symfony/polyfill-php72": "^1.10"
- },
- "suggest": {
- "ext-intl": "For best performance"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
- "thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
- }
- },
- "autoload": {
- "files": [
- "bootstrap.php"
- ],
- "psr-4": {
- "Symfony\\Polyfill\\Intl\\Idn\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Laurent Bassin",
- "email": "laurent@bassin.info"
- },
- {
- "name": "Trevor Rowbotham",
- "email": "trevor.rowbotham@pm.me"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
- "homepage": "https://symfony.com",
- "keywords": [
- "compatibility",
- "idn",
- "intl",
- "polyfill",
- "portable",
- "shim"
- ],
- "support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.28.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-01-26T09:30:37+00:00"
- },
{
"name": "symfony/polyfill-intl-normalizer",
"version": "v1.28.0",
@@ -4649,36 +4119,34 @@
},
{
"name": "symfony/routing",
- "version": "v6.3.3",
+ "version": "v7.0.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a"
+ "reference": "fc55062907669835af6408558ae4d1dafef74b1e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/e7243039ab663822ff134fbc46099b5fdfa16f6a",
- "reference": "e7243039ab663822ff134fbc46099b5fdfa16f6a",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/fc55062907669835af6408558ae4d1dafef74b1e",
+ "reference": "fc55062907669835af6408558ae4d1dafef74b1e",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
- "doctrine/annotations": "<1.12",
- "symfony/config": "<6.2",
- "symfony/dependency-injection": "<5.4",
- "symfony/yaml": "<5.4"
+ "symfony/config": "<6.4",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/yaml": "<6.4"
},
"require-dev": {
- "doctrine/annotations": "^1.12|^2",
"psr/log": "^1|^2|^3",
- "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"
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -4712,7 +4180,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v6.3.3"
+ "source": "https://github.com/symfony/routing/tree/v7.0.1"
},
"funding": [
{
@@ -4728,20 +4196,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-31T07:08:24+00:00"
+ "time": "2023-12-01T15:10:06+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v3.3.0",
+ "version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4"
+ "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
- "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838",
+ "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838",
"shasum": ""
},
"require": {
@@ -4794,7 +4262,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.3.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.4.0"
},
"funding": [
{
@@ -4810,24 +4278,24 @@
"type": "tidelift"
}
],
- "time": "2023-05-23T14:45:45+00:00"
+ "time": "2023-07-30T20:28:31+00:00"
},
{
"name": "symfony/string",
- "version": "v6.3.2",
+ "version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "53d1a83225002635bca3482fcbf963001313fb68"
+ "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68",
- "reference": "53d1a83225002635bca3482fcbf963001313fb68",
+ "url": "https://api.github.com/repos/symfony/string/zipball/92bd2bfbba476d4a1838e5e12168bef2fd1e6620",
+ "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
@@ -4837,11 +4305,11 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^5.4|^6.0",
- "symfony/http-client": "^5.4|^6.0",
- "symfony/intl": "^6.2",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^5.4|^6.0"
+ "symfony/var-exporter": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -4880,7 +4348,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v6.3.2"
+ "source": "https://github.com/symfony/string/tree/v7.0.0"
},
"funding": [
{
@@ -4896,20 +4364,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-05T08:41:27+00:00"
+ "time": "2023-11-29T08:40:23+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.3.0",
+ "version": "v3.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86"
+ "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/02c24deb352fb0d79db5486c0c79905a85e37e86",
- "reference": "02c24deb352fb0d79db5486c0c79905a85e37e86",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5",
+ "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5",
"shasum": ""
},
"require": {
@@ -4958,7 +4426,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.3.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0"
},
"funding": [
{
@@ -4974,24 +4442,25 @@
"type": "tidelift"
}
],
- "time": "2023-05-30T17:17:10+00:00"
+ "time": "2023-07-25T15:08:44+00:00"
},
{
"name": "symfony/twig-bridge",
- "version": "v6.3.2",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "6f8435db76a2d79917489a19a82679276c1b4e32"
+ "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/6f8435db76a2d79917489a19a82679276c1b4e32",
- "reference": "6f8435db76a2d79917489a19a82679276c1b4e32",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf",
+ "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf",
"shasum": ""
},
"require": {
"php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/translation-contracts": "^2.5|^3",
"twig/twig": "^2.13|^3.0.4"
},
@@ -5001,41 +4470,41 @@
"symfony/console": "<5.4",
"symfony/form": "<6.3",
"symfony/http-foundation": "<5.4",
- "symfony/http-kernel": "<6.2",
+ "symfony/http-kernel": "<6.4",
"symfony/mime": "<6.2",
+ "symfony/serializer": "<6.4",
"symfony/translation": "<5.4",
"symfony/workflow": "<5.4"
},
"require-dev": {
- "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.3",
- "symfony/html-sanitizer": "^6.1",
- "symfony/http-foundation": "^5.4|^6.0",
- "symfony/http-kernel": "^6.2",
- "symfony/intl": "^5.4|^6.0",
- "symfony/mime": "^6.2",
+ "symfony/asset": "^5.4|^6.0|^7.0",
+ "symfony/asset-mapper": "^6.3|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/form": "^6.4|^7.0",
+ "symfony/html-sanitizer": "^6.1|^7.0",
+ "symfony/http-foundation": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/intl": "^5.4|^6.0|^7.0",
+ "symfony/mime": "^6.2|^7.0",
"symfony/polyfill-intl-icu": "~1.0",
- "symfony/property-info": "^5.4|^6.0",
- "symfony/routing": "^5.4|^6.0",
+ "symfony/property-info": "^5.4|^6.0|^7.0",
+ "symfony/routing": "^5.4|^6.0|^7.0",
"symfony/security-acl": "^2.8|^3.0",
- "symfony/security-core": "^5.4|^6.0",
- "symfony/security-csrf": "^5.4|^6.0",
- "symfony/security-http": "^5.4|^6.0",
- "symfony/serializer": "^6.2",
- "symfony/stopwatch": "^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",
+ "symfony/security-core": "^5.4|^6.0|^7.0",
+ "symfony/security-csrf": "^5.4|^6.0|^7.0",
+ "symfony/security-http": "^5.4|^6.0|^7.0",
+ "symfony/serializer": "^6.4|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/translation": "^6.1|^7.0",
+ "symfony/web-link": "^5.4|^6.0|^7.0",
+ "symfony/workflow": "^5.4|^6.0|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0",
"twig/cssinliner-extra": "^2.12|^3",
"twig/inky-extra": "^2.12|^3",
"twig/markdown-extra": "^2.12|^3"
@@ -5066,7 +4535,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v6.3.2"
+ "source": "https://github.com/symfony/twig-bridge/tree/v6.4.0"
},
"funding": [
{
@@ -5082,30 +4551,30 @@
"type": "tidelift"
}
],
- "time": "2023-07-20T16:42:33+00:00"
+ "time": "2023-11-25T08:25:13+00:00"
},
{
"name": "symfony/twig-bundle",
- "version": "v6.3.0",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
- "reference": "d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea"
+ "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea",
- "reference": "d0cd4d1675c0582d27c2e8bb0dc27c0303d8e3ea",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/35d84393e598dfb774e6a2bf49e5229a8a6dbe4c",
+ "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c",
"shasum": ""
},
"require": {
"composer-runtime-api": ">=2.1",
"php": ">=8.1",
- "symfony/config": "^6.1",
- "symfony/dependency-injection": "^6.1",
- "symfony/http-foundation": "^5.4|^6.0",
+ "symfony/config": "^6.1|^7.0",
+ "symfony/dependency-injection": "^6.1|^7.0",
+ "symfony/http-foundation": "^5.4|^6.0|^7.0",
"symfony/http-kernel": "^6.2",
- "symfony/twig-bridge": "^6.3",
+ "symfony/twig-bridge": "^6.4",
"twig/twig": "^2.13|^3.0.4"
},
"conflict": {
@@ -5113,17 +4582,16 @@
"symfony/translation": "<5.4"
},
"require-dev": {
- "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",
- "symfony/form": "^5.4|^6.0",
- "symfony/framework-bundle": "^5.4|^6.0",
- "symfony/routing": "^5.4|^6.0",
- "symfony/stopwatch": "^5.4|^6.0",
- "symfony/translation": "^5.4|^6.0",
- "symfony/web-link": "^5.4|^6.0",
- "symfony/yaml": "^5.4|^6.0"
+ "symfony/asset": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/form": "^5.4|^6.0|^7.0",
+ "symfony/framework-bundle": "^5.4|^6.0|^7.0",
+ "symfony/routing": "^5.4|^6.0|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/translation": "^5.4|^6.0|^7.0",
+ "symfony/web-link": "^5.4|^6.0|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "symfony-bundle",
"autoload": {
@@ -5151,7 +4619,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.3.0"
+ "source": "https://github.com/symfony/twig-bundle/tree/v6.4.0"
},
"funding": [
{
@@ -5167,20 +4635,20 @@
"type": "tidelift"
}
],
- "time": "2023-05-06T09:53:41+00:00"
+ "time": "2023-11-07T14:57:07+00:00"
},
{
"name": "symfony/validator",
- "version": "v6.3.4",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "0c8435154920b9bbe93bece675234c244cadf73b"
+ "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/0c8435154920b9bbe93bece675234c244cadf73b",
- "reference": "0c8435154920b9bbe93bece675234c244cadf73b",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c",
+ "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c",
"shasum": ""
},
"require": {
@@ -5205,21 +4673,21 @@
"require-dev": {
"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",
- "symfony/dependency-injection": "^5.4|^6.0",
- "symfony/expression-language": "^5.4|^6.0",
- "symfony/finder": "^5.4|^6.0",
- "symfony/http-client": "^5.4|^6.0",
- "symfony/http-foundation": "^5.4|^6.0",
- "symfony/http-kernel": "^5.4|^6.0",
- "symfony/intl": "^5.4|^6.0",
- "symfony/mime": "^5.4|^6.0",
- "symfony/property-access": "^5.4|^6.0",
- "symfony/property-info": "^5.4|^6.0",
- "symfony/translation": "^5.4|^6.0",
- "symfony/yaml": "^5.4|^6.0"
+ "symfony/cache": "^5.4|^6.0|^7.0",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/expression-language": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/http-client": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/intl": "^5.4|^6.0|^7.0",
+ "symfony/mime": "^5.4|^6.0|^7.0",
+ "symfony/property-access": "^5.4|^6.0|^7.0",
+ "symfony/property-info": "^5.4|^6.0|^7.0",
+ "symfony/translation": "^5.4|^6.0|^7.0",
+ "symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -5247,7 +4715,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v6.3.4"
+ "source": "https://github.com/symfony/validator/tree/v6.4.0"
},
"funding": [
{
@@ -5263,37 +4731,36 @@
"type": "tidelift"
}
],
- "time": "2023-08-17T15:49:05+00:00"
+ "time": "2023-11-29T07:47:42+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v6.3.4",
+ "version": "v7.0.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45"
+ "reference": "cf0220fc7607476fd0d001ab3ed9e830d1fdda56"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2027be14f8ae8eae999ceadebcda5b4909b81d45",
- "reference": "2027be14f8ae8eae999ceadebcda5b4909b81d45",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cf0220fc7607476fd0d001ab3ed9e830d1fdda56",
+ "reference": "cf0220fc7607476fd0d001ab3ed9e830d1fdda56",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/deprecation-contracts": "^2.5|^3",
+ "php": ">=8.2",
"symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "symfony/console": "<5.4"
+ "symfony/console": "<6.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"
+ "symfony/console": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/uid": "^6.4|^7.0",
+ "twig/twig": "^3.0.4"
},
"bin": [
"Resources/bin/var-dump-server"
@@ -5331,7 +4798,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v6.3.4"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.0.0"
},
"funding": [
{
@@ -5347,27 +4814,27 @@
"type": "tidelift"
}
],
- "time": "2023-08-24T14:51:05+00:00"
+ "time": "2023-11-27T12:39:18+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v6.3.4",
+ "version": "v7.0.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691"
+ "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df1f8aac5751871b83d30bf3e2c355770f8f0691",
- "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3",
+ "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2"
},
"require-dev": {
- "symfony/var-dumper": "^5.4|^6.0"
+ "symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -5405,7 +4872,7 @@
"serialize"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v6.3.4"
+ "source": "https://github.com/symfony/var-exporter/tree/v7.0.1"
},
"funding": [
{
@@ -5421,20 +4888,20 @@
"type": "tidelift"
}
],
- "time": "2023-08-16T18:14:47+00:00"
+ "time": "2023-11-30T11:38:21+00:00"
},
{
"name": "symfony/yaml",
- "version": "v6.3.3",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add"
+ "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add",
- "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587",
+ "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587",
"shasum": ""
},
"require": {
@@ -5446,7 +4913,7 @@
"symfony/console": "<5.4"
},
"require-dev": {
- "symfony/console": "^5.4|^6.0"
+ "symfony/console": "^5.4|^6.0|^7.0"
},
"bin": [
"Resources/bin/yaml-lint"
@@ -5477,7 +4944,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v6.3.3"
+ "source": "https://github.com/symfony/yaml/tree/v6.4.0"
},
"funding": [
{
@@ -5493,30 +4960,31 @@
"type": "tidelift"
}
],
- "time": "2023-07-31T07:08:24+00:00"
+ "time": "2023-11-06T11:00:25+00:00"
},
{
"name": "twig/twig",
- "version": "v3.7.1",
+ "version": "v3.8.0",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554"
+ "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554",
- "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
+ "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
"symfony/polyfill-ctype": "^1.8",
- "symfony/polyfill-mbstring": "^1.3"
+ "symfony/polyfill-mbstring": "^1.3",
+ "symfony/polyfill-php80": "^1.22"
},
"require-dev": {
"psr/container": "^1.0|^2.0",
- "symfony/phpunit-bridge": "^5.4.9|^6.3"
+ "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0"
},
"type": "library",
"autoload": {
@@ -5552,7 +5020,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.7.1"
+ "source": "https://github.com/twigphp/Twig/tree/v3.8.0"
},
"funding": [
{
@@ -5564,7 +5032,7 @@
"type": "tidelift"
}
],
- "time": "2023-08-28T11:09:02+00:00"
+ "time": "2023-11-21T18:54:41+00:00"
}
],
"packages-dev": [
@@ -6064,16 +5532,16 @@
},
{
"name": "codelytv/coding-style",
- "version": "1.1.2",
+ "version": "1.2.0",
"source": {
"type": "git",
"url": "https://github.com/CodelyTV/php-coding_style-codely.git",
- "reference": "2e00fde930bb1a51d6e7494bfc3a44cb60196fff"
+ "reference": "ffd9d00d85360350ffc07a81bc9e25abf75a59f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/2e00fde930bb1a51d6e7494bfc3a44cb60196fff",
- "reference": "2e00fde930bb1a51d6e7494bfc3a44cb60196fff",
+ "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/ffd9d00d85360350ffc07a81bc9e25abf75a59f6",
+ "reference": "ffd9d00d85360350ffc07a81bc9e25abf75a59f6",
"shasum": ""
},
"require": {
@@ -6102,7 +5570,7 @@
],
"support": {
"issues": "https://github.com/CodelyTV/php-coding_style-codely/issues",
- "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.1.2"
+ "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.2.0"
},
"funding": [
{
@@ -6110,7 +5578,7 @@
"type": "custom"
}
],
- "time": "2023-10-23T11:29:20+00:00"
+ "time": "2023-10-24T09:12:06+00:00"
},
{
"name": "composer/package-versions-deprecated",
@@ -6187,16 +5655,16 @@
},
{
"name": "composer/pcre",
- "version": "3.1.0",
+ "version": "3.1.1",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
+ "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
- "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+ "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
"shasum": ""
},
"require": {
@@ -6238,7 +5706,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.1.0"
+ "source": "https://github.com/composer/pcre/tree/3.1.1"
},
"funding": [
{
@@ -6254,7 +5722,7 @@
"type": "tidelift"
}
],
- "time": "2022-11-17T09:50:14+00:00"
+ "time": "2023-10-11T07:11:09+00:00"
},
{
"name": "composer/semver",
@@ -7175,23 +6643,24 @@
},
{
"name": "pdepend/pdepend",
- "version": "2.15.1",
+ "version": "2.16.0",
"source": {
"type": "git",
"url": "https://github.com/pdepend/pdepend.git",
- "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0"
+ "reference": "8dfc0c46529e2073fa97986552f80646eedac562"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pdepend/pdepend/zipball/d12f25bcdfb7754bea458a4a5cb159d55e9950d0",
- "reference": "d12f25bcdfb7754bea458a4a5cb159d55e9950d0",
+ "url": "https://api.github.com/repos/pdepend/pdepend/zipball/8dfc0c46529e2073fa97986552f80646eedac562",
+ "reference": "8dfc0c46529e2073fa97986552f80646eedac562",
"shasum": ""
},
"require": {
"php": ">=5.3.7",
- "symfony/config": "^2.3.0|^3|^4|^5|^6.0",
- "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0",
- "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0"
+ "symfony/config": "^2.3.0|^3|^4|^5|^6.0|^7.0",
+ "symfony/dependency-injection": "^2.3.0|^3|^4|^5|^6.0|^7.0",
+ "symfony/filesystem": "^2.3.0|^3|^4|^5|^6.0|^7.0",
+ "symfony/polyfill-mbstring": "^1.19"
},
"require-dev": {
"easy-doc/easy-doc": "0.0.0|^1.2.3",
@@ -7226,7 +6695,7 @@
],
"support": {
"issues": "https://github.com/pdepend/pdepend/issues",
- "source": "https://github.com/pdepend/pdepend/tree/2.15.1"
+ "source": "https://github.com/pdepend/pdepend/tree/2.16.0"
},
"funding": [
{
@@ -7234,7 +6703,7 @@
"type": "tidelift"
}
],
- "time": "2023-09-28T12:00:56+00:00"
+ "time": "2023-11-29T08:52:35+00:00"
},
{
"name": "phar-io/manifest",
@@ -7349,16 +6818,16 @@
},
{
"name": "phpat/phpat",
- "version": "0.10.10",
+ "version": "0.10.11",
"source": {
"type": "git",
"url": "https://github.com/carlosas/phpat.git",
- "reference": "80004c07ba5972c36758e942a95d11cc9c298e98"
+ "reference": "03a1c7082a67247a427ca060bb7a18e7c2158979"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/carlosas/phpat/zipball/80004c07ba5972c36758e942a95d11cc9c298e98",
- "reference": "80004c07ba5972c36758e942a95d11cc9c298e98",
+ "url": "https://api.github.com/repos/carlosas/phpat/zipball/03a1c7082a67247a427ca060bb7a18e7c2158979",
+ "reference": "03a1c7082a67247a427ca060bb7a18e7c2158979",
"shasum": ""
},
"require": {
@@ -7400,9 +6869,9 @@
"description": "PHP Architecture Tester",
"support": {
"issues": "https://github.com/carlosas/phpat/issues",
- "source": "https://github.com/carlosas/phpat/tree/0.10.10"
+ "source": "https://github.com/carlosas/phpat/tree/0.10.11"
},
- "time": "2023-10-05T14:16:47+00:00"
+ "time": "2023-11-24T18:14:30+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -7658,16 +7127,16 @@
},
{
"name": "phpstan/phpdoc-parser",
- "version": "1.24.2",
+ "version": "1.24.4",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "bcad8d995980440892759db0c32acae7c8e79442"
+ "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442",
- "reference": "bcad8d995980440892759db0c32acae7c8e79442",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496",
+ "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496",
"shasum": ""
},
"require": {
@@ -7699,22 +7168,22 @@
"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"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.4"
},
- "time": "2023-09-26T12:28:12+00:00"
+ "time": "2023-11-26T18:29:22+00:00"
},
{
"name": "phpstan/phpstan",
- "version": "1.10.37",
+ "version": "1.10.47",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e"
+ "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/058ba07e92f744d4dcf6061ae75283d0c6456f2e",
- "reference": "058ba07e92f744d4dcf6061ae75283d0c6456f2e",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/84dbb33b520ea28b6cf5676a3941f4bae1c1ff39",
+ "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39",
"shasum": ""
},
"require": {
@@ -7763,7 +7232,7 @@
"type": "tidelift"
}
],
- "time": "2023-10-02T16:18:37+00:00"
+ "time": "2023-12-01T15:19:17+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -8086,16 +7555,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.6.13",
+ "version": "9.6.15",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be"
+ "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f3d767f7f9e191eab4189abe41ab37797e30b1be",
- "reference": "f3d767f7f9e191eab4189abe41ab37797e30b1be",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1",
+ "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1",
"shasum": ""
},
"require": {
@@ -8169,7 +7638,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.13"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15"
},
"funding": [
{
@@ -8185,7 +7654,7 @@
"type": "tidelift"
}
],
- "time": "2023-09-19T05:39:22+00:00"
+ "time": "2023-12-01T16:55:19+00:00"
},
{
"name": "psalm/plugin-mockery",
@@ -8306,22 +7775,22 @@
},
{
"name": "psalm/plugin-symfony",
- "version": "v5.0.3",
+ "version": "v5.1.0",
"source": {
"type": "git",
"url": "https://github.com/psalm/psalm-plugin-symfony.git",
- "reference": "a6cef9c701686d17d4254b544d05345e9d3e0b88"
+ "reference": "f23ec3439743fb24f5c1101e52d032f23d5befa6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/a6cef9c701686d17d4254b544d05345e9d3e0b88",
- "reference": "a6cef9c701686d17d4254b544d05345e9d3e0b88",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/f23ec3439743fb24f5c1101e52d032f23d5befa6",
+ "reference": "f23ec3439743fb24f5c1101e52d032f23d5befa6",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"php": "^7.4 || ^8.0",
- "symfony/framework-bundle": "^5.0 || ^6.0",
+ "symfony/framework-bundle": "^5.0 || ^6.0 || ^7.0",
"vimeo/psalm": "^5.1"
},
"require-dev": {
@@ -8330,10 +7799,10 @@
"phpunit/phpunit": "~7.5 || ~9.5",
"symfony/cache-contracts": "^1.0 || ^2.0",
"symfony/console": "*",
- "symfony/form": "^5.0 || ^6.0",
- "symfony/messenger": "^5.0 || ^6.0",
+ "symfony/form": "^5.0 || ^6.0 || ^7.0",
+ "symfony/messenger": "^5.0 || ^6.0 || ^7.0",
"symfony/security-guard": "*",
- "symfony/serializer": "^5.0 || ^6.0",
+ "symfony/serializer": "^5.0 || ^6.0 || ^7.0",
"symfony/validator": "*",
"twig/twig": "^2.10 || ^3.0",
"weirdan/codeception-psalm-module": "dev-master"
@@ -8365,27 +7834,27 @@
"description": "Psalm Plugin for Symfony",
"support": {
"issues": "https://github.com/psalm/psalm-plugin-symfony/issues",
- "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v5.0.3"
+ "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v5.1.0"
},
- "time": "2023-04-21T15:40:12+00:00"
+ "time": "2023-11-12T10:04:27+00:00"
},
{
"name": "rector/rector",
- "version": "0.18.4",
+ "version": "0.18.12",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "d99a91176b7eb7f2b6d509a6486b3661c6dfd370"
+ "reference": "ed8d5352a3faa69e4a5e315896abffd4bc29c828"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/d99a91176b7eb7f2b6d509a6486b3661c6dfd370",
- "reference": "d99a91176b7eb7f2b6d509a6486b3661c6dfd370",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/ed8d5352a3faa69e4a5e315896abffd4bc29c828",
+ "reference": "ed8d5352a3faa69e4a5e315896abffd4bc29c828",
"shasum": ""
},
"require": {
"php": "^7.2|^8.0",
- "phpstan/phpstan": "^1.10.31"
+ "phpstan/phpstan": "^1.10.35"
},
"conflict": {
"rector/rector-doctrine": "*",
@@ -8415,7 +7884,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/0.18.4"
+ "source": "https://github.com/rectorphp/rector/tree/0.18.12"
},
"funding": [
{
@@ -8423,7 +7892,7 @@
"type": "github"
}
],
- "time": "2023-09-25T17:07:54+00:00"
+ "time": "2023-12-04T08:47:30+00:00"
},
{
"name": "roave/security-advisories",
@@ -8431,20 +7900,21 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "7818a0d2a1d8c7eb6dcd2d0bcdc7f1e3e3caafe3"
+ "reference": "b4728d9c4af8c60b059c1d7872759eedacccdb12"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7818a0d2a1d8c7eb6dcd2d0bcdc7f1e3e3caafe3",
- "reference": "7818a0d2a1d8c7eb6dcd2d0bcdc7f1e3e3caafe3",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/b4728d9c4af8c60b059c1d7872759eedacccdb12",
+ "reference": "b4728d9c4af8c60b059c1d7872759eedacccdb12",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
- "admidio/admidio": "<4.2.11",
+ "admidio/admidio": "<4.2.13",
"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",
+ "airesvsg/acf-to-rest-api": "<=3.1",
"akaunting/akaunting": "<2.1.13",
"akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53",
"alextselegidis/easyappointments": "<1.5",
@@ -8473,16 +7943,17 @@
"azuracast/azuracast": "<0.18.3",
"backdrop/backdrop": "<1.24.2",
"backpack/crud": "<3.4.9",
+ "bacula-web/bacula-web": "<8.0.0.0-RC2-dev",
"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",
"barzahlen/barzahlen-php": "<2.0.1",
- "baserproject/basercms": "<4.7.5",
+ "baserproject/basercms": "<4.8",
"bassjobsen/bootstrap-3-typeahead": ">4.0.2",
"bigfork/silverstripe-form-capture": ">=3,<3.1.1",
- "billz/raspap-webgui": "<=2.9.2",
+ "billz/raspap-webgui": "<2.9.5",
"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",
@@ -8511,11 +7982,11 @@
"cockpit-hq/cockpit": "<=2.6.3",
"codeception/codeception": "<3.1.3|>=4,<4.1.22",
"codeigniter/framework": "<3.1.9",
- "codeigniter4/framework": "<4.3.5",
- "codeigniter4/shield": "<1.0.0.0-beta4",
+ "codeigniter4/framework": "<=4.4.2",
+ "codeigniter4/shield": "<1.0.0.0-beta8",
"codiad/codiad": "<=2.8.4",
- "composer/composer": "<1.10.26|>=2,<2.2.12|>=2.3,<2.3.5",
- "concrete5/concrete5": "<9.2",
+ "composer/composer": "<1.10.27|>=2,<2.2.22|>=2.3,<2.6.4",
+ "concrete5/concrete5": "<9.2.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.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4",
@@ -8538,19 +8009,21 @@
"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",
- "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1",
+ "doctrine/annotations": "<1.2.7",
+ "doctrine/cache": "<1.3.2|>=1.4,<1.4.2",
+ "doctrine/common": "<2.4.3|>=2.5,<2.5.1",
"doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4",
"doctrine/doctrine-bundle": "<1.5.2",
"doctrine/doctrine-module": "<=0.7.1",
- "doctrine/mongodb-odm": ">=1,<1.0.2",
- "doctrine/mongodb-odm-bundle": ">=2,<3.0.1",
+ "doctrine/mongodb-odm": "<1.0.2",
+ "doctrine/mongodb-odm-bundle": "<3.0.1",
"doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
- "dolibarr/dolibarr": "<17.0.1",
+ "dolibarr/dolibarr": "<18.0.2",
"dompdf/dompdf": "<2.0.2|==2.0.2",
+ "doublethreedigital/guest-entries": "<3.1.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",
+ "duncanmcclean/guest-entries": "<3.1.2",
"dweeves/magmi": "<=0.7.24",
"ecodev/newsletter": "<=4",
"ectouch/ectouch": "<=2.7.2",
@@ -8561,6 +8034,7 @@
"enshrined/svg-sanitize": "<0.15",
"erusev/parsedown": "<1.7.2",
"ether/logs": "<3.0.4",
+ "evolutioncms/evolution": "<=3.2.3",
"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",
@@ -8571,11 +8045,12 @@
"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-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-kernel": "<1.2.5.1-dev|>=1.3,<1.3.34",
"ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
"ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev",
+ "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15",
"ezsystems/ezplatform-user": ">=1,<1.0.1",
- "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.30",
+ "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31",
"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-dev|>=2.5,<2.5.15",
@@ -8594,9 +8069,11 @@
"flarum/mentions": "<1.6.3",
"flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15",
"flarum/tags": "<=0.1.0.0-beta13",
+ "floriangaerber/magnesium": "<0.3.1",
"fluidtypo3/vhs": "<5.1.1",
"fof/byobu": ">=0.3.0.0-beta2,<1.1.7",
"fof/upload": "<1.2.3",
+ "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1",
"fooman/tcpdf": "<6.2.22",
"forkcms/forkcms": "<5.11.1",
"fossar/tcpdf-parser": "<6.2.22",
@@ -8608,7 +8085,7 @@
"friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
"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",
+ "froxlor/froxlor": "<2.1.0.0-beta1",
"fuel/core": "<1.8.1",
"funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3",
"gaoming13/wechat-php-sdk": "<=1.10.2",
@@ -8627,6 +8104,7 @@
"gree/jose": "<2.2.1",
"gregwar/rst": "<1.0.3",
"grumpydictator/firefly-iii": "<6",
+ "gugoan/economizzer": "<=0.9.0.0-beta1",
"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",
@@ -8640,9 +8118,10 @@
"httpsoft/http-message": "<1.0.12",
"hyn/multi-tenant": ">=5.6,<5.7.2",
"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/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.4",
"ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3",
"ibexa/post-install": "<=1.0.4",
+ "ibexa/solr": ">=4.5,<4.5.4",
"ibexa/user": ">=4,<4.4.3",
"icecoder/icecoder": "<=8.1",
"idno/known": "<=1.3.1",
@@ -8652,7 +8131,7 @@
"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.5",
- "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.1",
+ "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.2",
"in2code/ipandlanguageredirect": "<5.1.2",
"in2code/lux": "<17.6.1|>=18,<24.0.2",
"innologi/typo3-appointments": "<2.0.6",
@@ -8670,7 +8149,7 @@
"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/joomla-cms": ">=2.5,<3.9.12",
"joomla/session": "<1.3.1",
"joyqi/hyper-down": "<=2.4.27",
"jsdecena/laracom": "<2.0.9",
@@ -8679,7 +8158,7 @@
"kelvinmo/simplexrd": "<3.1.1",
"kevinpapst/kimai2": "<1.16.7",
"khodakhah/nodcms": "<=3",
- "kimai/kimai": "<1.1",
+ "kimai/kimai": "<=2.1",
"kitodo/presentation": "<3.2.3|>=3.3,<3.3.4",
"klaviyo/magento2-extension": ">=1,<3",
"knplabs/knp-snappy": "<=1.4.2",
@@ -8713,7 +8192,7 @@
"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",
+ "mantisbt/mantisbt": "<=2.25.7",
"marcwillmann/turn": "<0.3.3",
"matyhtf/framework": "<3.0.6",
"mautic/core": "<4.3",
@@ -8724,7 +8203,7 @@
"melisplatform/melis-front": "<5.0.1",
"mezzio/mezzio-swoole": "<3.7|>=4,<4.3",
"mgallegos/laravel-jqgrid": "<=1.3",
- "microweber/microweber": "<=1.3.4",
+ "microweber/microweber": "<=2.0.4",
"miniorange/miniorange-saml": "<1.4.3",
"mittwald/typo3_forum": "<1.2.1",
"mobiledetect/mobiledetectlib": "<2.8.32",
@@ -8732,9 +8211,13 @@
"mojo42/jirafeau": "<4.4",
"mongodb/mongodb": ">=1,<1.9.2",
"monolog/monolog": ">=1.8,<1.12",
- "moodle/moodle": "<4.2.0.0-RC2-dev|==4.2",
+ "moodle/moodle": "<4.3.0.0-RC2-dev",
+ "mos/cimage": "<0.7.19",
"movim/moxl": ">=0.8,<=0.10",
"mpdf/mpdf": "<=7.1.7",
+ "munkireport/comment": "<4.1",
+ "munkireport/managedinstalls": "<2.6",
+ "munkireport/munkireport": ">=2.5.3,<5.6.3",
"mustache/mustache": ">=2,<2.14.1",
"namshi/jose": "<2.2",
"neoan3-apps/template": "<1.1.1",
@@ -8748,6 +8231,7 @@
"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": "<3.0.10",
+ "nonfiction/nterchange": "<4.1.1",
"notrinos/notrinos-erp": "<=0.7",
"noumo/easyii": "<=0.9",
"nukeviet/nukeviet": "<4.5.02",
@@ -8758,18 +8242,22 @@
"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.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66",
+ "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2",
+ "omeka/omeka-s": "<4.0.3",
"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.7",
+ "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev",
"openid/php-openid": "<2.3",
"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/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1",
+ "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1",
"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",
+ "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1",
+ "oro/customer-portal": ">=4.2,<=4.2.8|>=5,<5.0.11|>=5.1,<5.1.1",
+ "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<5.0.8",
"oxid-esales/oxideshop-ce": "<4.5",
"packbackbooks/lti-1-3-php-library": "<5",
"padraic/humbug_get_contents": "<1.1.2",
@@ -8793,7 +8281,7 @@
"phpmyfaq/phpmyfaq": "<=3.1.7",
"phpoffice/phpexcel": "<1.8",
"phpoffice/phpspreadsheet": "<1.16",
- "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.19",
+ "phpseclib/phpseclib": "<3.0.34",
"phpservermon/phpservermon": "<3.6",
"phpsysinfo/phpsysinfo": "<3.2.5",
"phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3",
@@ -8801,20 +8289,23 @@
"phpxmlrpc/extras": "<0.6.1",
"phpxmlrpc/phpxmlrpc": "<4.9.2",
"pi/pi": "<=2.5",
- "pimcore/admin-ui-classic-bundle": "<1.1.2",
+ "pimcore/admin-ui-classic-bundle": "<1.2.2",
"pimcore/customer-management-framework-bundle": "<3.4.2",
"pimcore/data-hub": "<1.2.4",
+ "pimcore/demo": "<10.3",
"pimcore/perspective-editor": "<1.5.1",
- "pimcore/pimcore": "<10.6.8",
+ "pimcore/pimcore": "<11.1.1",
"pixelfed/pixelfed": "<=0.11.4",
"pocketmine/bedrock-protocol": "<8.0.2",
"pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1",
+ "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1",
"pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.1",
+ "prestashop/blockreassurance": "<=5.1.3",
"prestashop/blockwishlist": ">=2,<2.1.1",
"prestashop/contactform": ">=1.0.1,<4.3",
"prestashop/gamification": "<2.3.2",
- "prestashop/prestashop": "<=8.1",
+ "prestashop/prestashop": "<8.1.2",
"prestashop/productcomments": "<5.0.2",
"prestashop/ps_emailsubscription": "<2.6.1",
"prestashop/ps_facetedsearch": "<3.4.1",
@@ -8824,11 +8315,12 @@
"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",
+ "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2",
"ptrofimov/beanstalk_console": "<1.7.14",
"pusher/pusher-php-server": "<2.2.1",
"pwweb/laravel-core": "<=0.3.6.0-beta",
"pyrocms/pyrocms": "<=3.9.1",
+ "rainlab/blog-plugin": "<1.4.1",
"rainlab/debugbar-plugin": "<3.1",
"rainlab/user-plugin": "<=1.4.5",
"rankmath/seo-by-rank-math": "<=1.0.95",
@@ -8836,6 +8328,8 @@
"react/http": ">=0.7,<1.9",
"really-simple-plugins/complianz-gdpr": "<6.4.2",
"remdex/livehelperchat": "<3.99",
+ "reportico-web/reportico": "<=7.1.21",
+ "rhukster/dom-sanitizer": "<1.0.7",
"rmccue/requests": ">=1.6,<1.8",
"robrichards/xmlseclibs": "<3.0.4",
"roots/soil": "<4.1",
@@ -8863,7 +8357,7 @@
"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.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/graphql": "<3.8.2|>=4,<4.1.3|>=4.2,<4.2.5|>=4.3,<4.3.4|>=5,<5.0.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",
@@ -8874,11 +8368,12 @@
"silverstripe/userforms": "<3",
"silverstripe/versioned-admin": ">=1,<1.11.1",
"simple-updates/phpwhois": "<=1",
- "simplesamlphp/saml2": "<1.15.4|>=2,<2.3.8|>=3,<3.1.4",
+ "simplesamlphp/saml2": "<1.15.4|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12",
"simplesamlphp/simplesamlphp": "<1.18.6",
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"simplesamlphp/simplesamlphp-module-openid": "<1",
"simplesamlphp/simplesamlphp-module-openidprovider": "<0.9",
+ "simplesamlphp/xml-security": "==1.6.11",
"simplito/elliptic-php": "<1.0.6",
"sitegeist/fluid-components": "<3.5",
"sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3",
@@ -8886,7 +8381,7 @@
"slim/slim": "<2.6",
"slub/slub-events": "<3.0.3",
"smarty/smarty": "<3.1.48|>=4,<4.3.1",
- "snipe/snipe-it": "<=6.0.14",
+ "snipe/snipe-it": "<=6.2.2",
"socalnick/scn-social-auth": "<1.15.2",
"socialiteproviders/steam": "<1.1",
"spatie/browsershot": "<3.57.4",
@@ -8895,7 +8390,7 @@
"spoonity/tcpdf": "<6.2.22",
"squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1",
"ssddanbrown/bookstack": "<22.02.3",
- "statamic/cms": "<4.10",
+ "statamic/cms": "<4.36",
"stormpath/sdk": "<9.9.99",
"studio-42/elfinder": "<2.1.62",
"subhh/libconnect": "<7.0.8|>=8,<8.1",
@@ -8904,6 +8399,7 @@
"sumocoders/framework-user-bundle": "<1.4",
"swag/paypal": "<5.4.4",
"swiftmailer/swiftmailer": ">=4,<5.4.5",
+ "swiftyedit/swiftyedit": "<1.2",
"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",
"sylius/grid-bundle": "<1.10.1",
@@ -8935,14 +8431,16 @@
"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/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|>=5.4,<5.4.31|>=6,<6.3.8",
"symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
- "symfony/symfony": "<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6",
+ "symfony/symfony": "<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
"symfony/translation": ">=2,<2.0.17",
+ "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
"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/webhook": ">=6.3,<6.3.8",
"symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
"t3/dce": "<0.11.5|>=2.2,<2.6.2",
"t3g/svg-sanitizer": "<1.0.3",
@@ -8954,9 +8452,9 @@
"thelia/thelia": ">=2.1,<2.1.3",
"theonedemon/phpwhois": "<=4.2.5",
"thinkcmf/thinkcmf": "<=5.1.7",
- "thorsten/phpmyfaq": "<3.2.0.0-beta2",
+ "thorsten/phpmyfaq": "<3.2.2",
"tikiwiki/tiki-manager": "<=17.1",
- "tinymce/tinymce": "<5.10.7|>=6,<6.3.1",
+ "tinymce/tinymce": "<5.10.9|>=6,<6.7.3",
"tinymighty/wiki-seo": "<1.2.2",
"titon/framework": "<9.9.99",
"tobiasbg/tablepress": "<=2.0.0.0-RC1",
@@ -8964,18 +8462,19 @@
"topthink/think": "<=6.1.1",
"topthink/thinkphp": "<=3.2.3",
"tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
- "tribalsystems/zenario": "<=9.3.57595",
+ "tribalsystems/zenario": "<=9.4.59197",
"truckersmp/phpwhois": "<=4.3.1",
"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": "<8.7.51|>=9,<9.5.42|>=10,<10.4.39|>=11,<11.5.30|>=12,<12.4.4",
+ "typo3/cms-core": "<=8.7.54|>=9,<=9.5.43|>=10,<=10.4.40|>=11,<=11.5.32|>=12,<=12.4.7",
"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-install": ">=12.2,<12.4.8",
"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/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3",
"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",
@@ -8992,7 +8491,7 @@
"vrana/adminer": "<4.8.1",
"waldhacker/hcaptcha": "<2.1.2",
"wallabag/tcpdf": "<6.2.22",
- "wallabag/wallabag": "<=2.6.2",
+ "wallabag/wallabag": "<2.6.7",
"wanglelecc/laracms": "<=1.0.3",
"web-auth/webauthn-framework": ">=3.3,<3.3.4",
"webbuilders-group/silverstripe-kapost-bridge": "<0.4",
@@ -9016,7 +8515,7 @@
"yetiforce/yetiforce-crm": "<=6.4",
"yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2",
- "yiisoft/yii": "<1.1.27",
+ "yiisoft/yii": "<1.1.29",
"yiisoft/yii2": "<2.0.38",
"yiisoft/yii2-bootstrap": "<2.0.4",
"yiisoft/yii2-dev": "<2.0.43",
@@ -9029,7 +8528,7 @@
"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-cache": "<2.4.8|>=2.5,<2.5.3",
"zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
"zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
@@ -9061,7 +8560,7 @@
"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",
+ "zfcampus/zf-apigility-doctrine": "<1.0.3",
"zfr/zfr-oauth2-server-module": "<0.1.2",
"zoujingli/thinkadmin": "<6.0.22"
},
@@ -9100,7 +8599,7 @@
"type": "tidelift"
}
],
- "time": "2023-09-27T09:04:28+00:00"
+ "time": "2023-11-30T20:04:21+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -10068,16 +9567,16 @@
},
{
"name": "spatie/array-to-xml",
- "version": "3.2.0",
+ "version": "3.2.2",
"source": {
"type": "git",
"url": "https://github.com/spatie/array-to-xml.git",
- "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7"
+ "reference": "96be97e664c87613121d073ea39af4c74e57a7f8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f9ab39c808500c347d5a8b6b13310bd5221e39e7",
- "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7",
+ "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/96be97e664c87613121d073ea39af4c74e57a7f8",
+ "reference": "96be97e664c87613121d073ea39af4c74e57a7f8",
"shasum": ""
},
"require": {
@@ -10115,7 +9614,7 @@
"xml"
],
"support": {
- "source": "https://github.com/spatie/array-to-xml/tree/3.2.0"
+ "source": "https://github.com/spatie/array-to-xml/tree/3.2.2"
},
"funding": [
{
@@ -10127,31 +9626,31 @@
"type": "github"
}
],
- "time": "2023-07-19T18:30:26+00:00"
+ "time": "2023-11-14T14:08:51+00:00"
},
{
"name": "symfony/browser-kit",
- "version": "v6.3.2",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d"
+ "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/ca4a988488f61ac18f8f845445eabdd36f89aa8d",
- "reference": "ca4a988488f61ac18f8f845445eabdd36f89aa8d",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a3bb210e001580ec75e1d02b27fae3452e6bf502",
+ "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502",
"shasum": ""
},
"require": {
"php": ">=8.1",
- "symfony/dom-crawler": "^5.4|^6.0"
+ "symfony/dom-crawler": "^5.4|^6.0|^7.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"
+ "symfony/css-selector": "^5.4|^6.0|^7.0",
+ "symfony/http-client": "^5.4|^6.0|^7.0",
+ "symfony/mime": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -10179,7 +9678,7 @@
"description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/browser-kit/tree/v6.3.2"
+ "source": "https://github.com/symfony/browser-kit/tree/v6.4.0"
},
"funding": [
{
@@ -10195,20 +9694,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-06T06:56:43+00:00"
+ "time": "2023-10-31T08:18:17+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v6.3.2",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "883d961421ab1709877c10ac99451632a3d6fa57"
+ "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/883d961421ab1709877c10ac99451632a3d6fa57",
- "reference": "883d961421ab1709877c10ac99451632a3d6fa57",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4",
+ "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4",
"shasum": ""
},
"require": {
@@ -10244,7 +9743,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v6.3.2"
+ "source": "https://github.com/symfony/css-selector/tree/v6.4.0"
},
"funding": [
{
@@ -10260,20 +9759,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-12T16:00:22+00:00"
+ "time": "2023-10-31T08:40:20+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v6.3.4",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1"
+ "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1",
- "reference": "3fdd2a3d5fdc363b2e8dbf817f9726a4d013cbd1",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33",
+ "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33",
"shasum": ""
},
"require": {
@@ -10283,7 +9782,7 @@
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
- "symfony/css-selector": "^5.4|^6.0"
+ "symfony/css-selector": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -10311,7 +9810,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v6.3.4"
+ "source": "https://github.com/symfony/dom-crawler/tree/v6.4.0"
},
"funding": [
{
@@ -10327,30 +9826,30 @@
"type": "tidelift"
}
],
- "time": "2023-08-01T07:43:40+00:00"
+ "time": "2023-11-20T16:41:16+00:00"
},
{
"name": "symfony/proxy-manager-bridge",
- "version": "v6.3.0",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/proxy-manager-bridge.git",
- "reference": "7ba2ac62c88d7c3460d41f04ceba5fc3b9071a39"
+ "reference": "801c4590eacf0dc40d73135dbe79ad71effd6d04"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/7ba2ac62c88d7c3460d41f04ceba5fc3b9071a39",
- "reference": "7ba2ac62c88d7c3460d41f04ceba5fc3b9071a39",
+ "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/801c4590eacf0dc40d73135dbe79ad71effd6d04",
+ "reference": "801c4590eacf0dc40d73135dbe79ad71effd6d04",
"shasum": ""
},
"require": {
"friendsofphp/proxy-manager-lts": "^1.0.2",
"php": ">=8.1",
- "symfony/dependency-injection": "^6.3",
+ "symfony/dependency-injection": "^6.3|^7.0",
"symfony/deprecation-contracts": "^2.5|^3"
},
"require-dev": {
- "symfony/config": "^6.1"
+ "symfony/config": "^6.1|^7.0"
},
"type": "symfony-bridge",
"autoload": {
@@ -10378,7 +9877,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.3.0"
+ "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.4.0"
},
"funding": [
{
@@ -10394,20 +9893,20 @@
"type": "tidelift"
}
],
- "time": "2023-05-26T07:49:33+00:00"
+ "time": "2023-11-01T12:07:38+00:00"
},
{
"name": "symfony/translation",
- "version": "v6.3.3",
+ "version": "v6.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd"
+ "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd",
- "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37",
+ "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37",
"shasum": ""
},
"require": {
@@ -10432,17 +9931,17 @@
"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/config": "^5.4|^6.0|^7.0",
+ "symfony/console": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/finder": "^5.4|^6.0|^7.0",
"symfony/http-client-contracts": "^2.5|^3.0",
- "symfony/http-kernel": "^5.4|^6.0",
- "symfony/intl": "^5.4|^6.0",
+ "symfony/http-kernel": "^5.4|^6.0|^7.0",
+ "symfony/intl": "^5.4|^6.0|^7.0",
"symfony/polyfill-intl-icu": "^1.21",
- "symfony/routing": "^5.4|^6.0",
+ "symfony/routing": "^5.4|^6.0|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/yaml": "^5.4|^6.0"
+ "symfony/yaml": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -10473,7 +9972,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v6.3.3"
+ "source": "https://github.com/symfony/translation/tree/v6.4.0"
},
"funding": [
{
@@ -10489,20 +9988,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-31T07:08:24+00:00"
+ "time": "2023-11-29T08:14:36+00:00"
},
{
"name": "symplify/easy-coding-standard",
- "version": "12.0.8",
+ "version": "12.0.11",
"source": {
"type": "git",
"url": "https://github.com/easy-coding-standard/easy-coding-standard.git",
- "reference": "99d87d188acc712dd6655ee946569f823cfeff69"
+ "reference": "5f34a99d035b4eef048857ec47d2035140871f50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/99d87d188acc712dd6655ee946569f823cfeff69",
- "reference": "99d87d188acc712dd6655ee946569f823cfeff69",
+ "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/5f34a99d035b4eef048857ec47d2035140871f50",
+ "reference": "5f34a99d035b4eef048857ec47d2035140871f50",
"shasum": ""
},
"require": {
@@ -10510,7 +10009,7 @@
},
"conflict": {
"friendsofphp/php-cs-fixer": "<3.0",
- "squizlabs/php_codesniffer": "<3.6",
+ "phpcsstandards/php_codesniffer": "<3.6",
"symplify/coding-standard": "<11.3"
},
"bin": [
@@ -10535,7 +10034,7 @@
],
"support": {
"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"
+ "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.0.11"
},
"funding": [
{
@@ -10547,20 +10046,20 @@
"type": "github"
}
],
- "time": "2023-09-08T10:17:14+00:00"
+ "time": "2023-12-02T09:38:08+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.1",
+ "version": "1.2.2",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
- "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+ "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
"shasum": ""
},
"require": {
@@ -10589,7 +10088,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
},
"funding": [
{
@@ -10597,20 +10096,20 @@
"type": "github"
}
],
- "time": "2021-07-28T10:34:58+00:00"
+ "time": "2023-11-20T00:12:19+00:00"
},
{
"name": "vimeo/psalm",
- "version": "5.15.0",
+ "version": "5.16.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352"
+ "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352",
- "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/2897ba636551a8cb61601cc26f6ccfbba6c36591",
+ "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591",
"shasum": ""
},
"require": {
@@ -10635,8 +10134,8 @@
"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"
+ "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
},
"conflict": {
"nikic/php-parser": "4.17.0"
@@ -10658,7 +10157,7 @@
"psalm/plugin-phpunit": "^0.18",
"slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.6",
- "symfony/process": "^4.4 || ^5.0 || ^6.0"
+ "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0"
},
"suggest": {
"ext-curl": "In order to send data to shepherd",
@@ -10671,7 +10170,7 @@
"psalm-refactor",
"psalter"
],
- "type": "library",
+ "type": "project",
"extra": {
"branch-alias": {
"dev-master": "5.x-dev",
@@ -10703,10 +10202,11 @@
"static analysis"
],
"support": {
+ "docs": "https://psalm.dev/docs",
"issues": "https://github.com/vimeo/psalm/issues",
- "source": "https://github.com/vimeo/psalm/tree/5.15.0"
+ "source": "https://github.com/vimeo/psalm"
},
- "time": "2023-08-20T23:07:30+00:00"
+ "time": "2023-11-22T20:38:47+00:00"
},
{
"name": "webmozart/assert",
@@ -10775,7 +10275,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^8.2",
+ "php": "^8.3",
"ext-amqp": "*",
"ext-apcu": "*",
"ext-json": "*",
diff --git a/etc/infrastructure/php/conf.d/apcu.ini b/etc/infrastructure/php/conf.d/apcu.ini
index 3fb1fc345..8fae9c5a0 100644
--- a/etc/infrastructure/php/conf.d/apcu.ini
+++ b/etc/infrastructure/php/conf.d/apcu.ini
@@ -1,3 +1,5 @@
+apc.enable_cli=1
+apc.enabled=1
apc.shm_segments=1
apc.shm_size=256M
apc.num_files_hint=7000
From 9d3434e57ce4d938319c0fa11a776aa8905c582e Mon Sep 17 00:00:00 2001
From: Joan Miquel
Date: Mon, 11 Dec 2023 11:26:10 +0100
Subject: [PATCH 35/40] refactor: use json_decode exception (#374)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Use json_decode exception
Ahora es más rápido.
Lo curioso es que si lo usan el jsonEncode().
Fix: #373
* fix: remove unused import
---------
Co-authored-by: Javier Ferrer González
---
src/Shared/Domain/Utils.php | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/src/Shared/Domain/Utils.php b/src/Shared/Domain/Utils.php
index 7939ff26b..443c406e0 100644
--- a/src/Shared/Domain/Utils.php
+++ b/src/Shared/Domain/Utils.php
@@ -6,7 +6,6 @@
use DateTimeImmutable;
use DateTimeInterface;
-use RuntimeException;
use function Lambdish\Phunctional\filter;
final class Utils
@@ -38,13 +37,7 @@ public static function jsonEncode(array $values): string
public static function jsonDecode(string $json): array
{
- $data = json_decode($json, true);
-
- if (json_last_error() !== JSON_ERROR_NONE) {
- throw new RuntimeException('Unable to parse response body into JSON: ' . json_last_error());
- }
-
- return $data;
+ return json_decode($json, true, flags: JSON_THROW_ON_ERROR);
}
public static function toSnakeCase(string $text): string
From 06249af609a4f374a61bb1ec64c6fd5bd7c76029 Mon Sep 17 00:00:00 2001
From: Joan Miquel
Date: Mon, 11 Dec 2023 11:46:48 +0100
Subject: [PATCH 36/40] refactor: Fix DbalTypesSearcher.php to use
str_ends_with() (#376)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* Update DbalTypesSearcher.php
Para usar str_ends_with()
* fix: remove unused import
---------
Co-authored-by: Javier Ferrer González
---
src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
index 7b203d1fa..28823de48 100644
--- a/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
+++ b/src/Mooc/Shared/Infrastructure/Doctrine/DbalTypesSearcher.php
@@ -4,8 +4,6 @@
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;
@@ -51,7 +49,7 @@ private static function dbalClassesSearcher(string $contextName): callable
{
return static function (array $totalNamespaces, string $path) use ($contextName): array {
$possibleFiles = scandir($path);
- $files = filter(static fn (string $file): bool => Utils::endsWith('Type.php', $file), $possibleFiles);
+ $files = filter(static fn (string $file): bool => str_ends_with($file, 'Type.php'), $possibleFiles);
$namespaces = map(
static function (string $file) use ($path, $contextName): string {
From c4d2f2537696b52951938a5998805882f24fc375 Mon Sep 17 00:00:00 2001
From: Joan Miquel
Date: Mon, 11 Dec 2023 12:34:54 +0100
Subject: [PATCH 37/40] refactor: remove endsWith() in Utils class in favor of
str_ends_with (#375)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
PHP 8.0 tiene
str_ends_with() y str_starts_with().
Co-authored-by: Javier Ferrer González
---
src/Shared/Domain/Utils.php | 10 ----------
1 file changed, 10 deletions(-)
diff --git a/src/Shared/Domain/Utils.php b/src/Shared/Domain/Utils.php
index 443c406e0..a50521eea 100644
--- a/src/Shared/Domain/Utils.php
+++ b/src/Shared/Domain/Utils.php
@@ -10,16 +10,6 @@
final class Utils
{
- public static function endsWith(string $needle, string $haystack): bool
- {
- $length = strlen($needle);
- if ($length === 0) {
- return true;
- }
-
- return substr($haystack, -$length) === $needle;
- }
-
public static function dateToString(DateTimeInterface $date): string
{
return $date->format(DateTimeInterface::ATOM);
From be65b400cff2c5d4a385eb253eeced7bbcc7bc84 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Wed, 20 Dec 2023 12:52:45 +0100
Subject: [PATCH 38/40] feat: add steps (#379)
* feat: add steps
* feat: add steps
* feat: delete steps
* feat: delete steps on cascade
---
etc/databases/mooc.sql | 94 +++++++++++++------
.../Create/CreateVideoStepCommandHandler.php | 14 +++
.../Application/Create/VideoStepCreator.php | 14 +++
.../Steps/Domain/Exercise/ExerciseStep.php | 22 +++++
.../Domain/Exercise/ExerciseStepContent.php | 9 ++
src/Mooc/Steps/Domain/Quiz/QuizStep.php | 27 ++++++
.../Steps/Domain/Quiz/QuizStepQuestion.php | 22 +++++
src/Mooc/Steps/Domain/Step.php | 16 ++++
src/Mooc/Steps/Domain/StepDuration.php | 9 ++
src/Mooc/Steps/Domain/StepId.php | 9 ++
src/Mooc/Steps/Domain/StepRepository.php | 14 +++
src/Mooc/Steps/Domain/StepTitle.php | 9 ++
src/Mooc/Steps/Domain/Video/VideoStep.php | 22 +++++
src/Mooc/Steps/Domain/Video/VideoStepUrl.php | 9 ++
.../Doctrine/Exercise.ExerciseStep.orm.xml | 10 ++
.../Exercise.ExerciseStepContent.orm.xml | 10 ++
.../Doctrine/Quiz.QuizStep.orm.xml | 10 ++
.../Doctrine/QuizStepQuestionsType.php | 40 ++++++++
.../Persistence/Doctrine/Step.orm.xml | 20 ++++
.../Persistence/Doctrine/StepDuration.orm.xml | 10 ++
.../Persistence/Doctrine/StepIdType.php | 16 ++++
.../Persistence/Doctrine/StepTitle.orm.xml | 10 ++
.../Doctrine/Video.VideoStep.orm.xml | 10 ++
.../Doctrine/Video.VideoStepUrl.orm.xml | 10 ++
.../Persistence/MySqlStepRepository.php | 28 ++++++
.../Exercise/ExerciseStepContentMother.php | 16 ++++
.../Domain/Exercise/ExerciseStepMother.php | 31 ++++++
.../Mooc/Steps/Domain/Quiz/QuizStepMother.php | 36 +++++++
.../Domain/Quiz/QuizStepQuestionMother.php | 20 ++++
.../Mooc/Steps/Domain/StepDurationMother.php | 16 ++++
tests/Mooc/Steps/Domain/StepIdMother.php | 16 ++++
tests/Mooc/Steps/Domain/StepTitleMother.php | 16 ++++
.../Steps/Domain/Video/VideoStepMother.php | 31 ++++++
.../Steps/Domain/Video/VideoStepUrlMother.php | 16 ++++
.../Persistence/MySqlStepRepositoryTest.php | 55 +++++++++++
.../StepsModuleInfrastructureTestCase.php | 16 ++++
36 files changed, 703 insertions(+), 30 deletions(-)
create mode 100644 src/Mooc/Steps/Application/Create/CreateVideoStepCommandHandler.php
create mode 100644 src/Mooc/Steps/Application/Create/VideoStepCreator.php
create mode 100644 src/Mooc/Steps/Domain/Exercise/ExerciseStep.php
create mode 100644 src/Mooc/Steps/Domain/Exercise/ExerciseStepContent.php
create mode 100644 src/Mooc/Steps/Domain/Quiz/QuizStep.php
create mode 100644 src/Mooc/Steps/Domain/Quiz/QuizStepQuestion.php
create mode 100644 src/Mooc/Steps/Domain/Step.php
create mode 100644 src/Mooc/Steps/Domain/StepDuration.php
create mode 100644 src/Mooc/Steps/Domain/StepId.php
create mode 100644 src/Mooc/Steps/Domain/StepRepository.php
create mode 100644 src/Mooc/Steps/Domain/StepTitle.php
create mode 100644 src/Mooc/Steps/Domain/Video/VideoStep.php
create mode 100644 src/Mooc/Steps/Domain/Video/VideoStepUrl.php
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Exercise.ExerciseStep.orm.xml
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Exercise.ExerciseStepContent.orm.xml
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Quiz.QuizStep.orm.xml
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/QuizStepQuestionsType.php
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Step.orm.xml
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/StepDuration.orm.xml
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/StepIdType.php
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/StepTitle.orm.xml
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Video.VideoStep.orm.xml
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Video.VideoStepUrl.orm.xml
create mode 100644 src/Mooc/Steps/Infrastructure/Persistence/MySqlStepRepository.php
create mode 100644 tests/Mooc/Steps/Domain/Exercise/ExerciseStepContentMother.php
create mode 100644 tests/Mooc/Steps/Domain/Exercise/ExerciseStepMother.php
create mode 100644 tests/Mooc/Steps/Domain/Quiz/QuizStepMother.php
create mode 100644 tests/Mooc/Steps/Domain/Quiz/QuizStepQuestionMother.php
create mode 100644 tests/Mooc/Steps/Domain/StepDurationMother.php
create mode 100644 tests/Mooc/Steps/Domain/StepIdMother.php
create mode 100644 tests/Mooc/Steps/Domain/StepTitleMother.php
create mode 100644 tests/Mooc/Steps/Domain/Video/VideoStepMother.php
create mode 100644 tests/Mooc/Steps/Domain/Video/VideoStepUrlMother.php
create mode 100644 tests/Mooc/Steps/Infrastructure/Persistence/MySqlStepRepositoryTest.php
create mode 100644 tests/Mooc/Steps/StepsModuleInfrastructureTestCase.php
diff --git a/etc/databases/mooc.sql b/etc/databases/mooc.sql
index a999ef78e..1a094f827 100644
--- a/etc/databases/mooc.sql
+++ b/etc/databases/mooc.sql
@@ -4,35 +4,35 @@
-- Generic tables
-CREATE TABLE `mutations` (
- `id` BIGINT AUTO_INCREMENT PRIMARY KEY,
- `table_name` VARCHAR(255) NOT NULL,
- `operation` ENUM ('INSERT', 'UPDATE', 'DELETE') NOT NULL,
- `old_value` JSON NULL,
- `new_value` JSON NULL,
- `mutation_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+CREATE TABLE mutations (
+ id BIGINT AUTO_INCREMENT PRIMARY KEY,
+ table_name VARCHAR(255) NOT NULL,
+ operation ENUM ('INSERT', 'UPDATE', 'DELETE') NOT NULL,
+ old_value JSON NULL,
+ new_value JSON NULL,
+ mutation_timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
-CREATE TABLE `domain_events` (
- `id` CHAR(36) NOT NULL,
- `aggregate_id` CHAR(36) NOT NULL,
- `name` VARCHAR(255) NOT NULL,
- `body` JSON NOT NULL,
- `occurred_on` TIMESTAMP NOT NULL,
- PRIMARY KEY (`id`)
+CREATE TABLE domain_events (
+ id CHAR(36) NOT NULL,
+ aggregate_id CHAR(36) NOT NULL,
+ name VARCHAR(255) NOT NULL,
+ body JSON NOT NULL,
+ occurred_on TIMESTAMP NOT NULL,
+ PRIMARY KEY (id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
-- Aggregates tables
-CREATE TABLE `courses` (
- `id` CHAR(36) NOT NULL,
- `name` VARCHAR(255) NOT NULL,
- `duration` VARCHAR(255) NOT NULL,
- PRIMARY KEY (`id`)
+CREATE TABLE courses (
+ id CHAR(36) NOT NULL,
+ name VARCHAR(255) NOT NULL,
+ duration VARCHAR(255) NOT NULL,
+ PRIMARY KEY (id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
@@ -68,28 +68,62 @@ BEGIN
VALUES ('courses', 'DELETE', JSON_OBJECT('id', old.id, 'name', old.name, 'duration', old.duration), NOW());
END;
-CREATE TABLE `courses_counter` (
- `id` CHAR(36) NOT NULL,
- `total` INT NOT NULL,
- `existing_courses` JSON NOT NULL,
- PRIMARY KEY (`id`)
+CREATE TABLE courses_counter (
+ id CHAR(36) NOT NULL,
+ total INT NOT NULL,
+ existing_courses JSON NOT NULL,
+ PRIMARY KEY (id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
-INSERT INTO `courses_counter`
+INSERT INTO courses_counter (id, total, existing_courses)
VALUES ("cdf26d7d-3deb-4e8c-9f73-4ac085a8d6f3", 0, "[]");
+CREATE TABLE steps (
+ id CHAR(36) NOT NULL,
+ title VARCHAR(255) NOT NULL,
+ duration INT NOT NULL,
+ type VARCHAR(255) NOT NULL,
+ PRIMARY KEY (id)
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_unicode_ci;
+
+CREATE TABLE steps_video (
+ id CHAR(36) NOT NULL,
+ url VARCHAR(255) NOT NULL,
+ FOREIGN KEY (id) REFERENCES steps(id) ON DELETE CASCADE
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_unicode_ci;
+
+CREATE TABLE steps_exercise (
+ id CHAR(36) NOT NULL,
+ content VARCHAR(255) NOT NULL,
+ FOREIGN KEY (id) REFERENCES steps(id) ON DELETE CASCADE
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_unicode_ci;
+
+CREATE TABLE steps_quiz (
+ id CHAR(36) NOT NULL,
+ questions TEXT NOT NULL,
+ FOREIGN KEY (id) REFERENCES steps(id) ON DELETE CASCADE
+) ENGINE = InnoDB
+ DEFAULT CHARSET = utf8mb4
+ COLLATE = utf8mb4_unicode_ci;
+
/* -------------------------
BACKOFFICE CONTEXT
---------------------------- */
-CREATE TABLE `backoffice_courses` (
- `id` CHAR(36) NOT NULL,
- `name` VARCHAR(255) NOT NULL,
- `duration` VARCHAR(255) NOT NULL,
- PRIMARY KEY (`id`)
+CREATE TABLE backoffice_courses (
+ id CHAR(36) NOT NULL,
+ name VARCHAR(255) NOT NULL,
+ duration VARCHAR(255) NOT NULL,
+ PRIMARY KEY (id)
) ENGINE = InnoDB
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_unicode_ci;
diff --git a/src/Mooc/Steps/Application/Create/CreateVideoStepCommandHandler.php b/src/Mooc/Steps/Application/Create/CreateVideoStepCommandHandler.php
new file mode 100644
index 000000000..34c301890
--- /dev/null
+++ b/src/Mooc/Steps/Application/Create/CreateVideoStepCommandHandler.php
@@ -0,0 +1,14 @@
+questions = $questions;
+ }
+}
diff --git a/src/Mooc/Steps/Domain/Quiz/QuizStepQuestion.php b/src/Mooc/Steps/Domain/Quiz/QuizStepQuestion.php
new file mode 100644
index 000000000..157172596
--- /dev/null
+++ b/src/Mooc/Steps/Domain/Quiz/QuizStepQuestion.php
@@ -0,0 +1,22 @@
+question . '----' . implode('****', $this->answers);
+ }
+}
diff --git a/src/Mooc/Steps/Domain/Step.php b/src/Mooc/Steps/Domain/Step.php
new file mode 100644
index 000000000..b59277cde
--- /dev/null
+++ b/src/Mooc/Steps/Domain/Step.php
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Exercise.ExerciseStepContent.orm.xml b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Exercise.ExerciseStepContent.orm.xml
new file mode 100644
index 000000000..09e493da9
--- /dev/null
+++ b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Exercise.ExerciseStepContent.orm.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Quiz.QuizStep.orm.xml b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Quiz.QuizStep.orm.xml
new file mode 100644
index 000000000..4b116a567
--- /dev/null
+++ b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Quiz.QuizStep.orm.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/QuizStepQuestionsType.php b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/QuizStepQuestionsType.php
new file mode 100644
index 000000000..677fee748
--- /dev/null
+++ b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/QuizStepQuestionsType.php
@@ -0,0 +1,40 @@
+ $question->toString(), $value),
+ $platform
+ );
+ }
+
+ public function convertToPHPValue($value, AbstractPlatform $platform): array
+ {
+ $scalars = parent::convertToPHPValue($value, $platform);
+
+ return map(fn (string $value): QuizStepQuestion => QuizStepQuestion::fromString($value), $scalars);
+ }
+}
diff --git a/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Step.orm.xml b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Step.orm.xml
new file mode 100644
index 000000000..229add0ca
--- /dev/null
+++ b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Step.orm.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/StepDuration.orm.xml b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/StepDuration.orm.xml
new file mode 100644
index 000000000..c13079530
--- /dev/null
+++ b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/StepDuration.orm.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/StepIdType.php b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/StepIdType.php
new file mode 100644
index 000000000..47b979668
--- /dev/null
+++ b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/StepIdType.php
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
diff --git a/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Video.VideoStep.orm.xml b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Video.VideoStep.orm.xml
new file mode 100644
index 000000000..5302800f2
--- /dev/null
+++ b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Video.VideoStep.orm.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Video.VideoStepUrl.orm.xml b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Video.VideoStepUrl.orm.xml
new file mode 100644
index 000000000..a4141ba8f
--- /dev/null
+++ b/src/Mooc/Steps/Infrastructure/Persistence/Doctrine/Video.VideoStepUrl.orm.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/src/Mooc/Steps/Infrastructure/Persistence/MySqlStepRepository.php b/src/Mooc/Steps/Infrastructure/Persistence/MySqlStepRepository.php
new file mode 100644
index 000000000..45a1151d3
--- /dev/null
+++ b/src/Mooc/Steps/Infrastructure/Persistence/MySqlStepRepository.php
@@ -0,0 +1,28 @@
+persist($step);
+ }
+
+ public function search(StepId $id): ?Step
+ {
+ return $this->repository(Step::class)->find($id);
+ }
+
+ public function delete(Step $step): void
+ {
+ $this->remove($step);
+ }
+}
diff --git a/tests/Mooc/Steps/Domain/Exercise/ExerciseStepContentMother.php b/tests/Mooc/Steps/Domain/Exercise/ExerciseStepContentMother.php
new file mode 100644
index 000000000..eac56c22f
--- /dev/null
+++ b/tests/Mooc/Steps/Domain/Exercise/ExerciseStepContentMother.php
@@ -0,0 +1,16 @@
+ QuizStepQuestionMother::create()
+ ) : $questions;
+
+ return new QuizStep(
+ $id ?? StepIdMother::create(),
+ $title ?? StepTitleMother::create(),
+ $duration ?? StepDurationMother::create(),
+ ...$stepQuestions
+ );
+ }
+}
diff --git a/tests/Mooc/Steps/Domain/Quiz/QuizStepQuestionMother.php b/tests/Mooc/Steps/Domain/Quiz/QuizStepQuestionMother.php
new file mode 100644
index 000000000..04fcd8005
--- /dev/null
+++ b/tests/Mooc/Steps/Domain/Quiz/QuizStepQuestionMother.php
@@ -0,0 +1,20 @@
+ WordMother::create())
+ );
+ }
+}
diff --git a/tests/Mooc/Steps/Domain/StepDurationMother.php b/tests/Mooc/Steps/Domain/StepDurationMother.php
new file mode 100644
index 000000000..73ce6842d
--- /dev/null
+++ b/tests/Mooc/Steps/Domain/StepDurationMother.php
@@ -0,0 +1,16 @@
+repository()->save($step);
+ }
+
+ /**
+ * @test
+ * @dataProvider steps
+ */
+ public function it_should_search_an_existing_step(Step $step): void
+ {
+ $this->repository()->save($step);
+
+ $this->assertEquals($step, $this->repository()->search($step->id));
+ }
+
+ /**
+ * @test
+ * @dataProvider steps
+ */
+ public function it_should_delete_an_existing_step(Step $step): void
+ {
+ $this->repository()->save($step);
+ $this->repository()->delete($step);
+
+ $this->assertNull($this->repository()->search($step->id));
+ }
+
+ public function steps(): array
+ {
+ return [
+ 'video' => [VideoStepMother::create()],
+ 'exercise' => [ExerciseStepMother::create()],
+ 'quiz' => [QuizStepMother::create()],
+ ];
+ }
+}
diff --git a/tests/Mooc/Steps/StepsModuleInfrastructureTestCase.php b/tests/Mooc/Steps/StepsModuleInfrastructureTestCase.php
new file mode 100644
index 000000000..8d0eb52ca
--- /dev/null
+++ b/tests/Mooc/Steps/StepsModuleInfrastructureTestCase.php
@@ -0,0 +1,16 @@
+service(StepRepository::class);
+ }
+}
From 9ad5301ed2d15f0442451a78784c48948bfff741 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Mon, 5 Aug 2024 23:25:41 +0200
Subject: [PATCH 39/40] chore: upgrade to Symfony 7 (#391)
---
README.md | 2 +-
.../backend/src/BackofficeBackendKernel.php | 2 +-
.../frontend/src/BackofficeFrontendKernel.php | 2 +-
apps/mooc/backend/src/MoocBackendKernel.php | 2 +-
composer.json | 22 +-
composer.lock | 2693 +++++++++--------
psalm.xml | 14 +
src/Shared/Domain/Utils.php | 2 +-
.../Event/DomainEventSubscriberLocator.php | 2 +-
.../RabbitMq/RabbitMqDomainEventsConsumer.php | 2 +-
.../Doctrine/DoctrineEntityManagerFactory.php | 2 +-
.../Symfony/BasicHttpAuthMiddleware.php | 2 +-
.../AuthenticateUserCommandHandlerTest.php | 2 +-
.../Auth/AuthModuleUnitTestCase.php | 4 +-
.../Create/CreateCourseCommandHandlerTest.php | 2 +-
.../Application/Update/CourseRenamerTest.php | 2 +-
.../Courses/CoursesModuleUnitTestCase.php | 4 +-
.../FindCoursesCounterQueryHandlerTest.php | 2 +-
...ementCoursesCounterOnCourseCreatedTest.php | 2 +-
.../CoursesCounterModuleUnitTestCase.php | 4 +-
.../Infrastructure/Behat/ApiContext.php | 2 +-
.../Command/InMemorySymfonyCommandBusTest.php | 4 +-
.../Event/MySql/MySqlDoctrineEventBusTest.php | 4 +-
.../TestAllWorksOnRabbitMqEventsPublished.php | 2 +-
.../Bus/Query/InMemorySymfonyQueryBusTest.php | 4 +-
.../Shared/Infrastructure/Mink/MinkHelper.php | 8 -
.../Mockery/CodelyTvMatcherIsSimilar.php | 8 +-
.../Infrastructure/PhpUnit/UnitTestCase.php | 12 +-
tests/Shared/SharedArchitectureTest.php | 1 +
29 files changed, 1465 insertions(+), 1349 deletions(-)
diff --git a/README.md b/README.md
index 9fb85dcca..b639c10e7 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@
-
+
diff --git a/apps/backoffice/backend/src/BackofficeBackendKernel.php b/apps/backoffice/backend/src/BackofficeBackendKernel.php
index 6ed60b1be..321bf5524 100644
--- a/apps/backoffice/backend/src/BackofficeBackendKernel.php
+++ b/apps/backoffice/backend/src/BackofficeBackendKernel.php
@@ -16,7 +16,7 @@ class BackofficeBackendKernel extends Kernel
{
use MicroKernelTrait;
- private const CONFIG_EXTS = '.{xml,yaml}';
+ private const string CONFIG_EXTS = '.{xml,yaml}';
public function registerBundles(): iterable
{
diff --git a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
index dd793f7ab..ae109b24a 100644
--- a/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
+++ b/apps/backoffice/frontend/src/BackofficeFrontendKernel.php
@@ -16,7 +16,7 @@ class BackofficeFrontendKernel extends Kernel
{
use MicroKernelTrait;
- private const CONFIG_EXTS = '.{xml,yaml}';
+ private const string CONFIG_EXTS = '.{xml,yaml}';
public function registerBundles(): iterable
{
diff --git a/apps/mooc/backend/src/MoocBackendKernel.php b/apps/mooc/backend/src/MoocBackendKernel.php
index cc8f8ed58..e0b82d39e 100644
--- a/apps/mooc/backend/src/MoocBackendKernel.php
+++ b/apps/mooc/backend/src/MoocBackendKernel.php
@@ -16,7 +16,7 @@ class MoocBackendKernel extends Kernel
{
use MicroKernelTrait;
- private const CONFIG_EXTS = '.{xml,yaml}';
+ private const string CONFIG_EXTS = '.{xml,yaml}';
public function registerBundles(): iterable
{
diff --git a/composer.json b/composer.json
index 4a6249ffe..52f696576 100644
--- a/composer.json
+++ b/composer.json
@@ -12,13 +12,13 @@
"ext-zend-opcache": "*",
"ext-pdo": "*",
- "symfony/framework-bundle": "^6",
- "symfony/messenger": "^6",
- "symfony/dotenv": "^6",
- "symfony/yaml": "^6",
- "symfony/twig-bundle": "^6",
- "symfony/validator": "^6",
- "symfony/cache": "^6",
+ "symfony/framework-bundle": "^7",
+ "symfony/messenger": "^7",
+ "symfony/dotenv": "^7",
+ "symfony/yaml": "^7",
+ "symfony/twig-bundle": "^7",
+ "symfony/validator": "^7",
+ "symfony/cache": "^7",
"lambdish/phunctional": "^2",
@@ -41,16 +41,16 @@
"roave/security-advisories": "dev-master",
"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",
+ "friends-of-behat/mink-extension": "2.7.5",
+ "friends-of-behat/symfony-extension": "2.6.0",
+ "behat/mink-browserkit-driver": "2.2.0",
"phpunit/phpunit": "^9",
"mockery/mockery": "^1",
"fakerphp/faker": "^1",
- "symfony/error-handler": "^6",
+ "symfony/error-handler": "^7",
"symplify/easy-coding-standard": "^12.0",
"vimeo/psalm": "^5.15",
diff --git a/composer.lock b/composer.lock
index 794251bd2..534d648f6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,29 +4,29 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "49058a852a48e51de5183cc45f049da6",
+ "content-hash": "1384ca0a67984f7a0296f15a4373fed1",
"packages": [
{
"name": "brick/math",
- "version": "0.11.0",
+ "version": "0.12.1",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478"
+ "reference": "f510c0a40911935b77b86859eb5223d58d660df1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/0ad82ce168c82ba30d1c01ec86116ab52f589478",
- "reference": "0ad82ce168c82ba30d1c01ec86116ab52f589478",
+ "url": "https://api.github.com/repos/brick/math/zipball/f510c0a40911935b77b86859eb5223d58d660df1",
+ "reference": "f510c0a40911935b77b86859eb5223d58d660df1",
"shasum": ""
},
"require": {
- "php": "^8.0"
+ "php": "^8.1"
},
"require-dev": {
"php-coveralls/php-coveralls": "^2.2",
- "phpunit/phpunit": "^9.0",
- "vimeo/psalm": "5.0.0"
+ "phpunit/phpunit": "^10.1",
+ "vimeo/psalm": "5.16.0"
},
"type": "library",
"autoload": {
@@ -46,12 +46,17 @@
"arithmetic",
"bigdecimal",
"bignum",
+ "bignumber",
"brick",
- "math"
+ "decimal",
+ "integer",
+ "math",
+ "mathematics",
+ "rational"
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.11.0"
+ "source": "https://github.com/brick/math/tree/0.12.1"
},
"funding": [
{
@@ -59,7 +64,7 @@
"type": "github"
}
],
- "time": "2023-01-15T23:15:59+00:00"
+ "time": "2023-11-29T23:19:16+00:00"
},
{
"name": "doctrine/cache",
@@ -156,16 +161,16 @@
},
{
"name": "doctrine/collections",
- "version": "2.1.4",
+ "version": "2.2.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/collections.git",
- "reference": "72328a11443a0de79967104ad36ba7b30bded134"
+ "reference": "d8af7f248c74f195f7347424600fd9e17b57af59"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/collections/zipball/72328a11443a0de79967104ad36ba7b30bded134",
- "reference": "72328a11443a0de79967104ad36ba7b30bded134",
+ "url": "https://api.github.com/repos/doctrine/collections/zipball/d8af7f248c74f195f7347424600fd9e17b57af59",
+ "reference": "d8af7f248c74f195f7347424600fd9e17b57af59",
"shasum": ""
},
"require": {
@@ -177,7 +182,7 @@
"ext-json": "*",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.0",
- "phpunit/phpunit": "^9.5",
+ "phpunit/phpunit": "^10.5",
"vimeo/psalm": "^5.11"
},
"type": "library",
@@ -222,7 +227,7 @@
],
"support": {
"issues": "https://github.com/doctrine/collections/issues",
- "source": "https://github.com/doctrine/collections/tree/2.1.4"
+ "source": "https://github.com/doctrine/collections/tree/2.2.2"
},
"funding": [
{
@@ -238,20 +243,20 @@
"type": "tidelift"
}
],
- "time": "2023-10-03T09:22:33+00:00"
+ "time": "2024-04-18T06:56:21+00:00"
},
{
"name": "doctrine/common",
- "version": "3.4.3",
+ "version": "3.4.4",
"source": {
"type": "git",
"url": "https://github.com/doctrine/common.git",
- "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced"
+ "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/common/zipball/8b5e5650391f851ed58910b3e3d48a71062eeced",
- "reference": "8b5e5650391f851ed58910b3e3d48a71062eeced",
+ "url": "https://api.github.com/repos/doctrine/common/zipball/0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a",
+ "reference": "0aad4b7ab7ce8c6602dfbb1e1a24581275fb9d1a",
"shasum": ""
},
"require": {
@@ -313,7 +318,7 @@
],
"support": {
"issues": "https://github.com/doctrine/common/issues",
- "source": "https://github.com/doctrine/common/tree/3.4.3"
+ "source": "https://github.com/doctrine/common/tree/3.4.4"
},
"funding": [
{
@@ -329,20 +334,20 @@
"type": "tidelift"
}
],
- "time": "2022-10-09T11:47:59+00:00"
+ "time": "2024-04-16T13:35:33+00:00"
},
{
"name": "doctrine/dbal",
- "version": "3.7.2",
+ "version": "3.8.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "0ac3c270590e54910715e9a1a044cc368df282b2"
+ "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2",
- "reference": "0ac3c270590e54910715e9a1a044cc368df282b2",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/b7411825cf7efb7e51f9791dea19d86e43b399a1",
+ "reference": "b7411825cf7efb7e51f9791dea19d86e43b399a1",
"shasum": ""
},
"require": {
@@ -358,14 +363,14 @@
"doctrine/coding-standard": "12.0.0",
"fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.1",
- "phpstan/phpstan": "1.10.42",
- "phpstan/phpstan-strict-rules": "^1.5",
- "phpunit/phpunit": "9.6.13",
+ "phpstan/phpstan": "1.11.5",
+ "phpstan/phpstan-strict-rules": "^1.6",
+ "phpunit/phpunit": "9.6.19",
"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",
+ "squizlabs/php_codesniffer": "3.10.1",
+ "symfony/cache": "^5.4|^6.0|^7.0",
+ "symfony/console": "^4.4|^5.4|^6.0|^7.0",
"vimeo/psalm": "4.30.0"
},
"suggest": {
@@ -426,7 +431,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/3.7.2"
+ "source": "https://github.com/doctrine/dbal/tree/3.8.6"
},
"funding": [
{
@@ -442,20 +447,20 @@
"type": "tidelift"
}
],
- "time": "2023-11-19T08:06:58+00:00"
+ "time": "2024-06-19T10:38:17+00:00"
},
{
"name": "doctrine/deprecations",
- "version": "1.1.2",
+ "version": "1.1.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
- "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
- "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
+ "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab",
"shasum": ""
},
"require": {
@@ -487,22 +492,22 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/1.1.2"
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.3"
},
- "time": "2023-09-27T20:04:15+00:00"
+ "time": "2024-01-30T19:34:25+00:00"
},
{
"name": "doctrine/event-manager",
- "version": "2.0.0",
+ "version": "2.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/event-manager.git",
- "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32"
+ "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32",
- "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32",
+ "url": "https://api.github.com/repos/doctrine/event-manager/zipball/b680156fa328f1dfd874fd48c7026c41570b9c6e",
+ "reference": "b680156fa328f1dfd874fd48c7026c41570b9c6e",
"shasum": ""
},
"require": {
@@ -512,10 +517,10 @@
"doctrine/common": "<2.9"
},
"require-dev": {
- "doctrine/coding-standard": "^10",
+ "doctrine/coding-standard": "^12",
"phpstan/phpstan": "^1.8.8",
- "phpunit/phpunit": "^9.5",
- "vimeo/psalm": "^4.28"
+ "phpunit/phpunit": "^10.5",
+ "vimeo/psalm": "^5.24"
},
"type": "library",
"autoload": {
@@ -564,7 +569,7 @@
],
"support": {
"issues": "https://github.com/doctrine/event-manager/issues",
- "source": "https://github.com/doctrine/event-manager/tree/2.0.0"
+ "source": "https://github.com/doctrine/event-manager/tree/2.0.1"
},
"funding": [
{
@@ -580,20 +585,20 @@
"type": "tidelift"
}
],
- "time": "2022-10-12T20:59:15+00:00"
+ "time": "2024-05-22T20:47:39+00:00"
},
{
"name": "doctrine/inflector",
- "version": "2.0.8",
+ "version": "2.0.10",
"source": {
"type": "git",
"url": "https://github.com/doctrine/inflector.git",
- "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff"
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff",
- "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff",
+ "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc",
+ "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc",
"shasum": ""
},
"require": {
@@ -655,7 +660,7 @@
],
"support": {
"issues": "https://github.com/doctrine/inflector/issues",
- "source": "https://github.com/doctrine/inflector/tree/2.0.8"
+ "source": "https://github.com/doctrine/inflector/tree/2.0.10"
},
"funding": [
{
@@ -671,7 +676,7 @@
"type": "tidelift"
}
],
- "time": "2023-06-16T13:40:37+00:00"
+ "time": "2024-02-18T20:23:39+00:00"
},
{
"name": "doctrine/instantiator",
@@ -745,28 +750,27 @@
},
{
"name": "doctrine/lexer",
- "version": "2.1.0",
+ "version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/doctrine/lexer.git",
- "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124"
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
- "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
+ "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd",
"shasum": ""
},
"require": {
- "doctrine/deprecations": "^1.0",
- "php": "^7.1 || ^8.0"
+ "php": "^8.1"
},
"require-dev": {
- "doctrine/coding-standard": "^9 || ^10",
- "phpstan/phpstan": "^1.3",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5",
+ "doctrine/coding-standard": "^12",
+ "phpstan/phpstan": "^1.10",
+ "phpunit/phpunit": "^10.5",
"psalm/plugin-phpunit": "^0.18.3",
- "vimeo/psalm": "^4.11 || ^5.0"
+ "vimeo/psalm": "^5.21"
},
"type": "library",
"autoload": {
@@ -803,7 +807,7 @@
],
"support": {
"issues": "https://github.com/doctrine/lexer/issues",
- "source": "https://github.com/doctrine/lexer/tree/2.1.0"
+ "source": "https://github.com/doctrine/lexer/tree/3.0.1"
},
"funding": [
{
@@ -819,20 +823,20 @@
"type": "tidelift"
}
],
- "time": "2022-12-14T08:49:07+00:00"
+ "time": "2024-02-05T11:56:58+00:00"
},
{
"name": "doctrine/orm",
- "version": "2.17.1",
+ "version": "2.19.6",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
- "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1"
+ "reference": "c1bb2ccf4b19c845f91ff7c4c01dc7cbba7f4073"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/orm/zipball/1a4fe6e0bb67762370937a7e6cee3da40a9122d1",
- "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1",
+ "url": "https://api.github.com/repos/doctrine/orm/zipball/c1bb2ccf4b19c845f91ff7c4c01dc7cbba7f4073",
+ "reference": "c1bb2ccf4b19c845f91ff7c4c01dc7cbba7f4073",
"shasum": ""
},
"require": {
@@ -845,7 +849,7 @@
"doctrine/event-manager": "^1.2 || ^2",
"doctrine/inflector": "^1.4 || ^2.0",
"doctrine/instantiator": "^1.3 || ^2",
- "doctrine/lexer": "^2",
+ "doctrine/lexer": "^2 || ^3",
"doctrine/persistence": "^2.4 || ^3",
"ext-ctype": "*",
"php": "^7.1 || ^8.0",
@@ -861,14 +865,14 @@
"doctrine/annotations": "^1.13 || ^2",
"doctrine/coding-standard": "^9.0.2 || ^12.0",
"phpbench/phpbench": "^0.16.10 || ^1.0",
- "phpstan/phpstan": "~1.4.10 || 1.10.35",
+ "phpstan/phpstan": "~1.4.10 || 1.11.1",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.6",
"psr/log": "^1 || ^2 || ^3",
"squizlabs/php_codesniffer": "3.7.2",
- "symfony/cache": "^4.4 || ^5.4 || ^6.0",
- "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2",
- "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0",
- "vimeo/psalm": "4.30.0 || 5.15.0"
+ "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0",
+ "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0",
+ "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0",
+ "vimeo/psalm": "4.30.0 || 5.24.0"
},
"suggest": {
"ext-dom": "Provides support for XSD validation for XML mapping files",
@@ -881,7 +885,7 @@
"type": "library",
"autoload": {
"psr-4": {
- "Doctrine\\ORM\\": "lib/Doctrine/ORM"
+ "Doctrine\\ORM\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -918,22 +922,22 @@
],
"support": {
"issues": "https://github.com/doctrine/orm/issues",
- "source": "https://github.com/doctrine/orm/tree/2.17.1"
+ "source": "https://github.com/doctrine/orm/tree/2.19.6"
},
- "time": "2023-11-17T06:25:40+00:00"
+ "time": "2024-06-26T17:24:40+00:00"
},
{
"name": "doctrine/persistence",
- "version": "3.2.0",
+ "version": "3.3.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/persistence.git",
- "reference": "63fee8c33bef740db6730eb2a750cd3da6495603"
+ "reference": "b337726451f5d530df338fc7f68dee8781b49779"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/persistence/zipball/63fee8c33bef740db6730eb2a750cd3da6495603",
- "reference": "63fee8c33bef740db6730eb2a750cd3da6495603",
+ "url": "https://api.github.com/repos/doctrine/persistence/zipball/b337726451f5d530df338fc7f68dee8781b49779",
+ "reference": "b337726451f5d530df338fc7f68dee8781b49779",
"shasum": ""
},
"require": {
@@ -945,15 +949,14 @@
"doctrine/common": "<2.10"
},
"require-dev": {
- "composer/package-versions-deprecated": "^1.11",
- "doctrine/coding-standard": "^11",
+ "doctrine/coding-standard": "^12",
"doctrine/common": "^3.0",
- "phpstan/phpstan": "1.9.4",
+ "phpstan/phpstan": "1.11.1",
"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.30.0 || 5.3.0"
+ "vimeo/psalm": "4.30.0 || 5.24.0"
},
"type": "library",
"autoload": {
@@ -1002,7 +1005,7 @@
],
"support": {
"issues": "https://github.com/doctrine/persistence/issues",
- "source": "https://github.com/doctrine/persistence/tree/3.2.0"
+ "source": "https://github.com/doctrine/persistence/tree/3.3.3"
},
"funding": [
{
@@ -1018,14 +1021,14 @@
"type": "tidelift"
}
],
- "time": "2023-05-17T18:32:04+00:00"
+ "time": "2024-06-20T10:14:30+00:00"
},
{
"name": "elasticsearch/elasticsearch",
"version": "v7.17.2",
"source": {
"type": "git",
- "url": "git@github.com:elastic/elasticsearch-php.git",
+ "url": "https://github.com/elastic/elasticsearch-php.git",
"reference": "2d302233f2bb0926812d82823bb820d405e130fc"
},
"dist": {
@@ -1081,6 +1084,10 @@
"elasticsearch",
"search"
],
+ "support": {
+ "issues": "https://github.com/elastic/elasticsearch-php/issues",
+ "source": "https://github.com/elastic/elasticsearch-php/tree/v7.17.2"
+ },
"time": "2023-04-21T15:31:12+00:00"
},
{
@@ -1193,88 +1200,6 @@
},
"time": "2022-12-07T11:28:53+00:00"
},
- {
- "name": "friendsofphp/proxy-manager-lts",
- "version": "v1.0.16",
- "source": {
- "type": "git",
- "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git",
- "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c"
- },
- "dist": {
- "type": "zip",
- "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|^7.0"
- },
- "conflict": {
- "laminas/laminas-stdlib": "<3.2.1",
- "zendframework/zend-stdlib": "<3.2.1"
- },
- "replace": {
- "ocramius/proxy-manager": "^2.1"
- },
- "require-dev": {
- "ext-phar": "*",
- "symfony/phpunit-bridge": "^5.4|^6.0|^7.0"
- },
- "type": "library",
- "extra": {
- "thanks": {
- "name": "ocramius/proxy-manager",
- "url": "https://github.com/Ocramius/ProxyManager"
- }
- },
- "autoload": {
- "psr-4": {
- "ProxyManager\\": "src/ProxyManager"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Marco Pivetta",
- "email": "ocramius@gmail.com",
- "homepage": "https://ocramius.github.io/"
- },
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
- }
- ],
- "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager",
- "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts",
- "keywords": [
- "aop",
- "lazy loading",
- "proxy",
- "proxy pattern",
- "service proxies"
- ],
- "support": {
- "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues",
- "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16"
- },
- "funding": [
- {
- "url": "https://github.com/Ocramius",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
- "type": "tidelift"
- }
- ],
- "time": "2023-05-24T07:17:17+00:00"
- },
{
"name": "lambdish/phunctional",
"version": "v2.1.0",
@@ -1333,16 +1258,16 @@
},
{
"name": "laminas/laminas-code",
- "version": "4.13.0",
+ "version": "4.14.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-code.git",
- "reference": "7353d4099ad5388e84737dd16994316a04f48dbf"
+ "reference": "562e02b7d85cb9142b5116cc76c4c7c162a11a1c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf",
- "reference": "7353d4099ad5388e84737dd16994316a04f48dbf",
+ "url": "https://api.github.com/repos/laminas/laminas-code/zipball/562e02b7d85cb9142b5116cc76c4c7c162a11a1c",
+ "reference": "562e02b7d85cb9142b5116cc76c4c7c162a11a1c",
"shasum": ""
},
"require": {
@@ -1354,7 +1279,7 @@
"laminas/laminas-coding-standard": "^2.5.0",
"laminas/laminas-stdlib": "^3.17.0",
"phpunit/phpunit": "^10.3.3",
- "psalm/plugin-phpunit": "^0.18.4",
+ "psalm/plugin-phpunit": "^0.19.0",
"vimeo/psalm": "^5.15.0"
},
"suggest": {
@@ -1392,7 +1317,7 @@
"type": "community_bridge"
}
],
- "time": "2023-10-18T10:00:55+00:00"
+ "time": "2024-06-17T08:50:25+00:00"
},
{
"name": "laminas/laminas-zendframework-bridge",
@@ -1459,16 +1384,16 @@
},
{
"name": "monolog/monolog",
- "version": "3.5.0",
+ "version": "3.7.0",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448"
+ "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448",
- "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f4393b648b78a5408747de94fca38beb5f7e9ef8",
+ "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8",
"shasum": ""
},
"require": {
@@ -1491,7 +1416,7 @@
"phpstan/phpstan": "^1.9",
"phpstan/phpstan-deprecation-rules": "^1.0",
"phpstan/phpstan-strict-rules": "^1.4",
- "phpunit/phpunit": "^10.1",
+ "phpunit/phpunit": "^10.5.17",
"predis/predis": "^1.1 || ^2",
"ruflin/elastica": "^7",
"symfony/mailer": "^5.4 || ^6",
@@ -1544,7 +1469,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/3.5.0"
+ "source": "https://github.com/Seldaek/monolog/tree/3.7.0"
},
"funding": [
{
@@ -1556,20 +1481,101 @@
"type": "tidelift"
}
],
- "time": "2023-10-27T15:32:31+00:00"
+ "time": "2024-06-28T09:40:51+00:00"
+ },
+ {
+ "name": "ocramius/proxy-manager",
+ "version": "2.14.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Ocramius/ProxyManager.git",
+ "reference": "3990d60ef79001badbab4927a6a811682274a0d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/3990d60ef79001badbab4927a6a811682274a0d1",
+ "reference": "3990d60ef79001badbab4927a6a811682274a0d1",
+ "shasum": ""
+ },
+ "require": {
+ "composer-runtime-api": "^2.1.0",
+ "laminas/laminas-code": "^4.4.2",
+ "php": "~8.0.0",
+ "webimpress/safe-writer": "^2.2.0"
+ },
+ "conflict": {
+ "thecodingmachine/safe": "<1.3.3"
+ },
+ "require-dev": {
+ "codelicia/xulieta": "^0.1.6",
+ "doctrine/coding-standard": "^9.0.0",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^1.0.3",
+ "phpunit/phpunit": "^9.5.6",
+ "roave/infection-static-analysis-plugin": "^1.8",
+ "squizlabs/php_codesniffer": "^3.6.0",
+ "vimeo/psalm": "^4.8.1"
+ },
+ "suggest": {
+ "laminas/laminas-json": "To have the JsonRpc adapter (Remote Object feature)",
+ "laminas/laminas-soap": "To have the Soap adapter (Remote Object feature)",
+ "laminas/laminas-xmlrpc": "To have the XmlRpc adapter (Remote Object feature)",
+ "ocramius/generated-hydrator": "To have very fast object to array to object conversion for ghost objects"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "ProxyManager\\": "src/ProxyManager"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies",
+ "homepage": "https://github.com/Ocramius/ProxyManager",
+ "keywords": [
+ "aop",
+ "lazy loading",
+ "proxy",
+ "proxy pattern",
+ "service proxies"
+ ],
+ "support": {
+ "issues": "https://github.com/Ocramius/ProxyManager/issues",
+ "source": "https://github.com/Ocramius/ProxyManager/tree/2.14.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Ocramius",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-03-05T18:43:14+00:00"
},
{
"name": "promphp/prometheus_client_php",
- "version": "v2.7.2",
+ "version": "v2.11.0",
"source": {
"type": "git",
"url": "https://github.com/PromPHP/prometheus_client_php.git",
- "reference": "735ace7ec6f5ff66d73b91baf8f6d36cbe3f8b76"
+ "reference": "35d5a68628ea18209938bc1b8796646015ab93cf"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PromPHP/prometheus_client_php/zipball/735ace7ec6f5ff66d73b91baf8f6d36cbe3f8b76",
- "reference": "735ace7ec6f5ff66d73b91baf8f6d36cbe3f8b76",
+ "url": "https://api.github.com/repos/PromPHP/prometheus_client_php/zipball/35d5a68628ea18209938bc1b8796646015ab93cf",
+ "reference": "35d5a68628ea18209938bc1b8796646015ab93cf",
"shasum": ""
},
"require": {
@@ -1593,6 +1599,7 @@
},
"suggest": {
"ext-apc": "Required if using APCu.",
+ "ext-pdo": "Required if using PDO.",
"ext-redis": "Required if using Redis.",
"promphp/prometheus_push_gateway_php": "An easy client for using Prometheus PushGateway.",
"symfony/polyfill-apcu": "Required if you use APCu on PHP8.0+"
@@ -1621,9 +1628,9 @@
"description": "Prometheus instrumentation library for PHP applications.",
"support": {
"issues": "https://github.com/PromPHP/prometheus_client_php/issues",
- "source": "https://github.com/PromPHP/prometheus_client_php/tree/v2.7.2"
+ "source": "https://github.com/PromPHP/prometheus_client_php/tree/v2.11.0"
},
- "time": "2023-11-06T12:38:23+00:00"
+ "time": "2024-08-05T07:58:08+00:00"
},
{
"name": "psr/cache",
@@ -1966,20 +1973,20 @@
},
{
"name": "ramsey/uuid",
- "version": "4.7.5",
+ "version": "4.7.6",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e"
+ "reference": "91039bc1faa45ba123c4328958e620d382ec7088"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
- "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088",
+ "reference": "91039bc1faa45ba123c4328958e620d382ec7088",
"shasum": ""
},
"require": {
- "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11",
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12",
"ext-json": "*",
"php": "^8.0",
"ramsey/collection": "^1.2 || ^2.0"
@@ -2042,7 +2049,7 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.7.5"
+ "source": "https://github.com/ramsey/uuid/tree/4.7.6"
},
"funding": [
{
@@ -2054,7 +2061,7 @@
"type": "tidelift"
}
],
- "time": "2023-11-08T05:53:05+00:00"
+ "time": "2024-04-27T21:32:50+00:00"
},
{
"name": "react/promise",
@@ -2130,31 +2137,32 @@
},
{
"name": "symfony/cache",
- "version": "v6.4.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache.git",
- "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a"
+ "reference": "8ac37acee794372f9732fe8a61a8221f6762148e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a",
- "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a",
+ "url": "https://api.github.com/repos/symfony/cache/zipball/8ac37acee794372f9732fe8a61a8221f6762148e",
+ "reference": "8ac37acee794372f9732fe8a61a8221f6762148e",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"psr/cache": "^2.0|^3.0",
"psr/log": "^1.1|^2|^3",
"symfony/cache-contracts": "^2.5|^3",
+ "symfony/deprecation-contracts": "^2.5|^3.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/var-exporter": "^6.3.6|^7.0"
+ "symfony/var-exporter": "^6.4|^7.0"
},
"conflict": {
- "doctrine/dbal": "<2.13.1",
- "symfony/dependency-injection": "<5.4",
- "symfony/http-kernel": "<5.4",
- "symfony/var-dumper": "<5.4"
+ "doctrine/dbal": "<3.6",
+ "symfony/dependency-injection": "<6.4",
+ "symfony/http-kernel": "<6.4",
+ "symfony/var-dumper": "<6.4"
},
"provide": {
"psr/cache-implementation": "2.0|3.0",
@@ -2163,15 +2171,15 @@
},
"require-dev": {
"cache/integration-tests": "dev-master",
- "doctrine/dbal": "^2.13.1|^3|^4",
+ "doctrine/dbal": "^3.6|^4",
"predis/predis": "^1.1|^2.0",
"psr/simple-cache": "^1.0|^2.0|^3.0",
- "symfony/config": "^5.4|^6.0|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/filesystem": "^5.4|^6.0|^7.0",
- "symfony/http-kernel": "^5.4|^6.0|^7.0",
- "symfony/messenger": "^5.4|^6.0|^7.0",
- "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/filesystem": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
+ "symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -2206,7 +2214,7 @@
"psr6"
],
"support": {
- "source": "https://github.com/symfony/cache/tree/v6.4.0"
+ "source": "https://github.com/symfony/cache/tree/v7.1.3"
},
"funding": [
{
@@ -2222,20 +2230,20 @@
"type": "tidelift"
}
],
- "time": "2023-11-24T19:28:07+00:00"
+ "time": "2024-07-17T06:10:24+00:00"
},
{
"name": "symfony/cache-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/cache-contracts.git",
- "reference": "1d74b127da04ffa87aa940abe15446fa89653778"
+ "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778",
- "reference": "1d74b127da04ffa87aa940abe15446fa89653778",
+ "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197",
+ "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197",
"shasum": ""
},
"require": {
@@ -2245,7 +2253,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2282,7 +2290,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -2298,20 +2306,20 @@
"type": "tidelift"
}
],
- "time": "2023-09-25T12:52:38+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/clock",
- "version": "v7.0.0",
+ "version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/clock.git",
- "reference": "c696b075befdd4bcffe5ef2eab9a32a1a9c0d29d"
+ "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/clock/zipball/c696b075befdd4bcffe5ef2eab9a32a1a9c0d29d",
- "reference": "c696b075befdd4bcffe5ef2eab9a32a1a9c0d29d",
+ "url": "https://api.github.com/repos/symfony/clock/zipball/3dfc8b084853586de51dd1441c6242c76a28cbe7",
+ "reference": "3dfc8b084853586de51dd1441c6242c76a28cbe7",
"shasum": ""
},
"require": {
@@ -2356,7 +2364,7 @@
"time"
],
"support": {
- "source": "https://github.com/symfony/clock/tree/v7.0.0"
+ "source": "https://github.com/symfony/clock/tree/v7.1.1"
},
"funding": [
{
@@ -2372,38 +2380,38 @@
"type": "tidelift"
}
],
- "time": "2023-11-25T20:15:12+00:00"
+ "time": "2024-05-31T14:57:53+00:00"
},
{
"name": "symfony/config",
- "version": "v6.4.0",
+ "version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/config.git",
- "reference": "5d33e0fb707d603330e0edfd4691803a1253572e"
+ "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/config/zipball/5d33e0fb707d603330e0edfd4691803a1253572e",
- "reference": "5d33e0fb707d603330e0edfd4691803a1253572e",
+ "url": "https://api.github.com/repos/symfony/config/zipball/2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2",
+ "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/filesystem": "^5.4|^6.0|^7.0",
+ "symfony/filesystem": "^7.1",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
- "symfony/finder": "<5.4",
+ "symfony/finder": "<6.4",
"symfony/service-contracts": "<2.5"
},
"require-dev": {
- "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
- "symfony/finder": "^5.4|^6.0|^7.0",
- "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/yaml": "^5.4|^6.0|^7.0"
+ "symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -2431,7 +2439,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.4.0"
+ "source": "https://github.com/symfony/config/tree/v7.1.1"
},
"funding": [
{
@@ -2447,51 +2455,50 @@
"type": "tidelift"
}
],
- "time": "2023-11-09T08:28:32+00:00"
+ "time": "2024-05-31T14:57:53+00:00"
},
{
"name": "symfony/console",
- "version": "v6.4.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd"
+ "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd",
- "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd",
+ "url": "https://api.github.com/repos/symfony/console/zipball/cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9",
+ "reference": "cb1dcb30ebc7005c29864ee78adb47b5fb7c3cd9",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/deprecation-contracts": "^2.5|^3",
+ "php": ">=8.2",
"symfony/polyfill-mbstring": "~1.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/string": "^5.4|^6.0|^7.0"
+ "symfony/string": "^6.4|^7.0"
},
"conflict": {
- "symfony/dependency-injection": "<5.4",
- "symfony/dotenv": "<5.4",
- "symfony/event-dispatcher": "<5.4",
- "symfony/lock": "<5.4",
- "symfony/process": "<5.4"
+ "symfony/dependency-injection": "<6.4",
+ "symfony/dotenv": "<6.4",
+ "symfony/event-dispatcher": "<6.4",
+ "symfony/lock": "<6.4",
+ "symfony/process": "<6.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
- "symfony/lock": "^5.4|^6.0|^7.0",
- "symfony/messenger": "^5.4|^6.0|^7.0",
- "symfony/process": "^5.4|^6.0|^7.0",
- "symfony/stopwatch": "^5.4|^6.0|^7.0",
- "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ "symfony/lock": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/stopwatch": "^6.4|^7.0",
+ "symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -2525,7 +2532,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.4.1"
+ "source": "https://github.com/symfony/console/tree/v7.1.3"
},
"funding": [
{
@@ -2541,44 +2548,43 @@
"type": "tidelift"
}
],
- "time": "2023-11-30T10:54:28+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/dependency-injection",
- "version": "v6.4.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dependency-injection.git",
- "reference": "f88ff6428afbeb17cc648c8003bd608534750baf"
+ "reference": "8126f0be4ff984e4db0140e60917900a53facb49"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f88ff6428afbeb17cc648c8003bd608534750baf",
- "reference": "f88ff6428afbeb17cc648c8003bd608534750baf",
+ "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8126f0be4ff984e4db0140e60917900a53facb49",
+ "reference": "8126f0be4ff984e4db0140e60917900a53facb49",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"psr/container": "^1.1|^2.0",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/service-contracts": "^2.5|^3.0",
- "symfony/var-exporter": "^6.2.10|^7.0"
+ "symfony/service-contracts": "^3.5",
+ "symfony/var-exporter": "^6.4|^7.0"
},
"conflict": {
"ext-psr": "<1.1|>=2",
- "symfony/config": "<6.1",
- "symfony/finder": "<5.4",
- "symfony/proxy-manager-bridge": "<6.3",
- "symfony/yaml": "<5.4"
+ "symfony/config": "<6.4",
+ "symfony/finder": "<6.4",
+ "symfony/yaml": "<6.4"
},
"provide": {
"psr/container-implementation": "1.1|2.0",
"symfony/service-implementation": "1.1|2.0|3.0"
},
"require-dev": {
- "symfony/config": "^6.1|^7.0",
- "symfony/expression-language": "^5.4|^6.0|^7.0",
- "symfony/yaml": "^5.4|^6.0|^7.0"
+ "symfony/config": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -2606,7 +2612,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.4.1"
+ "source": "https://github.com/symfony/dependency-injection/tree/v7.1.3"
},
"funding": [
{
@@ -2622,20 +2628,20 @@
"type": "tidelift"
}
],
- "time": "2023-12-01T14:56:37+00:00"
+ "time": "2024-07-26T07:35:39+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf"
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf",
- "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
+ "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1",
"shasum": ""
},
"require": {
@@ -2644,7 +2650,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2673,7 +2679,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.4.0"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -2689,32 +2695,32 @@
"type": "tidelift"
}
],
- "time": "2023-05-23T14:45:45+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/dotenv",
- "version": "v6.4.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/dotenv.git",
- "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f"
+ "reference": "a26be30fd61678dab694a18a85084cea7673bbf3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dotenv/zipball/d0d584a91422ddaa2c94317200d4c4e5b935555f",
- "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f",
+ "url": "https://api.github.com/repos/symfony/dotenv/zipball/a26be30fd61678dab694a18a85084cea7673bbf3",
+ "reference": "a26be30fd61678dab694a18a85084cea7673bbf3",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2"
},
"conflict": {
- "symfony/console": "<5.4",
- "symfony/process": "<5.4"
+ "symfony/console": "<6.4",
+ "symfony/process": "<6.4"
},
"require-dev": {
- "symfony/console": "^5.4|^6.0|^7.0",
- "symfony/process": "^5.4|^6.0|^7.0"
+ "symfony/console": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -2747,7 +2753,7 @@
"environment"
],
"support": {
- "source": "https://github.com/symfony/dotenv/tree/v6.4.0"
+ "source": "https://github.com/symfony/dotenv/tree/v7.1.3"
},
"funding": [
{
@@ -2763,26 +2769,26 @@
"type": "tidelift"
}
],
- "time": "2023-10-26T18:19:48+00:00"
+ "time": "2024-07-09T19:36:07+00:00"
},
{
"name": "symfony/error-handler",
- "version": "v6.4.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788"
+ "reference": "432bb369952795c61ca1def65e078c4a80dad13c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788",
- "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/432bb369952795c61ca1def65e078c4a80dad13c",
+ "reference": "432bb369952795c61ca1def65e078c4a80dad13c",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"psr/log": "^1|^2|^3",
- "symfony/var-dumper": "^5.4|^6.0|^7.0"
+ "symfony/var-dumper": "^6.4|^7.0"
},
"conflict": {
"symfony/deprecation-contracts": "<2.5",
@@ -2791,7 +2797,7 @@
"require-dev": {
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/http-kernel": "^6.4|^7.0",
- "symfony/serializer": "^5.4|^6.0|^7.0"
+ "symfony/serializer": "^6.4|^7.0"
},
"bin": [
"Resources/bin/patch-type-declarations"
@@ -2822,7 +2828,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.4.0"
+ "source": "https://github.com/symfony/error-handler/tree/v7.1.3"
},
"funding": [
{
@@ -2838,28 +2844,28 @@
"type": "tidelift"
}
],
- "time": "2023-10-18T09:43:34+00:00"
+ "time": "2024-07-26T13:02:51+00:00"
},
{
"name": "symfony/event-dispatcher",
- "version": "v6.4.0",
+ "version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher.git",
- "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6"
+ "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6",
- "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7",
+ "reference": "9fa7f7a21beb22a39a8f3f28618b29e50d7a55a7",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/event-dispatcher-contracts": "^2.5|^3"
},
"conflict": {
- "symfony/dependency-injection": "<5.4",
+ "symfony/dependency-injection": "<6.4",
"symfony/service-contracts": "<2.5"
},
"provide": {
@@ -2868,13 +2874,13 @@
},
"require-dev": {
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/error-handler": "^5.4|^6.0|^7.0",
- "symfony/expression-language": "^5.4|^6.0|^7.0",
- "symfony/http-foundation": "^5.4|^6.0|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/stopwatch": "^5.4|^6.0|^7.0"
+ "symfony/stopwatch": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -2902,7 +2908,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.4.0"
+ "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.1"
},
"funding": [
{
@@ -2918,20 +2924,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-27T06:52:43+00:00"
+ "time": "2024-05-31T14:57:53+00:00"
},
{
"name": "symfony/event-dispatcher-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/event-dispatcher-contracts.git",
- "reference": "a76aed96a42d2b521153fb382d418e30d18b59df"
+ "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df",
- "reference": "a76aed96a42d2b521153fb382d418e30d18b59df",
+ "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50",
+ "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50",
"shasum": ""
},
"require": {
@@ -2941,7 +2947,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -2978,7 +2984,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -2994,20 +3000,20 @@
"type": "tidelift"
}
],
- "time": "2023-05-23T14:45:45+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/filesystem",
- "version": "v7.0.0",
+ "version": "v7.1.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7"
+ "reference": "92a91985250c251de9b947a14bb2c9390b1a562c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/7da8ea2362a283771478c5f7729cfcb43a76b8b7",
- "reference": "7da8ea2362a283771478c5f7729cfcb43a76b8b7",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/92a91985250c251de9b947a14bb2c9390b1a562c",
+ "reference": "92a91985250c251de9b947a14bb2c9390b1a562c",
"shasum": ""
},
"require": {
@@ -3015,6 +3021,9 @@
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.8"
},
+ "require-dev": {
+ "symfony/process": "^6.4|^7.0"
+ },
"type": "library",
"autoload": {
"psr-4": {
@@ -3041,7 +3050,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v7.0.0"
+ "source": "https://github.com/symfony/filesystem/tree/v7.1.2"
},
"funding": [
{
@@ -3057,20 +3066,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-27T06:33:22+00:00"
+ "time": "2024-06-28T10:03:55+00:00"
},
{
"name": "symfony/finder",
- "version": "v7.0.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56"
+ "reference": "717c6329886f32dc65e27461f80f2a465412fdca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
- "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/717c6329886f32dc65e27461f80f2a465412fdca",
+ "reference": "717c6329886f32dc65e27461f80f2a465412fdca",
"shasum": ""
},
"require": {
@@ -3105,7 +3114,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.0.0"
+ "source": "https://github.com/symfony/finder/tree/v7.1.3"
},
"funding": [
{
@@ -3121,111 +3130,110 @@
"type": "tidelift"
}
],
- "time": "2023-10-31T17:59:56+00:00"
+ "time": "2024-07-24T07:08:44+00:00"
},
{
"name": "symfony/framework-bundle",
- "version": "v6.4.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/framework-bundle.git",
- "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa"
+ "reference": "a32ec544bd501eb4619eb977860ad3076ee55061"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ac22d760bf9ff4440a1b6c7caef34d38b44290aa",
- "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa",
+ "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/a32ec544bd501eb4619eb977860ad3076ee55061",
+ "reference": "a32ec544bd501eb4619eb977860ad3076ee55061",
"shasum": ""
},
"require": {
"composer-runtime-api": ">=2.1",
"ext-xml": "*",
- "php": ">=8.1",
- "symfony/cache": "^5.4|^6.0|^7.0",
- "symfony/config": "^6.1|^7.0",
- "symfony/dependency-injection": "^6.4|^7.0",
+ "php": ">=8.2",
+ "symfony/cache": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^7.1",
"symfony/deprecation-contracts": "^2.5|^3",
- "symfony/error-handler": "^6.1|^7.0",
- "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
- "symfony/filesystem": "^5.4|^6.0|^7.0",
- "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/error-handler": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^6.4|^7.0",
+ "symfony/filesystem": "^7.1",
+ "symfony/finder": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
- "symfony/http-kernel": "^6.4",
+ "symfony/http-kernel": "^6.4|^7.0",
"symfony/polyfill-mbstring": "~1.0",
"symfony/routing": "^6.4|^7.0"
},
"conflict": {
- "doctrine/annotations": "<1.13.1",
"doctrine/persistence": "<1.3",
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
- "symfony/asset": "<5.4",
+ "symfony/asset": "<6.4",
"symfony/asset-mapper": "<6.4",
- "symfony/clock": "<6.3",
- "symfony/console": "<5.4",
+ "symfony/clock": "<6.4",
+ "symfony/console": "<6.4",
"symfony/dom-crawler": "<6.4",
- "symfony/dotenv": "<5.4",
- "symfony/form": "<5.4",
- "symfony/http-client": "<6.3",
- "symfony/lock": "<5.4",
- "symfony/mailer": "<5.4",
- "symfony/messenger": "<6.3",
+ "symfony/dotenv": "<6.4",
+ "symfony/form": "<6.4",
+ "symfony/http-client": "<6.4",
+ "symfony/lock": "<6.4",
+ "symfony/mailer": "<6.4",
+ "symfony/messenger": "<6.4",
"symfony/mime": "<6.4",
- "symfony/property-access": "<5.4",
- "symfony/property-info": "<5.4",
- "symfony/scheduler": "<6.4",
- "symfony/security-core": "<5.4",
- "symfony/security-csrf": "<5.4",
+ "symfony/property-access": "<6.4",
+ "symfony/property-info": "<6.4",
+ "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4",
+ "symfony/security-core": "<6.4",
+ "symfony/security-csrf": "<6.4",
"symfony/serializer": "<6.4",
- "symfony/stopwatch": "<5.4",
+ "symfony/stopwatch": "<6.4",
"symfony/translation": "<6.4",
- "symfony/twig-bridge": "<5.4",
- "symfony/twig-bundle": "<5.4",
+ "symfony/twig-bridge": "<6.4",
+ "symfony/twig-bundle": "<6.4",
"symfony/validator": "<6.4",
"symfony/web-profiler-bundle": "<6.4",
"symfony/workflow": "<6.4"
},
"require-dev": {
- "doctrine/annotations": "^1.13.1|^2",
"doctrine/persistence": "^1.3|^2|^3",
"dragonmantank/cron-expression": "^3.1",
"phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0",
"seld/jsonlint": "^1.10",
- "symfony/asset": "^5.4|^6.0|^7.0",
+ "symfony/asset": "^6.4|^7.0",
"symfony/asset-mapper": "^6.4|^7.0",
- "symfony/browser-kit": "^5.4|^6.0|^7.0",
- "symfony/clock": "^6.2|^7.0",
- "symfony/console": "^5.4.9|^6.0.9|^7.0",
- "symfony/css-selector": "^5.4|^6.0|^7.0",
+ "symfony/browser-kit": "^6.4|^7.0",
+ "symfony/clock": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/css-selector": "^6.4|^7.0",
"symfony/dom-crawler": "^6.4|^7.0",
- "symfony/dotenv": "^5.4|^6.0|^7.0",
- "symfony/expression-language": "^5.4|^6.0|^7.0",
- "symfony/form": "^5.4|^6.0|^7.0",
- "symfony/html-sanitizer": "^6.1|^7.0",
- "symfony/http-client": "^6.3|^7.0",
- "symfony/lock": "^5.4|^6.0|^7.0",
- "symfony/mailer": "^5.4|^6.0|^7.0",
- "symfony/messenger": "^6.3|^7.0",
+ "symfony/dotenv": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/form": "^6.4|^7.0",
+ "symfony/html-sanitizer": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/lock": "^6.4|^7.0",
+ "symfony/mailer": "^6.4|^7.0",
+ "symfony/messenger": "^6.4|^7.0",
"symfony/mime": "^6.4|^7.0",
- "symfony/notifier": "^5.4|^6.0|^7.0",
+ "symfony/notifier": "^6.4|^7.0",
"symfony/polyfill-intl-icu": "~1.0",
- "symfony/process": "^5.4|^6.0|^7.0",
- "symfony/property-info": "^5.4|^6.0|^7.0",
- "symfony/rate-limiter": "^5.4|^6.0|^7.0",
- "symfony/scheduler": "^6.4|^7.0",
- "symfony/security-bundle": "^5.4|^6.0|^7.0",
- "symfony/semaphore": "^5.4|^6.0|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/property-info": "^6.4|^7.0",
+ "symfony/rate-limiter": "^6.4|^7.0",
+ "symfony/scheduler": "^6.4.4|^7.0.4",
+ "symfony/security-bundle": "^6.4|^7.0",
+ "symfony/semaphore": "^6.4|^7.0",
"symfony/serializer": "^6.4|^7.0",
- "symfony/stopwatch": "^5.4|^6.0|^7.0",
- "symfony/string": "^5.4|^6.0|^7.0",
+ "symfony/stopwatch": "^6.4|^7.0",
+ "symfony/string": "^6.4|^7.0",
"symfony/translation": "^6.4|^7.0",
- "symfony/twig-bundle": "^5.4|^6.0|^7.0",
- "symfony/uid": "^5.4|^6.0|^7.0",
+ "symfony/twig-bundle": "^6.4|^7.0",
+ "symfony/type-info": "^7.1",
+ "symfony/uid": "^6.4|^7.0",
"symfony/validator": "^6.4|^7.0",
- "symfony/web-link": "^5.4|^6.0|^7.0",
+ "symfony/web-link": "^6.4|^7.0",
"symfony/workflow": "^6.4|^7.0",
- "symfony/yaml": "^5.4|^6.0|^7.0",
- "twig/twig": "^2.10|^3.0"
+ "symfony/yaml": "^6.4|^7.0",
+ "twig/twig": "^3.0.4"
},
"type": "symfony-bundle",
"autoload": {
@@ -3253,7 +3261,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.4.1"
+ "source": "https://github.com/symfony/framework-bundle/tree/v7.1.3"
},
"funding": [
{
@@ -3269,20 +3277,20 @@
"type": "tidelift"
}
],
- "time": "2023-12-01T16:35:22+00:00"
+ "time": "2024-07-26T13:24:34+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v7.0.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "47d72323200934694def5d57083899d774a2b110"
+ "reference": "f602d5c17d1fa02f8019ace2687d9d136b7f4a1a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/47d72323200934694def5d57083899d774a2b110",
- "reference": "47d72323200934694def5d57083899d774a2b110",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f602d5c17d1fa02f8019ace2687d9d136b7f4a1a",
+ "reference": "f602d5c17d1fa02f8019ace2687d9d136b7f4a1a",
"shasum": ""
},
"require": {
@@ -3330,7 +3338,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v7.0.0"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.1.3"
},
"funding": [
{
@@ -3346,76 +3354,77 @@
"type": "tidelift"
}
],
- "time": "2023-11-07T15:10:37+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v6.4.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "2953274c16a229b3933ef73a6898e18388e12e1b"
+ "reference": "db9702f3a04cc471ec8c70e881825db26ac5f186"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b",
- "reference": "2953274c16a229b3933ef73a6898e18388e12e1b",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/db9702f3a04cc471ec8c70e881825db26ac5f186",
+ "reference": "db9702f3a04cc471ec8c70e881825db26ac5f186",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"psr/log": "^1|^2|^3",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/error-handler": "^6.4|^7.0",
- "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^6.4|^7.0",
"symfony/http-foundation": "^6.4|^7.0",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/browser-kit": "<5.4",
- "symfony/cache": "<5.4",
- "symfony/config": "<6.1",
- "symfony/console": "<5.4",
+ "symfony/browser-kit": "<6.4",
+ "symfony/cache": "<6.4",
+ "symfony/config": "<6.4",
+ "symfony/console": "<6.4",
"symfony/dependency-injection": "<6.4",
- "symfony/doctrine-bridge": "<5.4",
- "symfony/form": "<5.4",
- "symfony/http-client": "<5.4",
+ "symfony/doctrine-bridge": "<6.4",
+ "symfony/form": "<6.4",
+ "symfony/http-client": "<6.4",
"symfony/http-client-contracts": "<2.5",
- "symfony/mailer": "<5.4",
- "symfony/messenger": "<5.4",
- "symfony/translation": "<5.4",
+ "symfony/mailer": "<6.4",
+ "symfony/messenger": "<6.4",
+ "symfony/translation": "<6.4",
"symfony/translation-contracts": "<2.5",
- "symfony/twig-bridge": "<5.4",
+ "symfony/twig-bridge": "<6.4",
"symfony/validator": "<6.4",
- "symfony/var-dumper": "<6.3",
- "twig/twig": "<2.13"
+ "symfony/var-dumper": "<6.4",
+ "twig/twig": "<3.0.4"
},
"provide": {
"psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
- "symfony/browser-kit": "^5.4|^6.0|^7.0",
- "symfony/clock": "^6.2|^7.0",
- "symfony/config": "^6.1|^7.0",
- "symfony/console": "^5.4|^6.0|^7.0",
- "symfony/css-selector": "^5.4|^6.0|^7.0",
+ "symfony/browser-kit": "^6.4|^7.0",
+ "symfony/clock": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/css-selector": "^6.4|^7.0",
"symfony/dependency-injection": "^6.4|^7.0",
- "symfony/dom-crawler": "^5.4|^6.0|^7.0",
- "symfony/expression-language": "^5.4|^6.0|^7.0",
- "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/dom-crawler": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
"symfony/http-client-contracts": "^2.5|^3",
- "symfony/process": "^5.4|^6.0|^7.0",
- "symfony/property-access": "^5.4.5|^6.0.5|^7.0",
- "symfony/routing": "^5.4|^6.0|^7.0",
- "symfony/serializer": "^6.3|^7.0",
- "symfony/stopwatch": "^5.4|^6.0|^7.0",
- "symfony/translation": "^5.4|^6.0|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/property-access": "^7.1",
+ "symfony/routing": "^6.4|^7.0",
+ "symfony/serializer": "^7.1",
+ "symfony/stopwatch": "^6.4|^7.0",
+ "symfony/translation": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3",
- "symfony/uid": "^5.4|^6.0|^7.0",
+ "symfony/uid": "^6.4|^7.0",
"symfony/validator": "^6.4|^7.0",
- "symfony/var-exporter": "^6.2|^7.0",
- "twig/twig": "^2.13|^3.0.4"
+ "symfony/var-dumper": "^6.4|^7.0",
+ "symfony/var-exporter": "^6.4|^7.0",
+ "twig/twig": "^3.0.4"
},
"type": "library",
"autoload": {
@@ -3443,7 +3452,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.4.1"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.1.3"
},
"funding": [
{
@@ -3459,50 +3468,49 @@
"type": "tidelift"
}
],
- "time": "2023-12-01T17:02:02+00:00"
+ "time": "2024-07-26T14:58:15+00:00"
},
{
"name": "symfony/messenger",
- "version": "v6.4.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/messenger.git",
- "reference": "a6f32d0e9b9c7d2d47c7bea3cd1e8a9c0f781fb4"
+ "reference": "604e182a7758ceea35921a8ad5dd492a6e13bae4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/messenger/zipball/a6f32d0e9b9c7d2d47c7bea3cd1e8a9c0f781fb4",
- "reference": "a6f32d0e9b9c7d2d47c7bea3cd1e8a9c0f781fb4",
+ "url": "https://api.github.com/repos/symfony/messenger/zipball/604e182a7758ceea35921a8ad5dd492a6e13bae4",
+ "reference": "604e182a7758ceea35921a8ad5dd492a6e13bae4",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"psr/log": "^1|^2|^3",
- "symfony/clock": "^6.3|^7.0",
- "symfony/deprecation-contracts": "^2.5|^3"
+ "symfony/clock": "^6.4|^7.0"
},
"conflict": {
- "symfony/console": "<6.3",
- "symfony/event-dispatcher": "<5.4",
+ "symfony/console": "<6.4",
+ "symfony/event-dispatcher": "<6.4",
"symfony/event-dispatcher-contracts": "<2.5",
- "symfony/framework-bundle": "<5.4",
- "symfony/http-kernel": "<5.4",
- "symfony/serializer": "<5.4"
+ "symfony/framework-bundle": "<6.4",
+ "symfony/http-kernel": "<6.4",
+ "symfony/serializer": "<6.4"
},
"require-dev": {
"psr/cache": "^1.0|^2.0|^3.0",
- "symfony/console": "^6.3|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
- "symfony/http-kernel": "^5.4|^6.0|^7.0",
- "symfony/process": "^5.4|^6.0|^7.0",
- "symfony/property-access": "^5.4|^6.0|^7.0",
- "symfony/rate-limiter": "^5.4|^6.0|^7.0",
- "symfony/routing": "^5.4|^6.0|^7.0",
- "symfony/serializer": "^5.4|^6.0|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/event-dispatcher": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0",
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/rate-limiter": "^6.4|^7.0",
+ "symfony/routing": "^6.4|^7.0",
+ "symfony/serializer": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/stopwatch": "^5.4|^6.0|^7.0",
- "symfony/validator": "^5.4|^6.0|^7.0"
+ "symfony/stopwatch": "^6.4|^7.0",
+ "symfony/validator": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -3530,7 +3538,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.4.0"
+ "source": "https://github.com/symfony/messenger/tree/v7.1.3"
},
"funding": [
{
@@ -3546,20 +3554,20 @@
"type": "tidelift"
}
],
- "time": "2023-11-24T19:28:07+00:00"
+ "time": "2024-07-09T19:36:07+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.28.0",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
- "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb"
+ "reference": "0424dff1c58f028c451efff2045f5d92410bd540"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
- "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/0424dff1c58f028c451efff2045f5d92410bd540",
+ "reference": "0424dff1c58f028c451efff2045f5d92410bd540",
"shasum": ""
},
"require": {
@@ -3573,9 +3581,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3612,7 +3617,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.30.0"
},
"funding": [
{
@@ -3628,20 +3633,20 @@
"type": "tidelift"
}
],
- "time": "2023-01-26T09:26:14+00:00"
+ "time": "2024-05-31T15:07:36+00:00"
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.28.0",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "875e90aeea2777b6f135677f618529449334a612"
+ "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612",
- "reference": "875e90aeea2777b6f135677f618529449334a612",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/64647a7c30b2283f5d49b874d84a18fc22054b7a",
+ "reference": "64647a7c30b2283f5d49b874d84a18fc22054b7a",
"shasum": ""
},
"require": {
@@ -3652,9 +3657,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3693,7 +3695,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.30.0"
},
"funding": [
{
@@ -3709,20 +3711,20 @@
"type": "tidelift"
}
],
- "time": "2023-01-26T09:26:14+00:00"
+ "time": "2024-05-31T15:07:36+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.28.0",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92"
+ "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
- "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/a95281b0be0d9ab48050ebd988b967875cdb9fdb",
+ "reference": "a95281b0be0d9ab48050ebd988b967875cdb9fdb",
"shasum": ""
},
"require": {
@@ -3733,9 +3735,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3777,7 +3776,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.30.0"
},
"funding": [
{
@@ -3793,20 +3792,20 @@
"type": "tidelift"
}
],
- "time": "2023-01-26T09:26:14+00:00"
+ "time": "2024-05-31T15:07:36+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.28.0",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "42292d99c55abe617799667f454222c54c60e229"
+ "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229",
- "reference": "42292d99c55abe617799667f454222c54c60e229",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c",
+ "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c",
"shasum": ""
},
"require": {
@@ -3820,9 +3819,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3860,7 +3856,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0"
},
"funding": [
{
@@ -3876,20 +3872,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-28T09:04:16+00:00"
+ "time": "2024-06-19T12:30:46+00:00"
},
{
"name": "symfony/polyfill-php72",
- "version": "v1.28.0",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php72.git",
- "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179"
+ "reference": "10112722600777e02d2745716b70c5db4ca70442"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/70f4aebd92afca2f865444d30a4d2151c13c3179",
- "reference": "70f4aebd92afca2f865444d30a4d2151c13c3179",
+ "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/10112722600777e02d2745716b70c5db4ca70442",
+ "reference": "10112722600777e02d2745716b70c5db4ca70442",
"shasum": ""
},
"require": {
@@ -3897,9 +3893,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -3936,7 +3929,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php72/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-php72/tree/v1.30.0"
},
"funding": [
{
@@ -3952,20 +3945,20 @@
"type": "tidelift"
}
],
- "time": "2023-01-26T09:26:14+00:00"
+ "time": "2024-06-19T12:30:46+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.28.0",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5"
+ "reference": "77fa7995ac1b21ab60769b7323d600a991a90433"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
- "reference": "6caa57379c4aec19c0a12a38b59b26487dcfe4b5",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/77fa7995ac1b21ab60769b7323d600a991a90433",
+ "reference": "77fa7995ac1b21ab60769b7323d600a991a90433",
"shasum": ""
},
"require": {
@@ -3973,9 +3966,6 @@
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -4019,7 +4009,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.30.0"
},
"funding": [
{
@@ -4035,31 +4025,27 @@
"type": "tidelift"
}
],
- "time": "2023-01-26T09:26:14+00:00"
+ "time": "2024-05-31T15:07:36+00:00"
},
{
"name": "symfony/polyfill-php83",
- "version": "v1.28.0",
+ "version": "v1.30.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php83.git",
- "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11"
+ "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11",
- "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
+ "reference": "dbdcdf1a4dcc2743591f1079d0c35ab1e2dcbbc9",
"shasum": ""
},
"require": {
- "php": ">=7.1",
- "symfony/polyfill-php80": "^1.14"
+ "php": ">=7.1"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "1.28-dev"
- },
"thanks": {
"name": "symfony/polyfill",
"url": "https://github.com/symfony/polyfill"
@@ -4099,7 +4085,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0"
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.30.0"
},
"funding": [
{
@@ -4115,20 +4101,20 @@
"type": "tidelift"
}
],
- "time": "2023-08-16T06:22:46+00:00"
+ "time": "2024-06-19T12:35:24+00:00"
},
{
"name": "symfony/routing",
- "version": "v7.0.1",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "fc55062907669835af6408558ae4d1dafef74b1e"
+ "reference": "8a908a3f22d5a1b5d297578c2ceb41b02fa916d0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/fc55062907669835af6408558ae4d1dafef74b1e",
- "reference": "fc55062907669835af6408558ae4d1dafef74b1e",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/8a908a3f22d5a1b5d297578c2ceb41b02fa916d0",
+ "reference": "8a908a3f22d5a1b5d297578c2ceb41b02fa916d0",
"shasum": ""
},
"require": {
@@ -4180,7 +4166,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v7.0.1"
+ "source": "https://github.com/symfony/routing/tree/v7.1.3"
},
"funding": [
{
@@ -4196,25 +4182,26 @@
"type": "tidelift"
}
],
- "time": "2023-12-01T15:10:06+00:00"
+ "time": "2024-07-17T06:10:24+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838"
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838",
- "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
+ "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f",
"shasum": ""
},
"require": {
"php": ">=8.1",
- "psr/container": "^2.0"
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
},
"conflict": {
"ext-psr": "<1.1|>=2"
@@ -4222,7 +4209,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -4262,7 +4249,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -4278,20 +4265,20 @@
"type": "tidelift"
}
],
- "time": "2023-07-30T20:28:31+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/string",
- "version": "v7.0.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620"
+ "reference": "ea272a882be7f20cad58d5d78c215001617b7f07"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/92bd2bfbba476d4a1838e5e12168bef2fd1e6620",
- "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620",
+ "url": "https://api.github.com/repos/symfony/string/zipball/ea272a882be7f20cad58d5d78c215001617b7f07",
+ "reference": "ea272a882be7f20cad58d5d78c215001617b7f07",
"shasum": ""
},
"require": {
@@ -4305,6 +4292,7 @@
"symfony/translation-contracts": "<2.5"
},
"require-dev": {
+ "symfony/emoji": "^7.1",
"symfony/error-handler": "^6.4|^7.0",
"symfony/http-client": "^6.4|^7.0",
"symfony/intl": "^6.4|^7.0",
@@ -4348,7 +4336,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.0.0"
+ "source": "https://github.com/symfony/string/tree/v7.1.3"
},
"funding": [
{
@@ -4364,20 +4352,20 @@
"type": "tidelift"
}
],
- "time": "2023-11-29T08:40:23+00:00"
+ "time": "2024-07-22T10:25:37+00:00"
},
{
"name": "symfony/translation-contracts",
- "version": "v3.4.0",
+ "version": "v3.5.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation-contracts.git",
- "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5"
+ "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5",
- "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5",
+ "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
+ "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a",
"shasum": ""
},
"require": {
@@ -4386,7 +4374,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "3.4-dev"
+ "dev-main": "3.5-dev"
},
"thanks": {
"name": "symfony/contracts",
@@ -4426,7 +4414,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0"
+ "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0"
},
"funding": [
{
@@ -4442,69 +4430,69 @@
"type": "tidelift"
}
],
- "time": "2023-07-25T15:08:44+00:00"
+ "time": "2024-04-18T09:32:20+00:00"
},
{
"name": "symfony/twig-bridge",
- "version": "v6.4.0",
+ "version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bridge.git",
- "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf"
+ "reference": "96e6e12a63db80bcedefc012042d2cb2d1a015f8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf",
- "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf",
+ "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/96e6e12a63db80bcedefc012042d2cb2d1a015f8",
+ "reference": "96e6e12a63db80bcedefc012042d2cb2d1a015f8",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/deprecation-contracts": "^2.5|^3",
+ "php": ">=8.2",
"symfony/translation-contracts": "^2.5|^3",
- "twig/twig": "^2.13|^3.0.4"
+ "twig/twig": "^3.9"
},
"conflict": {
"phpdocumentor/reflection-docblock": "<3.2.2",
"phpdocumentor/type-resolver": "<1.4.0",
- "symfony/console": "<5.4",
- "symfony/form": "<6.3",
- "symfony/http-foundation": "<5.4",
+ "symfony/console": "<6.4",
+ "symfony/form": "<6.4",
+ "symfony/http-foundation": "<6.4",
"symfony/http-kernel": "<6.4",
- "symfony/mime": "<6.2",
+ "symfony/mime": "<6.4",
"symfony/serializer": "<6.4",
- "symfony/translation": "<5.4",
- "symfony/workflow": "<5.4"
+ "symfony/translation": "<6.4",
+ "symfony/workflow": "<6.4"
},
"require-dev": {
"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|^7.0",
- "symfony/asset-mapper": "^6.3|^7.0",
- "symfony/console": "^5.4|^6.0|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/expression-language": "^5.4|^6.0|^7.0",
- "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/asset": "^6.4|^7.0",
+ "symfony/asset-mapper": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/emoji": "^7.1",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
"symfony/form": "^6.4|^7.0",
- "symfony/html-sanitizer": "^6.1|^7.0",
- "symfony/http-foundation": "^5.4|^6.0|^7.0",
+ "symfony/html-sanitizer": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
"symfony/http-kernel": "^6.4|^7.0",
- "symfony/intl": "^5.4|^6.0|^7.0",
- "symfony/mime": "^6.2|^7.0",
+ "symfony/intl": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
"symfony/polyfill-intl-icu": "~1.0",
- "symfony/property-info": "^5.4|^6.0|^7.0",
- "symfony/routing": "^5.4|^6.0|^7.0",
+ "symfony/property-info": "^6.4|^7.0",
+ "symfony/routing": "^6.4|^7.0",
"symfony/security-acl": "^2.8|^3.0",
- "symfony/security-core": "^5.4|^6.0|^7.0",
- "symfony/security-csrf": "^5.4|^6.0|^7.0",
- "symfony/security-http": "^5.4|^6.0|^7.0",
- "symfony/serializer": "^6.4|^7.0",
- "symfony/stopwatch": "^5.4|^6.0|^7.0",
- "symfony/translation": "^6.1|^7.0",
- "symfony/web-link": "^5.4|^6.0|^7.0",
- "symfony/workflow": "^5.4|^6.0|^7.0",
- "symfony/yaml": "^5.4|^6.0|^7.0",
+ "symfony/security-core": "^6.4|^7.0",
+ "symfony/security-csrf": "^6.4|^7.0",
+ "symfony/security-http": "^6.4|^7.0",
+ "symfony/serializer": "^6.4.3|^7.0.3",
+ "symfony/stopwatch": "^6.4|^7.0",
+ "symfony/translation": "^6.4|^7.0",
+ "symfony/web-link": "^6.4|^7.0",
+ "symfony/workflow": "^6.4|^7.0",
+ "symfony/yaml": "^6.4|^7.0",
"twig/cssinliner-extra": "^2.12|^3",
"twig/inky-extra": "^2.12|^3",
"twig/markdown-extra": "^2.12|^3"
@@ -4535,7 +4523,7 @@
"description": "Provides integration for Twig with various Symfony components",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/twig-bridge/tree/v6.4.0"
+ "source": "https://github.com/symfony/twig-bridge/tree/v7.1.1"
},
"funding": [
{
@@ -4551,47 +4539,47 @@
"type": "tidelift"
}
],
- "time": "2023-11-25T08:25:13+00:00"
+ "time": "2024-05-31T14:57:53+00:00"
},
{
"name": "symfony/twig-bundle",
- "version": "v6.4.0",
+ "version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/twig-bundle.git",
- "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c"
+ "reference": "d48c2f08c2f315e749f0e18fc4945b7be8afe1e5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/35d84393e598dfb774e6a2bf49e5229a8a6dbe4c",
- "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c",
+ "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/d48c2f08c2f315e749f0e18fc4945b7be8afe1e5",
+ "reference": "d48c2f08c2f315e749f0e18fc4945b7be8afe1e5",
"shasum": ""
},
"require": {
"composer-runtime-api": ">=2.1",
- "php": ">=8.1",
- "symfony/config": "^6.1|^7.0",
- "symfony/dependency-injection": "^6.1|^7.0",
- "symfony/http-foundation": "^5.4|^6.0|^7.0",
- "symfony/http-kernel": "^6.2",
- "symfony/twig-bridge": "^6.4",
- "twig/twig": "^2.13|^3.0.4"
+ "php": ">=8.2",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/twig-bridge": "^6.4|^7.0",
+ "twig/twig": "^3.0.4"
},
"conflict": {
- "symfony/framework-bundle": "<5.4",
- "symfony/translation": "<5.4"
+ "symfony/framework-bundle": "<6.4",
+ "symfony/translation": "<6.4"
},
"require-dev": {
- "symfony/asset": "^5.4|^6.0|^7.0",
- "symfony/expression-language": "^5.4|^6.0|^7.0",
- "symfony/finder": "^5.4|^6.0|^7.0",
- "symfony/form": "^5.4|^6.0|^7.0",
- "symfony/framework-bundle": "^5.4|^6.0|^7.0",
- "symfony/routing": "^5.4|^6.0|^7.0",
- "symfony/stopwatch": "^5.4|^6.0|^7.0",
- "symfony/translation": "^5.4|^6.0|^7.0",
- "symfony/web-link": "^5.4|^6.0|^7.0",
- "symfony/yaml": "^5.4|^6.0|^7.0"
+ "symfony/asset": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/form": "^6.4|^7.0",
+ "symfony/framework-bundle": "^6.4|^7.0",
+ "symfony/routing": "^6.4|^7.0",
+ "symfony/stopwatch": "^6.4|^7.0",
+ "symfony/translation": "^6.4|^7.0",
+ "symfony/web-link": "^6.4|^7.0",
+ "symfony/yaml": "^6.4|^7.0"
},
"type": "symfony-bundle",
"autoload": {
@@ -4619,7 +4607,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.4.0"
+ "source": "https://github.com/symfony/twig-bundle/tree/v7.1.1"
},
"funding": [
{
@@ -4635,24 +4623,24 @@
"type": "tidelift"
}
],
- "time": "2023-11-07T14:57:07+00:00"
+ "time": "2024-05-31T14:57:53+00:00"
},
{
"name": "symfony/validator",
- "version": "v6.4.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/validator.git",
- "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c"
+ "reference": "ba711a6cfc008544dad059abb3c1d997f1472237"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/validator/zipball/33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c",
- "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c",
+ "url": "https://api.github.com/repos/symfony/validator/zipball/ba711a6cfc008544dad059abb3c1d997f1472237",
+ "reference": "ba711a6cfc008544dad059abb3c1d997f1472237",
"shasum": ""
},
"require": {
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0",
@@ -4660,34 +4648,34 @@
"symfony/translation-contracts": "^2.5|^3"
},
"conflict": {
- "doctrine/annotations": "<1.13",
"doctrine/lexer": "<1.1",
- "symfony/dependency-injection": "<5.4",
- "symfony/expression-language": "<5.4",
- "symfony/http-kernel": "<5.4",
- "symfony/intl": "<5.4",
- "symfony/property-info": "<5.4",
- "symfony/translation": "<5.4",
- "symfony/yaml": "<5.4"
+ "symfony/dependency-injection": "<6.4",
+ "symfony/doctrine-bridge": "<7.0",
+ "symfony/expression-language": "<6.4",
+ "symfony/http-kernel": "<6.4",
+ "symfony/intl": "<6.4",
+ "symfony/property-info": "<6.4",
+ "symfony/translation": "<6.4.3|>=7.0,<7.0.3",
+ "symfony/yaml": "<6.4"
},
"require-dev": {
- "doctrine/annotations": "^1.13|^2",
"egulias/email-validator": "^2.1.10|^3|^4",
- "symfony/cache": "^5.4|^6.0|^7.0",
- "symfony/config": "^5.4|^6.0|^7.0",
- "symfony/console": "^5.4|^6.0|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/expression-language": "^5.4|^6.0|^7.0",
- "symfony/finder": "^5.4|^6.0|^7.0",
- "symfony/http-client": "^5.4|^6.0|^7.0",
- "symfony/http-foundation": "^5.4|^6.0|^7.0",
- "symfony/http-kernel": "^5.4|^6.0|^7.0",
- "symfony/intl": "^5.4|^6.0|^7.0",
- "symfony/mime": "^5.4|^6.0|^7.0",
- "symfony/property-access": "^5.4|^6.0|^7.0",
- "symfony/property-info": "^5.4|^6.0|^7.0",
- "symfony/translation": "^5.4|^6.0|^7.0",
- "symfony/yaml": "^5.4|^6.0|^7.0"
+ "symfony/cache": "^6.4|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/expression-language": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/property-info": "^6.4|^7.0",
+ "symfony/translation": "^6.4.3|^7.0.3",
+ "symfony/type-info": "^7.1",
+ "symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -4695,7 +4683,8 @@
"Symfony\\Component\\Validator\\": ""
},
"exclude-from-classmap": [
- "/Tests/"
+ "/Tests/",
+ "/Resources/bin/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -4715,7 +4704,7 @@
"description": "Provides tools to validate values",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/validator/tree/v6.4.0"
+ "source": "https://github.com/symfony/validator/tree/v7.1.3"
},
"funding": [
{
@@ -4731,20 +4720,20 @@
"type": "tidelift"
}
],
- "time": "2023-11-29T07:47:42+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.0.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "cf0220fc7607476fd0d001ab3ed9e830d1fdda56"
+ "reference": "86af4617cca75a6e28598f49ae0690f3b9d4591f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/cf0220fc7607476fd0d001ab3ed9e830d1fdda56",
- "reference": "cf0220fc7607476fd0d001ab3ed9e830d1fdda56",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/86af4617cca75a6e28598f49ae0690f3b9d4591f",
+ "reference": "86af4617cca75a6e28598f49ae0690f3b9d4591f",
"shasum": ""
},
"require": {
@@ -4798,7 +4787,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.0.0"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.1.3"
},
"funding": [
{
@@ -4814,26 +4803,28 @@
"type": "tidelift"
}
],
- "time": "2023-11-27T12:39:18+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symfony/var-exporter",
- "version": "v7.0.1",
+ "version": "v7.1.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-exporter.git",
- "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3"
+ "reference": "b80a669a2264609f07f1667f891dbfca25eba44c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3",
- "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3",
+ "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b80a669a2264609f07f1667f891dbfca25eba44c",
+ "reference": "b80a669a2264609f07f1667f891dbfca25eba44c",
"shasum": ""
},
"require": {
"php": ">=8.2"
},
"require-dev": {
+ "symfony/property-access": "^6.4|^7.0",
+ "symfony/serializer": "^6.4|^7.0",
"symfony/var-dumper": "^6.4|^7.0"
},
"type": "library",
@@ -4872,7 +4863,7 @@
"serialize"
],
"support": {
- "source": "https://github.com/symfony/var-exporter/tree/v7.0.1"
+ "source": "https://github.com/symfony/var-exporter/tree/v7.1.2"
},
"funding": [
{
@@ -4888,32 +4879,31 @@
"type": "tidelift"
}
],
- "time": "2023-11-30T11:38:21+00:00"
+ "time": "2024-06-28T08:00:31+00:00"
},
{
"name": "symfony/yaml",
- "version": "v6.4.0",
+ "version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587"
+ "reference": "fa34c77015aa6720469db7003567b9f772492bf2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587",
- "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/fa34c77015aa6720469db7003567b9f772492bf2",
+ "reference": "fa34c77015aa6720469db7003567b9f772492bf2",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/deprecation-contracts": "^2.5|^3",
+ "php": ">=8.2",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/console": "<5.4"
+ "symfony/console": "<6.4"
},
"require-dev": {
- "symfony/console": "^5.4|^6.0|^7.0"
+ "symfony/console": "^6.4|^7.0"
},
"bin": [
"Resources/bin/yaml-lint"
@@ -4944,7 +4934,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v6.4.0"
+ "source": "https://github.com/symfony/yaml/tree/v7.1.1"
},
"funding": [
{
@@ -4960,34 +4950,41 @@
"type": "tidelift"
}
],
- "time": "2023-11-06T11:00:25+00:00"
+ "time": "2024-05-31T14:57:53+00:00"
},
{
"name": "twig/twig",
- "version": "v3.8.0",
+ "version": "v3.10.3",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d"
+ "reference": "67f29781ffafa520b0bbfbd8384674b42db04572"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
- "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572",
+ "reference": "67f29781ffafa520b0bbfbd8384674b42db04572",
"shasum": ""
},
"require": {
"php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-ctype": "^1.8",
"symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-php80": "^1.22"
},
"require-dev": {
"psr/container": "^1.0|^2.0",
- "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0"
+ "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0"
},
"type": "library",
"autoload": {
+ "files": [
+ "src/Resources/core.php",
+ "src/Resources/debug.php",
+ "src/Resources/escaper.php",
+ "src/Resources/string_loader.php"
+ ],
"psr-4": {
"Twig\\": "src/"
}
@@ -5020,7 +5017,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.8.0"
+ "source": "https://github.com/twigphp/Twig/tree/v3.10.3"
},
"funding": [
{
@@ -5032,22 +5029,81 @@
"type": "tidelift"
}
],
- "time": "2023-11-21T18:54:41+00:00"
+ "time": "2024-05-16T10:04:27+00:00"
+ },
+ {
+ "name": "webimpress/safe-writer",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webimpress/safe-writer.git",
+ "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/9d37cc8bee20f7cb2f58f6e23e05097eab5072e6",
+ "reference": "9d37cc8bee20f7cb2f58f6e23e05097eab5072e6",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5.4",
+ "vimeo/psalm": "^4.7",
+ "webimpress/coding-standard": "^1.2.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev",
+ "dev-develop": "2.3.x-dev",
+ "dev-release-1.0": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webimpress\\SafeWriter\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "description": "Tool to write files safely, to avoid race conditions",
+ "keywords": [
+ "concurrent write",
+ "file writer",
+ "race condition",
+ "safe writer",
+ "webimpress"
+ ],
+ "support": {
+ "issues": "https://github.com/webimpress/safe-writer/issues",
+ "source": "https://github.com/webimpress/safe-writer/tree/2.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/michalbundyra",
+ "type": "github"
+ }
+ ],
+ "time": "2021-04-19T16:34:45+00:00"
}
],
"packages-dev": [
{
"name": "amphp/amp",
- "version": "v2.6.2",
+ "version": "v2.6.4",
"source": {
"type": "git",
"url": "https://github.com/amphp/amp.git",
- "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb"
+ "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
- "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d",
+ "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d",
"shasum": ""
},
"require": {
@@ -5059,8 +5115,8 @@
"ext-json": "*",
"jetbrains/phpstorm-stubs": "^2019.3",
"phpunit/phpunit": "^7 | ^8 | ^9",
- "psalm/phar": "^3.11@dev",
- "react/promise": "^2"
+ "react/promise": "^2",
+ "vimeo/psalm": "^3.12"
},
"type": "library",
"extra": {
@@ -5115,7 +5171,7 @@
"support": {
"irc": "irc://irc.freenode.org/amphp",
"issues": "https://github.com/amphp/amp/issues",
- "source": "https://github.com/amphp/amp/tree/v2.6.2"
+ "source": "https://github.com/amphp/amp/tree/v2.6.4"
},
"funding": [
{
@@ -5123,20 +5179,20 @@
"type": "github"
}
],
- "time": "2022-02-20T17:52:18+00:00"
+ "time": "2024-03-21T18:52:26+00:00"
},
{
"name": "amphp/byte-stream",
- "version": "v1.8.1",
+ "version": "v1.8.2",
"source": {
"type": "git",
"url": "https://github.com/amphp/byte-stream.git",
- "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
+ "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
- "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc",
+ "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc",
"shasum": ""
},
"require": {
@@ -5152,11 +5208,6 @@
"psalm/phar": "^3.11.4"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.x-dev"
- }
- },
"autoload": {
"files": [
"lib/functions.php"
@@ -5180,7 +5231,7 @@
}
],
"description": "A stream abstraction to make working with non-blocking I/O simple.",
- "homepage": "http://amphp.org/byte-stream",
+ "homepage": "https://amphp.org/byte-stream",
"keywords": [
"amp",
"amphp",
@@ -5190,9 +5241,8 @@
"stream"
],
"support": {
- "irc": "irc://irc.freenode.org/amphp",
"issues": "https://github.com/amphp/byte-stream/issues",
- "source": "https://github.com/amphp/byte-stream/tree/v1.8.1"
+ "source": "https://github.com/amphp/byte-stream/tree/v1.8.2"
},
"funding": [
{
@@ -5200,20 +5250,20 @@
"type": "github"
}
],
- "time": "2021-03-30T17:13:30+00:00"
+ "time": "2024-04-13T18:00:56+00:00"
},
{
"name": "behat/behat",
- "version": "v3.13.0",
+ "version": "v3.14.0",
"source": {
"type": "git",
"url": "https://github.com/Behat/Behat.git",
- "reference": "9dd7cdb309e464ddeab095cd1a5151c2dccba4ab"
+ "reference": "2a3832d9cb853a794af3a576f9e524ae460f3340"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Behat/Behat/zipball/9dd7cdb309e464ddeab095cd1a5151c2dccba4ab",
- "reference": "9dd7cdb309e464ddeab095cd1a5151c2dccba4ab",
+ "url": "https://api.github.com/repos/Behat/Behat/zipball/2a3832d9cb853a794af3a576f9e524ae460f3340",
+ "reference": "2a3832d9cb853a794af3a576f9e524ae460f3340",
"shasum": ""
},
"require": {
@@ -5222,18 +5272,18 @@
"ext-mbstring": "*",
"php": "^7.2 || ^8.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",
- "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0",
- "symfony/translation": "^4.4 || ^5.0 || ^6.0",
- "symfony/yaml": "^4.4 || ^5.0 || ^6.0"
+ "symfony/config": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/console": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/event-dispatcher": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/translation": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/yaml": "^4.4 || ^5.0 || ^6.0 || ^7.0"
},
"require-dev": {
"herrera-io/box": "~1.6.1",
"phpspec/prophecy": "^1.15",
"phpunit/phpunit": "^8.5 || ^9.0",
- "symfony/process": "^4.4 || ^5.0 || ^6.0",
+ "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0",
"vimeo/psalm": "^4.8"
},
"suggest": {
@@ -5285,9 +5335,9 @@
],
"support": {
"issues": "https://github.com/Behat/Behat/issues",
- "source": "https://github.com/Behat/Behat/tree/v3.13.0"
+ "source": "https://github.com/Behat/Behat/tree/v3.14.0"
},
- "time": "2023-04-18T15:40:53+00:00"
+ "time": "2023-12-09T13:55:02+00:00"
},
{
"name": "behat/gherkin",
@@ -5354,26 +5404,28 @@
},
{
"name": "behat/mink",
- "version": "v1.10.0",
+ "version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/minkphp/Mink.git",
- "reference": "19e58905632e7cfdc5b2bafb9b950a3521af32c5"
+ "reference": "d8527fdf8785aad38455fb426af457ab9937aece"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/minkphp/Mink/zipball/19e58905632e7cfdc5b2bafb9b950a3521af32c5",
- "reference": "19e58905632e7cfdc5b2bafb9b950a3521af32c5",
+ "url": "https://api.github.com/repos/minkphp/Mink/zipball/d8527fdf8785aad38455fb426af457ab9937aece",
+ "reference": "d8527fdf8785aad38455fb426af457ab9937aece",
"shasum": ""
},
"require": {
"php": ">=7.2",
- "symfony/css-selector": "^4.4 || ^5.0 || ^6.0"
+ "symfony/css-selector": "^4.4 || ^5.0 || ^6.0 || ^7.0"
},
"require-dev": {
+ "phpstan/phpstan": "^1.10",
+ "phpstan/phpstan-phpunit": "^1.3",
"phpunit/phpunit": "^8.5.22 || ^9.5.11",
- "symfony/error-handler": "^4.4 || ^5.0 || ^6.0",
- "symfony/phpunit-bridge": "^5.4 || ^6.0"
+ "symfony/error-handler": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0"
},
"suggest": {
"behat/mink-browserkit-driver": "fast headless driver for any app without JS emulation",
@@ -5412,37 +5464,40 @@
],
"support": {
"issues": "https://github.com/minkphp/Mink/issues",
- "source": "https://github.com/minkphp/Mink/tree/v1.10.0"
+ "source": "https://github.com/minkphp/Mink/tree/v1.11.0"
},
- "time": "2022-03-28T14:22:43+00:00"
+ "time": "2023-12-09T11:23:23+00:00"
},
{
"name": "behat/mink-browserkit-driver",
- "version": "v2.1.0",
+ "version": "v2.2.0",
"source": {
"type": "git",
"url": "https://github.com/minkphp/MinkBrowserKitDriver.git",
- "reference": "d2768e6c17b293d86d8fcff54cbb9e6ad938fee1"
+ "reference": "16d53476e42827ed3aafbfa4fde17a1743eafd50"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/d2768e6c17b293d86d8fcff54cbb9e6ad938fee1",
- "reference": "d2768e6c17b293d86d8fcff54cbb9e6ad938fee1",
+ "url": "https://api.github.com/repos/minkphp/MinkBrowserKitDriver/zipball/16d53476e42827ed3aafbfa4fde17a1743eafd50",
+ "reference": "16d53476e42827ed3aafbfa4fde17a1743eafd50",
"shasum": ""
},
"require": {
- "behat/mink": "^1.9.0@dev",
+ "behat/mink": "^1.11.0@dev",
+ "ext-dom": "*",
"php": ">=7.2",
- "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0",
- "symfony/dom-crawler": "^4.4 || ^5.0 || ^6.0"
+ "symfony/browser-kit": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/dom-crawler": "^4.4 || ^5.0 || ^6.0 || ^7.0"
},
"require-dev": {
"mink/driver-testsuite": "dev-master",
+ "phpstan/phpstan": "^1.10",
+ "phpstan/phpstan-phpunit": "^1.3",
"phpunit/phpunit": "^8.5 || ^9.5",
- "symfony/error-handler": "^4.4 || ^5.0 || ^6.0",
- "symfony/http-client": "^4.4 || ^5.0 || ^6.0",
- "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0",
- "symfony/mime": "^4.4 || ^5.0 || ^6.0",
+ "symfony/error-handler": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/http-client": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/http-kernel": "^4.4 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/mime": "^4.4 || ^5.0 || ^6.0 || ^7.0",
"yoast/phpunit-polyfills": "^1.0"
},
"type": "mink-driver",
@@ -5477,9 +5532,9 @@
],
"support": {
"issues": "https://github.com/minkphp/MinkBrowserKitDriver/issues",
- "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v2.1.0"
+ "source": "https://github.com/minkphp/MinkBrowserKitDriver/tree/v2.2.0"
},
- "time": "2022-03-28T14:33:51+00:00"
+ "time": "2023-12-09T11:30:50+00:00"
},
{
"name": "behat/transliterator",
@@ -5532,16 +5587,16 @@
},
{
"name": "codelytv/coding-style",
- "version": "1.2.0",
+ "version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/CodelyTV/php-coding_style-codely.git",
- "reference": "ffd9d00d85360350ffc07a81bc9e25abf75a59f6"
+ "reference": "41d7e6b651619467b05018666606a1ef0958263e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/ffd9d00d85360350ffc07a81bc9e25abf75a59f6",
- "reference": "ffd9d00d85360350ffc07a81bc9e25abf75a59f6",
+ "url": "https://api.github.com/repos/CodelyTV/php-coding_style-codely/zipball/41d7e6b651619467b05018666606a1ef0958263e",
+ "reference": "41d7e6b651619467b05018666606a1ef0958263e",
"shasum": ""
},
"require": {
@@ -5570,7 +5625,7 @@
],
"support": {
"issues": "https://github.com/CodelyTV/php-coding_style-codely/issues",
- "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.2.0"
+ "source": "https://github.com/CodelyTV/php-coding_style-codely/tree/1.3.0"
},
"funding": [
{
@@ -5578,7 +5633,7 @@
"type": "custom"
}
],
- "time": "2023-10-24T09:12:06+00:00"
+ "time": "2024-08-05T14:17:14+00:00"
},
{
"name": "composer/package-versions-deprecated",
@@ -5655,30 +5710,38 @@
},
{
"name": "composer/pcre",
- "version": "3.1.1",
+ "version": "3.2.0",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
+ "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
- "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/ea4ab6f9580a4fd221e0418f2c357cdd39102a90",
+ "reference": "ea4ab6f9580a4fd221e0418f2c357cdd39102a90",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0"
},
+ "conflict": {
+ "phpstan/phpstan": "<1.11.8"
+ },
"require-dev": {
- "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan": "^1.11.8",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^5"
+ "phpunit/phpunit": "^8 || ^9"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "3.x-dev"
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
}
},
"autoload": {
@@ -5706,7 +5769,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.1.1"
+ "source": "https://github.com/composer/pcre/tree/3.2.0"
},
"funding": [
{
@@ -5722,20 +5785,20 @@
"type": "tidelift"
}
],
- "time": "2023-10-11T07:11:09+00:00"
+ "time": "2024-07-25T09:36:02+00:00"
},
{
"name": "composer/semver",
- "version": "3.4.0",
+ "version": "3.4.2",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
+ "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
- "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "url": "https://api.github.com/repos/composer/semver/zipball/c51258e759afdb17f1fd1fe83bc12baaef6309d6",
+ "reference": "c51258e759afdb17f1fd1fe83bc12baaef6309d6",
"shasum": ""
},
"require": {
@@ -5787,7 +5850,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.0"
+ "source": "https://github.com/composer/semver/tree/3.4.2"
},
"funding": [
{
@@ -5803,20 +5866,20 @@
"type": "tidelift"
}
],
- "time": "2023-08-31T09:50:34+00:00"
+ "time": "2024-07-12T11:35:52+00:00"
},
{
"name": "composer/xdebug-handler",
- "version": "3.0.3",
+ "version": "3.0.5",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
- "reference": "ced299686f41dce890debac69273b47ffe98a40c"
+ "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c",
- "reference": "ced299686f41dce890debac69273b47ffe98a40c",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef",
+ "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef",
"shasum": ""
},
"require": {
@@ -5827,7 +5890,7 @@
"require-dev": {
"phpstan/phpstan": "^1.0",
"phpstan/phpstan-strict-rules": "^1.1",
- "symfony/phpunit-bridge": "^6.0"
+ "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5"
},
"type": "library",
"autoload": {
@@ -5851,9 +5914,9 @@
"performance"
],
"support": {
- "irc": "irc://irc.freenode.org/composer",
+ "irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/3.0.3"
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.5"
},
"funding": [
{
@@ -5869,7 +5932,7 @@
"type": "tidelift"
}
],
- "time": "2022-02-25T21:32:43+00:00"
+ "time": "2024-05-06T16:37:16+00:00"
},
{
"name": "dnoegel/php-xdg-base-dir",
@@ -5910,16 +5973,16 @@
},
{
"name": "fakerphp/faker",
- "version": "v1.23.0",
+ "version": "v1.23.1",
"source": {
"type": "git",
"url": "https://github.com/FakerPHP/Faker.git",
- "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01"
+ "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e3daa170d00fde61ea7719ef47bb09bb8f1d9b01",
- "reference": "e3daa170d00fde61ea7719ef47bb09bb8f1d9b01",
+ "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b",
+ "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b",
"shasum": ""
},
"require": {
@@ -5945,11 +6008,6 @@
"ext-mbstring": "Required for multibyte Unicode string functionality."
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-main": "v1.21-dev"
- }
- },
"autoload": {
"psr-4": {
"Faker\\": "src/Faker/"
@@ -5972,9 +6030,9 @@
],
"support": {
"issues": "https://github.com/FakerPHP/Faker/issues",
- "source": "https://github.com/FakerPHP/Faker/tree/v1.23.0"
+ "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1"
},
- "time": "2023-06-12T08:44:38+00:00"
+ "time": "2024-01-02T13:46:09+00:00"
},
{
"name": "felixfbecker/advanced-json-rpc",
@@ -6079,16 +6137,16 @@
},
{
"name": "fidry/cpu-core-counter",
- "version": "0.5.1",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/theofidry/cpu-core-counter.git",
- "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623"
+ "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
- "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42",
+ "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42",
"shasum": ""
},
"require": {
@@ -6096,13 +6154,13 @@
},
"require-dev": {
"fidry/makefile": "^0.2.0",
+ "fidry/php-cs-fixer-config": "^1.1.2",
"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",
+ "phpunit/phpunit": "^8.5.31 || ^9.5.26",
"webmozarts/strict-phpunit": "^7.5"
},
"type": "library",
@@ -6128,7 +6186,7 @@
],
"support": {
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
- "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1"
+ "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0"
},
"funding": [
{
@@ -6136,33 +6194,33 @@
"type": "github"
}
],
- "time": "2022-12-24T12:35:10+00:00"
+ "time": "2024-02-07T09:43:46+00:00"
},
{
"name": "friends-of-behat/mink-extension",
- "version": "v2.6.1",
+ "version": "v2.7.5",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfBehat/MinkExtension.git",
- "reference": "df04efb3e88833208c3a99a3efa3f7e9f03854db"
+ "reference": "854336030e11983f580f49faad1b49a1238f9846"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfBehat/MinkExtension/zipball/df04efb3e88833208c3a99a3efa3f7e9f03854db",
- "reference": "df04efb3e88833208c3a99a3efa3f7e9f03854db",
+ "url": "https://api.github.com/repos/FriendsOfBehat/MinkExtension/zipball/854336030e11983f580f49faad1b49a1238f9846",
+ "reference": "854336030e11983f580f49faad1b49a1238f9846",
"shasum": ""
},
"require": {
"behat/behat": "^3.0.5",
"behat/mink": "^1.5",
"php": ">=7.4",
- "symfony/config": "^4.4 || ^5.0 || ^6.0"
+ "symfony/config": "^4.4 || ^5.0 || ^6.0 || ^7.0"
},
"replace": {
"behat/mink-extension": "self.version"
},
"require-dev": {
- "behat/mink-goutte-driver": "^1.1",
+ "behat/mink-goutte-driver": "^1.1 || ^2.0",
"phpspec/phpspec": "^6.0 || ^7.0 || 7.1.x-dev"
},
"type": "behat-extension",
@@ -6199,48 +6257,48 @@
"web"
],
"support": {
- "source": "https://github.com/FriendsOfBehat/MinkExtension/tree/v2.6.1"
+ "issues": "https://github.com/FriendsOfBehat/MinkExtension/issues",
+ "source": "https://github.com/FriendsOfBehat/MinkExtension/tree/v2.7.5"
},
- "time": "2021-12-24T13:19:26+00:00"
+ "time": "2024-01-11T09:12:02+00:00"
},
{
"name": "friends-of-behat/symfony-extension",
- "version": "v2.3.1",
+ "version": "v2.6.0",
"source": {
"type": "git",
"url": "https://github.com/FriendsOfBehat/SymfonyExtension.git",
- "reference": "572c34e6483e70db0afd45111553332f95bc06ca"
+ "reference": "dfb1c9c96cc0fb7c8e1caa060695426a12e1efbd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/FriendsOfBehat/SymfonyExtension/zipball/572c34e6483e70db0afd45111553332f95bc06ca",
- "reference": "572c34e6483e70db0afd45111553332f95bc06ca",
+ "url": "https://api.github.com/repos/FriendsOfBehat/SymfonyExtension/zipball/dfb1c9c96cc0fb7c8e1caa060695426a12e1efbd",
+ "reference": "dfb1c9c96cc0fb7c8e1caa060695426a12e1efbd",
"shasum": ""
},
"require": {
"behat/behat": "^3.6.1",
- "php": "^7.4 || ^8.0",
- "symfony/dependency-injection": "^4.4 || ^5.3 || ^6.0",
- "symfony/http-kernel": "^4.4 || ^5.3 || ^6.0",
- "symfony/proxy-manager-bridge": "^4.4 || ^5.3 || ^6.0"
+ "php": "^8.1",
+ "symfony/dependency-injection": "^6.2 || ^7.0",
+ "symfony/http-kernel": "^6.2 || ^7.0"
},
"require-dev": {
+ "behat/mink": "^1.9",
+ "behat/mink-browserkit-driver": "^2.0",
"behat/mink-selenium2-driver": "^1.3",
- "friends-of-behat/mink": "^1.9",
- "friends-of-behat/mink-browserkit-driver": "^1.5",
"friends-of-behat/mink-extension": "^2.5",
"friends-of-behat/page-object-extension": "^0.3.2",
"friends-of-behat/service-container-extension": "^1.1",
- "sylius-labs/coding-standard": "^4.1.1",
- "symfony/browser-kit": "^4.4 || ^5.3 || ^6.0",
- "symfony/framework-bundle": "^4.4 || ^5.3 || ^6.0",
- "symfony/process": "^4.4 || ^5.3 || ^6.0",
- "symfony/yaml": "^4.4 || ^5.3 || ^6.0",
- "vimeo/psalm": "4.15.0"
+ "sylius-labs/coding-standard": ">=4.1.1, <=4.2.1",
+ "symfony/browser-kit": "^6.2 || ^7.0",
+ "symfony/framework-bundle": "^6.2 || ^7.0",
+ "symfony/process": "^6.2 || ^7.0",
+ "symfony/yaml": "^6.2 || ^7.0",
+ "vimeo/psalm": "4.30.0"
},
"suggest": {
- "friends-of-behat/mink": "^1.9",
- "friends-of-behat/mink-browserkit-driver": "^1.5",
+ "behat/mink": "^1.9",
+ "behat/mink-browserkit-driver": "^2.0",
"friends-of-behat/mink-extension": "^2.5"
},
"type": "symfony-bundle",
@@ -6268,9 +6326,9 @@
"description": "Integrates Behat with Symfony.",
"support": {
"issues": "https://github.com/FriendsOfBehat/SymfonyExtension/issues",
- "source": "https://github.com/FriendsOfBehat/SymfonyExtension/tree/v2.3.1"
+ "source": "https://github.com/FriendsOfBehat/SymfonyExtension/tree/v2.6.0"
},
- "time": "2021-12-24T13:14:59+00:00"
+ "time": "2024-07-03T15:49:43+00:00"
},
{
"name": "hamcrest/hamcrest-php",
@@ -6325,16 +6383,16 @@
},
{
"name": "masterminds/html5",
- "version": "2.8.1",
+ "version": "2.9.0",
"source": {
"type": "git",
"url": "https://github.com/Masterminds/html5-php.git",
- "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf"
+ "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf",
- "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf",
+ "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6",
+ "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6",
"shasum": ""
},
"require": {
@@ -6342,7 +6400,7 @@
"php": ">=5.3.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8"
+ "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9"
},
"type": "library",
"extra": {
@@ -6386,22 +6444,22 @@
],
"support": {
"issues": "https://github.com/Masterminds/html5-php/issues",
- "source": "https://github.com/Masterminds/html5-php/tree/2.8.1"
+ "source": "https://github.com/Masterminds/html5-php/tree/2.9.0"
},
- "time": "2023-05-10T11:58:31+00:00"
+ "time": "2024-03-31T07:05:07+00:00"
},
{
"name": "mockery/mockery",
- "version": "1.6.6",
+ "version": "1.6.12",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e"
+ "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e",
- "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699",
+ "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699",
"shasum": ""
},
"require": {
@@ -6413,10 +6471,8 @@
"phpunit/phpunit": "<8.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5 || ^9.6.10",
- "psalm/plugin-phpunit": "^0.18.4",
- "symplify/easy-coding-standard": "^11.5.0",
- "vimeo/psalm": "^4.30"
+ "phpunit/phpunit": "^8.5 || ^9.6.17",
+ "symplify/easy-coding-standard": "^12.1.14"
},
"type": "library",
"autoload": {
@@ -6473,20 +6529,20 @@
"security": "https://github.com/mockery/mockery/security/advisories",
"source": "https://github.com/mockery/mockery"
},
- "time": "2023-08-09T00:03:52+00:00"
+ "time": "2024-05-16T03:13:13+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.11.1",
+ "version": "1.12.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c"
+ "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
- "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
+ "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
"shasum": ""
},
"require": {
@@ -6494,11 +6550,12 @@
},
"conflict": {
"doctrine/collections": "<1.6.8",
- "doctrine/common": "<2.13.3 || >=3,<3.2.2"
+ "doctrine/common": "<2.13.3 || >=3 <3.2.2"
},
"require-dev": {
"doctrine/collections": "^1.6.8",
"doctrine/common": "^2.13.3 || ^3.2.2",
+ "phpspec/prophecy": "^1.10",
"phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13"
},
"type": "library",
@@ -6524,7 +6581,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0"
},
"funding": [
{
@@ -6532,20 +6589,20 @@
"type": "tidelift"
}
],
- "time": "2023-03-08T13:26:56+00:00"
+ "time": "2024-06-12T14:39:25+00:00"
},
{
"name": "netresearch/jsonmapper",
- "version": "v4.2.0",
+ "version": "v4.4.1",
"source": {
"type": "git",
"url": "https://github.com/cweiske/jsonmapper.git",
- "reference": "f60565f8c0566a31acf06884cdaa591867ecc956"
+ "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956",
- "reference": "f60565f8c0566a31acf06884cdaa591867ecc956",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0",
+ "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0",
"shasum": ""
},
"require": {
@@ -6556,7 +6613,7 @@
"php": ">=7.1"
},
"require-dev": {
- "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
+ "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0",
"squizlabs/php_codesniffer": "~3.5"
},
"type": "library",
@@ -6581,27 +6638,27 @@
"support": {
"email": "cweiske@cweiske.de",
"issues": "https://github.com/cweiske/jsonmapper/issues",
- "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0"
+ "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1"
},
- "time": "2023-04-09T17:37:40+00:00"
+ "time": "2024-01-31T06:18:54+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v4.17.1",
+ "version": "v4.19.1",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
+ "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
- "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b",
+ "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b",
"shasum": ""
},
"require": {
"ext-tokenizer": "*",
- "php": ">=7.0"
+ "php": ">=7.1"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
@@ -6637,22 +6694,22 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1"
},
- "time": "2023-08-13T19:53:39+00:00"
+ "time": "2024-03-17T08:10:35+00:00"
},
{
"name": "pdepend/pdepend",
- "version": "2.16.0",
+ "version": "2.16.2",
"source": {
"type": "git",
"url": "https://github.com/pdepend/pdepend.git",
- "reference": "8dfc0c46529e2073fa97986552f80646eedac562"
+ "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/pdepend/pdepend/zipball/8dfc0c46529e2073fa97986552f80646eedac562",
- "reference": "8dfc0c46529e2073fa97986552f80646eedac562",
+ "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
+ "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58",
"shasum": ""
},
"require": {
@@ -6665,7 +6722,6 @@
"require-dev": {
"easy-doc/easy-doc": "0.0.0|^1.2.3",
"gregwar/rst": "^1.0",
- "phpunit/phpunit": "^4.8.36|^5.7.27",
"squizlabs/php_codesniffer": "^2.0.0"
},
"bin": [
@@ -6695,7 +6751,7 @@
],
"support": {
"issues": "https://github.com/pdepend/pdepend/issues",
- "source": "https://github.com/pdepend/pdepend/tree/2.16.0"
+ "source": "https://github.com/pdepend/pdepend/tree/2.16.2"
},
"funding": [
{
@@ -6703,24 +6759,25 @@
"type": "tidelift"
}
],
- "time": "2023-11-29T08:52:35+00:00"
+ "time": "2023-12-17T18:09:59+00:00"
},
{
"name": "phar-io/manifest",
- "version": "2.0.3",
+ "version": "2.0.4",
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ "reference": "54750ef60c58e43759730615a392c31c80e23176"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
- "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
+ "reference": "54750ef60c58e43759730615a392c31c80e23176",
"shasum": ""
},
"require": {
"ext-dom": "*",
+ "ext-libxml": "*",
"ext-phar": "*",
"ext-xmlwriter": "*",
"phar-io/version": "^3.0.1",
@@ -6761,9 +6818,15 @@
"description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
"support": {
"issues": "https://github.com/phar-io/manifest/issues",
- "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ "source": "https://github.com/phar-io/manifest/tree/2.0.4"
},
- "time": "2021-07-20T11:28:43+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-03T12:33:53+00:00"
},
{
"name": "phar-io/version",
@@ -6818,16 +6881,16 @@
},
{
"name": "phpat/phpat",
- "version": "0.10.11",
+ "version": "0.10.18",
"source": {
"type": "git",
"url": "https://github.com/carlosas/phpat.git",
- "reference": "03a1c7082a67247a427ca060bb7a18e7c2158979"
+ "reference": "4c29e330fb306876bca3174aa4b097d0d8611964"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/carlosas/phpat/zipball/03a1c7082a67247a427ca060bb7a18e7c2158979",
- "reference": "03a1c7082a67247a427ca060bb7a18e7c2158979",
+ "url": "https://api.github.com/repos/carlosas/phpat/zipball/4c29e330fb306876bca3174aa4b097d0d8611964",
+ "reference": "4c29e330fb306876bca3174aa4b097d0d8611964",
"shasum": ""
},
"require": {
@@ -6835,10 +6898,10 @@
"phpstan/phpstan": "^1.3"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "^3.0",
- "kubawerlos/php-cs-fixer-custom-fixers": "^3.16",
- "phpunit/phpunit": "^9.0",
- "vimeo/psalm": "^4.0 || ^5.0"
+ "friendsofphp/php-cs-fixer": "3.46",
+ "kubawerlos/php-cs-fixer-custom-fixers": "3.18",
+ "phpunit/phpunit": "^9.0 || ^10.0",
+ "vimeo/psalm": "^5.0"
},
"type": "phpstan-extension",
"extra": {
@@ -6869,9 +6932,9 @@
"description": "PHP Architecture Tester",
"support": {
"issues": "https://github.com/carlosas/phpat/issues",
- "source": "https://github.com/carlosas/phpat/tree/0.10.11"
+ "source": "https://github.com/carlosas/phpat/tree/0.10.18"
},
- "time": "2023-11-24T18:14:30+00:00"
+ "time": "2024-07-05T14:56:19+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -6928,28 +6991,35 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.3.0",
+ "version": "5.4.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
+ "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c",
"shasum": ""
},
"require": {
+ "doctrine/deprecations": "^1.1",
"ext-filter": "*",
- "php": "^7.2 || ^8.0",
+ "php": "^7.4 || ^8.0",
"phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
+ "phpdocumentor/type-resolver": "^1.7",
+ "phpstan/phpdoc-parser": "^1.7",
"webmozart/assert": "^1.9.1"
},
"require-dev": {
- "mockery/mockery": "~1.3.2",
- "psalm/phar": "^4.8"
+ "mockery/mockery": "~1.3.5",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-webmozart-assert": "^1.2",
+ "phpunit/phpunit": "^9.5",
+ "vimeo/psalm": "^5.13"
},
"type": "library",
"extra": {
@@ -6973,33 +7043,33 @@
},
{
"name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
+ "email": "opensource@ijaap.nl"
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1"
},
- "time": "2021-10-19T17:43:47+00:00"
+ "time": "2024-05-21T05:55:05+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.7.3",
+ "version": "1.8.2",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419"
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
- "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c",
+ "reference": "153ae662783729388a584b4361f2545e4d841e3c",
"shasum": ""
},
"require": {
"doctrine/deprecations": "^1.0",
- "php": "^7.4 || ^8.0",
+ "php": "^7.3 || ^8.0",
"phpdocumentor/reflection-common": "^2.0",
"phpstan/phpdoc-parser": "^1.13"
},
@@ -7037,28 +7107,28 @@
"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.7.3"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2"
},
- "time": "2023-08-12T11:01:26+00:00"
+ "time": "2024-02-23T11:10:43+00:00"
},
{
"name": "phpmd/phpmd",
- "version": "2.14.1",
+ "version": "2.15.0",
"source": {
"type": "git",
"url": "https://github.com/phpmd/phpmd.git",
- "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8"
+ "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8",
- "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8",
+ "url": "https://api.github.com/repos/phpmd/phpmd/zipball/74a1f56e33afad4128b886e334093e98e1b5e7c0",
+ "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0",
"shasum": ""
},
"require": {
"composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0",
"ext-xml": "*",
- "pdepend/pdepend": "^2.15.1",
+ "pdepend/pdepend": "^2.16.1",
"php": ">=5.3.9"
},
"require-dev": {
@@ -7067,7 +7137,6 @@
"ext-simplexml": "*",
"gregwar/rst": "^1.0",
"mikey179/vfsstream": "^1.6.8",
- "phpunit/phpunit": "^4.8.36 || ^5.7.27",
"squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2"
},
"bin": [
@@ -7115,7 +7184,7 @@
"support": {
"irc": "irc://irc.freenode.org/phpmd",
"issues": "https://github.com/phpmd/phpmd/issues",
- "source": "https://github.com/phpmd/phpmd/tree/2.14.1"
+ "source": "https://github.com/phpmd/phpmd/tree/2.15.0"
},
"funding": [
{
@@ -7123,20 +7192,20 @@
"type": "tidelift"
}
],
- "time": "2023-09-28T13:07:44+00:00"
+ "time": "2023-12-11T08:22:20+00:00"
},
{
"name": "phpstan/phpdoc-parser",
- "version": "1.24.4",
+ "version": "1.29.1",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496"
+ "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496",
- "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4",
+ "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4",
"shasum": ""
},
"require": {
@@ -7168,22 +7237,22 @@
"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.4"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1"
},
- "time": "2023-11-26T18:29:22+00:00"
+ "time": "2024-05-31T08:52:43+00:00"
},
{
"name": "phpstan/phpstan",
- "version": "1.10.47",
+ "version": "1.11.9",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpstan.git",
- "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39"
+ "reference": "e370bcddadaede0c1716338b262346f40d296f82"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/84dbb33b520ea28b6cf5676a3941f4bae1c1ff39",
- "reference": "84dbb33b520ea28b6cf5676a3941f4bae1c1ff39",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e370bcddadaede0c1716338b262346f40d296f82",
+ "reference": "e370bcddadaede0c1716338b262346f40d296f82",
"shasum": ""
},
"require": {
@@ -7226,33 +7295,29 @@
{
"url": "https://github.com/phpstan",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan",
- "type": "tidelift"
}
],
- "time": "2023-12-01T15:19:17+00:00"
+ "time": "2024-08-01T16:25:18+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.29",
+ "version": "9.2.31",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76"
+ "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76",
- "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965",
+ "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-libxml": "*",
"ext-xmlwriter": "*",
- "nikic/php-parser": "^4.15",
+ "nikic/php-parser": "^4.18 || ^5.0",
"php": ">=7.3",
"phpunit/php-file-iterator": "^3.0.3",
"phpunit/php-text-template": "^2.0.2",
@@ -7302,7 +7367,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy",
- "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31"
},
"funding": [
{
@@ -7310,7 +7375,7 @@
"type": "github"
}
],
- "time": "2023-09-19T04:57:46+00:00"
+ "time": "2024-03-02T06:37:42+00:00"
},
{
"name": "phpunit/php-file-iterator",
@@ -7555,45 +7620,45 @@
},
{
"name": "phpunit/phpunit",
- "version": "9.6.15",
+ "version": "9.6.20",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1"
+ "reference": "49d7820565836236411f5dc002d16dd689cde42f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1",
- "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/49d7820565836236411f5dc002d16dd689cde42f",
+ "reference": "49d7820565836236411f5dc002d16dd689cde42f",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.3.1 || ^2",
+ "doctrine/instantiator": "^1.5.0 || ^2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.10.1",
- "phar-io/manifest": "^2.0.3",
- "phar-io/version": "^3.0.2",
+ "myclabs/deep-copy": "^1.12.0",
+ "phar-io/manifest": "^2.0.4",
+ "phar-io/version": "^3.2.1",
"php": ">=7.3",
- "phpunit/php-code-coverage": "^9.2.28",
- "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-code-coverage": "^9.2.31",
+ "phpunit/php-file-iterator": "^3.0.6",
"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",
+ "phpunit/php-text-template": "^2.0.4",
+ "phpunit/php-timer": "^5.0.3",
+ "sebastian/cli-parser": "^1.0.2",
+ "sebastian/code-unit": "^1.0.8",
"sebastian/comparator": "^4.0.8",
- "sebastian/diff": "^4.0.3",
- "sebastian/environment": "^5.1.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.2",
+ "sebastian/diff": "^4.0.6",
+ "sebastian/environment": "^5.1.5",
+ "sebastian/exporter": "^4.0.6",
+ "sebastian/global-state": "^5.0.7",
+ "sebastian/object-enumerator": "^4.0.4",
+ "sebastian/resource-operations": "^3.0.4",
+ "sebastian/type": "^3.2.1",
"sebastian/version": "^3.0.2"
},
"suggest": {
@@ -7638,7 +7703,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.20"
},
"funding": [
{
@@ -7654,7 +7719,7 @@
"type": "tidelift"
}
],
- "time": "2023-12-01T16:55:19+00:00"
+ "time": "2024-07-10T11:45:39+00:00"
},
{
"name": "psalm/plugin-mockery",
@@ -7775,23 +7840,23 @@
},
{
"name": "psalm/plugin-symfony",
- "version": "v5.1.0",
+ "version": "v5.2.5",
"source": {
"type": "git",
"url": "https://github.com/psalm/psalm-plugin-symfony.git",
- "reference": "f23ec3439743fb24f5c1101e52d032f23d5befa6"
+ "reference": "fb801a9b3d12ace9fb619febfaa3ae0bc1dbb196"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/f23ec3439743fb24f5c1101e52d032f23d5befa6",
- "reference": "f23ec3439743fb24f5c1101e52d032f23d5befa6",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-symfony/zipball/fb801a9b3d12ace9fb619febfaa3ae0bc1dbb196",
+ "reference": "fb801a9b3d12ace9fb619febfaa3ae0bc1dbb196",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
- "php": "^7.4 || ^8.0",
+ "php": "^8.1",
"symfony/framework-bundle": "^5.0 || ^6.0 || ^7.0",
- "vimeo/psalm": "^5.1"
+ "vimeo/psalm": "^5.16"
},
"require-dev": {
"doctrine/annotations": "^1.8|^2",
@@ -7801,7 +7866,7 @@
"symfony/console": "*",
"symfony/form": "^5.0 || ^6.0 || ^7.0",
"symfony/messenger": "^5.0 || ^6.0 || ^7.0",
- "symfony/security-guard": "*",
+ "symfony/security-core": "*",
"symfony/serializer": "^5.0 || ^6.0 || ^7.0",
"symfony/validator": "*",
"twig/twig": "^2.10 || ^3.0",
@@ -7834,22 +7899,22 @@
"description": "Psalm Plugin for Symfony",
"support": {
"issues": "https://github.com/psalm/psalm-plugin-symfony/issues",
- "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v5.1.0"
+ "source": "https://github.com/psalm/psalm-plugin-symfony/tree/v5.2.5"
},
- "time": "2023-11-12T10:04:27+00:00"
+ "time": "2024-07-03T11:57:02+00:00"
},
{
"name": "rector/rector",
- "version": "0.18.12",
+ "version": "0.18.13",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "ed8d5352a3faa69e4a5e315896abffd4bc29c828"
+ "reference": "f8011a76d36aa4f839f60f3b4f97707d97176618"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/ed8d5352a3faa69e4a5e315896abffd4bc29c828",
- "reference": "ed8d5352a3faa69e4a5e315896abffd4bc29c828",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/f8011a76d36aa4f839f60f3b4f97707d97176618",
+ "reference": "f8011a76d36aa4f839f60f3b4f97707d97176618",
"shasum": ""
},
"require": {
@@ -7884,7 +7949,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/0.18.12"
+ "source": "https://github.com/rectorphp/rector/tree/0.18.13"
},
"funding": [
{
@@ -7892,7 +7957,7 @@
"type": "github"
}
],
- "time": "2023-12-04T08:47:30+00:00"
+ "time": "2023-12-20T16:08:01+00:00"
},
{
"name": "roave/security-advisories",
@@ -7900,19 +7965,24 @@
"source": {
"type": "git",
"url": "https://github.com/Roave/SecurityAdvisories.git",
- "reference": "b4728d9c4af8c60b059c1d7872759eedacccdb12"
+ "reference": "ff7456939acba6dd515a8a10aad66be6bc1b8dc1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/b4728d9c4af8c60b059c1d7872759eedacccdb12",
- "reference": "b4728d9c4af8c60b059c1d7872759eedacccdb12",
+ "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/ff7456939acba6dd515a8a10aad66be6bc1b8dc1",
+ "reference": "ff7456939acba6dd515a8a10aad66be6bc1b8dc1",
"shasum": ""
},
"conflict": {
"3f/pygmentize": "<1.2",
- "admidio/admidio": "<4.2.13",
+ "admidio/admidio": "<4.3.10",
"adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3",
"aheinze/cockpit": "<2.2",
+ "aimeos/ai-admin-graphql": ">=2022.04.1,<2022.10.10|>=2023.04.1,<2023.10.6|>=2024.04.1,<2024.04.6",
+ "aimeos/ai-admin-jsonadm": "<2020.10.13|>=2021.04.1,<2021.10.6|>=2022.04.1,<2022.10.3|>=2023.04.1,<2023.10.4|==2024.04.1",
+ "aimeos/ai-client-html": ">=2020.04.1,<2020.10.27|>=2021.04.1,<2021.10.22|>=2022.04.1,<2022.10.13|>=2023.04.1,<2023.10.15|>=2024.04.1,<2024.04.7",
+ "aimeos/ai-controller-frontend": "<2020.10.15|>=2021.04.1,<2021.10.8|>=2022.04.1,<2022.10.8|>=2023.04.1,<2023.10.9",
+ "aimeos/aimeos-core": ">=2022.04.1,<2022.10.17|>=2023.04.1,<2023.10.17|>=2024.04.1,<2024.04.7",
"aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5",
"airesvsg/acf-to-rest-api": "<=3.1",
"akaunting/akaunting": "<2.1.13",
@@ -7921,7 +7991,7 @@
"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",
- "amphp/http": "<1.0.1",
+ "amphp/http": "<=1.7.2|>=2,<=2.1",
"amphp/http-client": ">=4,<4.4",
"anchorcms/anchor-cms": "<=0.12.7",
"andreapollastri/cipi": "<=3.1.15",
@@ -7937,34 +8007,42 @@
"athlon1600/php-proxy": "<=5.1",
"athlon1600/php-proxy-app": "<=3",
"austintoddj/canvas": "<=3.4.2",
- "automad/automad": "<1.8",
+ "auth0/wordpress": "<=4.6",
+ "automad/automad": "<=2.0.0.0-alpha5",
+ "automattic/jetpack": "<9.8",
"awesome-support/awesome-support": "<=6.0.7",
- "aws/aws-sdk-php": ">=3,<3.2.1",
+ "aws/aws-sdk-php": "<3.288.1",
"azuracast/azuracast": "<0.18.3",
- "backdrop/backdrop": "<1.24.2",
+ "backdrop/backdrop": "<1.27.3|>=1.28,<1.28.2",
"backpack/crud": "<3.4.9",
"bacula-web/bacula-web": "<8.0.0.0-RC2-dev",
"badaso/core": "<2.7",
- "bagisto/bagisto": "<0.1.5",
+ "bagisto/bagisto": "<2.1",
"barrelstrength/sprout-base-email": "<1.2.7",
"barrelstrength/sprout-forms": "<3.9",
"barryvdh/laravel-translation-manager": "<0.6.2",
"barzahlen/barzahlen-php": "<2.0.1",
- "baserproject/basercms": "<4.8",
+ "baserproject/basercms": "<5.0.9",
"bassjobsen/bootstrap-3-typeahead": ">4.0.2",
+ "bbpress/bbpress": "<2.6.5",
+ "bcosca/fatfree": "<3.7.2",
+ "bedita/bedita": "<4",
"bigfork/silverstripe-form-capture": ">=3,<3.1.1",
- "billz/raspap-webgui": "<2.9.5",
+ "billz/raspap-webgui": "<=3.1.4",
"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",
+ "blueimp/jquery-file-upload": "==6.4.4",
"bmarshall511/wordpress_zero_spam": "<5.2.13",
"bolt/bolt": "<3.7.2",
"bolt/core": "<=4.2",
+ "born05/craft-twofactorauthentication": "<3.3.4",
"bottelet/flarepoint": "<2.2.1",
+ "bref/bref": "<2.1.17",
"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.0.2",
+ "bugsnag/bugsnag-laravel": ">=2,<2.0.2",
"bytefury/crater": "<6.0.2",
"cachethq/cachet": "<2.5.1",
"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",
@@ -7972,33 +8050,39 @@
"cardgate/magento2": "<2.0.33",
"cardgate/woocommerce": "<=3.1.15",
"cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
+ "cart2quote/module-quotation-encoded": ">=4.1.6,<=4.4.5|>=5,<5.4.4",
"cartalyst/sentry": "<=2.1.6",
"catfan/medoo": "<1.7.5",
+ "causal/oidc": "<2.1",
"cecil/cecil": "<7.47.1",
- "centreon/centreon": "<22.10.0.0-beta1",
+ "centreon/centreon": "<22.10.15",
"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",
+ "ckeditor/ckeditor": "<4.24",
+ "cockpit-hq/cockpit": "<2.7|==2.7",
"codeception/codeception": "<3.1.3|>=4,<4.1.22",
"codeigniter/framework": "<3.1.9",
- "codeigniter4/framework": "<=4.4.2",
+ "codeigniter4/framework": "<4.4.7",
"codeigniter4/shield": "<1.0.0.0-beta8",
"codiad/codiad": "<=2.8.4",
- "composer/composer": "<1.10.27|>=2,<2.2.22|>=2.3,<2.6.4",
- "concrete5/concrete5": "<9.2.2",
+ "composer/composer": "<1.10.27|>=2,<2.2.24|>=2.3,<2.7.7",
+ "concrete5/concrete5": "<=9.3.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.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.42|>=4.10,<4.13.28|>=5,<5.1.10",
- "contao/listing-bundle": ">=4,<4.4.8",
+ "contao/comments-bundle": ">=2,<4.13.40|>=5.0.0.0-RC1-dev,<5.3.4",
+ "contao/contao": ">=3,<3.5.37|>=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": "<3.5.39",
+ "contao/core-bundle": "<4.13.40|>=5,<5.3.4",
+ "contao/listing-bundle": ">=3,<=3.5.30|>=4,<4.4.8",
"contao/managed-edition": "<=1.5",
+ "corveda/phpsandbox": "<1.3.5",
"cosenary/instagram": "<=2.3",
- "craftcms/cms": "<=4.4.14",
+ "craftcms/cms": "<4.6.2|>=5.0.0.0-beta1,<=5.2.2",
"croogo/croogo": "<4",
"cuyz/valinor": "<0.12",
"czproject/git-php": "<4.0.3",
+ "dapphp/securimage": "<3.6.6",
"darylldoyle/safe-svg": "<1.9.10",
"datadog/dd-trace": ">=0.30,<0.30.2",
"datatables/datatables": "<1.10.10",
@@ -8006,31 +8090,36 @@
"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",
+ "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4",
"desperado/xml-bundle": "<=0.1.7",
- "directmailteam/direct-mail": "<5.2.4",
+ "devgroup/dotplant": "<2020.09.14-dev",
+ "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2",
"doctrine/annotations": "<1.2.7",
- "doctrine/cache": "<1.3.2|>=1.4,<1.4.2",
+ "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2",
"doctrine/common": "<2.4.3|>=2.5,<2.5.1",
"doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4",
"doctrine/doctrine-bundle": "<1.5.2",
- "doctrine/doctrine-module": "<=0.7.1",
+ "doctrine/doctrine-module": "<0.7.2",
"doctrine/mongodb-odm": "<1.0.2",
"doctrine/mongodb-odm-bundle": "<3.0.1",
- "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
- "dolibarr/dolibarr": "<18.0.2",
- "dompdf/dompdf": "<2.0.2|==2.0.2",
+ "doctrine/orm": ">=1,<1.2.4|>=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4",
+ "dolibarr/dolibarr": "<19.0.2",
+ "dompdf/dompdf": "<2.0.4",
"doublethreedigital/guest-entries": "<3.1.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",
+ "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2",
+ "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4",
"duncanmcclean/guest-entries": "<3.1.2",
"dweeves/magmi": "<=0.7.24",
+ "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2",
"ecodev/newsletter": "<=4",
"ectouch/ectouch": "<=2.7.2",
+ "egroupware/egroupware": "<23.1.20240624",
"elefant/cms": "<2.0.7",
"elgg/elgg": "<3.3.24|>=4,<4.0.5",
+ "elijaa/phpmemcacheadmin": "<=1.3",
"encore/laravel-admin": "<=1.8.19",
"endroid/qr-code-bundle": "<3.4.2",
+ "enhavo/enhavo-app": "<=0.13.1",
"enshrined/svg-sanitize": "<0.15",
"erusev/parsedown": "<1.7.2",
"ether/logs": "<3.0.4",
@@ -8042,10 +8131,10 @@
"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.29|>=2.3,<2.3.26",
+ "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26|>=3.3,<3.3.39",
"ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1",
"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.34",
+ "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35",
"ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8",
"ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev",
"ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15",
@@ -8057,15 +8146,20 @@
"ezyang/htmlpurifier": "<4.1.1",
"facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2",
"facturascripts/facturascripts": "<=2022.08",
+ "fastly/magento2": "<1.2.26",
"feehi/cms": "<=2.1.1",
"feehi/feehicms": "<=2.1.1",
"fenom/fenom": "<=2.12.1",
"filegator/filegator": "<7.8",
+ "filp/whoops": "<2.1.13",
+ "fineuploader/php-traditional-server": "<=1.2.2",
"firebase/php-jwt": "<6",
+ "fisharebest/webtrees": "<=2.1.18",
"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/core": "<1.8.5",
+ "flarum/flarum": "<0.1.0.0-beta8",
+ "flarum/framework": "<1.8.5",
"flarum/mentions": "<1.6.3",
"flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15",
"flarum/tags": "<=0.1.0.0-beta13",
@@ -8077,33 +8171,37 @@
"fooman/tcpdf": "<6.2.22",
"forkcms/forkcms": "<5.11.1",
"fossar/tcpdf-parser": "<6.2.22",
- "francoisjacquet/rosariosis": "<11",
+ "francoisjacquet/rosariosis": "<=11.5.1",
"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",
+ "friendsofsymfony/user-bundle": ">=1,<1.3.5",
+ "friendsofsymfony1/swiftmailer": ">=4,<5.4.13|>=6,<6.2.5",
+ "friendsofsymfony1/symfony1": ">=1.1,<1.5.19",
"friendsoftypo3/mediace": ">=7.6.2,<7.6.5",
"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.0.0-beta1",
+ "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.3",
+ "froxlor/froxlor": "<2.1.9",
+ "frozennode/administrator": "<=5.0.12",
"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.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",
+ "getformwork/formwork": "<1.13.1|==2.0.0.0-beta1",
+ "getgrav/grav": "<1.7.46",
+ "getkirby/cms": "<4.1.1",
"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",
+ "gilacms/gila": "<=1.15.4",
+ "gleez/cms": "<=1.3|==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.1",
"gregwar/rst": "<1.0.3",
- "grumpydictator/firefly-iii": "<6",
+ "grumpydictator/firefly-iii": "<6.1.17",
"gugoan/economizzer": "<=0.9.0.0-beta1",
"guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5",
"guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5",
@@ -8117,25 +8215,30 @@
"hov/jobfair": "<1.0.13|>=2,<2.0.2",
"httpsoft/http-message": "<1.0.12",
"hyn/multi-tenant": ">=5.6,<5.7.2",
- "ibexa/admin-ui": ">=4.2,<4.2.3",
- "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.4",
+ "ibexa/admin-ui": ">=4.2,<4.2.3|>=4.6.0.0-beta1,<4.6.9",
+ "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.6|>=4.6,<4.6.2",
"ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3",
"ibexa/post-install": "<=1.0.4",
"ibexa/solr": ">=4.5,<4.5.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",
+ "ilicmiljan/secure-props": ">=1.2,<1.2.2",
+ "illuminate/auth": "<5.5.10",
+ "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<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",
+ "imdbphp/imdbphp": "<=5.1.1",
"impresscms/impresscms": "<=1.4.5",
- "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.2",
+ "impresspages/impresspages": "<=1.0.12",
+ "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3",
"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",
+ "inter-mediator/inter-mediator": "==5.5",
+ "ipl/web": "<0.10.1",
"islandora/islandora": ">=2,<2.4.1",
"ivankristianto/phpwhois": "<=4.3",
"jackalope/jackalope-doctrine-dbal": "<1.7.4",
@@ -8143,67 +8246,83 @@
"james-heinrich/phpthumb": "<1.7.12",
"jasig/phpcas": "<1.3.3",
"jcbrand/converse.js": "<3.3.3",
+ "johnbillion/wp-crontrol": "<1.16.2",
"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/framework": "<1.5.7|>=2.5.4,<=3.8.12",
"joomla/input": ">=2,<2.0.2",
"joomla/joomla-cms": ">=2.5,<3.9.12",
"joomla/session": "<1.3.1",
"joyqi/hyper-down": "<=2.4.27",
"jsdecena/laracom": "<2.0.9",
"jsmitty12/phpwhois": "<5.1",
+ "juzaweb/cms": "<=3.4",
+ "jweiland/events2": "<8.3.8|>=9,<9.0.6",
"kazist/phpwhois": "<=4.2.6",
"kelvinmo/simplexrd": "<3.1.1",
"kevinpapst/kimai2": "<1.16.7",
"khodakhah/nodcms": "<=3",
- "kimai/kimai": "<=2.1",
+ "kimai/kimai": "<2.16",
"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",
+ "kumbiaphp/kumbiapp": "<=1.1.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.44|>=7,<7.30.6|>=8,<8.75",
- "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10",
+ "laravel/laravel": ">=5.4,<5.4.22",
+ "laravel/socialite": ">=1,<2.0.10",
"latte/latte": "<2.10.8",
- "lavalite/cms": "<=9",
+ "lavalite/cms": "<=9|==10.1",
"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",
+ "libreform/libreform": ">=2,<=2.0.8",
"librenms/librenms": "<2017.08.18",
"liftkit/database": "<2.13.2",
+ "lightsaml/lightsaml": "<1.3.5",
"limesurvey/limesurvey": "<3.27.19",
"livehelperchat/livehelperchat": "<=3.91",
- "livewire/livewire": ">2.2.4,<2.2.6",
+ "livewire/livewire": ">2.2.4,<2.2.6|>=3.3.5,<3.4.9",
"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.4",
+ "magento/community-edition": "<2.4.5|==2.4.5|>=2.4.5.0-patch1,<2.4.5.0-patch8|==2.4.6|>=2.4.6.0-patch1,<2.4.6.0-patch6|==2.4.7",
+ "magento/core": "<=1.9.4.5",
"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",
+ "magento/product-community-edition": "<2.4.4.0-patch9|>=2.4.5,<2.4.5.0-patch8|>=2.4.6,<2.4.6.0-patch6|>=2.4.7,<2.4.7.0-patch1",
+ "magneto/core": "<1.9.4.4-dev",
"maikuolan/phpmussel": ">=1,<1.6",
- "mantisbt/mantisbt": "<=2.25.7",
+ "mainwp/mainwp": "<=4.4.3.3",
+ "mantisbt/mantisbt": "<2.26.2",
"marcwillmann/turn": "<0.3.3",
"matyhtf/framework": "<3.0.6",
- "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",
+ "mautic/core": "<4.4.12|>=5.0.0.0-alpha,<5.0.4",
+ "mdanter/ecc": "<2",
+ "mediawiki/core": "<1.36.2",
"mediawiki/matomo": "<2.4.3",
+ "mediawiki/semantic-media-wiki": "<4.0.2",
"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",
+ "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1",
+ "microsoft/microsoft-graph-beta": "<2.0.1",
+ "microsoft/microsoft-graph-core": "<2.0.2",
"microweber/microweber": "<=2.0.4",
+ "mikehaertl/php-shellcommand": "<1.6.1",
"miniorange/miniorange-saml": "<1.4.3",
"mittwald/typo3_forum": "<1.2.1",
"mobiledetect/mobiledetectlib": "<2.8.32",
@@ -8211,22 +8330,26 @@
"mojo42/jirafeau": "<4.4",
"mongodb/mongodb": ">=1,<1.9.2",
"monolog/monolog": ">=1.8,<1.12",
- "moodle/moodle": "<4.3.0.0-RC2-dev",
+ "moodle/moodle": "<4.3.5|>=4.4.0.0-beta,<4.4.1",
"mos/cimage": "<0.7.19",
"movim/moxl": ">=0.8,<=0.10",
+ "movingbytes/social-network": "<=1.2.1",
"mpdf/mpdf": "<=7.1.7",
"munkireport/comment": "<4.1",
"munkireport/managedinstalls": "<2.6",
+ "munkireport/munki_facts": "<1.5",
"munkireport/munkireport": ">=2.5.3,<5.6.3",
+ "munkireport/reportdata": "<3.5",
+ "munkireport/softwareupdate": "<1.6",
"mustache/mustache": ">=2,<2.14.1",
"namshi/jose": "<2.2",
"neoan3-apps/template": "<1.1.1",
"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",
+ "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9",
+ "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.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/swiftmailer": "<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",
@@ -8234,70 +8357,86 @@
"nonfiction/nterchange": "<4.1.1",
"notrinos/notrinos-erp": "<=0.7",
"noumo/easyii": "<=0.9",
+ "novaksolutions/infusionsoft-php-sdk": "<1",
"nukeviet/nukeviet": "<4.5.02",
"nyholm/psr7": "<1.6.1",
"nystudio107/craft-seomatic": "<3.4.12",
+ "nzedb/nzedb": "<0.8",
"nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1",
"october/backend": "<1.1.2",
"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.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2",
+ "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.15",
"omeka/omeka-s": "<4.0.3",
"onelogin/php-saml": "<2.10.4",
- "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5",
+ "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5",
"open-web-analytics/open-web-analytics": "<1.7.4",
- "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev",
+ "opencart/opencart": ">=0",
"openid/php-openid": "<2.3",
- "openmage/magento-lts": "<=19.5|>=20,<=20.1",
+ "openmage/magento-lts": "<20.10.1",
+ "opensolutions/vimbadmin": "<=3.0.15",
"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/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1",
"oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1",
"oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7",
"oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1",
- "oro/customer-portal": ">=4.2,<=4.2.8|>=5,<5.0.11|>=5.1,<5.1.1",
- "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<5.0.8",
+ "oro/customer-portal": ">=4.1,<=4.1.13|>=4.2,<=4.2.10|>=5,<=5.0.11|>=5.1,<=5.1.3",
+ "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<=5.0.12|>=5.1,<=5.1.3",
+ "oveleon/contao-cookiebar": "<1.16.3|>=2,<2.1.3",
"oxid-esales/oxideshop-ce": "<4.5",
+ "oxid-esales/paymorrow-module": ">=1,<1.0.2|>=2,<2.0.1",
"packbackbooks/lti-1-3-php-library": "<5",
"padraic/humbug_get_contents": "<1.1.2",
"pagarme/pagarme-php": "<3",
"pagekit/pagekit": "<=1.0.18",
+ "paragonie/ecc": "<2.0.1",
"paragonie/random_compat": "<2",
- "passbolt/passbolt_api": "<2.11",
+ "passbolt/passbolt_api": "<4.6.2",
+ "paypal/adaptivepayments-sdk-php": "<=3.9.2",
+ "paypal/invoice-sdk-php": "<=3.9",
"paypal/merchant-sdk-php": "<3.12",
+ "paypal/permissions-sdk-php": "<=3.9.1",
"pear/archive_tar": "<1.4.14",
+ "pear/auth": "<1.2.4",
"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",
+ "phenx/php-svg-lib": "<0.5.2",
+ "php-censor/php-censor": "<2.0.13|>=2.1,<2.1.5",
"php-mod/curl": "<2.3.2",
"phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1",
+ "phpems/phpems": ">=6,<=6.1.3",
"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.2.1",
- "phpmyfaq/phpmyfaq": "<=3.1.7",
+ "phpmyfaq/phpmyfaq": "<3.2.5|==3.2.5",
+ "phpoffice/common": "<0.2.9",
"phpoffice/phpexcel": "<1.8",
"phpoffice/phpspreadsheet": "<1.16",
- "phpseclib/phpseclib": "<3.0.34",
+ "phpseclib/phpseclib": "<2.0.47|>=3,<3.0.36",
"phpservermon/phpservermon": "<3.6",
- "phpsysinfo/phpsysinfo": "<3.2.5",
- "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3",
+ "phpsysinfo/phpsysinfo": "<3.4.3",
+ "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<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.2.2",
- "pimcore/customer-management-framework-bundle": "<3.4.2",
+ "pimcore/admin-ui-classic-bundle": "<=1.5.1",
+ "pimcore/customer-management-framework-bundle": "<4.0.6",
"pimcore/data-hub": "<1.2.4",
"pimcore/demo": "<10.3",
+ "pimcore/ecommerce-framework-bundle": "<1.0.10",
"pimcore/perspective-editor": "<1.5.1",
- "pimcore/pimcore": "<11.1.1",
- "pixelfed/pixelfed": "<=0.11.4",
+ "pimcore/pimcore": "<11.2.4",
+ "pixelfed/pixelfed": "<0.11.11",
+ "plotly/plotly.js": "<2.25.2",
"pocketmine/bedrock-protocol": "<8.0.2",
- "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1",
+ "pocketmine/pocketmine-mp": "<5.11.2",
"pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1",
"pressbooks/pressbooks": "<5.18",
"prestashop/autoupgrade": ">=4,<4.10.1",
@@ -8305,21 +8444,24 @@
"prestashop/blockwishlist": ">=2,<2.1.1",
"prestashop/contactform": ">=1.0.1,<4.3",
"prestashop/gamification": "<2.3.2",
- "prestashop/prestashop": "<8.1.2",
+ "prestashop/prestashop": "<8.1.6",
"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",
- "processwire/processwire": "<=3.0.200",
+ "privatebin/privatebin": "<1.4|>=1.5,<1.7.4",
+ "processwire/processwire": "<=3.0.229",
"propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7",
"propel/propel1": ">=1,<=1.7.1",
- "pterodactyl/panel": "<1.7",
+ "pterodactyl/panel": "<1.11.6",
"ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2",
"ptrofimov/beanstalk_console": "<1.7.14",
+ "pubnub/pubnub": "<6.1",
"pusher/pusher-php-server": "<2.2.1",
"pwweb/laravel-core": "<=0.3.6.0-beta",
"pyrocms/pyrocms": "<=3.9.1",
+ "qcubed/qcubed": "<=3.1.1",
+ "quickapps/cms": "<=2.0.0.0-beta2",
"rainlab/blog-plugin": "<1.4.1",
"rainlab/debugbar-plugin": "<3.1",
"rainlab/user-plugin": "<=1.4.5",
@@ -8327,48 +8469,50 @@
"rap2hpoutre/laravel-log-viewer": "<0.13",
"react/http": ">=0.7,<1.9",
"really-simple-plugins/complianz-gdpr": "<6.4.2",
- "remdex/livehelperchat": "<3.99",
- "reportico-web/reportico": "<=7.1.21",
+ "redaxo/source": "<=5.15.1",
+ "remdex/livehelperchat": "<4.29",
+ "reportico-web/reportico": "<=8.1",
"rhukster/dom-sanitizer": "<1.0.7",
"rmccue/requests": ">=1.6,<1.8",
- "robrichards/xmlseclibs": "<3.0.4",
+ "robrichards/xmlseclibs": ">=1,<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.7.11|>=1.8,<1.8.9",
+ "sabre/dav": ">=1.6,<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",
"sfroemken/url_redirect": "<=1.2.1",
"sheng/yiicms": "<=1.2",
- "shopware/core": "<=6.4.20",
- "shopware/platform": "<=6.4.20",
+ "shopware/core": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1",
+ "shopware/platform": "<6.5.8.8-dev|>=6.6.0.0-RC1-dev,<6.6.1",
"shopware/production": "<=6.3.5.2",
"shopware/shopware": "<=5.7.17",
- "shopware/storefront": "<=6.4.8.1",
- "shopxo/shopxo": "<2.2.6",
+ "shopware/storefront": "<=6.4.8.1|>=6.5.8,<6.5.8.7-dev",
+ "shopxo/shopxo": "<=6.1",
"showdoc/showdoc": "<2.10.4",
"silverstripe-australia/advancedreports": ">=1,<=2",
- "silverstripe/admin": "<1.13.6",
+ "silverstripe/admin": "<1.13.19|>=2,<2.1.8",
"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/comments": ">=1.3,<3.1.1",
"silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3",
- "silverstripe/framework": "<4.13.14|>=5,<5.0.13",
- "silverstripe/graphql": "<3.8.2|>=4,<4.1.3|>=4.2,<4.2.5|>=4.3,<4.3.4|>=5,<5.0.3",
+ "silverstripe/framework": "<5.2.16",
+ "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.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/reports": "<5.2.3",
+ "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4|>=2.1,<2.1.2",
"silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1",
"silverstripe/subsites": ">=2,<2.6.1",
"silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1",
- "silverstripe/userforms": "<3",
+ "silverstripe/userforms": "<3|>=5,<5.4.2",
"silverstripe/versioned-admin": ">=1,<1.11.1",
"simple-updates/phpwhois": "<=1",
- "simplesamlphp/saml2": "<1.15.4|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12",
+ "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12",
"simplesamlphp/simplesamlphp": "<1.18.6",
"simplesamlphp/simplesamlphp-module-infocard": "<1.0.1",
"simplesamlphp/simplesamlphp-module-openid": "<1",
@@ -8380,33 +8524,37 @@
"slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1",
"slim/slim": "<2.6",
"slub/slub-events": "<3.0.3",
- "smarty/smarty": "<3.1.48|>=4,<4.3.1",
- "snipe/snipe-it": "<=6.2.2",
+ "smarty/smarty": "<4.5.3|>=5,<5.1.1",
+ "snipe/snipe-it": "<6.4.2",
"socalnick/scn-social-auth": "<1.15.2",
"socialiteproviders/steam": "<1.1",
"spatie/browsershot": "<3.57.4",
+ "spatie/image-optimizer": "<1.7.3",
"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.02.3",
- "statamic/cms": "<4.36",
+ "ssddanbrown/bookstack": "<24.05.1",
+ "statamic/cms": "<4.46|>=5.3,<5.6.2",
"stormpath/sdk": "<9.9.99",
- "studio-42/elfinder": "<2.1.62",
+ "studio-42/elfinder": "<=2.1.64",
+ "studiomitte/friendlycaptcha": "<0.1.4",
"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",
+ "sulu/form-bundle": ">=2,<2.5.3",
+ "sulu/sulu": "<1.6.44|>=2,<2.4.17|>=2.5,<2.5.13",
"sumocoders/framework-user-bundle": "<1.4",
+ "superbig/craft-audit": "<3.0.2",
"swag/paypal": "<5.4.4",
- "swiftmailer/swiftmailer": ">=4,<5.4.5",
+ "swiftmailer/swiftmailer": "<6.2.5",
"swiftyedit/swiftyedit": "<1.2",
"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",
"sylius/grid-bundle": "<1.10.1",
"sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1",
- "sylius/resource-bundle": "<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
- "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2",
- "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99",
+ "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4",
+ "sylius/sylius": "<1.12.19|>=1.13.0.0-alpha1,<1.13.4",
+ "symbiote/silverstripe-multivaluefield": ">=3,<3.1",
"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",
@@ -8415,7 +8563,7 @@
"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",
+ "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.15|>=5.4.3,<5.4.4|>=6.0.3,<6.0.4",
"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,<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",
@@ -8433,7 +8581,7 @@
"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|>=5.4,<5.4.31|>=6,<6.3.8",
"symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12",
- "symfony/symfony": "<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
+ "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
"symfony/translation": ">=2,<2.0.17",
"symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8",
"symfony/ux-autocomplete": "<2.11.2",
@@ -8441,37 +8589,44 @@
"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/webhook": ">=6.3,<6.3.8",
- "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7",
+ "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2",
+ "symphonycms/symphony-2": "<2.6.4",
"t3/dce": "<0.11.5|>=2.2,<2.6.2",
"t3g/svg-sanitizer": "<1.0.3",
+ "t3s/content-consent": "<1.0.3|>=2,<2.0.2",
"tastyigniter/tastyigniter": "<3.3",
"tcg/voyager": "<=1.4",
- "tecnickcom/tcpdf": "<6.2.22",
+ "tecnickcom/tcpdf": "<=6.7.4",
"terminal42/contao-tablelookupwizard": "<3.3.5",
"thelia/backoffice-default-template": ">=2.1,<2.1.2",
"thelia/thelia": ">=2.1,<2.1.3",
"theonedemon/phpwhois": "<=4.2.5",
- "thinkcmf/thinkcmf": "<=5.1.7",
+ "thinkcmf/thinkcmf": "<6.0.8",
"thorsten/phpmyfaq": "<3.2.2",
"tikiwiki/tiki-manager": "<=17.1",
- "tinymce/tinymce": "<5.10.9|>=6,<6.7.3",
+ "timber/timber": ">=0.16.6,<1.23.1|>=1.24,<1.24.1|>=2,<2.1",
+ "tinymce/tinymce": "<7.2",
"tinymighty/wiki-seo": "<1.2.2",
"titon/framework": "<9.9.99",
"tobiasbg/tablepress": "<=2.0.0.0-RC1",
- "topthink/framework": "<6.0.14",
+ "topthink/framework": "<6.0.17|>=6.1,<6.1.5|>=8,<8.0.4",
"topthink/think": "<=6.1.1",
"topthink/thinkphp": "<=3.2.3",
+ "torrentpier/torrentpier": "<=2.4.3",
"tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2",
- "tribalsystems/zenario": "<=9.4.59197",
+ "tribalsystems/zenario": "<9.5.60602",
"truckersmp/phpwhois": "<=4.3.1",
"ttskch/pagination-service-provider": "<1",
+ "twbs/bootstrap": "<=3.4.1|>=4,<=4.6.2",
"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": "<=8.7.54|>=9,<=9.5.43|>=10,<=10.4.40|>=11,<=11.5.32|>=12,<=12.4.7",
+ "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
+ "typo3/cms-core": "<=8.7.56|>=9,<=9.5.47|>=10,<=10.4.44|>=11,<=11.5.36|>=12,<=12.4.14|>=13,<=13.1",
"typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1",
+ "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1",
"typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1",
- "typo3/cms-install": ">=12.2,<12.4.8",
+ "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5",
+ "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8",
"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.2|>=2,<=2.1.3",
@@ -8481,19 +8636,28 @@
"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",
"uasoft-indonesia/badaso": "<=2.9.7",
- "unisharp/laravel-filemanager": "<=2.5.1",
+ "unisharp/laravel-filemanager": "<2.6.4",
"userfrosting/userfrosting": ">=0.3.1,<4.6.3",
"usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2",
"uvdesk/community-skeleton": "<=1.1.1",
+ "uvdesk/core-framework": "<=1.1.1",
"vanilla/safecurl": "<0.9.2",
- "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4",
+ "verbb/comments": "<1.5.5",
+ "verbb/formie": "<2.1.6",
+ "verbb/image-resizer": "<2.0.9",
+ "verbb/knock-knock": "<1.2.8",
+ "verot/class.upload.php": "<=2.1.6",
+ "villagedefrance/opencart-overclocked": "<=1.11.1",
"vova07/yii2-fileapi-widget": "<0.1.9",
"vrana/adminer": "<4.8.1",
+ "vufind/vufind": ">=2,<9.1.1",
"waldhacker/hcaptcha": "<2.1.2",
"wallabag/tcpdf": "<6.2.22",
"wallabag/wallabag": "<2.6.7",
"wanglelecc/laracms": "<=1.0.3",
- "web-auth/webauthn-framework": ">=3.3,<3.3.4",
+ "web-auth/webauthn-framework": ">=3.3,<3.3.4|>=4.5,<4.9",
+ "web-auth/webauthn-lib": ">=4.5,<4.9",
+ "web-feet/coastercms": "==5.5",
"webbuilders-group/silverstripe-kapost-bridge": "<0.4",
"webcoast/deferred-image-processing": "<1.0.2",
"webklex/laravel-imap": "<5.3",
@@ -8502,21 +8666,28 @@
"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",
+ "winter/wn-backend-module": "<1.2.4",
+ "winter/wn-dusk-plugin": "<2.1",
+ "winter/wn-system-module": "<1.2.4",
+ "wintercms/winter": "<=1.2.3",
+ "woocommerce/woocommerce": "<6.6|>=8.8,<8.8.5|>=8.9,<8.9.3",
+ "wp-cli/wp-cli": ">=0.12,<2.5",
"wp-graphql/wp-graphql": "<=1.14.5",
+ "wp-premium/gravityforms": "<2.4.21",
"wpanel/wpanel4-cms": "<=4.3.1",
"wpcloud/wp-stateless": "<3.2",
- "wwbn/avideo": "<=12.4",
+ "wpglobus/wpglobus": "<=1.9.6",
+ "wwbn/avideo": "<14.3",
"xataface/xataface": "<3",
"xpressengine/xpressengine": "<3.0.15",
+ "yab/quarx": "<2.4.5",
"yeswiki/yeswiki": "<4.1",
"yetiforce/yetiforce-crm": "<=6.4",
"yidashi/yii2cmf": "<=2",
"yii2mod/yii2-cms": "<1.9.2",
"yiisoft/yii": "<1.1.29",
- "yiisoft/yii2": "<2.0.38",
+ "yiisoft/yii2": "<2.0.49.4-dev",
+ "yiisoft/yii2-authclient": "<2.2.15",
"yiisoft/yii2-bootstrap": "<2.0.4",
"yiisoft/yii2-dev": "<2.0.43",
"yiisoft/yii2-elasticsearch": "<2.0.5",
@@ -8526,12 +8697,13 @@
"yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6",
"yoast-seo-for-typo3/yoast_seo": "<7.2.3",
"yourls/yourls": "<=1.8.2",
+ "yuan1994/tpadmin": "<=1.3.12",
"zencart/zencart": "<=1.5.7.0-beta",
"zendesk/zendesk_api_client_php": "<2.2.11",
- "zendframework/zend-cache": "<2.4.8|>=2.5,<2.5.3",
+ "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",
"zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2",
- "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5",
+ "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5",
"zendframework/zend-developer-tools": ">=1.2.2,<1.2.3",
"zendframework/zend-diactoros": "<1.8.4",
"zendframework/zend-feed": "<2.10.3",
@@ -8539,9 +8711,9 @@
"zendframework/zend-http": "<2.8.1",
"zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6",
"zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3",
- "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2",
+ "zendframework/zend-mail": "<2.4.11|>=2.5,<2.7.2",
"zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1",
- "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4",
+ "zendframework/zend-session": ">=2,<2.2.9|>=2.3,<2.3.4",
"zendframework/zend-validator": ">=2.3,<2.3.6",
"zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1",
"zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6",
@@ -8556,13 +8728,13 @@
"zendframework/zendservice-slideshare": "<2.0.2",
"zendframework/zendservice-technorati": "<2.0.2",
"zendframework/zendservice-windowsazure": "<2.0.2",
- "zendframework/zendxml": "<1.0.1",
+ "zendframework/zendxml": ">=1,<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.0.3",
+ "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3",
"zfr/zfr-oauth2-server-module": "<0.1.2",
- "zoujingli/thinkadmin": "<6.0.22"
+ "zoujingli/thinkadmin": "<=6.1.53"
},
"type": "metapackage",
"notification-url": "https://packagist.org/downloads/",
@@ -8599,20 +8771,20 @@
"type": "tidelift"
}
],
- "time": "2023-11-30T20:04:21+00:00"
+ "time": "2024-08-05T15:04:41+00:00"
},
{
"name": "sebastian/cli-parser",
- "version": "1.0.1",
+ "version": "1.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
- "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
+ "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
"shasum": ""
},
"require": {
@@ -8647,7 +8819,7 @@
"homepage": "https://github.com/sebastianbergmann/cli-parser",
"support": {
"issues": "https://github.com/sebastianbergmann/cli-parser/issues",
- "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2"
},
"funding": [
{
@@ -8655,7 +8827,7 @@
"type": "github"
}
],
- "time": "2020-09-28T06:08:49+00:00"
+ "time": "2024-03-02T06:27:43+00:00"
},
{
"name": "sebastian/code-unit",
@@ -8844,20 +9016,20 @@
},
{
"name": "sebastian/complexity",
- "version": "2.0.2",
+ "version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
- "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a",
+ "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^4.7",
+ "nikic/php-parser": "^4.18 || ^5.0",
"php": ">=7.3"
},
"require-dev": {
@@ -8889,7 +9061,7 @@
"homepage": "https://github.com/sebastianbergmann/complexity",
"support": {
"issues": "https://github.com/sebastianbergmann/complexity/issues",
- "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3"
},
"funding": [
{
@@ -8897,20 +9069,20 @@
"type": "github"
}
],
- "time": "2020-10-26T15:52:27+00:00"
+ "time": "2023-12-22T06:19:30+00:00"
},
{
"name": "sebastian/diff",
- "version": "4.0.5",
+ "version": "4.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131"
+ "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
- "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc",
+ "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc",
"shasum": ""
},
"require": {
@@ -8955,7 +9127,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
- "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5"
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6"
},
"funding": [
{
@@ -8963,7 +9135,7 @@
"type": "github"
}
],
- "time": "2023-05-07T05:35:17+00:00"
+ "time": "2024-03-02T06:30:58+00:00"
},
{
"name": "sebastian/environment",
@@ -9030,16 +9202,16 @@
},
{
"name": "sebastian/exporter",
- "version": "4.0.5",
+ "version": "4.0.6",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d"
+ "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
- "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72",
+ "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72",
"shasum": ""
},
"require": {
@@ -9095,7 +9267,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6"
},
"funding": [
{
@@ -9103,20 +9275,20 @@
"type": "github"
}
],
- "time": "2022-09-14T06:03:37+00:00"
+ "time": "2024-03-02T06:33:00+00:00"
},
{
"name": "sebastian/global-state",
- "version": "5.0.6",
+ "version": "5.0.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bde739e7565280bda77be70044ac1047bc007e34"
+ "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34",
- "reference": "bde739e7565280bda77be70044ac1047bc007e34",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
+ "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
"shasum": ""
},
"require": {
@@ -9159,7 +9331,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/global-state/issues",
- "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6"
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7"
},
"funding": [
{
@@ -9167,24 +9339,24 @@
"type": "github"
}
],
- "time": "2023-08-02T09:26:13+00:00"
+ "time": "2024-03-02T06:35:11+00:00"
},
{
"name": "sebastian/lines-of-code",
- "version": "1.0.3",
+ "version": "1.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
- "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+ "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5",
"shasum": ""
},
"require": {
- "nikic/php-parser": "^4.6",
+ "nikic/php-parser": "^4.18 || ^5.0",
"php": ">=7.3"
},
"require-dev": {
@@ -9216,7 +9388,7 @@
"homepage": "https://github.com/sebastianbergmann/lines-of-code",
"support": {
"issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
- "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4"
},
"funding": [
{
@@ -9224,7 +9396,7 @@
"type": "github"
}
],
- "time": "2020-11-28T06:42:11+00:00"
+ "time": "2023-12-22T06:20:34+00:00"
},
{
"name": "sebastian/object-enumerator",
@@ -9403,16 +9575,16 @@
},
{
"name": "sebastian/resource-operations",
- "version": "3.0.3",
+ "version": "3.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
- "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
+ "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e",
"shasum": ""
},
"require": {
@@ -9424,7 +9596,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -9445,8 +9617,7 @@
"description": "Provides a list of PHP built-in functions that operate on resources",
"homepage": "https://www.github.com/sebastianbergmann/resource-operations",
"support": {
- "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
- "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4"
},
"funding": [
{
@@ -9454,7 +9625,7 @@
"type": "github"
}
],
- "time": "2020-09-28T06:45:17+00:00"
+ "time": "2024-03-14T16:00:52+00:00"
},
{
"name": "sebastian/type",
@@ -9567,16 +9738,16 @@
},
{
"name": "spatie/array-to-xml",
- "version": "3.2.2",
+ "version": "3.3.0",
"source": {
"type": "git",
"url": "https://github.com/spatie/array-to-xml.git",
- "reference": "96be97e664c87613121d073ea39af4c74e57a7f8"
+ "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/96be97e664c87613121d073ea39af4c74e57a7f8",
- "reference": "96be97e664c87613121d073ea39af4c74e57a7f8",
+ "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f56b220fe2db1ade4c88098d83413ebdfc3bf876",
+ "reference": "f56b220fe2db1ade4c88098d83413ebdfc3bf876",
"shasum": ""
},
"require": {
@@ -9589,6 +9760,11 @@
"spatie/pest-plugin-snapshots": "^1.1"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Spatie\\ArrayToXml\\": "src"
@@ -9614,7 +9790,7 @@
"xml"
],
"support": {
- "source": "https://github.com/spatie/array-to-xml/tree/3.2.2"
+ "source": "https://github.com/spatie/array-to-xml/tree/3.3.0"
},
"funding": [
{
@@ -9626,31 +9802,31 @@
"type": "github"
}
],
- "time": "2023-11-14T14:08:51+00:00"
+ "time": "2024-05-01T10:20:27+00:00"
},
{
"name": "symfony/browser-kit",
- "version": "v6.4.0",
+ "version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/browser-kit.git",
- "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502"
+ "reference": "9c13742e3175b5815e272b981876ae329bec2040"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a3bb210e001580ec75e1d02b27fae3452e6bf502",
- "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502",
+ "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9c13742e3175b5815e272b981876ae329bec2040",
+ "reference": "9c13742e3175b5815e272b981876ae329bec2040",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/dom-crawler": "^5.4|^6.0|^7.0"
+ "php": ">=8.2",
+ "symfony/dom-crawler": "^6.4|^7.0"
},
"require-dev": {
- "symfony/css-selector": "^5.4|^6.0|^7.0",
- "symfony/http-client": "^5.4|^6.0|^7.0",
- "symfony/mime": "^5.4|^6.0|^7.0",
- "symfony/process": "^5.4|^6.0|^7.0"
+ "symfony/css-selector": "^6.4|^7.0",
+ "symfony/http-client": "^6.4|^7.0",
+ "symfony/mime": "^6.4|^7.0",
+ "symfony/process": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -9678,7 +9854,7 @@
"description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/browser-kit/tree/v6.4.0"
+ "source": "https://github.com/symfony/browser-kit/tree/v7.1.1"
},
"funding": [
{
@@ -9694,24 +9870,24 @@
"type": "tidelift"
}
],
- "time": "2023-10-31T08:18:17+00:00"
+ "time": "2024-05-31T14:57:53+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v6.4.0",
+ "version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4"
+ "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4",
- "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
+ "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4",
"shasum": ""
},
"require": {
- "php": ">=8.1"
+ "php": ">=8.2"
},
"type": "library",
"autoload": {
@@ -9743,7 +9919,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v6.4.0"
+ "source": "https://github.com/symfony/css-selector/tree/v7.1.1"
},
"funding": [
{
@@ -9759,30 +9935,30 @@
"type": "tidelift"
}
],
- "time": "2023-10-31T08:40:20+00:00"
+ "time": "2024-05-31T14:57:53+00:00"
},
{
"name": "symfony/dom-crawler",
- "version": "v6.4.0",
+ "version": "v7.1.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/dom-crawler.git",
- "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33"
+ "reference": "01ce8174447f1f1dd33a5854b01beef79061d9fa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33",
- "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33",
+ "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/01ce8174447f1f1dd33a5854b01beef79061d9fa",
+ "reference": "01ce8174447f1f1dd33a5854b01beef79061d9fa",
"shasum": ""
},
"require": {
"masterminds/html5": "^2.6",
- "php": ">=8.1",
+ "php": ">=8.2",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-mbstring": "~1.0"
},
"require-dev": {
- "symfony/css-selector": "^5.4|^6.0|^7.0"
+ "symfony/css-selector": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -9810,74 +9986,7 @@
"description": "Eases DOM navigation for HTML and XML documents",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/dom-crawler/tree/v6.4.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-11-20T16:41:16+00:00"
- },
- {
- "name": "symfony/proxy-manager-bridge",
- "version": "v6.4.0",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/proxy-manager-bridge.git",
- "reference": "801c4590eacf0dc40d73135dbe79ad71effd6d04"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/801c4590eacf0dc40d73135dbe79ad71effd6d04",
- "reference": "801c4590eacf0dc40d73135dbe79ad71effd6d04",
- "shasum": ""
- },
- "require": {
- "friendsofphp/proxy-manager-lts": "^1.0.2",
- "php": ">=8.1",
- "symfony/dependency-injection": "^6.3|^7.0",
- "symfony/deprecation-contracts": "^2.5|^3"
- },
- "require-dev": {
- "symfony/config": "^6.1|^7.0"
- },
- "type": "symfony-bridge",
- "autoload": {
- "psr-4": {
- "Symfony\\Bridge\\ProxyManager\\": ""
- },
- "exclude-from-classmap": [
- "/Tests/"
- ]
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Fabien Potencier",
- "email": "fabien@symfony.com"
- },
- {
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
- }
- ],
- "description": "Provides integration for ProxyManager with various Symfony components",
- "homepage": "https://symfony.com",
- "support": {
- "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.4.0"
+ "source": "https://github.com/symfony/dom-crawler/tree/v7.1.1"
},
"funding": [
{
@@ -9893,55 +10002,54 @@
"type": "tidelift"
}
],
- "time": "2023-11-01T12:07:38+00:00"
+ "time": "2024-05-31T14:57:53+00:00"
},
{
"name": "symfony/translation",
- "version": "v6.4.0",
+ "version": "v7.1.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37"
+ "reference": "8d5e50c813ba2859a6dfc99a0765c550507934a1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37",
- "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/8d5e50c813ba2859a6dfc99a0765c550507934a1",
+ "reference": "8d5e50c813ba2859a6dfc99a0765c550507934a1",
"shasum": ""
},
"require": {
- "php": ">=8.1",
- "symfony/deprecation-contracts": "^2.5|^3",
+ "php": ">=8.2",
"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/config": "<6.4",
+ "symfony/console": "<6.4",
+ "symfony/dependency-injection": "<6.4",
"symfony/http-client-contracts": "<2.5",
- "symfony/http-kernel": "<5.4",
+ "symfony/http-kernel": "<6.4",
"symfony/service-contracts": "<2.5",
- "symfony/twig-bundle": "<5.4",
- "symfony/yaml": "<5.4"
+ "symfony/twig-bundle": "<6.4",
+ "symfony/yaml": "<6.4"
},
"provide": {
"symfony/translation-implementation": "2.3|3.0"
},
"require-dev": {
- "nikic/php-parser": "^4.13",
+ "nikic/php-parser": "^4.18|^5.0",
"psr/log": "^1|^2|^3",
- "symfony/config": "^5.4|^6.0|^7.0",
- "symfony/console": "^5.4|^6.0|^7.0",
- "symfony/dependency-injection": "^5.4|^6.0|^7.0",
- "symfony/finder": "^5.4|^6.0|^7.0",
+ "symfony/config": "^6.4|^7.0",
+ "symfony/console": "^6.4|^7.0",
+ "symfony/dependency-injection": "^6.4|^7.0",
+ "symfony/finder": "^6.4|^7.0",
"symfony/http-client-contracts": "^2.5|^3.0",
- "symfony/http-kernel": "^5.4|^6.0|^7.0",
- "symfony/intl": "^5.4|^6.0|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/intl": "^6.4|^7.0",
"symfony/polyfill-intl-icu": "^1.21",
- "symfony/routing": "^5.4|^6.0|^7.0",
+ "symfony/routing": "^6.4|^7.0",
"symfony/service-contracts": "^2.5|^3",
- "symfony/yaml": "^5.4|^6.0|^7.0"
+ "symfony/yaml": "^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -9972,7 +10080,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v6.4.0"
+ "source": "https://github.com/symfony/translation/tree/v7.1.3"
},
"funding": [
{
@@ -9988,29 +10096,32 @@
"type": "tidelift"
}
],
- "time": "2023-11-29T08:14:36+00:00"
+ "time": "2024-07-26T12:41:01+00:00"
},
{
"name": "symplify/easy-coding-standard",
- "version": "12.0.11",
+ "version": "12.3.4",
"source": {
"type": "git",
"url": "https://github.com/easy-coding-standard/easy-coding-standard.git",
- "reference": "5f34a99d035b4eef048857ec47d2035140871f50"
+ "reference": "03cd792d7fa6d9dc59b6e12a5ca73d9873ee9c0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/5f34a99d035b4eef048857ec47d2035140871f50",
- "reference": "5f34a99d035b4eef048857ec47d2035140871f50",
+ "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/03cd792d7fa6d9dc59b6e12a5ca73d9873ee9c0e",
+ "reference": "03cd792d7fa6d9dc59b6e12a5ca73d9873ee9c0e",
"shasum": ""
},
"require": {
"php": ">=7.2"
},
"conflict": {
- "friendsofphp/php-cs-fixer": "<3.0",
- "phpcsstandards/php_codesniffer": "<3.6",
- "symplify/coding-standard": "<11.3"
+ "friendsofphp/php-cs-fixer": "<3.46",
+ "phpcsstandards/php_codesniffer": "<3.8",
+ "symplify/coding-standard": "<12.1"
+ },
+ "suggest": {
+ "ext-dom": "Needed to support checkstyle output format in class CheckstyleOutputFormatter"
},
"bin": [
"bin/ecs"
@@ -10034,7 +10145,7 @@
],
"support": {
"issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues",
- "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.0.11"
+ "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.3.4"
},
"funding": [
{
@@ -10046,20 +10157,20 @@
"type": "github"
}
],
- "time": "2023-12-02T09:38:08+00:00"
+ "time": "2024-08-01T07:55:09+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.2",
+ "version": "1.2.3",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96"
+ "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
- "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+ "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
"shasum": ""
},
"require": {
@@ -10088,7 +10199,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.2"
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
},
"funding": [
{
@@ -10096,20 +10207,20 @@
"type": "github"
}
],
- "time": "2023-11-20T00:12:19+00:00"
+ "time": "2024-03-03T12:36:25+00:00"
},
{
"name": "vimeo/psalm",
- "version": "5.16.0",
+ "version": "5.25.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591"
+ "reference": "01a8eb06b9e9cc6cfb6a320bf9fb14331919d505"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/2897ba636551a8cb61601cc26f6ccfbba6c36591",
- "reference": "2897ba636551a8cb61601cc26f6ccfbba6c36591",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/01a8eb06b9e9cc6cfb6a320bf9fb14331919d505",
+ "reference": "01a8eb06b9e9cc6cfb6a320bf9fb14331919d505",
"shasum": ""
},
"require": {
@@ -10128,11 +10239,11 @@
"ext-tokenizer": "*",
"felixfbecker/advanced-json-rpc": "^3.1",
"felixfbecker/language-server-protocol": "^1.5.2",
- "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1",
+ "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
"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",
+ "sebastian/diff": "^4.0 || ^5.0 || ^6.0",
"spatie/array-to-xml": "^2.17.0 || ^3.0",
"symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0",
"symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
@@ -10206,7 +10317,7 @@
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
},
- "time": "2023-11-22T20:38:47+00:00"
+ "time": "2024-06-16T15:08:35+00:00"
},
{
"name": "webmozart/assert",
diff --git a/psalm.xml b/psalm.xml
index 49bc1fcc1..228b2ab7b 100644
--- a/psalm.xml
+++ b/psalm.xml
@@ -30,6 +30,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Shared/Domain/Utils.php b/src/Shared/Domain/Utils.php
index a50521eea..92a9d1117 100644
--- a/src/Shared/Domain/Utils.php
+++ b/src/Shared/Domain/Utils.php
@@ -57,7 +57,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): false|string => strstr($possibleModule, $fileType),
+ static fn (string $possibleModule): false | string => strstr($possibleModule, $fileType),
scandir($path)
);
}
diff --git a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
index b7d4f1f20..d39aa7651 100644
--- a/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
+++ b/src/Shared/Infrastructure/Bus/Event/DomainEventSubscriberLocator.php
@@ -28,7 +28,7 @@ public function allSubscribedTo(string $eventClass): array
return $formatted[$eventClass];
}
- public function withRabbitMqQueueNamed(string $queueName): callable|DomainEventSubscriber
+ public function withRabbitMqQueueNamed(string $queueName): callable | DomainEventSubscriber
{
$subscriber = search(
static fn (DomainEventSubscriber $subscriber): bool => RabbitMqQueueNameFormatter::format($subscriber) ===
diff --git a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
index cef77aca2..ea18ec7ce 100644
--- a/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
+++ b/src/Shared/Infrastructure/Bus/Event/RabbitMq/RabbitMqDomainEventsConsumer.php
@@ -23,7 +23,7 @@ public function __construct(
private int $maxRetries
) {}
- public function consume(callable|DomainEventSubscriber $subscriber, string $queueName): void
+ public function consume(callable | DomainEventSubscriber $subscriber, string $queueName): void
{
try {
$this->connection->queue($queueName)->consume($this->consumer($subscriber));
diff --git a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
index 50f25affb..a19a5609e 100644
--- a/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
+++ b/src/Shared/Infrastructure/Doctrine/DoctrineEntityManagerFactory.php
@@ -67,7 +67,7 @@ private static function generateDatabaseIfNotExists(array $parameters, string $s
$connection->close();
}
- private static function databaseExists(string $databaseName, MySqlSchemaManager $schemaManager): bool
+ private static function databaseExists(string $databaseName, MySQLSchemaManager $schemaManager): bool
{
return in_array($databaseName, $schemaManager->listDatabases(), true);
}
diff --git a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
index 410b6a295..0f3ad3aa8 100644
--- a/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
+++ b/src/Shared/Infrastructure/Symfony/BasicHttpAuthMiddleware.php
@@ -41,7 +41,7 @@ private function authenticate(string $user, string $pass, RequestEvent $event):
$this->bus->dispatch(new AuthenticateUserCommand($user, $pass));
$this->addUserDataToRequest($user, $event);
- } catch (InvalidAuthCredentials|InvalidAuthUsername) {
+ } catch (InvalidAuthCredentials | InvalidAuthUsername) {
$event->setResponse(new JsonResponse(['error' => 'Invalid credentials'], Response::HTTP_FORBIDDEN));
}
}
diff --git a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php
index 320be5d69..25787a7db 100644
--- a/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php
+++ b/tests/Backoffice/Auth/Application/Authenticate/AuthenticateUserCommandHandlerTest.php
@@ -14,7 +14,7 @@
final class AuthenticateUserCommandHandlerTest extends AuthModuleUnitTestCase
{
- private AuthenticateUserCommandHandler|null $handler;
+ private AuthenticateUserCommandHandler | null $handler;
protected function setUp(): void
{
diff --git a/tests/Backoffice/Auth/AuthModuleUnitTestCase.php b/tests/Backoffice/Auth/AuthModuleUnitTestCase.php
index 3abdfa568..4a7ad4a7c 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 = null;
+ private AuthRepository | MockInterface | null $repository = null;
protected function shouldSearch(AuthUsername $username, AuthUser $authUser = null): void
{
@@ -23,7 +23,7 @@ protected function shouldSearch(AuthUsername $username, AuthUser $authUser = nul
->andReturn($authUser);
}
- protected function repository(): AuthRepository|MockInterface
+ protected function repository(): AuthRepository | MockInterface
{
return $this->repository ??= $this->mock(AuthRepository::class);
}
diff --git a/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php b/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php
index e2c723de9..4fe82e139 100644
--- a/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php
+++ b/tests/Mooc/Courses/Application/Create/CreateCourseCommandHandlerTest.php
@@ -12,7 +12,7 @@
final class CreateCourseCommandHandlerTest extends CoursesModuleUnitTestCase
{
- private CreateCourseCommandHandler|null $handler;
+ private CreateCourseCommandHandler | null $handler;
protected function setUp(): void
{
diff --git a/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php b/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php
index ff1f1b8b5..7890b36f7 100644
--- a/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php
+++ b/tests/Mooc/Courses/Application/Update/CourseRenamerTest.php
@@ -14,7 +14,7 @@
final class CourseRenamerTest extends CoursesModuleUnitTestCase
{
- private CourseRenamer|null $renamer;
+ private CourseRenamer | null $renamer;
protected function setUp(): void
{
diff --git a/tests/Mooc/Courses/CoursesModuleUnitTestCase.php b/tests/Mooc/Courses/CoursesModuleUnitTestCase.php
index 6fd84ad21..b4d269546 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 = null;
+ private CourseRepository | MockInterface | null $repository = null;
protected function shouldSave(Course $course): void
{
@@ -32,7 +32,7 @@ protected function shouldSearch(CourseId $id, ?Course $course): void
->andReturn($course);
}
- protected function repository(): CourseRepository|MockInterface
+ protected function repository(): CourseRepository | MockInterface
{
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 db8887486..2c8bc2ef5 100644
--- a/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php
+++ b/tests/Mooc/CoursesCounter/Application/Find/FindCoursesCounterQueryHandlerTest.php
@@ -13,7 +13,7 @@
final class FindCoursesCounterQueryHandlerTest extends CoursesCounterModuleUnitTestCase
{
- private FindCoursesCounterQueryHandler|null $handler;
+ private FindCoursesCounterQueryHandler | null $handler;
protected function setUp(): void
{
diff --git a/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php b/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php
index 6e9c9039b..b81642fc2 100644
--- a/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php
+++ b/tests/Mooc/CoursesCounter/Application/Increment/IncrementCoursesCounterOnCourseCreatedTest.php
@@ -14,7 +14,7 @@
final class IncrementCoursesCounterOnCourseCreatedTest extends CoursesCounterModuleUnitTestCase
{
- private IncrementCoursesCounterOnCourseCreated|null $subscriber;
+ private IncrementCoursesCounterOnCourseCreated | null $subscriber;
protected function setUp(): void
{
diff --git a/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php b/tests/Mooc/CoursesCounter/CoursesCounterModuleUnitTestCase.php
index 2de4db1a7..6937e3902 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 = null;
+ private CoursesCounterRepository | MockInterface | null $repository = null;
protected function shouldSave(CoursesCounter $course): void
{
@@ -30,7 +30,7 @@ protected function shouldSearch(?CoursesCounter $counter): void
->andReturn($counter);
}
- protected function repository(): CoursesCounterRepository|MockInterface
+ protected function repository(): CoursesCounterRepository | MockInterface
{
return $this->repository ??= $this->mock(CoursesCounterRepository::class);
}
diff --git a/tests/Shared/Infrastructure/Behat/ApiContext.php b/tests/Shared/Infrastructure/Behat/ApiContext.php
index eeddfca35..a0adff803 100644
--- a/tests/Shared/Infrastructure/Behat/ApiContext.php
+++ b/tests/Shared/Infrastructure/Behat/ApiContext.php
@@ -101,7 +101,7 @@ public function theResponseStatusCodeShouldBe(mixed $expectedResponseCode): void
}
}
- private function sanitizeOutput(string $output): false|string
+ private function sanitizeOutput(string $output): false | string
{
return json_encode(json_decode(trim($output), true, 512, JSON_THROW_ON_ERROR), JSON_THROW_ON_ERROR);
}
diff --git a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
index 27133c192..b8dbff2b2 100644
--- a/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Command/InMemorySymfonyCommandBusTest.php
@@ -13,7 +13,7 @@
final class InMemorySymfonyCommandBusTest extends UnitTestCase
{
- private InMemorySymfonyCommandBus|null $commandBus;
+ private InMemorySymfonyCommandBus | null $commandBus;
protected function setUp(): void
{
@@ -48,7 +48,7 @@ public function __invoke(FakeCommand $command): never
};
}
- private function command(): Command|MockInterface
+ private function command(): Command | MockInterface
{
return $this->mock(Command::class);
}
diff --git a/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php b/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
index 4ad562ae1..ca17d6ceb 100644
--- a/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Event/MySql/MySqlDoctrineEventBusTest.php
@@ -16,8 +16,8 @@
final class MySqlDoctrineEventBusTest extends InfrastructureTestCase
{
- private MySqlDoctrineEventBus|null $bus;
- private MySqlDoctrineDomainEventsConsumer|null $consumer;
+ private MySqlDoctrineEventBus | null $bus;
+ private MySqlDoctrineDomainEventsConsumer | null $consumer;
protected function setUp(): void
{
diff --git a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php
index 61debc9ee..937f28e08 100644
--- a/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php
+++ b/tests/Shared/Infrastructure/Bus/Event/RabbitMq/TestAllWorksOnRabbitMqEventsPublished.php
@@ -15,5 +15,5 @@ public static function subscribedTo(): array
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/InMemorySymfonyQueryBusTest.php b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
index 5037795cb..dc3f2095b 100644
--- a/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
+++ b/tests/Shared/Infrastructure/Bus/Query/InMemorySymfonyQueryBusTest.php
@@ -13,7 +13,7 @@
final class InMemorySymfonyQueryBusTest extends UnitTestCase
{
- private InMemorySymfonyQueryBus|null $queryBus;
+ private InMemorySymfonyQueryBus | null $queryBus;
protected function setUp(): void
{
@@ -48,7 +48,7 @@ public function __invoke(FakeQuery $query): never
};
}
- private function query(): MockInterface|Query
+ private function query(): MockInterface | Query
{
return $this->mock(Query::class);
}
diff --git a/tests/Shared/Infrastructure/Mink/MinkHelper.php b/tests/Shared/Infrastructure/Mink/MinkHelper.php
index 1d9da8a1c..ea443d6e1 100644
--- a/tests/Shared/Infrastructure/Mink/MinkHelper.php
+++ b/tests/Shared/Infrastructure/Mink/MinkHelper.php
@@ -35,8 +35,6 @@ public function sendRequest(string $method, string $url, array $optionalParams =
$optionalParams['changeHistory']
);
- $this->resetRequestStuff();
-
return $crawler;
}
@@ -79,10 +77,4 @@ private function normalizeHeaders(array $headers): array
{
return array_map('implode', array_filter($headers));
}
-
- private function resetRequestStuff(): void
- {
- $this->getSession()->reset();
- $this->resetServerParameters();
- }
}
diff --git a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
index 430373dc4..1737b7adb 100644
--- a/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
+++ b/tests/Shared/Infrastructure/Mockery/CodelyTvMatcherIsSimilar.php
@@ -5,17 +5,15 @@
namespace CodelyTv\Tests\Shared\Infrastructure\Mockery;
use CodelyTv\Tests\Shared\Infrastructure\PhpUnit\Constraint\CodelyTvConstraintIsSimilar;
-use Mockery\Matcher\MatcherAbstract;
+use Mockery\Matcher\MatcherInterface;
use Stringable;
-final class CodelyTvMatcherIsSimilar extends MatcherAbstract implements Stringable
+final readonly class CodelyTvMatcherIsSimilar implements Stringable, MatcherInterface
{
- private readonly CodelyTvConstraintIsSimilar $constraint;
+ private CodelyTvConstraintIsSimilar $constraint;
public function __construct(mixed $value, float $delta = 0.0)
{
- parent::__construct($value);
-
$this->constraint = new CodelyTvConstraintIsSimilar($value, $delta);
}
diff --git a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
index 3ffac0ca0..599f2005d 100644
--- a/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
+++ b/tests/Shared/Infrastructure/PhpUnit/UnitTestCase.php
@@ -11,16 +11,16 @@
use CodelyTv\Shared\Domain\Bus\Query\Response;
use CodelyTv\Shared\Domain\UuidGenerator;
use CodelyTv\Tests\Shared\Domain\TestUtils;
+use CodelyTv\Tests\Shared\Infrastructure\Mockery\CodelyTvMatcherIsSimilar;
use Mockery;
use Mockery\Adapter\Phpunit\MockeryTestCase;
-use Mockery\Matcher\MatcherAbstract;
use Mockery\MockInterface;
use Throwable;
abstract class UnitTestCase extends MockeryTestCase
{
- private EventBus|MockInterface|null $eventBus = null;
- private MockInterface|UuidGenerator|null $uuidGenerator = null;
+ private EventBus | MockInterface | null $eventBus = null;
+ private MockInterface | UuidGenerator | null $uuidGenerator = null;
protected function mock(string $className): MockInterface
{
@@ -43,7 +43,7 @@ protected function shouldNotPublishDomainEvent(): void
->andReturnNull();
}
- protected function eventBus(): EventBus|MockInterface
+ protected function eventBus(): EventBus | MockInterface
{
return $this->eventBus ??= $this->mock(EventBus::class);
}
@@ -57,7 +57,7 @@ protected function shouldGenerateUuid(string $uuid): void
->andReturn($uuid);
}
- protected function uuidGenerator(): MockInterface|UuidGenerator
+ protected function uuidGenerator(): MockInterface | UuidGenerator
{
return $this->uuidGenerator ??= $this->mock(UuidGenerator::class);
}
@@ -97,7 +97,7 @@ protected function assertSimilar(mixed $expected, mixed $actual): void
TestUtils::assertSimilar($expected, $actual);
}
- protected function similarTo(mixed $value, float $delta = 0.0): MatcherAbstract
+ protected function similarTo(mixed $value, float $delta = 0.0): CodelyTvMatcherIsSimilar
{
return TestUtils::similarTo($value, $delta);
}
diff --git a/tests/Shared/SharedArchitectureTest.php b/tests/Shared/SharedArchitectureTest.php
index 4e7489762..da8b1e751 100644
--- a/tests/Shared/SharedArchitectureTest.php
+++ b/tests/Shared/SharedArchitectureTest.php
@@ -42,6 +42,7 @@ public function test_shared_infrastructure_should_not_import_from_other_contexts
// This need to be refactored
Selector::classname(MySqlDatabaseCleaner::class),
Selector::classname(AuthenticateUserCommand::class),
+ Selector::inNamespace('CodelyTv\Backoffice\Auth'),
);
}
From 9271c467943f835ab3b6e5ba30bdbd710aca9d73 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafa=20G=C3=B3mez?=
Date: Tue, 6 Aug 2024 17:12:23 +0200
Subject: [PATCH 40/40] docs: add light and dark logo
---
README.md | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
index b639c10e7..85d72efbe 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,10 @@
-
+
+
+
+
+
@@ -9,7 +13,7 @@
-
+