diff --git a/.env b/.env index e42dfac2..2d091f8c 100644 --- a/.env +++ b/.env @@ -32,8 +32,6 @@ APP_IMGPROXY_SALT='666f72636573' ###> symfony/framework-bundle ### APP_ENV=dev APP_SECRET=3c0e1589d36f2c28609e4ec5af60f545 -#TRUSTED_PROXIES=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16 -#TRUSTED_HOSTS='^(localhost|example\.com)$' ###< symfony/framework-bundle ### ###> symfony/mailer ### @@ -42,12 +40,10 @@ APP_SECRET=3c0e1589d36f2c28609e4ec5af60f545 ###> doctrine/doctrine-bundle ### # Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url -# For an SQLite database, use: "sqlite:///%kernel.project_dir%/var/data.db" -# For a PostgreSQL database, use: "postgresql://db_user:db_password@127.0.0.1:5432/db_name?serverVersion=11&charset=utf8" # IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml DATABASE_URL=mysql://root@mysql:3306/af_website?serverVersion=5.7 ###< doctrine/doctrine-bundle ### ###> nelmio/cors-bundle ### -CORS_ALLOW_ORIGIN=^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$ +CORS_ALLOW_ORIGIN='^https?://(localhost|127\.0\.0\.1)(:[0-9]+)?$' ###< nelmio/cors-bundle ### diff --git a/.env.test b/.env.test index 4c350110..65ff6fea 100644 --- a/.env.test +++ b/.env.test @@ -3,6 +3,7 @@ KERNEL_CLASS='App\Kernel' APP_SECRET='$ecretf0rt3st' SYMFONY_DEPRECATIONS_HELPER=999999 PANTHER_APP_ENV=panther +PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots APP_SECURITY_OAUTH_DISCORD_SERVER_ID=1 diff --git a/.php_cs.dist b/.php_cs.dist index beff3457..08bf8054 100644 --- a/.php_cs.dist +++ b/.php_cs.dist @@ -23,12 +23,15 @@ return PhpCsFixer\Config::create() '@PHP71Migration' => true, '@PHP71Migration:risky' => true, '@PHP73Migration' => true, + '@PHP74Migration:risky' => true, + '@PHP74Migration' => true, 'php_unit_test_annotation' => [ 'style' => 'annotation', ], 'php_unit_method_casing' => false, 'phpdoc_to_comment' => false, + 'ordered_traits' => false, 'ordered_class_elements' => [ 'order' => [ 'use_trait', // traits diff --git a/Makefile b/Makefile index e4817e20..6eee9879 100644 --- a/Makefile +++ b/Makefile @@ -6,8 +6,8 @@ ifeq ($(ci),true) endif cs: - docker run --rm -v $(CURDIR):/project -w /project jakzal/phpqa:1.42-php7.4-alpine php-cs-fixer fix ${dryrun} - docker run --rm -v $(CURDIR):/project -w /project jakzal/phpqa:1.42-php7.4-alpine phpstan analyse + docker run --rm -v $(CURDIR):/project -w /project jakzal/phpqa:1.50.1-php7.4-alpine php-cs-fixer fix ${dryrun} + docker run --rm -v $(CURDIR):/project -w /project jakzal/phpqa:1.50.1-php7.4-alpine phpstan analyse docker-compose exec -T php php bin/console lint:twig templates/ docker-compose exec -T php php bin/console lint:yaml --parse-tags config/ diff --git a/bin/console b/bin/console index 5de0e1c5..8fe9d494 100755 --- a/bin/console +++ b/bin/console @@ -4,6 +4,7 @@ use App\Kernel; use Symfony\Bundle\FrameworkBundle\Console\Application; use Symfony\Component\Console\Input\ArgvInput; +use Symfony\Component\Dotenv\Dotenv; use Symfony\Component\ErrorHandler\Debug; if (!in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) { @@ -14,8 +15,8 @@ set_time_limit(0); require dirname(__DIR__).'/vendor/autoload.php'; -if (!class_exists(Application::class)) { - throw new LogicException('You need to add "symfony/framework-bundle" as a Composer dependency.'); +if (!class_exists(Application::class) || !class_exists(Dotenv::class)) { + throw new LogicException('You need to add "symfony/framework-bundle" and "symfony/dotenv" as Composer dependencies.'); } $input = new ArgvInput(); @@ -27,7 +28,7 @@ if ($input->hasParameterOption('--no-debug', true)) { putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); } -require dirname(__DIR__).'/config/bootstrap.php'; +(new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); if ($_SERVER['APP_DEBUG']) { umask(0000); diff --git a/composer.json b/composer.json index 6e60fb55..8f7386ca 100644 --- a/composer.json +++ b/composer.json @@ -1,50 +1,55 @@ { "type": "project", "license": "proprietary", + "minimum-stability": "dev", + "prefer-stable": true, "require": { - "php": "^7.3", + "php": ">=7.4", "ext-ctype": "*", "ext-iconv": "*", "api-platform/api-pack": "^1.2", - "composer/package-versions-deprecated": "^1.10", + "composer/package-versions-deprecated": "1.11.99.1", "doctrine/annotations": "^1.0", - "doctrine/doctrine-bundle": "^2.1", + "doctrine/doctrine-bundle": "^2.2", "doctrine/doctrine-fixtures-bundle": "^3.4", - "doctrine/doctrine-migrations-bundle": "^2.0", - "doctrine/orm": "^2.7", + "doctrine/doctrine-migrations-bundle": "^3.0", + "doctrine/orm": "^2.8", "elao/enum": "^1.7", "erusev/parsedown": "^1.7", "friendsofsymfony/jsrouting-bundle": "^2.5", - "knpuniversity/oauth2-client-bundle": "^1.31", + "knpuniversity/oauth2-client-bundle": "^2.7", "league/csv": "^9.6", "phpdocumentor/reflection-docblock": "^5.2", "ramsey/uuid-doctrine": "^1.6", - "restcord/restcord": "^0.3.2", + "restcord/restcord": "^0.5.0", "sensio/framework-extra-bundle": "^5.1", "spatie/calendar-links": "^1.2", - "symfony/asset": "4.4.*", - "symfony/console": "4.4.*", - "symfony/dotenv": "4.4.*", - "symfony/expression-language": "4.4.*", - "symfony/finder": "4.4.*", + "symfony/asset": "5.2.*", + "symfony/console": "5.2.*", + "symfony/dotenv": "5.2.*", + "symfony/expression-language": "5.2.*", "symfony/flex": "^1.3.1", - "symfony/form": "4.4.*", - "symfony/framework-bundle": "4.4.*", - "symfony/http-client": "4.4.*", - "symfony/intl": "4.4.*", - "symfony/mailer": "4.4.*", + "symfony/form": "5.2.*", + "symfony/framework-bundle": "5.2.*", + "symfony/http-client": "5.2.*", + "symfony/intl": "5.2.*", + "symfony/mailer": "5.2.*", + "symfony/mime": "5.2.*", "symfony/monolog-bundle": "^3.1", - "symfony/process": "4.4.*", - "symfony/property-access": "4.4.*", - "symfony/property-info": "4.4.*", - "symfony/security-bundle": "4.4.*", - "symfony/serializer": "4.4.*", - "symfony/translation": "4.4.*", - "symfony/twig-bundle": "4.4.*", - "symfony/validator": "4.4.*", - "symfony/web-link": "4.4.*", + "symfony/notifier": "5.2.*", + "symfony/process": "5.2.*", + "symfony/property-access": "5.2.*", + "symfony/property-info": "5.2.*", + "symfony/proxy-manager-bridge": "5.2.*", + "symfony/security-bundle": "5.2.*", + "symfony/serializer": "5.2.*", + "symfony/string": "5.2.*", + "symfony/translation": "5.2.*", + "symfony/twig-bundle": "^5.2", + "symfony/validator": "5.2.*", + "symfony/web-link": "5.2.*", "symfony/webpack-encore-bundle": "^1.7", - "symfony/yaml": "4.4.*", + "symfony/yaml": "5.2.*", "twig/extra-bundle": "^2.12|^3.0", "twig/intl-extra": "^3.0", "twig/markdown-extra": "^3.0", @@ -55,18 +60,17 @@ "require-dev": { "dama/doctrine-test-bundle": "^6.5", "roave/security-advisories": "dev-master", - "symfony/browser-kit": "^4.4", - "symfony/css-selector": "^4.4", - "symfony/debug-bundle": "^4.4", + "symfony/browser-kit": "^5.2", + "symfony/css-selector": "^5.2", + "symfony/debug-bundle": "^5.2", "symfony/maker-bundle": "^1.0", - "symfony/monolog-bundle": "^3.0", - "symfony/phpunit-bridge": "^5.1", - "symfony/stopwatch": "^4.4", - "symfony/twig-bundle": "^4.4", - "symfony/var-dumper": "^4.4", - "symfony/web-profiler-bundle": "^4.4" + "symfony/phpunit-bridge": "^5.2", + "symfony/stopwatch": "^5.2", + "symfony/var-dumper": "^5.2", + "symfony/web-profiler-bundle": "^5.2" }, "config": { + "optimize-autoloader": true, "preferred-install": { "*": "dist" }, @@ -85,12 +89,9 @@ } }, "replace": { - "paragonie/random_compat": "2.*", "symfony/polyfill-ctype": "*", "symfony/polyfill-iconv": "*", - "symfony/polyfill-php71": "*", - "symfony/polyfill-php70": "*", - "symfony/polyfill-php56": "*" + "symfony/polyfill-php72": "*" }, "scripts": { "auto-scripts": { @@ -103,23 +104,6 @@ ], "post-update-cmd": [ "@auto-scripts" - ], - "cs": [ - "php vendor/friendsofphp/php-cs-fixer/php-cs-fixer fix" - ], - "stan": [ - "php vendor/phpstan/phpstan/phpstan analyse --level=6 src --memory-limit=128M" - ], - "lint": [ - "php bin/console lint:twig templates/", - "php bin/console lint:yaml --parse-tags config/", - "php bin/console doctrine:schema:validate", - "php bin/console doctrine:mapping:info", - "php bin/console debug:translation --domain=messages pl --only-unused", - "php bin/console debug:translation --domain=messages pl --only-missing" - ], - "tests": [ - "php bin/phpunit --testdox" ] }, "conflict": { @@ -128,7 +112,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "4.4.*" + "require": "5.2.*" } } } diff --git a/composer.lock b/composer.lock index 9a4580e3..1fa700b6 100644 --- a/composer.lock +++ b/composer.lock @@ -4,33 +4,30 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "878be0bf3d2d00955e228ed43a08fc38", + "content-hash": "5651240791d0c2cfc2dd1c97b94ebdb8", "packages": [ { "name": "api-platform/api-pack", - "version": "v1.2.2", + "version": "v1.3.0", "source": { "type": "git", "url": "https://github.com/api-platform/api-pack.git", - "reference": "ca7ca22f30bcfcdb2493ec9e8b7b5dba1271608a" + "reference": "0fb12343362f565b65eb374d3c49bec580ffcf8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/api-pack/zipball/ca7ca22f30bcfcdb2493ec9e8b7b5dba1271608a", - "reference": "ca7ca22f30bcfcdb2493ec9e8b7b5dba1271608a", + "url": "https://api.github.com/repos/api-platform/api-pack/zipball/0fb12343362f565b65eb374d3c49bec580ffcf8d", + "reference": "0fb12343362f565b65eb374d3c49bec580ffcf8d", "shasum": "" }, "require": { - "api-platform/core": "^2.1", - "doctrine/annotations": "^1.0", - "doctrine/doctrine-bundle": "^1.6 || ^2.0", - "doctrine/orm": "^2.4.5", - "nelmio/cors-bundle": "^1.5 || ^2.0", - "php": "^7.0", - "phpdocumentor/reflection-docblock": "^3.0 || ^4.0 || ^5.0", + "api-platform/core": "*", + "nelmio/cors-bundle": "*", "symfony/asset": "*", "symfony/expression-language": "*", + "symfony/orm-pack": "*", "symfony/security-bundle": "*", + "symfony/serializer-pack": "*", "symfony/twig-bundle": "*", "symfony/validator": "*" }, @@ -40,108 +37,104 @@ "MIT" ], "description": "A pack for API Platform", - "time": "2020-04-01T16:40:06+00:00" + "time": "2020-08-28T20:27:34+00:00" }, { "name": "api-platform/core", - "version": "v2.5.6", + "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "d84282fd29cc16a4fac9be67fdd76ca247b94123" + "reference": "2edb3bf1fffe57f1d5e6833e25e7b0b54dd7a583" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/d84282fd29cc16a4fac9be67fdd76ca247b94123", - "reference": "d84282fd29cc16a4fac9be67fdd76ca247b94123", + "url": "https://api.github.com/repos/api-platform/core/zipball/2edb3bf1fffe57f1d5e6833e25e7b0b54dd7a583", + "reference": "2edb3bf1fffe57f1d5e6833e25e7b0b54dd7a583", "shasum": "" }, "require": { - "doctrine/inflector": "^1.0", + "doctrine/inflector": "^1.0 || ^2.0", "fig/link-util": "^1.0", "php": ">=7.1", "psr/cache": "^1.0", "psr/container": "^1.0", - "symfony/http-foundation": "^4.3.6 || ^5.0", - "symfony/http-kernel": "^4.3.7 || ^5.0", - "symfony/property-access": "^3.4 || ^4.0 || ^5.0", - "symfony/property-info": "^3.4 || ^4.0 || ^5.0", - "symfony/serializer": "^4.3 || ^5.0", - "symfony/web-link": "^4.1 || ^5.0", - "willdurand/negotiation": "^2.0.3" + "symfony/http-foundation": "^4.4 || ^5.1", + "symfony/http-kernel": "^4.4 || ^5.1", + "symfony/property-access": "^3.4.19 || ^4.4 || ^5.1", + "symfony/property-info": "^3.4 || ^4.4 || ^5.2.1", + "symfony/serializer": "^4.4 || ^5.1", + "symfony/web-link": "^4.4 || ^5.1", + "willdurand/negotiation": "^2.0.3 || ^3.0" }, "conflict": { "doctrine/common": "<2.7", - "doctrine/mongodb-odm": "<2.0" + "doctrine/mongodb-odm": "<2.0", + "doctrine/persistence": "<1.3" }, "require-dev": { "behat/behat": "^3.1", "behat/mink": "^1.7", - "behat/mink-browserkit-driver": "^1.3.1", - "behat/mink-extension": "^2.2", - "behat/symfony2-extension": "^2.1.1", - "behatch/contexts": "^3.1.0", "doctrine/annotations": "^1.7", - "doctrine/common": "^2.11", + "doctrine/common": "^2.11 || ^3.0", "doctrine/data-fixtures": "^1.2.2", - "doctrine/doctrine-bundle": "^1.8 || ^2.0", - "doctrine/doctrine-cache-bundle": "^1.3.5", + "doctrine/doctrine-bundle": "^1.12 || ^2.0", "doctrine/mongodb-odm": "^2.0", "doctrine/mongodb-odm-bundle": "^4.0", - "doctrine/orm": "^2.6.4", - "elasticsearch/elasticsearch": "^6.0", - "friendsofsymfony/user-bundle": "2.2.x-dev#157b53bd7d6c347148a90e723981a43f9c897bf5", - "guzzlehttp/guzzle": "^6.0", - "jangregor/phpstan-prophecy": "^0.6", + "doctrine/orm": "^2.6.4 || ^3.0", + "elasticsearch/elasticsearch": "^6.0 || ^7.0", + "friends-of-behat/mink-browserkit-driver": "^1.3.1", + "friends-of-behat/mink-extension": "^2.2", + "friends-of-behat/symfony-extension": "^2.1", + "guzzlehttp/guzzle": "^6.0 || ^7.0", + "jangregor/phpstan-prophecy": "^0.8", "justinrainbow/json-schema": "^5.2.1", - "nelmio/api-doc-bundle": "^2.13.4", - "phpdocumentor/reflection-docblock": "^3.0 || ^4.0", - "phpdocumentor/type-resolver": "^0.3 || ^0.4", - "phpspec/prophecy": "^1.8", + "phpdocumentor/reflection-docblock": "^3.0 || ^4.0 || ^5.1", + "phpdocumentor/type-resolver": "^0.3 || ^0.4 || ^1.4", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.4", + "phpstan/phpstan": "^0.12.65", "phpstan/phpstan-doctrine": "^0.12.7", "phpstan/phpstan-phpunit": "^0.12.4", "phpstan/phpstan-symfony": "^0.12.4", - "phpunit/phpunit": "^7.5.2 || ^8.0", "psr/log": "^1.0", - "ramsey/uuid": "^3.7", + "ramsey/uuid": "^3.7 || ^4.0", "ramsey/uuid-doctrine": "^1.4", - "sebastian/object-enumerator": "^3.0.3", - "symfony/asset": "^3.4 || ^4.0 || ^5.0", - "symfony/browser-kit": "^4.3 || ^5.0", - "symfony/cache": "^3.4 || ^4.0 || ^5.0", - "symfony/config": "^3.4 || ^4.0 || ^5.0", - "symfony/console": "^3.4 || ^4.0 || ^5.0", - "symfony/css-selector": "^3.4 || ^4.0 || ^5.0", - "symfony/debug": "^3.4 || ^4.0", - "symfony/dependency-injection": "^3.4 || ^4.0 || ^5.0", - "symfony/doctrine-bridge": "^3.4 || ^4.0 || ^5.0", - "symfony/dom-crawler": "^3.4 || ^4.0 || ^5.0", - "symfony/event-dispatcher": "^3.4 || ^4.0 || ^5.0", - "symfony/expression-language": "^3.4 || ^4.0 || ^5.0", - "symfony/finder": "^3.4 || ^4.0 || ^5.0", - "symfony/form": "^3.4 || ^4.0 || ^5.0", - "symfony/framework-bundle": "^4.3.2 || ^5.0", - "symfony/http-client": "^4.3 || ^5.0", + "soyuka/contexts": "^3.3.1", + "soyuka/stubs-mongodb": "^1.0", + "symfony/asset": "^3.4 || ^4.4 || ^5.1", + "symfony/browser-kit": "^4.4 || ^5.1", + "symfony/cache": "^3.4 || ^4.4 || ^5.1", + "symfony/config": "^3.4 || ^4.4 || ^5.1", + "symfony/console": "^3.4 || ^4.4 || ^5.1", + "symfony/css-selector": "^3.4 || ^4.4 || ^5.1", + "symfony/debug": "^3.4 || ^4.4 || ^5.1", + "symfony/dependency-injection": "^3.4 || ^4.4 || ^5.1", + "symfony/doctrine-bridge": "^3.4 || ^4.4 || ^5.1", + "symfony/dom-crawler": "^3.4 || ^4.4 || ^5.1", + "symfony/event-dispatcher": "^3.4 || ^4.4 || ^5.1", + "symfony/expression-language": "^3.4 || ^4.4 || ^5.1", + "symfony/finder": "^3.4 || ^4.4 || ^5.1", + "symfony/form": "^3.4 || ^4.4 || ^5.1", + "symfony/framework-bundle": "^4.4 || ^5.1", + "symfony/http-client": "^4.4 || ^5.1", "symfony/mercure-bundle": "*", - "symfony/messenger": "^4.3 || ^5.0", - "symfony/phpunit-bridge": "^4.3 || ^5.0", - "symfony/routing": "^3.4 || ^4.3 || ^5.0", - "symfony/security-bundle": "^3.4 || ^4.0 || ^5.0", - "symfony/security-core": "^4.3 || ^5.0", - "symfony/twig-bundle": "^3.4 || ^4.0 || ^5.0", - "symfony/validator": "^3.4 || ^4.0 || ^5.0", - "symfony/web-profiler-bundle": "^4.2 || ^5.0", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0", - "teohhanhui/stubs-mongodb": "@dev", - "twig/twig": "^1.42.3 || ^2.12", - "webonyx/graphql-php": ">=0.13.1 <1.0" + "symfony/messenger": "^4.4 || ^5.1", + "symfony/phpunit-bridge": "^5.1.7", + "symfony/routing": "^3.4 || ^4.4 || ^5.1", + "symfony/security-bundle": "^3.4 || ^4.4 || ^5.1", + "symfony/security-core": "^4.4 || ^5.1", + "symfony/twig-bundle": "^3.4 || ^4.4 || ^5.1", + "symfony/validator": "^3.4 || ^4.4 || ^5.1", + "symfony/web-profiler-bundle": "^4.4 || ^5.1", + "symfony/yaml": "^3.4 || ^4.4 || ^5.1", + "twig/twig": "^1.42.3 || ^2.12 || ^3.0", + "webonyx/graphql-php": "^14.0" }, "suggest": { "doctrine/mongodb-odm-bundle": "To support MongoDB. Only versions 4.0 and later are supported.", "elasticsearch/elasticsearch": "To support Elasticsearch.", "guzzlehttp/guzzle": "To use the HTTP cache invalidation system.", + "ocramius/package-versions": "To display the API Platform's version in the debug bar.", "phpdocumentor/reflection-docblock": "To support extracting metadata from PHPDoc.", "psr/cache-implementation": "To use metadata caching.", "ramsey/uuid": "To support Ramsey's UUID identifiers.", @@ -150,16 +143,17 @@ "symfony/expression-language": "To use authorization features.", "symfony/security": "To use authorization features.", "symfony/twig-bundle": "To use the Swagger UI integration.", + "symfony/uid": "To support Symfony UUID/ULID identifiers.", "symfony/web-profiler-bundle": "To use the data collector.", "webonyx/graphql-php": "To support GraphQL." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5.x-dev" + "dev-main": "2.7.x-dev" }, "symfony": { - "require": "^3.4 || ^4.0 || ^5.0" + "require": "^3.4 || ^4.4 || ^5.1" } }, "autoload": { @@ -178,7 +172,7 @@ "homepage": "https://dunglas.fr" } ], - "description": "Build a fully-featured hypermedia or GraphQL API in minutes", + "description": "Build a fully-featured hypermedia or GraphQL API in minutes!", "homepage": "https://api-platform.com", "keywords": [ "Hydra", @@ -191,30 +185,36 @@ "rest", "swagger" ], - "time": "2020-05-28T15:07:16+00:00" + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/api-platform/core", + "type": "tidelift" + } + ], + "time": "2021-02-07T14:18:49+00:00" }, { "name": "brick/math", - "version": "0.9.1", + "version": "0.9.2", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "283a40c901101e66de7061bd359252c013dcc43c" + "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/283a40c901101e66de7061bd359252c013dcc43c", - "reference": "283a40c901101e66de7061bd359252c013dcc43c", + "url": "https://api.github.com/repos/brick/math/zipball/dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", + "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", "shasum": "" }, "require": { "ext-json": "*", - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15|^8.5", - "vimeo/psalm": "^3.5" + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", + "vimeo/psalm": "4.3.2" }, "type": "library", "autoload": { @@ -243,28 +243,28 @@ "type": "tidelift" } ], - "time": "2020-08-18T23:57:15+00:00" + "time": "2021-01-20T22:51:39+00:00" }, { "name": "composer/package-versions-deprecated", - "version": "1.10.99", + "version": "1.11.99.1", "source": { "type": "git", "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "dd51b4443d58b34b6d9344cf4c288e621c9a826f" + "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/dd51b4443d58b34b6d9344cf4c288e621c9a826f", - "reference": "dd51b4443d58b34b6d9344cf4c288e621c9a826f", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7413f0b55a051e89485c5cb9f765fe24bb02a7b6", + "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6", "shasum": "" }, "require": { "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7" + "php": "^7 || ^8" }, "replace": { - "ocramius/package-versions": "1.10.99" + "ocramius/package-versions": "1.11.99" }, "require-dev": { "composer/composer": "^1.9.3 || ^2.0@dev", @@ -298,20 +298,34 @@ } ], "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2020-07-15T08:39:18+00:00" + "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": "2020-11-11T10:22:58+00:00" }, { "name": "doctrine/annotations", - "version": "1.10.4", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "bfe91e31984e2ba76df1c1339681770401ec262f" + "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/bfe91e31984e2ba76df1c1339681770401ec262f", - "reference": "bfe91e31984e2ba76df1c1339681770401ec262f", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/ce77a7ba1770462cd705a91a151b6c3746f9c6ad", + "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad", "shasum": "" }, "require": { @@ -321,13 +335,14 @@ }, "require-dev": { "doctrine/cache": "1.*", + "doctrine/coding-standard": "^6.0 || ^8.1", "phpstan/phpstan": "^0.12.20", "phpunit/phpunit": "^7.5 || ^9.1.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9.x-dev" + "dev-master": "1.11.x-dev" } }, "autoload": { @@ -362,13 +377,13 @@ } ], "description": "Docblock Annotations Parser", - "homepage": "http://www.doctrine-project.org", + "homepage": "https://www.doctrine-project.org/projects/annotations.html", "keywords": [ "annotations", "docblock", "parser" ], - "time": "2020-08-10T19:35:50+00:00" + "time": "2020-10-26T10:28:16+00:00" }, { "name": "doctrine/cache", @@ -450,6 +465,20 @@ "redis", "xcache" ], + "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%2Fcache", + "type": "tidelift" + } + ], "time": "2020-07-07T18:54:01+00:00" }, { @@ -519,43 +548,31 @@ }, { "name": "doctrine/common", - "version": "2.13.3", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/common.git", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f" + "reference": "2afde5a9844126bc311cd5f548b5475e75f800d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/common/zipball/f3812c026e557892c34ef37f6ab808a6b567da7f", - "reference": "f3812c026e557892c34ef37f6ab808a6b567da7f", + "url": "https://api.github.com/repos/doctrine/common/zipball/2afde5a9844126bc311cd5f548b5475e75f800d3", + "reference": "2afde5a9844126bc311cd5f548b5475e75f800d3", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "doctrine/cache": "^1.0", - "doctrine/collections": "^1.0", - "doctrine/event-manager": "^1.0", - "doctrine/inflector": "^1.0", - "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.3.3", - "doctrine/reflection": "^1.0", + "doctrine/persistence": "^2.0", "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpstan/phpstan": "^0.11", - "phpstan/phpstan-phpunit": "^0.11", - "phpunit/phpunit": "^7.0", + "doctrine/coding-standard": "^6.0 || ^8.0", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", "squizlabs/php_codesniffer": "^3.0", "symfony/phpunit-bridge": "^4.0.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.11.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\": "lib/Doctrine/Common" @@ -591,27 +608,41 @@ "email": "ocramius@gmail.com" } ], - "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", "homepage": "https://www.doctrine-project.org/projects/common.html", "keywords": [ "common", "doctrine", "php" ], - "time": "2020-06-05T16:46:05+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%2Fcommon", + "type": "tidelift" + } + ], + "time": "2021-01-20T19:58:05+00:00" }, { "name": "doctrine/data-fixtures", - "version": "1.4.4", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "16a03fadb5473f49aad70384002dfd5012fe680e" + "reference": "51d3d4880d28951fff42a635a2389f8c63baddc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/16a03fadb5473f49aad70384002dfd5012fe680e", - "reference": "16a03fadb5473f49aad70384002dfd5012fe680e", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/51d3d4880d28951fff42a635a2389f8c63baddc5", + "reference": "51d3d4880d28951fff42a635a2389f8c63baddc5", "shasum": "" }, "require": { @@ -623,11 +654,12 @@ "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.2", "doctrine/dbal": "^2.5.4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", "doctrine/orm": "^2.7.0", - "phpunit/phpunit": "^7.0" + "ext-sqlite3": "*", + "phpunit/phpunit": "^8.0" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -636,11 +668,6 @@ "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\DataFixtures\\": "lib/Doctrine/Common/DataFixtures" @@ -675,36 +702,36 @@ "type": "tidelift" } ], - "time": "2020-09-01T07:13:28+00:00" + "time": "2021-01-23T10:20:43+00:00" }, { "name": "doctrine/dbal", - "version": "2.10.2", + "version": "2.12.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8" + "reference": "adce7a954a1c2f14f85e94aed90c8489af204086" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/aab745e7b6b2de3b47019da81e7225e14dcfdac8", - "reference": "aab745e7b6b2de3b47019da81e7225e14dcfdac8", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/adce7a954a1c2f14f85e94aed90c8489af204086", + "reference": "adce7a954a1c2f14f85e94aed90c8489af204086", "shasum": "" }, "require": { "doctrine/cache": "^1.0", "doctrine/event-manager": "^1.0", "ext-pdo": "*", - "php": "^7.2" + "php": "^7.3 || ^8" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.1", "jetbrains/phpstorm-stubs": "^2019.1", - "nikic/php-parser": "^4.4", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "^8.4.1", + "phpstan/phpstan": "^0.12.40", + "phpunit/phpunit": "^9.4", + "psalm/plugin-phpunit": "^0.10.0", "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "^3.11" + "vimeo/psalm": "^3.17.2" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -715,8 +742,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.10.x-dev", - "dev-develop": "3.0.x-dev" + "dev-master": "4.0.x-dev" } }, "autoload": { @@ -769,25 +795,39 @@ "sqlserver", "sqlsrv" ], - "time": "2020-04-20T17:19:26+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%2Fdbal", + "type": "tidelift" + } + ], + "time": "2020-11-14T20:26:58+00:00" }, { "name": "doctrine/doctrine-bundle", - "version": "2.1.0", + "version": "2.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "0fb513842c78b43770597ef3c487cdf79d944db3" + "reference": "015fdd490074d4daa891e2d1df998dc35ba54924" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0fb513842c78b43770597ef3c487cdf79d944db3", - "reference": "0fb513842c78b43770597ef3c487cdf79d944db3", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/015fdd490074d4daa891e2d1df998dc35ba54924", + "reference": "015fdd490074d4daa891e2d1df998dc35ba54924", "shasum": "" }, "require": { - "doctrine/dbal": "^2.9.0", - "doctrine/persistence": "^1.3.3", + "doctrine/dbal": "^2.9.0|^3.0", + "doctrine/persistence": "^1.3.3|^2.0", "doctrine/sql-formatter": "^1.0.1", "php": "^7.1 || ^8.0", "symfony/cache": "^4.3.3|^5.0", @@ -803,10 +843,10 @@ "twig/twig": "<1.34|>=2.0,<2.4" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.0", "doctrine/orm": "^2.6", - "ocramius/proxy-manager": "^2.1", - "phpunit/phpunit": "^7.5", + "friendsofphp/proxy-manager-lts": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3", "symfony/phpunit-bridge": "^4.2", "symfony/property-info": "^4.3.3|^5.0", "symfony/proxy-manager-bridge": "^3.4|^4.3.3|^5.0", @@ -814,7 +854,7 @@ "symfony/validator": "^3.4.30|^4.3.3|^5.0", "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0", "symfony/yaml": "^3.4.30|^4.3.3|^5.0", - "twig/twig": "^1.34|^2.12" + "twig/twig": "^1.34|^2.12|^3.0" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -823,7 +863,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "2.3.x-dev" } }, "autoload": { @@ -861,7 +901,21 @@ "orm", "persistence" ], - "time": "2020-05-25T19:56:00+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%2Fdoctrine-bundle", + "type": "tidelift" + } + ], + "time": "2021-01-19T20:29:53+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -942,35 +996,37 @@ }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "2.2.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "5efa29df768abaafe29b34e73dac68efbedcaa4d" + "reference": "b8de89fe811e62f1dea8cf9aafda0ea45ca6f1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/5efa29df768abaafe29b34e73dac68efbedcaa4d", - "reference": "5efa29df768abaafe29b34e73dac68efbedcaa4d", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/b8de89fe811e62f1dea8cf9aafda0ea45ca6f1f3", + "reference": "b8de89fe811e62f1dea8cf9aafda0ea45ca6f1f3", "shasum": "" }, "require": { "doctrine/doctrine-bundle": "~1.0|~2.0", - "doctrine/migrations": "^2.2", - "php": "^7.1", + "doctrine/migrations": "~3.0", + "php": "^7.2|^8.0", "symfony/framework-bundle": "~3.4|~4.0|~5.0" }, "require-dev": { - "doctrine/coding-standard": "^5.0", - "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^0.9.2", - "phpstan/phpstan-strict-rules": "^0.9", - "phpunit/phpunit": "^6.4|^7.0" + "doctrine/coding-standard": "^8.0", + "doctrine/orm": "^2.6", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -1006,7 +1062,21 @@ "migrations", "schema" ], - "time": "2020-06-25T19:36:08+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%2Fdoctrine-migrations-bundle", + "type": "tidelift" + } + ], + "time": "2020-12-23T15:13:22+00:00" }, { "name": "doctrine/event-manager", @@ -1082,20 +1152,34 @@ "event system", "events" ], + "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%2Fevent-manager", + "type": "tidelift" + } + ], "time": "2020-05-29T18:28:51+00:00" }, { "name": "doctrine/inflector", - "version": "1.4.3", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c" + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/4650c8b30c753a76bf44fb2ed00117d6f367490c", - "reference": "4650c8b30c753a76bf44fb2ed00117d6f367490c", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", "shasum": "" }, "require": { @@ -1116,7 +1200,6 @@ }, "autoload": { "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector", "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, @@ -1160,40 +1243,49 @@ "uppercase", "words" ], - "time": "2020-05-29T07:19:59+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%2Finflector", + "type": "tidelift" + } + ], + "time": "2020-05-29T15:13:26+00:00" }, { "name": "doctrine/instantiator", - "version": "1.3.1", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", - "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", + "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.0", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13", - "phpstan/phpstan-phpunit": "^0.11", - "phpstan/phpstan-shim": "^0.11", - "phpunit/phpunit": "^7.0" + "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" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" @@ -1207,7 +1299,7 @@ { "name": "Marco Pivetta", "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "homepage": "https://ocramius.github.io/" } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", @@ -1216,7 +1308,21 @@ "constructor", "instantiate" ], - "time": "2020-05-29T17:27:14+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%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2020-11-10T18:47:58+00:00" }, { "name": "doctrine/lexer", @@ -1278,46 +1384,64 @@ "parser", "php" ], + "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%2Flexer", + "type": "tidelift" + } + ], "time": "2020-05-25T17:44:05+00:00" }, { "name": "doctrine/migrations", - "version": "2.2.1", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "a3987131febeb0e9acb3c47ab0df0af004588934" + "reference": "260991be753a38aa25b6f2d13dbb7f113f8dbf8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/a3987131febeb0e9acb3c47ab0df0af004588934", - "reference": "a3987131febeb0e9acb3c47ab0df0af004588934", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/260991be753a38aa25b6f2d13dbb7f113f8dbf8f", + "reference": "260991be753a38aa25b6f2d13dbb7f113f8dbf8f", "shasum": "" }, "require": { - "doctrine/dbal": "^2.9", - "ocramius/package-versions": "^1.3", - "ocramius/proxy-manager": "^2.0.2", - "php": "^7.1", - "symfony/console": "^3.4||^4.0||^5.0", - "symfony/stopwatch": "^3.4||^4.0||^5.0" + "composer/package-versions-deprecated": "^1.8", + "doctrine/dbal": "^2.10", + "doctrine/event-manager": "^1.0", + "friendsofphp/proxy-manager-lts": "^1.0", + "php": "^7.2 || ^8.0", + "psr/log": "^1.1.3", + "symfony/console": "^3.4 || ^4.4.16 || ^5.0", + "symfony/stopwatch": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", + "doctrine/coding-standard": "^8.0", "doctrine/orm": "^2.6", + "doctrine/persistence": "^1.3 || ^2.0", + "doctrine/sql-formatter": "^1.0", + "ergebnis/composer-normalize": "^2.9", "ext-pdo_sqlite": "*", - "jdorn/sql-formatter": "^1.1", - "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^0.10", - "phpstan/phpstan-deprecation-rules": "^0.10", - "phpstan/phpstan-phpunit": "^0.10", - "phpstan/phpstan-strict-rules": "^0.10", - "phpunit/phpunit": "^7.0", - "symfony/process": "^3.4||^4.0||^5.0", - "symfony/yaml": "^3.4||^4.0||^5.0" + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-deprecation-rules": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpstan/phpstan-strict-rules": "^0.12", + "phpstan/phpstan-symfony": "^0.12", + "phpunit/phpunit": "^8.5 || ^9.4", + "symfony/process": "^3.4 || ^4.0 || ^5.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0" }, "suggest": { - "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", "symfony/yaml": "Allows the use of yaml for migration configuration files." }, "bin": [ @@ -1326,7 +1450,11 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "3.0.x-dev" + }, + "composer-normalize": { + "indent-size": 4, + "indent-style": "space" } }, "autoload": { @@ -1357,47 +1485,60 @@ "keywords": [ "database", "dbal", - "migrations", - "php" + "migrations" + ], + "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%2Fmigrations", + "type": "tidelift" + } ], - "time": "2019-12-04T06:09:14+00:00" + "time": "2021-02-07T21:16:17+00:00" }, { "name": "doctrine/orm", - "version": "v2.7.3", + "version": "2.8.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "d95e03ba660d50d785a9925f41927fef0ee553cf" + "reference": "ebae57eb9637acd8252b398df3121b120688ed5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/d95e03ba660d50d785a9925f41927fef0ee553cf", - "reference": "d95e03ba660d50d785a9925f41927fef0ee553cf", + "url": "https://api.github.com/repos/doctrine/orm/zipball/ebae57eb9637acd8252b398df3121b120688ed5c", + "reference": "ebae57eb9637acd8252b398df3121b120688ed5c", "shasum": "" }, "require": { - "doctrine/annotations": "^1.8", + "composer/package-versions-deprecated": "^1.8", + "doctrine/annotations": "^1.11.1", "doctrine/cache": "^1.9.1", "doctrine/collections": "^1.5", - "doctrine/common": "^2.11 || ^3.0", - "doctrine/dbal": "^2.9.3", + "doctrine/common": "^3.0.3", + "doctrine/dbal": "^2.10.0", "doctrine/event-manager": "^1.1", - "doctrine/inflector": "^1.0", + "doctrine/inflector": "^1.4|^2.0", "doctrine/instantiator": "^1.3", "doctrine/lexer": "^1.0", - "doctrine/persistence": "^1.3.3 || ^2.0", + "doctrine/persistence": "^2.0", "ext-pdo": "*", - "ocramius/package-versions": "^1.2", - "php": "^7.1", + "php": "^7.2|^8.0", "symfony/console": "^3.0|^4.0|^5.0" }, "require-dev": { - "doctrine/coding-standard": "^5.0", + "doctrine/coding-standard": "^8.0", "phpstan/phpstan": "^0.12.18", - "phpunit/phpunit": "^7.5", + "phpunit/phpunit": "^8.5|^9.4", "symfony/yaml": "^3.4|^4.0|^5.0", - "vimeo/psalm": "^3.11" + "vimeo/psalm": "4.1.1" }, "suggest": { "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" @@ -1448,20 +1589,20 @@ "database", "orm" ], - "time": "2020-05-26T16:03:49+00:00" + "time": "2021-02-16T22:10:18+00:00" }, { "name": "doctrine/persistence", - "version": "1.3.8", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288" + "reference": "9899c16934053880876b920a3b8b02ed2337ac1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/7a6eac9fb6f61bba91328f15aa7547f4806ca288", - "reference": "7a6eac9fb6f61bba91328f15aa7547f4806ca288", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/9899c16934053880876b920a3b8b02ed2337ac1d", + "reference": "9899c16934053880876b920a3b8b02ed2337ac1d", "shasum": "" }, "require": { @@ -1469,24 +1610,20 @@ "doctrine/cache": "^1.0", "doctrine/collections": "^1.0", "doctrine/event-manager": "^1.0", - "doctrine/reflection": "^1.2", "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.10@dev" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "composer/package-versions-deprecated": "^1.11", + "doctrine/coding-standard": "^6.0 || ^8.0", + "doctrine/common": "^3.0", + "phpstan/phpstan": "^0.12", + "phpunit/phpunit": "^7.5.20 || ^8.0 || ^9.0", "vimeo/psalm": "^3.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\": "lib/Doctrine/Common", @@ -1532,119 +1669,40 @@ "orm", "persistence" ], - "time": "2020-06-20T12:56:16+00:00" + "time": "2020-10-24T22:13:54+00:00" }, { - "name": "doctrine/reflection", - "version": "1.2.1", + "name": "doctrine/sql-formatter", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/doctrine/reflection.git", - "reference": "55e71912dfcd824b2fdd16f2d9afe15684cfce79" + "url": "https://github.com/doctrine/sql-formatter.git", + "reference": "56070bebac6e77230ed7d306ad13528e60732871" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/55e71912dfcd824b2fdd16f2d9afe15684cfce79", - "reference": "55e71912dfcd824b2fdd16f2d9afe15684cfce79", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871", + "reference": "56070bebac6e77230ed7d306ad13528e60732871", "shasum": "" }, "require": { - "doctrine/annotations": "^1.0", - "ext-tokenizer": "*", - "php": "^7.1" - }, - "conflict": { - "doctrine/common": "<2.9" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^5.0", - "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0", - "phpstan/phpstan-phpunit": "^0.11.0", - "phpunit/phpunit": "^7.0" + "bamarni/composer-bin-plugin": "^1.4" }, + "bin": [ + "bin/sql-formatter" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" - } - }, - "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" - }, - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "The Doctrine Reflection project is a simple library used by the various Doctrine projects which adds some additional functionality on top of the reflection functionality that comes with PHP. It allows you to get the reflection information about classes, methods and properties statically.", - "homepage": "https://www.doctrine-project.org/projects/reflection.html", - "keywords": [ - "reflection", - "static" - ], - "abandoned": "roave/better-reflection", - "time": "2020-03-27T11:06:43+00:00" - }, - { - "name": "doctrine/sql-formatter", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "56070bebac6e77230ed7d306ad13528e60732871" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/56070bebac6e77230ed7d306ad13528e60732871", - "reference": "56070bebac6e77230ed7d306ad13528e60732871", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.4" - }, - "bin": [ - "bin/sql-formatter" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Doctrine\\SqlFormatter\\": "src" + "Doctrine\\SqlFormatter\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1668,16 +1726,16 @@ }, { "name": "egulias/email-validator", - "version": "2.1.19", + "version": "2.1.25", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "840d5603eb84cc81a6a0382adac3293e57c1c64c" + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/840d5603eb84cc81a6a0382adac3293e57c1c64c", - "reference": "840d5603eb84cc81a6a0382adac3293e57c1c64c", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/0dbf5d78455d4d6a41d186da50adc1122ec066f4", + "reference": "0dbf5d78455d4d6a41d186da50adc1122ec066f4", "shasum": "" }, "require": { @@ -1722,45 +1780,55 @@ "validation", "validator" ], - "time": "2020-08-08T21:28:19+00:00" + "funding": [ + { + "url": "https://github.com/egulias", + "type": "github" + } + ], + "time": "2020-12-29T14:50:06+00:00" }, { "name": "elao/enum", - "version": "v1.9.0", + "version": "v1.13.0", "source": { "type": "git", "url": "https://github.com/Elao/PhpEnums.git", - "reference": "8a63c3528153824268b917c9ce2271bee58b9b7c" + "reference": "f7badd1fc3a7d9cf90849d79552d4e23896555a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Elao/PhpEnums/zipball/8a63c3528153824268b917c9ce2271bee58b9b7c", - "reference": "8a63c3528153824268b917c9ce2271bee58b9b7c", + "url": "https://api.github.com/repos/Elao/PhpEnums/zipball/f7badd1fc3a7d9cf90849d79552d4e23896555a0", + "reference": "f7badd1fc3a7d9cf90849d79552d4e23896555a0", "shasum": "" }, "require": { - "php": ">=7.0" + "php": ">=7.3" }, "require-dev": { "api-platform/core": "^2.5.1", "doctrine/data-fixtures": "^1.2", - "doctrine/doctrine-bundle": "^1.4|^2.0", + "doctrine/doctrine-bundle": "^1.12|^2.0", "doctrine/orm": "^2.4", "friendsofphp/php-cs-fixer": "^2.12.0", "nelmio/alice": "^3.0", "phpspec/prophecy": "~1.0", - "symfony/browser-kit": "^3.4|^4.4|^5.0", - "symfony/console": "^3.4|^4.4|^5.0", - "symfony/css-selector": "^3.4|^4.4|^5.0", - "symfony/form": "^3.4|^4.4|^5.0", - "symfony/framework-bundle": "^3.4|^4.4|^5.0", - "symfony/phpunit-bridge": "^3.4|^4.4|^5.0", - "symfony/serializer": "^3.4|^4.4|^5.0", - "symfony/translation": "^3.4|^4.4|^5.0", - "symfony/twig-bundle": "^3.4|^4.4|^5.0", - "symfony/validator": "^3.4|^4.4|^5.0", - "symfony/yaml": "^3.4|^4.4|^5.0" + "symfony/browser-kit": "^4.4|^5.1", + "symfony/console": "^4.4|^5.1", + "symfony/css-selector": "^4.4|^5.1", + "symfony/form": "^4.4|^5.1", + "symfony/framework-bundle": "^4.4|^5.1", + "symfony/phpunit-bridge": "^5.1", + "symfony/serializer": "^4.4|^5.1", + "symfony/translation": "^4.4|^5.1", + "symfony/twig-bundle": "^4.4|^5.1", + "symfony/validator": "^4.4|^5.1", + "symfony/yaml": "^4.4|^5.1", + "twig/twig": "^2.12|^3.0" }, + "bin": [ + "bin/elao-enum-dump-js" + ], "type": "library", "extra": { "branch-alias": { @@ -1797,7 +1865,13 @@ "enum", "symfony" ], - "time": "2020-05-18T13:06:23+00:00" + "funding": [ + { + "url": "https://github.com/ogizanagi", + "type": "github" + } + ], + "time": "2020-12-10T14:42:10+00:00" }, { "name": "erusev/parsedown", @@ -1847,16 +1921,16 @@ }, { "name": "fig/link-util", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/link-util.git", - "reference": "c038ee75ca13663ddc2d1f185fe6f7533c00832a" + "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link-util/zipball/c038ee75ca13663ddc2d1f185fe6f7533c00832a", - "reference": "c038ee75ca13663ddc2d1f185fe6f7533c00832a", + "url": "https://api.github.com/repos/php-fig/link-util/zipball/5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", + "reference": "5d7b8d04ed3393b4b59968ca1e906fb7186d81e8", "shasum": "" }, "require": { @@ -1888,7 +1962,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common utility implementations for HTTP links", @@ -1900,24 +1974,102 @@ "psr-13", "rest" ], - "time": "2020-04-27T06:40:36+00:00" + "time": "2021-02-03T23:36:04+00:00" + }, + { + "name": "friendsofphp/proxy-manager-lts", + "version": "v1.0.3", + "source": { + "type": "git", + "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", + "reference": "121af47c9aee9c03031bdeca3fac0540f59aa5c3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/121af47c9aee9c03031bdeca3fac0540f59aa5c3", + "reference": "121af47c9aee9c03031bdeca3fac0540f59aa5c3", + "shasum": "" + }, + "require": { + "laminas/laminas-code": "~3.4.1|^4.0", + "php": ">=7.1", + "symfony/filesystem": "^4.4.17|^5.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.2" + }, + "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": "http://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" + ], + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", + "type": "tidelift" + } + ], + "time": "2021-01-14T21:52:44+00:00" }, { "name": "friendsofsymfony/jsrouting-bundle", - "version": "2.6.0", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/FriendsOfSymfony/FOSJsRoutingBundle.git", - "reference": "9deaf916760ce1d64cf46460473260b02751cee5" + "reference": "d56600542504148bf2faa2b6bd7571a6adf6799e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfSymfony/FOSJsRoutingBundle/zipball/9deaf916760ce1d64cf46460473260b02751cee5", - "reference": "9deaf916760ce1d64cf46460473260b02751cee5", + "url": "https://api.github.com/repos/FriendsOfSymfony/FOSJsRoutingBundle/zipball/d56600542504148bf2faa2b6bd7571a6adf6799e", + "reference": "d56600542504148bf2faa2b6bd7571a6adf6799e", "shasum": "" }, "require": { - "php": "^7.1", + "php": "^7.1|^8.0", "symfony/console": "~3.3|^4.0|^5.0", "symfony/framework-bundle": "~3.3|^4.0|^5.0", "symfony/serializer": "~3.3|^4.0|^5.0", @@ -1925,12 +2077,12 @@ }, "require-dev": { "symfony/expression-language": "~3.3|^4.0|^5.0", - "symfony/phpunit-bridge": "^3.3|^4.0" + "symfony/phpunit-bridge": "^5.1" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -1962,7 +2114,7 @@ "javascript", "routing" ], - "time": "2020-05-20T09:38:45+00:00" + "time": "2020-11-20T10:38:12+00:00" }, { "name": "guzzlehttp/command", @@ -2146,23 +2298,23 @@ }, { "name": "guzzlehttp/promises", - "version": "v1.3.1", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + "reference": "60d379c243457e073cff02bc323a2a86cb355631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", + "reference": "60d379c243457e073cff02bc323a2a86cb355631", "shasum": "" }, "require": { - "php": ">=5.5.0" + "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": "^4.0" + "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", "extra": { @@ -2193,20 +2345,20 @@ "keywords": [ "promise" ], - "time": "2016-12-20T10:07:11+00:00" + "time": "2020-09-30T07:37:28+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.6.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a" + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/239400de7a173fe9901b9ac7c06497751f00727a", - "reference": "239400de7a173fe9901b9ac7c06497751f00727a", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", + "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", "shasum": "" }, "require": { @@ -2219,15 +2371,15 @@ }, "require-dev": { "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" }, "suggest": { - "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "1.7-dev" } }, "autoload": { @@ -2264,37 +2416,37 @@ "uri", "url" ], - "time": "2019-07-01T23:21:34+00:00" + "time": "2020-09-30T07:37:11+00:00" }, { "name": "knpuniversity/oauth2-client-bundle", - "version": "v1.34.0", + "version": "v2.7.0", "source": { "type": "git", "url": "https://github.com/knpuniversity/oauth2-client-bundle.git", - "reference": "fd892fe2d4752116f09c85d1a3a34af91e1ddade" + "reference": "a6462eac7488435526052d4a06c83086566dbbb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/fd892fe2d4752116f09c85d1a3a34af91e1ddade", - "reference": "fd892fe2d4752116f09c85d1a3a34af91e1ddade", + "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/a6462eac7488435526052d4a06c83086566dbbb5", + "reference": "a6462eac7488435526052d4a06c83086566dbbb5", "shasum": "" }, "require": { "league/oauth2-client": "^1.0|^2.0", - "php": "^7.1.3", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0" + "php": ">=7.1.3", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0" }, "require-dev": { "league/oauth2-facebook": "^1.1|^2.0", "phpspec/prophecy": "^1.8", "phpstan/phpstan": "^0.11.16", - "symfony/phpunit-bridge": "^4.3|^5.0", - "symfony/security-guard": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/phpunit-bridge": "^4.4|^5.0", + "symfony/security-guard": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "symfony/security-guard": "For integration with Symfony's Guard Security layer" @@ -2312,35 +2464,34 @@ "authors": [ { "name": "Ryan Weaver", - "email": "ryan@knpuniversity.com" + "email": "ryan@symfonycasts.com" } ], "description": "Integration with league/oauth2-client to provide services", - "homepage": "http://knpuniversity.com", + "homepage": "https://symfonycasts.com", "keywords": [ "oauth", "oauth2" ], - "time": "2020-03-19T10:26:26+00:00" + "time": "2020-12-07T01:10:11+00:00" }, { "name": "laminas/laminas-code", - "version": "3.4.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766" + "reference": "28a6d70ea8b8bca687d7163300e611ae33baf82a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/1cb8f203389ab1482bf89c0e70a04849bacd7766", - "reference": "1cb8f203389ab1482bf89c0e70a04849bacd7766", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/28a6d70ea8b8bca687d7163300e611ae33baf82a", + "reference": "28a6d70ea8b8bca687d7163300e611ae33baf82a", "shasum": "" }, "require": { - "laminas/laminas-eventmanager": "^2.6 || ^3.0", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.1" + "laminas/laminas-eventmanager": "^3.3", + "php": "^7.4 || ~8.0.0" }, "conflict": { "phpspec/prophecy": "<1.9.0" @@ -2349,24 +2500,20 @@ "zendframework/zend-code": "self.version" }, "require-dev": { - "doctrine/annotations": "^1.7", + "doctrine/annotations": "^1.10.4", "ext-phar": "*", - "laminas/laminas-coding-standard": "^1.0", - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "phpunit/phpunit": "^7.5.16 || ^8.4" + "laminas/laminas-coding-standard": "^2.1.4", + "laminas/laminas-stdlib": "^3.3.0", + "phpunit/phpunit": "^9.4.2", + "psalm/plugin-phpunit": "^0.14.0", + "vimeo/psalm": "^4.3.1" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component" + "laminas/laminas-stdlib": "Laminas\\Stdlib component", + "laminas/laminas-zendframework-bridge": "A bridge with Zend Framework" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.4.x-dev", - "dev-develop": "3.5.x-dev", - "dev-dev-4.0": "4.0.x-dev" - } - }, "autoload": { "psr-4": { "Laminas\\Code\\": "src/" @@ -2380,47 +2527,54 @@ "homepage": "https://laminas.dev", "keywords": [ "code", - "laminas" + "laminas", + "laminasframework" + ], + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } ], - "time": "2019-12-31T16:28:24+00:00" + "time": "2020-12-30T16:16:14+00:00" }, { "name": "laminas/laminas-eventmanager", - "version": "3.2.1", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "ce4dc0bdf3b14b7f9815775af9dfee80a63b4748" + "reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/ce4dc0bdf3b14b7f9815775af9dfee80a63b4748", - "reference": "ce4dc0bdf3b14b7f9815775af9dfee80a63b4748", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/1940ccf30e058b2fd66f5a9d696f1b5e0027b082", + "reference": "1940ccf30e058b2fd66f5a9d696f1b5e0027b082", "shasum": "" }, "require": { "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^5.6 || ^7.0" + "php": "^7.3 || ^8.0" }, "replace": { - "zendframework/zend-eventmanager": "self.version" + "zendframework/zend-eventmanager": "^3.2.1" }, "require-dev": { - "athletic/athletic": "^0.1", - "container-interop/container-interop": "^1.1.0", + "container-interop/container-interop": "^1.1", "laminas/laminas-coding-standard": "~1.0.0", "laminas/laminas-stdlib": "^2.7.3 || ^3.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2" + "phpbench/phpbench": "^0.17.1", + "phpunit/phpunit": "^8.5.8" }, "suggest": { - "container-interop/container-interop": "^1.1.0, to use the lazy listeners feature", + "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", "extra": { "branch-alias": { - "dev-master": "3.2-dev", - "dev-develop": "3.3-dev" + "dev-master": "3.3.x-dev", + "dev-develop": "3.4.x-dev" } }, "autoload": { @@ -2440,35 +2594,37 @@ "events", "laminas" ], - "time": "2019-12-31T16:44:52+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-08-25T11:10:44+00:00" }, { "name": "laminas/laminas-zendframework-bridge", - "version": "1.0.4", + "version": "1.1.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "fcd87520e4943d968557803919523772475e8ea3" + "reference": "6ede70583e101030bcace4dcddd648f760ddf642" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/fcd87520e4943d968557803919523772475e8ea3", - "reference": "fcd87520e4943d968557803919523772475e8ea3", + "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642", + "reference": "6ede70583e101030bcace4dcddd648f760ddf642", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^5.6 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1", + "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", "squizlabs/php_codesniffer": "^3.5" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev", - "dev-develop": "1.1.x-dev" - }, "laminas": { "module": "Laminas\\ZendFrameworkBridge" } @@ -2492,34 +2648,41 @@ "laminas", "zf" ], - "time": "2020-05-20T16:45:56+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2020-09-14T14:23:00+00:00" }, { "name": "league/csv", - "version": "9.6.0", + "version": "9.6.2", "source": { "type": "git", "url": "https://github.com/thephpleague/csv.git", - "reference": "7351a74625601914409b42b32cabb91a93773b7b" + "reference": "f28da6e483bf979bac10e2add384c90ae9983e4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/csv/zipball/7351a74625601914409b42b32cabb91a93773b7b", - "reference": "7351a74625601914409b42b32cabb91a93773b7b", + "url": "https://api.github.com/repos/thephpleague/csv/zipball/f28da6e483bf979bac10e2add384c90ae9983e4e", + "reference": "f28da6e483bf979bac10e2add384c90ae9983e4e", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "php": "^7.2.5" + "php": ">=7.2.5" }, "require-dev": { "ext-curl": "*", + "ext-dom": "*", "friendsofphp/php-cs-fixer": "^2.16", "phpstan/phpstan": "^0.12.0", "phpstan/phpstan-phpunit": "^0.12.0", "phpstan/phpstan-strict-rules": "^0.12.0", - "phpunit/phpunit": "^8.0" + "phpunit/phpunit": "^8.5" }, "suggest": { "ext-dom": "Required to use the XMLConverter and or the HTMLConverter classes", @@ -2563,33 +2726,38 @@ "transform", "write" ], - "time": "2020-03-17T15:15:35+00:00" + "funding": [ + { + "url": "https://github.com/sponsors/nyamsprod", + "type": "github" + } + ], + "time": "2020-12-10T19:40:30+00:00" }, { "name": "league/oauth2-client", - "version": "2.5.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb" + "reference": "badb01e62383430706433191b82506b6df24ad98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb", - "reference": "d9f2a1e000dc14eb3c02e15d15759385ec7ff0fb", + "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/badb01e62383430706433191b82506b6df24ad98", + "reference": "badb01e62383430706433191b82506b6df24ad98", "shasum": "" }, "require": { "guzzlehttp/guzzle": "^6.0 || ^7.0", - "paragonie/random_compat": "^1|^2|^9.99", - "php": "^5.6|^7.0" + "paragonie/random_compat": "^1 || ^2 || ^9.99", + "php": "^5.6 || ^7.0 || ^8.0" }, "require-dev": { - "eloquent/liberator": "^2.0", - "eloquent/phony-phpunit": "^1.0|^3.0", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "phpunit/phpunit": "^5.7|^6.0", - "squizlabs/php_codesniffer": "^2.3|^3.0" + "mockery/mockery": "^1.3", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpunit/phpunit": "^5.7 || ^6.0 || ^9.3", + "squizlabs/php_codesniffer": "^2.3 || ^3.0" }, "type": "library", "extra": { @@ -2630,25 +2798,25 @@ "oauth2", "single sign on" ], - "time": "2020-07-18T17:54:32+00:00" + "time": "2020-10-28T02:03:40+00:00" }, { "name": "monolog/monolog", - "version": "1.25.5", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0" + "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1817faadd1846cd08be9a49e905dc68823bc38c0", - "reference": "1817faadd1846cd08be9a49e905dc68823bc38c0", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/1cb1cde8e8dd0f70cc0fe51354a59acad9302084", + "reference": "1cb1cde8e8dd0f70cc0fe51354a59acad9302084", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": ">=7.2", + "psr/log": "^1.0.1" }, "provide": { "psr/log-implementation": "1.0.0" @@ -2656,32 +2824,37 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", + "elasticsearch/elasticsearch": "^7", + "graylog2/gelf-php": "^1.4.2", + "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", - "php-parallel-lint/php-parallel-lint": "^1.0", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", + "phpspec/prophecy": "^1.6.1", + "phpstan/phpstan": "^0.12.59", + "phpunit/phpunit": "^8.5", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", + "ruflin/elastica": ">=0.90 <7.0.1", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "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-mongo": "Allow sending log messages to a MongoDB server", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "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", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-main": "2.x-dev" } }, "autoload": { @@ -2697,17 +2870,27 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", "psr-3" ], - "time": "2020-07-23T08:35:51+00:00" + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/monolog/monolog", + "type": "tidelift" + } + ], + "time": "2020-12-14T13:15:25+00:00" }, { "name": "nelmio/cors-bundle", @@ -2813,79 +2996,49 @@ "time": "2019-08-15T19:41:25+00:00" }, { - "name": "ocramius/proxy-manager", - "version": "2.8.0", + "name": "paragonie/random_compat", + "version": "v9.99.100", "source": { "type": "git", - "url": "https://github.com/Ocramius/ProxyManager.git", - "reference": "ac1dd414fd114cfc0da9930e0ab46063c2f5e62a" + "url": "https://github.com/paragonie/random_compat.git", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/ProxyManager/zipball/ac1dd414fd114cfc0da9930e0ab46063c2f5e62a", - "reference": "ac1dd414fd114cfc0da9930e0ab46063c2f5e62a", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/996434e5492cb4c3edcb9168db6fbb1359ef965a", + "reference": "996434e5492cb4c3edcb9168db6fbb1359ef965a", "shasum": "" }, "require": { - "laminas/laminas-code": "^3.4.1", - "ocramius/package-versions": "^1.8.0", - "php": "~7.4.1", - "webimpress/safe-writer": "^2.0.1" - }, - "conflict": { - "doctrine/annotations": "<1.6.1", - "laminas/laminas-stdlib": "<3.2.1", - "zendframework/zend-stdlib": "<3.2.1" + "php": ">= 7" }, "require-dev": { - "doctrine/coding-standard": "^6.0.0", - "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" + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^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" + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "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/" + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" } ], - "description": "A library providing utilities to generate, instantiate and generally operate with Object Proxies", - "homepage": "https://github.com/Ocramius/ProxyManager", + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ - "aop", - "lazy loading", - "proxy", - "proxy pattern", - "service proxies" + "csprng", + "polyfill", + "pseudorandom", + "random" ], - "time": "2020-04-13T14:42:16+00:00" + "time": "2020-10-15T08:29:30+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2938,16 +3091,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.2.0", + "version": "5.2.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "3170448f5769fe19f456173d833734e0ff1b84df" + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/3170448f5769fe19f456173d833734e0ff1b84df", - "reference": "3170448f5769fe19f456173d833734e0ff1b84df", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", + "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", "shasum": "" }, "require": { @@ -2986,20 +3139,20 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2020-07-20T20:05:34+00:00" + "time": "2020-09-03T19:13:55+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "e878a14a65245fbe78f8080eba03b47c3b705651" + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e878a14a65245fbe78f8080eba03b47c3b705651", - "reference": "e878a14a65245fbe78f8080eba03b47c3b705651", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", "shasum": "" }, "require": { @@ -3031,7 +3184,7 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-06-27T10:12:23+00:00" + "time": "2020-09-17T18:55:26+00:00" }, { "name": "psr/cache", @@ -3128,6 +3281,52 @@ ], "time": "2017-02-14T16:28:37+00:00" }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "time": "2019-01-08T18:20:26+00:00" + }, { "name": "psr/http-message", "version": "1.0.1", @@ -3316,16 +3515,16 @@ }, { "name": "ramsey/collection", - "version": "1.1.1", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "24d93aefb2cd786b7edd9f45b554aea20b28b9b1" + "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/24d93aefb2cd786b7edd9f45b554aea20b28b9b1", - "reference": "24d93aefb2cd786b7edd9f45b554aea20b28b9b1", + "url": "https://api.github.com/repos/ramsey/collection/zipball/28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", + "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", "shasum": "" }, "require": { @@ -3335,19 +3534,19 @@ "captainhook/captainhook": "^5.3", "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", "ergebnis/composer-normalize": "^2.6", - "fzaninotto/faker": "^1.5", + "fakerphp/faker": "^1.5", "hamcrest/hamcrest-php": "^2", - "jangregor/phpstan-prophecy": "^0.6", + "jangregor/phpstan-prophecy": "^0.8", "mockery/mockery": "^1.3", "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", + "phpunit/phpunit": "^8.5 || ^9", "psy/psysh": "^0.10.4", "slevomat/coding-standard": "^6.3", "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^3.12.2" + "vimeo/psalm": "^4.4" }, "type": "library", "autoload": { @@ -3379,9 +3578,13 @@ { "url": "https://github.com/ramsey", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", + "type": "tidelift" } ], - "time": "2020-09-10T20:58:17+00:00" + "time": "2021-01-21T17:40:04+00:00" }, { "name": "ramsey/uuid", @@ -3518,30 +3721,30 @@ }, { "name": "restcord/restcord", - "version": "0.3.2", + "version": "0.5.0", "source": { "type": "git", "url": "https://github.com/restcord/restcord.git", - "reference": "2e332138428a91fbcc70630c324aa5a449c11b01" + "reference": "e79722fc74b15773a8b58237f678d004038f3529" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/restcord/restcord/zipball/2e332138428a91fbcc70630c324aa5a449c11b01", - "reference": "2e332138428a91fbcc70630c324aa5a449c11b01", + "url": "https://api.github.com/repos/restcord/restcord/zipball/e79722fc74b15773a8b58237f678d004038f3529", + "reference": "e79722fc74b15773a8b58237f678d004038f3529", "shasum": "" }, "require": { "guzzlehttp/guzzle": "^6.3", "guzzlehttp/guzzle-services": "^1.0", - "monolog/monolog": "^1.22", + "monolog/monolog": "^1.22|^2.0", "netresearch/jsonmapper": "^1.4", - "php": "^5.6|^7.0", - "symfony/options-resolver": "^2.6|^3.0|^4.0" + "php": "^7.3|^8.0", + "symfony/options-resolver": "^3.4|^4.4|^5.1" }, "require-dev": { "beberlei/assert": "^2.7", - "gossi/php-code-generator": "^0.4.1", - "phpunit/phpunit": "^6.0|^5.0", + "gossi/php-code-generator": "^0.5.0", + "phpunit/phpunit": "^8.0|^9.0", "symfony/console": "^2.6|^3.0|^4.0", "symfony/process": "^2.6|^3.0|^4.0", "symfony/var-dumper": "^2.6|^3.0|^4.0", @@ -3564,44 +3767,47 @@ } ], "description": "REST Library for the Discord API", - "time": "2019-08-08T23:33:12+00:00" + "time": "2020-12-24T04:37:14+00:00" }, { "name": "sensio/framework-extra-bundle", - "version": "v5.5.6", + "version": "v5.6.1", "source": { "type": "git", "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "b49f079d8a87a6e6dd434062085ff5a132af466b" + "reference": "430d14c01836b77c28092883d195a43ce413ee32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/b49f079d8a87a6e6dd434062085ff5a132af466b", - "reference": "b49f079d8a87a6e6dd434062085ff5a132af466b", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/430d14c01836b77c28092883d195a43ce413ee32", + "reference": "430d14c01836b77c28092883d195a43ce413ee32", "shasum": "" }, "require": { "doctrine/annotations": "^1.0", - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/config": "^4.4|^5.0", "symfony/dependency-injection": "^4.4|^5.0", "symfony/framework-bundle": "^4.4|^5.0", "symfony/http-kernel": "^4.4|^5.0" }, "conflict": { - "doctrine/doctrine-cache-bundle": "<1.3.1" + "doctrine/doctrine-cache-bundle": "<1.3.1", + "doctrine/persistence": "<1.3" }, "require-dev": { + "doctrine/dbal": "^2.10|^3.0", "doctrine/doctrine-bundle": "^1.11|^2.0", "doctrine/orm": "^2.5", "nyholm/psr7": "^1.1", "symfony/browser-kit": "^4.4|^5.0", + "symfony/doctrine-bridge": "^4.4|^5.0", "symfony/dom-crawler": "^4.4|^5.0", "symfony/expression-language": "^4.4|^5.0", "symfony/finder": "^4.4|^5.0", "symfony/monolog-bridge": "^4.0|^5.0", "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^4.3.5|^5.0", + "symfony/phpunit-bridge": "^4.4.9|^5.0.9", "symfony/psr-http-message-bridge": "^1.1", "symfony/security-bundle": "^4.4|^5.0", "symfony/twig-bundle": "^4.4|^5.0", @@ -3611,7 +3817,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "5.5.x-dev" + "dev-master": "5.6.x-dev" } }, "autoload": { @@ -3637,20 +3843,20 @@ "annotations", "controllers" ], - "time": "2020-06-15T20:28:02+00:00" + "time": "2020-08-25T19:10:18+00:00" }, { "name": "spatie/calendar-links", - "version": "1.4.0", + "version": "1.4.2", "source": { "type": "git", "url": "https://github.com/spatie/calendar-links.git", - "reference": "3d407ed4a1546ddc212ea05c047e51a2b8116d60" + "reference": "c705b17416e2cf0b673a742f9fb6716a111ed984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/calendar-links/zipball/3d407ed4a1546ddc212ea05c047e51a2b8116d60", - "reference": "3d407ed4a1546ddc212ea05c047e51a2b8116d60", + "url": "https://api.github.com/repos/spatie/calendar-links/zipball/c705b17416e2cf0b673a742f9fb6716a111ed984", + "reference": "c705b17416e2cf0b673a742f9fb6716a111ed984", "shasum": "" }, "require": { @@ -3684,38 +3890,40 @@ "calendar-links", "spatie" ], - "time": "2020-05-02T10:41:03+00:00" + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + } + ], + "time": "2020-09-01T09:49:15+00:00" }, { "name": "symfony/asset", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "384d36d53771955d432f0e0bf6470f1c9e6a716f" + "reference": "54a42aa50f9359d1184bf7e954521b45ca3d5828" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/384d36d53771955d432f0e0bf6470f1c9e6a716f", - "reference": "384d36d53771955d432f0e0bf6470f1c9e6a716f", + "url": "https://api.github.com/repos/symfony/asset/zipball/54a42aa50f9359d1184bf7e954521b45ca3d5828", + "reference": "54a42aa50f9359d1184bf7e954521b45ca3d5828", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5" }, "require-dev": { - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "symfony/http-client": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0" }, "suggest": { "symfony/http-foundation": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Asset\\": "" @@ -3738,35 +3946,50 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Asset Component", + "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", - "time": "2020-07-05T09:39:30+00:00" + "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-01-27T10:01:46+00:00" }, { "name": "symfony/cache", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "b9ae3539a0ecd7bcffe426f7a91401489c069834" + "reference": "d6aed6c1bbf6f59e521f46437475a0ff4878d388" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/b9ae3539a0ecd7bcffe426f7a91401489c069834", - "reference": "b9ae3539a0ecd7bcffe426f7a91401489c069834", + "url": "https://api.github.com/repos/symfony/cache/zipball/d6aed6c1bbf6f59e521f46437475a0ff4878d388", + "reference": "d6aed6c1bbf6f59e521f46437475a0ff4878d388", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/cache": "~1.0", - "psr/log": "~1.0", + "psr/log": "^1.1", "symfony/cache-contracts": "^1.1.7|^2", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.2|^5.0" + "symfony/var-exporter": "^4.4|^5.0" }, "conflict": { - "doctrine/dbal": "<2.5", - "symfony/dependency-injection": "<3.4", + "doctrine/dbal": "<2.10", + "symfony/dependency-injection": "<4.4", "symfony/http-kernel": "<4.4", "symfony/var-dumper": "<4.4" }, @@ -3778,19 +4001,17 @@ "require-dev": { "cache/integration-tests": "dev-master", "doctrine/cache": "^1.6", - "doctrine/dbal": "^2.5|^3.0", + "doctrine/dbal": "^2.10|^3.0", "predis/predis": "^1.1", "psr/simple-cache": "^1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.1|^5.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" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Cache\\": "" @@ -3813,26 +4034,40 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Cache component with PSR-6, PSR-16, and tags", + "description": "Provides an extended PSR-6, PSR-16 (and tags) implementation", "homepage": "https://symfony.com", "keywords": [ "caching", "psr6" ], - "time": "2020-07-23T11:31:42+00:00" + "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-01-27T11:24:50+00:00" }, { "name": "symfony/cache-contracts", - "version": "v2.1.3", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "9771a09d2e6b84ecb8c9f0a7dbc72ee92aeba009" + "reference": "8034ca0b61d4dd967f3698aaa1da2507b631d0cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/9771a09d2e6b84ecb8c9f0a7dbc72ee92aeba009", - "reference": "9771a09d2e6b84ecb8c9f0a7dbc72ee92aeba009", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/8034ca0b61d4dd967f3698aaa1da2507b631d0cb", + "reference": "8034ca0b61d4dd967f3698aaa1da2507b631d0cb", "shasum": "" }, "require": { @@ -3845,7 +4080,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.2-dev" }, "thanks": { "name": "symfony/contracts", @@ -3881,46 +4116,57 @@ "interoperability", "standards" ], - "time": "2020-07-06T13:23:11+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/config", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "b1d8f0d9341ea1d378b8b043ba90739f37c49d36" + "reference": "50e0e1314a3b2609d32b6a5a0d0fb5342494c4ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/b1d8f0d9341ea1d378b8b043ba90739f37c49d36", - "reference": "b1d8f0d9341ea1d378b8b043ba90739f37c49d36", + "url": "https://api.github.com/repos/symfony/config/zipball/50e0e1314a3b2609d32b6a5a0d0fb5342494c4ab", + "reference": "50e0e1314a3b2609d32b6a5a0d0fb5342494c4ab", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/filesystem": "^4.4|^5.0", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/finder": "<3.4" + "symfony/finder": "<4.4" }, "require-dev": { - "symfony/event-dispatcher": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/messenger": "^4.1|^5.0", + "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": "^3.4|^4.0|^5.0" + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Config\\": "" @@ -3943,48 +4189,64 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Config Component", + "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", - "time": "2020-07-15T08:27:46+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/console", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "55d07021da933dd0d633ffdab6f45d5b230c7e02" + "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/55d07021da933dd0d633ffdab6f45d5b230c7e02", - "reference": "55d07021da933dd0d633ffdab6f45d5b230c7e02", + "url": "https://api.github.com/repos/symfony/console/zipball/89d4b176d12a2946a1ae4e34906a025b7b6b135a", + "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", "symfony/polyfill-php80": "^1.15", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", + "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": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "suggest": { "psr/log": "For using the console logger", @@ -3993,11 +4255,6 @@ "symfony/process": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Console\\": "" @@ -4020,44 +4277,77 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "time": "2020-07-06T13:18:39+00:00" + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], + "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-01-28T22:06:19+00:00" }, { - "name": "symfony/debug", - "version": "v4.4.11", + "name": "symfony/dependency-injection", + "version": "v5.2.3", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "47aa9064d75db36389692dd4d39895a0820f00f2" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "62f72187be689540385dce6c68a5d4c16f034139" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/47aa9064d75db36389692dd4d39895a0820f00f2", - "reference": "47aa9064d75db36389692dd4d39895a0820f00f2", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/62f72187be689540385dce6c68a5d4c16f034139", + "reference": "62f72187be689540385dce6c68a5d4c16f034139", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/polyfill-php80": "^1.15" + "php": ">=7.2.5", + "psr/container": "^1.0", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/http-kernel": "<3.4" + "symfony/config": "<5.1", + "symfony/finder": "<4.4", + "symfony/proxy-manager-bridge": "<4.4", + "symfony/yaml": "<4.4" + }, + "provide": { + "psr/container-implementation": "1.0", + "symfony/service-implementation": "1.0" }, "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" + "symfony/config": "^5.1", + "symfony/expression-language": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } + "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": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\DependencyInjection\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4077,63 +4367,54 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "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-01-27T12:56:27+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v4.4.11", + "name": "symfony/deprecation-contracts", + "version": "v2.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f33a28edd42708ed579377391b3a556bcd6a626d" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f33a28edd42708ed579377391b3a556bcd6a626d", - "reference": "f33a28edd42708ed579377391b3a556bcd6a626d", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", + "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0", - "symfony/service-contracts": "^1.1.6|^2" - }, - "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0" - }, - "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.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": "" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -4142,72 +4423,93 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DependencyInjection Component", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "b6062a870a07e2abf1bb4acd9fb56deaf5c307bf" + "reference": "c348e596f49df406a7c0a51443864038b3137cac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/b6062a870a07e2abf1bb4acd9fb56deaf5c307bf", - "reference": "b6062a870a07e2abf1bb4acd9fb56deaf5c307bf", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/c348e596f49df406a7c0a51443864038b3137cac", + "reference": "c348e596f49df406a7c0a51443864038b3137cac", "shasum": "" }, "require": { "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^1.3|^2", - "php": ">=7.1.3", + "doctrine/persistence": "^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1|^2" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", - "symfony/form": "<4.4", - "symfony/http-kernel": "<4.3.7", - "symfony/messenger": "<4.3", - "symfony/security-core": "<4.4", - "symfony/validator": "<4.4.2|<5.0.2,>=5.0" + "doctrine/dbal": "<2.10", + "phpunit/phpunit": "<5.4.3", + "symfony/dependency-injection": "<4.4", + "symfony/form": "<5.1", + "symfony/http-kernel": "<5", + "symfony/messenger": "<4.4", + "symfony/property-info": "<5", + "symfony/security-bundle": "<5", + "symfony/security-core": "<5", + "symfony/validator": "<5.2" }, "require-dev": { "composer/package-versions-deprecated": "^1.8", - "doctrine/annotations": "~1.7", + "doctrine/annotations": "^1.10.4", "doctrine/cache": "~1.6", "doctrine/collections": "~1.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "~2.4", - "doctrine/orm": "^2.6.3", - "doctrine/reflection": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.4|^5.0", - "symfony/http-kernel": "^4.3.7", + "doctrine/dbal": "^2.10|^3.0", + "doctrine/orm": "^2.7.3", + "symfony/cache": "^5.1", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/doctrine-messenger": "^5.1", + "symfony/expression-language": "^4.4|^5.0", + "symfony/form": "^5.1.3", + "symfony/http-kernel": "^5.0", "symfony/messenger": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/proxy-manager-bridge": "^3.4|^4.0|^5.0", - "symfony/security-core": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/validator": "^4.4.2|^5.0.2", - "symfony/var-dumper": "^3.4|^4.0|^5.0" + "symfony/property-access": "^4.4|^5.0", + "symfony/property-info": "^5.0", + "symfony/proxy-manager-bridge": "^4.4|^5.0", + "symfony/security-core": "^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/uid": "^5.1", + "symfony/validator": "^5.2", + "symfony/var-dumper": "^4.4|^5.0" }, "suggest": { "doctrine/data-fixtures": "", @@ -4218,11 +4520,6 @@ "symfony/validator": "" }, "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bridge\\Doctrine\\": "" @@ -4245,36 +4542,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Doctrine Bridge", + "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", - "time": "2020-07-23T16:49:41+00:00" - }, - { - "name": "symfony/dotenv", - "version": "v4.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/dotenv.git", - "reference": "a9eb95c87c2965d0e7dfda9c5e87e4fb590d1f4e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/a9eb95c87c2965d0e7dfda9c5e87e4fb590d1f4e", - "reference": "a9eb95c87c2965d0e7dfda9c5e87e4fb590d1f4e", - "shasum": "" - }, - "require": { - "php": ">=7.1.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": "2021-02-03T04:42:09+00:00" + }, + { + "name": "symfony/dotenv", + "version": "v5.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "783f12027c6b40ab0e93d6136d9f642d1d67cd6b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/783f12027c6b40ab0e93d6136d9f642d1d67cd6b", + "reference": "783f12027c6b40ab0e93d6136d9f642d1d67cd6b", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1" + }, "require-dev": { - "symfony/process": "^3.4.2|^4.0|^5.0" + "symfony/process": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Dotenv\\": "" @@ -4304,39 +4611,48 @@ "env", "environment" ], - "time": "2020-07-05T09:39:30+00:00" + "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-01-27T10:01:46+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "66f151360550ec2b3273b3746febb12e6ba0348b" + "reference": "48f18b3609e120ea66d59142c23dc53e9562c26d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/66f151360550ec2b3273b3746febb12e6ba0348b", - "reference": "66f151360550ec2b3273b3746febb12e6ba0348b", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/48f18b3609e120ea66d59142c23dc53e9562c26d", + "reference": "48f18b3609e120ea66d59142c23dc53e9562c26d", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "~1.0", - "symfony/debug": "^4.4.5", + "php": ">=7.2.5", + "psr/log": "^1.0", "symfony/polyfill-php80": "^1.15", "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { + "symfony/deprecation-contracts": "^2.1", "symfony/http-kernel": "^4.4|^5.0", "symfony/serializer": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\ErrorHandler\\": "" @@ -4359,44 +4675,60 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony ErrorHandler Component", + "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", - "time": "2020-07-23T08:35:20+00:00" + "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-01-28T22:06:19+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.17", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f029d6f21eac61ab23198e7aca40e7638e8c8924" + "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f029d6f21eac61ab23198e7aca40e7638e8c8924", - "reference": "f029d6f21eac61ab23198e7aca40e7638e8c8924", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4f9760f8074978ad82e2ce854dff79a71fe45367", + "reference": "4f9760f8074978ad82e2ce854dff79a71fe45367", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.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": "^3.4|^4.0|^5.0" + "symfony/stopwatch": "^4.4|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -4425,7 +4757,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "funding": [ { @@ -4441,33 +4773,33 @@ "type": "tidelift" } ], - "time": "2020-10-31T22:44:29+00:00" + "time": "2021-01-27T10:36:42+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.9", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7" + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/84e23fdcd2517bf37aecbd16967e83f0caee25a7", - "reference": "84e23fdcd2517bf37aecbd16967e83f0caee25a7", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2", + "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.2-dev" }, "thanks": { "name": "symfony/contracts", @@ -4503,33 +4835,43 @@ "interoperability", "standards" ], - "time": "2020-07-06T13:19:58+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/expression-language", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "89f0e2c82d8c12975180f993383decbb810ad73e" + "reference": "7bf30a4e29887110f8bd1882ccc82ee63c8a5133" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/89f0e2c82d8c12975180f993383decbb810ad73e", - "reference": "89f0e2c82d8c12975180f993383decbb810ad73e", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/7bf30a4e29887110f8bd1882ccc82ee63c8a5133", + "reference": "7bf30a4e29887110f8bd1882ccc82ee63c8a5133", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/cache": "^3.4|^4.0|^5.0", + "php": ">=7.2.5", + "symfony/cache": "^4.4|^5.0", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1|^2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\ExpressionLanguage\\": "" @@ -4552,26 +4894,40 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony ExpressionLanguage Component", + "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", - "time": "2020-05-20T08:37:50+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.17", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "17b83e36a911aefa2cfe04bbf6328ec4c040c1b2" + "reference": "262d033b57c73e8b59cd6e68a45c528318b15038" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/17b83e36a911aefa2cfe04bbf6328ec4c040c1b2", - "reference": "17b83e36a911aefa2cfe04bbf6328ec4c040c1b2", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/262d033b57c73e8b59cd6e68a45c528318b15038", + "reference": "262d033b57c73e8b59cd6e68a45c528318b15038", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8" }, "type": "library", @@ -4597,7 +4953,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "funding": [ { @@ -4613,24 +4969,24 @@ "type": "tidelift" } ], - "time": "2020-11-11T22:20:15+00:00" + "time": "2021-01-27T10:01:46+00:00" }, { "name": "symfony/finder", - "version": "v4.4.17", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9f1d1d883b79a91ef320c0c6e803494e042ef36e" + "reference": "4adc8d172d602008c204c2e16956f99257248e03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9f1d1d883b79a91ef320c0c6e803494e042ef36e", - "reference": "9f1d1d883b79a91ef320c0c6e803494e042ef36e", + "url": "https://api.github.com/repos/symfony/finder/zipball/4adc8d172d602008c204c2e16956f99257248e03", + "reference": "4adc8d172d602008c204c2e16956f99257248e03", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5" }, "type": "library", "autoload": { @@ -4655,7 +5011,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Finder Component", + "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "funding": [ { @@ -4671,20 +5027,20 @@ "type": "tidelift" } ], - "time": "2020-11-17T19:45:34+00:00" + "time": "2021-01-28T22:06:19+00:00" }, { "name": "symfony/flex", - "version": "v1.9.1", + "version": "v1.12.2", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "0e752e47d8382361ca2d7ef016f549828185ddb6" + "reference": "e472606b4b3173564f0edbca8f5d32b52fc4f2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/0e752e47d8382361ca2d7ef016f549828185ddb6", - "reference": "0e752e47d8382361ca2d7ef016f549828185ddb6", + "url": "https://api.github.com/repos/symfony/flex/zipball/e472606b4b3173564f0edbca8f5d32b52fc4f2c9", + "reference": "e472606b4b3173564f0edbca8f5d32b52fc4f2c9", "shasum": "" }, "require": { @@ -4694,13 +5050,14 @@ "require-dev": { "composer/composer": "^1.0.2|^2.0", "symfony/dotenv": "^4.4|^5.0", + "symfony/filesystem": "^4.4|^5.0", "symfony/phpunit-bridge": "^4.4|^5.0", "symfony/process": "^3.4|^4.4|^5.0" }, "type": "composer-plugin", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-main": "1.12-dev" }, "class": "Symfony\\Flex\\Flex" }, @@ -4720,55 +5077,73 @@ } ], "description": "Composer plugin for Symfony", - "time": "2020-07-14T15:18:33+00:00" + "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-02-16T14:05:05+00:00" }, { "name": "symfony/form", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "f1cfe946a59e6139184c161dd64d6357dd59f2b0" + "reference": "4f3069be5fe46e72f3ec233fc61ac2828ea5b301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/f1cfe946a59e6139184c161dd64d6357dd59f2b0", - "reference": "f1cfe946a59e6139184c161dd64d6357dd59f2b0", + "url": "https://api.github.com/repos/symfony/form/zipball/4f3069be5fe46e72f3ec233fc61ac2828ea5b301", + "reference": "4f3069be5fe46e72f3ec233fc61ac2828ea5b301", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher": "^4.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher": "^4.4|^5.0", "symfony/intl": "^4.4|^5.0", - "symfony/options-resolver": "~4.3|^5.0", + "symfony/options-resolver": "^5.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^3.4.40|^4.4.8|^5.0.8", + "symfony/polyfill-php80": "^1.15", + "symfony/property-access": "^5.0.8", "symfony/service-contracts": "^1.1|^2" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<4.3", - "symfony/dependency-injection": "<3.4", - "symfony/doctrine-bridge": "<3.4", - "symfony/framework-bundle": "<3.4", + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<4.4", + "symfony/error-handler": "<4.4.5", + "symfony/framework-bundle": "<4.4", "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": "<4.2", - "symfony/twig-bridge": "<3.4.5|<4.0.5,>=4.0" + "symfony/intl": "<4.4", + "symfony/translation": "<4.4", + "symfony/translation-contracts": "<1.1.7", + "symfony/twig-bridge": "<4.4" }, "require-dev": { "doctrine/collections": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^4.3|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/validator": "^3.4.31|^4.3.4|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^4.4.17|^5.1.9", + "symfony/var-dumper": "^4.4|^5.0" }, "suggest": { "symfony/security-csrf": "For protecting forms against CSRF attacks.", @@ -4776,11 +5151,6 @@ "symfony/validator": "For form validation." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Form\\": "" @@ -4803,98 +5173,117 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Form Component", + "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", - "time": "2020-07-12T10:34:29+00:00" + "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-01-28T22:06:19+00:00" }, { "name": "symfony/framework-bundle", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "c698b86e95124eeab7bc84fc5f95e808e8bd6640" + "reference": "ff455b2afd3f98237d4131ffebe190e59cc0f011" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c698b86e95124eeab7bc84fc5f95e808e8bd6640", - "reference": "c698b86e95124eeab7bc84fc5f95e808e8bd6640", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ff455b2afd3f98237d4131ffebe190e59cc0f011", + "reference": "ff455b2afd3f98237d4131ffebe190e59cc0f011", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.1.3", - "symfony/cache": "^4.4|^5.0", - "symfony/config": "^4.3.4|^5.0", - "symfony/dependency-injection": "^4.4.1|^5.0.1", + "php": ">=7.2.5", + "symfony/cache": "^5.2", + "symfony/config": "^5.0", + "symfony/dependency-injection": "^5.2", + "symfony/deprecation-contracts": "^2.1", "symfony/error-handler": "^4.4.1|^5.0.1", - "symfony/filesystem": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", + "symfony/event-dispatcher": "^5.1", + "symfony/filesystem": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-foundation": "^5.2.1", + "symfony/http-kernel": "^5.2.1", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^4.4|^5.0" + "symfony/polyfill-php80": "^1.15", + "symfony/routing": "^5.2" }, "conflict": { "doctrine/persistence": "<1.3", - "phpdocumentor/reflection-docblock": "<3.0", - "phpdocumentor/type-resolver": "<0.2.1", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/asset": "<3.4", - "symfony/browser-kit": "<4.3", - "symfony/console": "<4.3", - "symfony/dom-crawler": "<4.3", - "symfony/dotenv": "<4.3.6", - "symfony/form": "<4.3.5", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "phpunit/phpunit": "<5.4.3", + "symfony/asset": "<5.1", + "symfony/browser-kit": "<4.4", + "symfony/console": "<5.2", + "symfony/dom-crawler": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/form": "<5.2", "symfony/http-client": "<4.4", "symfony/lock": "<4.4", - "symfony/mailer": "<4.4", + "symfony/mailer": "<5.2", "symfony/messenger": "<4.4", "symfony/mime": "<4.4", - "symfony/property-info": "<3.4", - "symfony/security-bundle": "<4.4", - "symfony/serializer": "<4.4", - "symfony/stopwatch": "<3.4", - "symfony/translation": "<4.4", - "symfony/twig-bridge": "<4.1.1", + "symfony/property-access": "<5.2", + "symfony/property-info": "<4.4", + "symfony/serializer": "<5.2", + "symfony/stopwatch": "<4.4", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<4.4", "symfony/twig-bundle": "<4.4", - "symfony/validator": "<4.4", + "symfony/validator": "<5.2", "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<4.3.6" + "symfony/workflow": "<5.2" }, "require-dev": { - "doctrine/annotations": "~1.7", + "doctrine/annotations": "^1.10.4", "doctrine/cache": "~1.0", + "doctrine/persistence": "^1.3|^2.0", "paragonie/sodium_compat": "^1.8", - "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.3.4|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^4.3|^5.0", - "symfony/dotenv": "^4.3.6|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^4.3.5|^5.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/asset": "^5.1", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/console": "^5.2", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/dotenv": "^5.1", + "symfony/expression-language": "^4.4|^5.0", + "symfony/form": "^5.2", "symfony/http-client": "^4.4|^5.0", "symfony/lock": "^4.4|^5.0", - "symfony/mailer": "^4.4|^5.0", - "symfony/messenger": "^4.4|^5.0", + "symfony/mailer": "^5.2", + "symfony/messenger": "^5.2", "symfony/mime": "^4.4|^5.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/serializer": "^4.4|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/property-info": "^4.4|^5.0", + "symfony/security-bundle": "^5.1", + "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/string": "^5.0", + "symfony/translation": "^5.0", "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^4.4|^5.0", + "symfony/validator": "^5.2", "symfony/web-link": "^4.4|^5.0", - "symfony/workflow": "^4.3.6|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.41|^2.10|^3.0" + "symfony/workflow": "^5.2", + "symfony/yaml": "^4.4|^5.0", + "twig/twig": "^2.10|^3.0" }, "suggest": { "ext-apcu": "For best performance of the system caches", @@ -4907,11 +5296,6 @@ "symfony/yaml": "For using the debug:config and lint:yaml commands" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bundle\\FrameworkBundle\\": "" @@ -4934,29 +5318,44 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony FrameworkBundle", + "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "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-01-27T11:19:04+00:00" }, { "name": "symfony/http-client", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "c71448cfd772db2334e30f993c9011e14677f604" + "reference": "22cb1a7844fff206cc5186409776e78865405ea5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/c71448cfd772db2334e30f993c9011e14677f604", - "reference": "c71448cfd772db2334e30f993c9011e14677f604", + "url": "https://api.github.com/repos/symfony/http-client/zipball/22cb1a7844fff206cc5186409776e78865405ea5", + "reference": "22cb1a7844fff206cc5186409776e78865405ea5", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1.0", - "symfony/http-client-contracts": "^1.1.8|^2", + "symfony/http-client-contracts": "^2.2", "symfony/polyfill-php73": "^1.11", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.0|^2" }, "provide": { @@ -4966,20 +5365,20 @@ "symfony/http-client-implementation": "1.1" }, "require-dev": { - "guzzlehttp/promises": "^1.3.1", + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/process": "^4.2|^5.0" + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4.13|^5.1.5", + "symfony/process": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\HttpClient\\": "" @@ -5002,22 +5401,36 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpClient component", + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", - "time": "2020-07-04T09:37:14+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.1.3", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "cd88921e9add61f2064c9c6b30de4f589db42962" + "reference": "41db680a15018f9c1d4b23516059633ce280ca33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/cd88921e9add61f2064c9c6b30de4f589db42962", - "reference": "cd88921e9add61f2064c9c6b30de4f589db42962", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41db680a15018f9c1d4b23516059633ce280ca33", + "reference": "41db680a15018f9c1d4b23516059633ce280ca33", "shasum": "" }, "require": { @@ -5028,8 +5441,9 @@ }, "type": "library", "extra": { + "branch-version": "2.3", "branch-alias": { - "dev-master": "2.1-dev" + "dev-main": "2.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -5065,37 +5479,52 @@ "interoperability", "standards" ], - "time": "2020-07-06T13:23:11+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-14T17:08:19+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.0.7", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "26fb006a2c7b6cdd23d52157b05f8414ffa417b6" + "reference": "20c554c0f03f7cde5ce230ed248470cccbc34c36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/26fb006a2c7b6cdd23d52157b05f8414ffa417b6", - "reference": "26fb006a2c7b6cdd23d52157b05f8414ffa417b6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/20c554c0f03f7cde5ce230ed248470cccbc34c36", + "reference": "20c554c0f03f7cde5ce230ed248470cccbc34c36", "shasum": "" }, "require": { - "php": "^7.2.5", - "symfony/mime": "^4.4|^5.0", - "symfony/polyfill-mbstring": "~1.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.15" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } + "suggest": { + "symfony/mime": "To use the file extension guesser" }, + "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" @@ -5118,29 +5547,44 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpFoundation Component", + "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", - "time": "2020-03-30T14:14:32+00:00" - }, + "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-02-03T04:42:09+00:00" + }, { "name": "symfony/http-kernel", - "version": "v4.4.14", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "e3eac6daeb0c65965a6201bd2de9564a802fe0a9" + "reference": "89bac04f29e7b0b52f9fa6a4288ca7a8f90a1a05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e3eac6daeb0c65965a6201bd2de9564a802fe0a9", - "reference": "e3eac6daeb0c65965a6201bd2de9564a802fe0a9", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/89bac04f29e7b0b52f9fa6a4288ca7a8f90a1a05", + "reference": "89bac04f29e7b0b52f9fa6a4288ca7a8f90a1a05", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "~1.0", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", + "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": "^4.4|^5.0", "symfony/polyfill-ctype": "^1.8", @@ -5148,33 +5592,40 @@ "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.34|<2.4,>=2" + "symfony/browser-kit": "<4.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.1.8", + "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", + "twig/twig": "<2.13" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/cache": "~1.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.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.1.8", + "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", - "twig/twig": "^1.34|^2.4|^3.0" + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "symfony/browser-kit": "", @@ -5183,11 +5634,6 @@ "symfony/dependency-injection": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\HttpKernel\\": "" @@ -5210,7 +5656,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpKernel Component", + "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "funding": [ { @@ -5226,96 +5672,34 @@ "type": "tidelift" } ], - "time": "2020-09-27T04:25:44+00:00" - }, - { - "name": "symfony/inflector", - "version": "v5.0.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/inflector.git", - "reference": "70c25c66427e2bb6ba0827d668366d60b0a90cbf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/70c25c66427e2bb6ba0827d668366d60b0a90cbf", - "reference": "70c25c66427e2bb6ba0827d668366d60b0a90cbf", - "shasum": "" - }, - "require": { - "php": "^7.2.5", - "symfony/polyfill-ctype": "~1.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Inflector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Inflector Component", - "homepage": "https://symfony.com", - "keywords": [ - "inflection", - "pluralize", - "singularize", - "string", - "symfony", - "words" - ], - "time": "2020-03-27T16:56:45+00:00" + "time": "2021-02-03T04:51:58+00:00" }, { "name": "symfony/intl", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "312aa3f77e739cf4b8e12f1d54d9c88e09638dc7" + "reference": "930f17689729cc47d2ce18be21ed403bcbeeb6a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/312aa3f77e739cf4b8e12f1d54d9c88e09638dc7", - "reference": "312aa3f77e739cf4b8e12f1d54d9c88e09638dc7", + "url": "https://api.github.com/repos/symfony/intl/zipball/930f17689729cc47d2ce18be21ed403bcbeeb6a9", + "reference": "930f17689729cc47d2ce18be21ed403bcbeeb6a9", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-intl-icu": "~1.0" + "php": ">=7.2.5", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/polyfill-php80": "^1.15" }, "require-dev": { - "symfony/filesystem": "^3.4|^4.0|^5.0" + "symfony/filesystem": "^4.4|^5.0" }, "suggest": { "ext-intl": "to use the component with locales other than \"en\"" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Intl\\": "" @@ -5349,7 +5733,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A PHP replacement layer for the C intl extension that includes additional data from the ICU library.", + "description": "Provides a PHP replacement layer for the C intl extension that includes additional data from the ICU library", "homepage": "https://symfony.com", "keywords": [ "i18n", @@ -5359,33 +5743,47 @@ "l10n", "localization" ], - "time": "2020-06-18T17:51:13+00:00" + "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-01-27T10:01:46+00:00" }, { "name": "symfony/mailer", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "bbc265cc1072afb336d36503a618e3c8fb5a3810" + "reference": "1efa11a8f59b8ba706aa6ee112c4675dce4dccf6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/bbc265cc1072afb336d36503a618e3c8fb5a3810", - "reference": "bbc265cc1072afb336d36503a618e3c8fb5a3810", + "url": "https://api.github.com/repos/symfony/mailer/zipball/1efa11a8f59b8ba706aa6ee112c4675dce4dccf6", + "reference": "1efa11a8f59b8ba706aa6ee112c4675dce4dccf6", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10", - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "~1.0", - "symfony/event-dispatcher": "^4.3", - "symfony/mime": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/mime": "^5.2", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1|^2" }, "conflict": { - "symfony/http-kernel": "<4.4", - "symfony/sendgrid-mailer": "<4.4" + "symfony/http-kernel": "<4.4" }, "require-dev": { "symfony/amazon-mailer": "^4.4|^5.0", @@ -5393,16 +5791,12 @@ "symfony/http-client-contracts": "^1.1|^2", "symfony/mailchimp-mailer": "^4.4|^5.0", "symfony/mailgun-mailer": "^4.4|^5.0", + "symfony/mailjet-mailer": "^4.4|^5.0", "symfony/messenger": "^4.4|^5.0", "symfony/postmark-mailer": "^4.4|^5.0", "symfony/sendgrid-mailer": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Mailer\\": "" @@ -5425,42 +5819,59 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Mailer Component", + "description": "Helps sending emails", "homepage": "https://symfony.com", - "time": "2020-07-15T06:28:59+00:00" + "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-02-02T06:10:15+00:00" }, { "name": "symfony/mime", - "version": "v5.0.7", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "481b7d6da88922fb1e0d86a943987722b08f3955" + "reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/481b7d6da88922fb1e0d86a943987722b08f3955", - "reference": "481b7d6da88922fb1e0d86a943987722b08f3955", + "url": "https://api.github.com/repos/symfony/mime/zipball/7dee6a43493f39b51ff6c5bb2bd576fe40a76c86", + "reference": "7dee6a43493f39b51ff6c5bb2bd576fe40a76c86", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.15" }, "conflict": { + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", "symfony/mailer": "<4.4" }, "require-dev": { "egulias/email-validator": "^2.1.10", - "symfony/dependency-injection": "^4.4|^5.0" + "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/property-access": "^4.4|^5.1", + "symfony/property-info": "^4.4|^5.1", + "symfony/serializer": "^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Mime\\": "" @@ -5483,43 +5894,60 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A library to manipulate MIME messages", + "description": "Allows manipulating MIME messages", "homepage": "https://symfony.com", "keywords": [ "mime", "mime-type" ], - "time": "2020-03-27T16:56:45+00:00" + "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-02-02T06:10:15+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "f326fb8e9c7819a8560f6e9e2058332efe2b7a38" + "reference": "aca99c4135001224b917eed17cc846e8c0ba981c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/f326fb8e9c7819a8560f6e9e2058332efe2b7a38", - "reference": "f326fb8e9c7819a8560f6e9e2058332efe2b7a38", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/aca99c4135001224b917eed17cc846e8c0ba981c", + "reference": "aca99c4135001224b917eed17cc846e8c0ba981c", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1", - "php": ">=7.1.3", - "symfony/http-kernel": "^4.3", + "monolog/monolog": "^1.25.1|^2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-kernel": "^4.4|^5.0", "symfony/service-contracts": "^1.1|^2" }, "conflict": { - "symfony/console": "<3.4", - "symfony/http-foundation": "<3.4" + "symfony/console": "<4.4", + "symfony/http-foundation": "<4.4" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0", + "symfony/console": "^4.4|^5.0", "symfony/http-client": "^4.4|^5.0", - "symfony/security-core": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^3.4|^4.0|^5.0" + "symfony/mailer": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/security-core": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "suggest": { "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", @@ -5527,11 +5955,6 @@ "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." }, "type": "symfony-bridge", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bridge\\Monolog\\": "" @@ -5554,22 +5977,36 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Monolog Bridge", + "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", - "time": "2020-06-18T17:51:13+00:00" + "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-01-27T11:24:50+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.5.0", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd" + "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/dd80460fcfe1fa2050a7103ad818e9d0686ce6fd", - "reference": "dd80460fcfe1fa2050a7103ad818e9d0686ce6fd", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/e495f5c7e4e672ffef4357d4a4d85f010802f940", + "reference": "e495f5c7e4e672ffef4357d4a4d85f010802f940", "shasum": "" }, "require": { @@ -5582,7 +6019,7 @@ }, "require-dev": { "symfony/console": "~3.4 || ~4.0 || ^5.0", - "symfony/phpunit-bridge": "^3.4.19 || ^4.0 || ^5.0", + "symfony/phpunit-bridge": "^4.4 || ^5.0", "symfony/yaml": "~3.4 || ~4.0 || ^5.0" }, "type": "symfony-bundle", @@ -5619,24 +6056,122 @@ "log", "logging" ], - "time": "2019-11-13T13:11:14+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-06T15:12:11+00:00" + }, + { + "name": "symfony/notifier", + "version": "v5.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/notifier.git", + "reference": "bdb8702e91f19fc64d0c678f41fed144d0263657" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/notifier/zipball/bdb8702e91f19fc64d0c678f41fed144d0263657", + "reference": "bdb8702e91f19fc64d0c678f41fed144d0263657", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "psr/log": "~1.0", + "symfony/polyfill-php80": "^1.15" + }, + "conflict": { + "symfony/firebase-notifier": "<5.2", + "symfony/free-mobile-notifier": "<5.2", + "symfony/http-kernel": "<4.4", + "symfony/mattermost-notifier": "<5.2", + "symfony/nexmo-notifier": "<5.2", + "symfony/ovh-cloud-notifier": "<5.2", + "symfony/rocket-chat-notifier": "<5.2", + "symfony/sinch-notifier": "<5.2", + "symfony/slack-notifier": "<5.2", + "symfony/telegram-notifier": "<5.2", + "symfony/twilio-notifier": "<5.2" + }, + "require-dev": { + "symfony/event-dispatcher-contracts": "^2", + "symfony/http-client-contracts": "^2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Notifier\\": "" + }, + "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": "Sends notifications via one or more channels (email, SMS, ...)", + "homepage": "https://symfony.com", + "keywords": [ + "notification", + "notifier" + ], + "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-01-14T15:42:36+00:00" }, { "name": "symfony/options-resolver", - "version": "v4.4.17", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "157a252222251310fe50c71012b4e72f01325850" + "reference": "5d0f633f9bbfcf7ec642a2b5037268e61b0a62ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/157a252222251310fe50c71012b4e72f01325850", - "reference": "157a252222251310fe50c71012b4e72f01325850", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/5d0f633f9bbfcf7ec642a2b5037268e61b0a62ce", + "reference": "5d0f633f9bbfcf7ec642a2b5037268e61b0a62ce", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.15" }, "type": "library", "autoload": { @@ -5661,7 +6196,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony OptionsResolver Component", + "description": "Provides an improved replacement for the array_replace PHP function", "homepage": "https://symfony.com", "keywords": [ "config", @@ -5682,24 +6217,67 @@ "type": "tidelift" } ], - "time": "2020-10-24T11:50:19+00:00" + "time": "2021-01-27T12:56:27+00:00" + }, + { + "name": "symfony/orm-pack", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/orm-pack.git", + "reference": "357f6362067b1ebb94af321b79f8939fc9118751" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/orm-pack/zipball/357f6362067b1ebb94af321b79f8939fc9118751", + "reference": "357f6362067b1ebb94af321b79f8939fc9118751", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "*", + "doctrine/doctrine-bundle": "*", + "doctrine/doctrine-migrations-bundle": "*", + "doctrine/orm": "*", + "symfony/proxy-manager-bridge": "*" + }, + "type": "symfony-pack", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A pack for the Doctrine ORM", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-12-22T16:33:52+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.18.1", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5" + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b740103edbdcc39602239ee8860f0f45a8eb9aa5", - "reference": "b740103edbdcc39602239ee8860f0f45a8eb9aa5", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { "ext-intl": "For best performance" @@ -5707,7 +6285,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5746,33 +6324,46 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "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-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.18.1", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "4e45a6e39041a9cc78835b11abc47874ae302a55" + "reference": "af1842919c7e7364aaaa2798b29839e3ba168588" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/4e45a6e39041a9cc78835b11abc47874ae302a55", - "reference": "4e45a6e39041a9cc78835b11abc47874ae302a55", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/af1842919c7e7364aaaa2798b29839e3ba168588", + "reference": "af1842919c7e7364aaaa2798b29839e3ba168588", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/intl": "~2.3|~3.0|~4.0|~5.0" + "php": ">=7.1" }, "suggest": { - "ext-intl": "For best performance" + "ext-intl": "For best performance and support of other locales than \"en\"" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5782,6 +6373,15 @@ "autoload": { "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Icu\\": "" + }, + "classmap": [ + "Resources/stubs" + ], + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5808,26 +6408,39 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "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-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.18.1", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251" + "reference": "2d63434d922daf7da8dd863e7907e67ee3031483" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/5dcab1bc7146cf8c1beaa4502a3d9be344334251", - "reference": "5dcab1bc7146cf8c1beaa4502a3d9be344334251", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/2d63434d922daf7da8dd863e7907e67ee3031483", + "reference": "2d63434d922daf7da8dd863e7907e67ee3031483", "shasum": "" }, "require": { - "php": ">=5.3.3", + "php": ">=7.1", "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php70": "^1.10", "symfony/polyfill-php72": "^1.10" }, "suggest": { @@ -5836,7 +6449,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5879,24 +6492,38 @@ "portable", "shim" ], - "time": "2020-08-04T06:02:08+00:00" + "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-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.18.1", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e" + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", - "reference": "37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { "ext-intl": "For best performance" @@ -5904,7 +6531,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5946,24 +6573,38 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "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-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.18.1", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a" + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/a6977d63bf9a0ad4c65cd352709e230876f9904a", - "reference": "a6977d63bf9a0ad4c65cd352709e230876f9904a", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "suggest": { "ext-mbstring": "For best performance" @@ -5971,7 +6612,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6009,65 +6650,6 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930", - "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "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.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "funding": [ { "url": "https://symfony.com/sponsor", @@ -6082,29 +6664,29 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.18.1", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca" + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fffa1a52a023e782cdcc221d781fe1ec8f87fcca", - "reference": "fffa1a52a023e782cdcc221d781fe1ec8f87fcca", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6144,29 +6726,43 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "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-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.18.1", + "version": "v1.22.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981" + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/d87d5766cbf48d72388a9f6b85f280c8ad51f981", - "reference": "d87d5766cbf48d72388a9f6b85f280c8ad51f981", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", "shasum": "" }, "require": { - "php": ">=7.0.8" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6210,31 +6806,41 @@ "portable", "shim" ], - "time": "2020-07-14T12:35:20+00:00" + "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-01-07T16:49:33+00:00" }, { "name": "symfony/process", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479" + "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/65e70bab62f3da7089a8d4591fb23fbacacb3479", - "reference": "65e70bab62f3da7089a8d4591fb23fbacacb3479", + "url": "https://api.github.com/repos/symfony/process/zipball/313a38f09c77fbcdc1d223e57d368cea76a2fd2f", + "reference": "313a38f09c77fbcdc1d223e57d368cea76a2fd2f", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Process\\": "" @@ -6257,40 +6863,51 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/property-access", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "4788569bbec76c5b950d22ac6de61e2c3cc6bae1" + "reference": "3af8ed262bd3217512a13b023981fe68f36ad5f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/4788569bbec76c5b950d22ac6de61e2c3cc6bae1", - "reference": "4788569bbec76c5b950d22ac6de61e2c3cc6bae1", + "url": "https://api.github.com/repos/symfony/property-access/zipball/3af8ed262bd3217512a13b023981fe68f36ad5f3", + "reference": "3af8ed262bd3217512a13b023981fe68f36ad5f3", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15", + "symfony/property-info": "^5.2" }, "require-dev": { - "symfony/cache": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0" }, "suggest": { "psr/cache-implementation": "To cache access methods." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\PropertyAccess\\": "" @@ -6313,7 +6930,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony PropertyAccess Component", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", "homepage": "https://symfony.com", "keywords": [ "access", @@ -6326,37 +6943,53 @@ "property path", "reflection" ], - "time": "2020-06-18T17:51:13+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/property-info", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "a04e02346225d54c2e2a474fe22a46af04e6bf2c" + "reference": "4e4f368c3737b1c175d66f4fc0b99a5bcd161a77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/a04e02346225d54c2e2a474fe22a46af04e6bf2c", - "reference": "a04e02346225d54c2e2a474fe22a46af04e6bf2c", + "url": "https://api.github.com/repos/symfony/property-info/zipball/4e4f368c3737b1c175d66f4fc0b99a5bcd161a77", + "reference": "4e4f368c3737b1c175d66f4fc0b99a5bcd161a77", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/inflector": "^3.4|^4.0|^5.0" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15", + "symfony/string": "^5.1" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0", - "symfony/dependency-injection": "<3.4" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4" }, "require-dev": { - "doctrine/annotations": "~1.7", + "doctrine/annotations": "^1.10.4", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/serializer": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" }, "suggest": { "phpdocumentor/reflection-docblock": "To use the PHPDoc", @@ -6365,11 +6998,6 @@ "symfony/serializer": "To use Serializer metadata" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\PropertyInfo\\": "" @@ -6392,7 +7020,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Property Info Component", + "description": "Extracts information about PHP class' properties using metadata of popular sources", "homepage": "https://symfony.com", "keywords": [ "doctrine", @@ -6402,38 +7030,118 @@ "type", "validator" ], - "time": "2020-06-18T20:41:34+00:00" + "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-01-27T10:15:41+00:00" + }, + { + "name": "symfony/proxy-manager-bridge", + "version": "v5.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/proxy-manager-bridge.git", + "reference": "fd6bb40190b1719abbe831be09adf38e0744d5f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/fd6bb40190b1719abbe831be09adf38e0744d5f5", + "reference": "fd6bb40190b1719abbe831be09adf38e0744d5f5", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.8", + "friendsofphp/proxy-manager-lts": "^1.0.2", + "php": ">=7.2.5", + "symfony/dependency-injection": "^5.0" + }, + "require-dev": { + "symfony/config": "^4.4|^5.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", + "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-01-27T10:01:46+00:00" }, { "name": "symfony/routing", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e103381a4c2f0731c14589041852bf979e97c7af" + "reference": "348b5917e56546c6d96adbf21d7f92c9ef563661" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e103381a4c2f0731c14589041852bf979e97c7af", - "reference": "e103381a4c2f0731c14589041852bf979e97c7af", + "url": "https://api.github.com/repos/symfony/routing/zipball/348b5917e56546c6d96adbf21d7f92c9ef563661", + "reference": "348b5917e56546c6d96adbf21d7f92c9ef563661", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "symfony/config": "<5.0", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "~1.2", + "doctrine/annotations": "^1.10.4", "psr/log": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^5.0", + "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" }, "suggest": { "doctrine/annotations": "For using the annotation loader", @@ -6443,11 +7151,6 @@ "symfony/yaml": "For using the YAML loader" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Routing\\": "" @@ -6470,7 +7173,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Routing Component", + "description": "Maps an HTTP request to a set of configuration variables", "homepage": "https://symfony.com", "keywords": [ "router", @@ -6478,65 +7181,78 @@ "uri", "url" ], - "time": "2020-07-05T09:39:30+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/security-bundle", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "ee61f2ecf996c65e93b65ada6097761132964783" + "reference": "51854aa28585d196e60519271338aecad86f95f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/ee61f2ecf996c65e93b65ada6097761132964783", - "reference": "ee61f2ecf996c65e93b65ada6097761132964783", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/51854aa28585d196e60519271338aecad86f95f5", + "reference": "51854aa28585d196e60519271338aecad86f95f5", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.1.3", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/security-core": "^4.4", - "symfony/security-csrf": "^4.2|^5.0", - "symfony/security-guard": "^4.2|^5.0", - "symfony/security-http": "^4.4.5" + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^5.2", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher": "^5.1", + "symfony/http-kernel": "^5.0", + "symfony/polyfill-php80": "^1.15", + "symfony/security-core": "^5.2", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/security-guard": "^5.2", + "symfony/security-http": "^5.2" }, "conflict": { - "symfony/browser-kit": "<4.2", - "symfony/console": "<3.4", + "symfony/browser-kit": "<4.4", + "symfony/console": "<4.4", "symfony/framework-bundle": "<4.4", "symfony/ldap": "<4.4", "symfony/twig-bundle": "<4.4" }, "require-dev": { - "doctrine/doctrine-bundle": "^1.5|^2.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/browser-kit": "^4.2|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/form": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", + "doctrine/doctrine-bundle": "^2.0", + "symfony/asset": "^4.4|^5.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/framework-bundle": "^5.2", + "symfony/process": "^4.4|^5.0", + "symfony/rate-limiter": "^5.2", "symfony/serializer": "^4.4|^5.0", - "symfony/translation": "^3.4|^4.0|^5.0", - "symfony/twig-bridge": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bridge": "^4.4|^5.0", "symfony/twig-bundle": "^4.4|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", - "twig/twig": "^1.41|^2.10|^3.0" + "symfony/validator": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0", + "twig/twig": "^2.13|^3.0.4" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bundle\\SecurityBundle\\": "" @@ -6559,42 +7275,60 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony SecurityBundle", + "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/security-core", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "16ab88e5692e3fc32ae4ad550a55fbced516203b" + "reference": "a468c863d65e2c3768b897b8ddf7547abb4512f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/16ab88e5692e3fc32ae4ad550a55fbced516203b", - "reference": "16ab88e5692e3fc32ae4ad550a55fbced516203b", + "url": "https://api.github.com/repos/symfony/security-core/zipball/a468c863d65e2c3768b897b8ddf7547abb4512f8", + "reference": "a468c863d65e2c3768b897b8ddf7547abb4512f8", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/event-dispatcher": "<4.4", "symfony/ldap": "<4.4", - "symfony/security-guard": "<4.3" + "symfony/security-guard": "<4.4", + "symfony/validator": "<5.2" }, "require-dev": { "psr/container": "^1.0", "psr/log": "~1.0", - "symfony/event-dispatcher": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", "symfony/ldap": "^4.4|^5.0", - "symfony/validator": "^3.4.31|^4.3.4|^5.0" + "symfony/translation": "^4.4|^5.0", + "symfony/validator": "^5.2" }, "suggest": { "psr/container-implementation": "To instantiate the Security class", @@ -6605,11 +7339,6 @@ "symfony/validator": "For using the user password constraint" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Security\\Core\\": "" @@ -6634,41 +7363,50 @@ ], "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", - "time": "2020-05-30T21:50:11+00:00" + "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-01-28T22:06:19+00:00" }, { "name": "symfony/security-csrf", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "8788f6d4c8555b34d6f32f42b996b937b473f6b3" + "reference": "e22ef49d5d3773014942f3dfe301b168a4a833dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/8788f6d4c8555b34d6f32f42b996b937b473f6b3", - "reference": "8788f6d4c8555b34d6f32f42b996b937b473f6b3", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/e22ef49d5d3773014942f3dfe301b168a4a833dc", + "reference": "e22ef49d5d3773014942f3dfe301b168a4a833dc", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/security-core": "^3.4|^4.0|^5.0" + "php": ">=7.2.5", + "symfony/security-core": "^4.4|^5.0" }, "conflict": { - "symfony/http-foundation": "<3.4" + "symfony/http-foundation": "<4.4" }, "require-dev": { - "symfony/http-foundation": "^3.4|^4.0|^5.0" + "symfony/http-foundation": "^4.4|^5.0" }, "suggest": { "symfony/http-foundation": "For using the class SessionTokenStorage." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Security\\Csrf\\": "" @@ -6693,36 +7431,46 @@ ], "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", - "time": "2020-05-20T08:37:50+00:00" + "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-01-27T10:01:46+00:00" }, { "name": "symfony/security-guard", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", - "reference": "699162c3a9fcceb5ec8bce35a3dc2fcb79c6751e" + "reference": "a191352047f2ea0d927c62e1a2f261cf906d1bde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/699162c3a9fcceb5ec8bce35a3dc2fcb79c6751e", - "reference": "699162c3a9fcceb5ec8bce35a3dc2fcb79c6751e", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/a191352047f2ea0d927c62e1a2f261cf906d1bde", + "reference": "a191352047f2ea0d927c62e1a2f261cf906d1bde", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/security-core": "^3.4.22|^4.2.3|^5.0", - "symfony/security-http": "^4.4.1" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15", + "symfony/security-core": "^5.0", + "symfony/security-http": "^4.4.1|^5.0.1" }, "require-dev": { "psr/log": "~1.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Security\\Guard\\": "" @@ -6747,48 +7495,62 @@ ], "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", - "time": "2020-05-20T08:37:50+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/security-http", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "4aab90c5797a4f2ee9d5cd91f5e884d1e21f431a" + "reference": "122c8f52fd080fcc582ca475baf2b8e63d62e980" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/4aab90c5797a4f2ee9d5cd91f5e884d1e21f431a", - "reference": "4aab90c5797a4f2ee9d5cd91f5e884d1e21f431a", + "url": "https://api.github.com/repos/symfony/security-http/zipball/122c8f52fd080fcc582ca475baf2b8e63d62e980", + "reference": "122c8f52fd080fcc582ca475baf2b8e63d62e980", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/http-foundation": "^3.4.40|^4.4.7|^5.0.7", - "symfony/http-kernel": "^4.4", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/security-core": "^4.4.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/http-foundation": "^5.2", + "symfony/http-kernel": "^5.2", + "symfony/polyfill-php80": "^1.15", + "symfony/property-access": "^4.4|^5.0", + "symfony/security-core": "^5.2" }, "conflict": { - "symfony/event-dispatcher": ">=5", - "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" + "symfony/event-dispatcher": "<4.3", + "symfony/security-csrf": "<4.4" }, "require-dev": { "psr/log": "~1.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" + "symfony/cache": "^4.4|^5.0", + "symfony/rate-limiter": "^5.2", + "symfony/routing": "^4.4|^5.0", + "symfony/security-csrf": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0" }, "suggest": { "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Security\\Http\\": "" @@ -6813,64 +7575,81 @@ ], "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", - "time": "2020-05-28T12:17:38+00:00" + "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-01-28T22:06:19+00:00" }, { "name": "symfony/serializer", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "0fe47b7aa55ff28b1b781e380120c0731e2d36c7" + "reference": "70c5aa59ab0642033391a5591c9771ee417e7cef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/0fe47b7aa55ff28b1b781e380120c0731e2d36c7", - "reference": "0fe47b7aa55ff28b1b781e380120c0731e2d36c7", + "url": "https://api.github.com/repos/symfony/serializer/zipball/70c5aa59ab0642033391a5591c9771ee417e7cef", + "reference": "70c5aa59ab0642033391a5591c9771ee417e7cef", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.15" }, "conflict": { - "phpdocumentor/type-resolver": "<0.2.1", - "symfony/dependency-injection": "<3.4", - "symfony/property-access": "<3.4", - "symfony/property-info": "<3.4", - "symfony/yaml": "<3.4" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4", + "symfony/property-access": "<4.4", + "symfony/property-info": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "~1.0", + "doctrine/annotations": "^1.10.4", "doctrine/cache": "~1.0", - "phpdocumentor/reflection-docblock": "^3.2|^4.0", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", "symfony/error-handler": "^4.4|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/filesystem": "^4.4|^5.0", + "symfony/form": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4.13|~4.0|^5.0", - "symfony/validator": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/property-access": "^4.4.9|^5.0.9", + "symfony/property-info": "^4.4|^5.0", + "symfony/uid": "^5.1", + "symfony/validator": "^4.4|^5.0", + "symfony/var-exporter": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", "doctrine/cache": "For using the default cached annotation reader and metadata cache.", "psr/cache-implementation": "For using the metadata cache.", "symfony/config": "For using the XML mapping loader.", - "symfony/http-foundation": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", "symfony/property-access": "For using the ObjectNormalizer.", "symfony/property-info": "To deserialize relations.", + "symfony/var-exporter": "For using the metadata compiler.", "symfony/yaml": "For using the default YAML mapping loader." }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Serializer\\": "" @@ -6893,22 +7672,79 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Serializer Component", + "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", - "time": "2020-07-21T15:17:25+00:00" + "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-02-03T04:42:09+00:00" + }, + { + "name": "symfony/serializer-pack", + "version": "v1.0.4", + "source": { + "type": "git", + "url": "https://github.com/symfony/serializer-pack.git", + "reference": "61173947057d5e1bf1c79e2a6ab6a8430be0602e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/serializer-pack/zipball/61173947057d5e1bf1c79e2a6ab6a8430be0602e", + "reference": "61173947057d5e1bf1c79e2a6ab6a8430be0602e", + "shasum": "" + }, + "require": { + "doctrine/annotations": "^1.0", + "phpdocumentor/reflection-docblock": "*", + "symfony/property-access": "*", + "symfony/property-info": "*", + "symfony/serializer": "*" + }, + "type": "symfony-pack", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A pack for the Symfony serializer", + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-10-19T08:52:16+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.1.3", + "version": "v2.2.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442" + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/58c7475e5457c5492c26cc740cc0ad7464be9442", - "reference": "58c7475e5457c5492c26cc740cc0ad7464be9442", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", "shasum": "" }, "require": { @@ -6921,7 +7757,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.2-dev" }, "thanks": { "name": "symfony/contracts", @@ -6957,32 +7793,41 @@ "interoperability", "standards" ], - "time": "2020-07-06T13:23:11+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-07T11:33:47+00:00" }, { "name": "symfony/stopwatch", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "f51fb90df1154a7f75987198a9689e28f91e6a50" + "reference": "b12274acfab9d9850c52583d136a24398cdf1a0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f51fb90df1154a7f75987198a9689e28f91e6a50", - "reference": "f51fb90df1154a7f75987198a9689e28f91e6a50", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b12274acfab9d9850c52583d136a24398cdf1a0c", + "reference": "b12274acfab9d9850c52583d136a24398cdf1a0c", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/service-contracts": "^1.0|^2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Stopwatch\\": "" @@ -7005,22 +7850,36 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Stopwatch Component", + "description": "Provides a way to profile code", "homepage": "https://symfony.com", - "time": "2020-05-20T08:37:50+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/string", - "version": "v5.1.3", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b" + "reference": "c95468897f408dd0aca2ff582074423dd0455122" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f629ba9b611c76224feb21fe2bcbf0b6f992300b", - "reference": "f629ba9b611c76224feb21fe2bcbf0b6f992300b", + "url": "https://api.github.com/repos/symfony/string/zipball/c95468897f408dd0aca2ff582074423dd0455122", + "reference": "c95468897f408dd0aca2ff582074423dd0455122", "shasum": "" }, "require": { @@ -7038,11 +7897,6 @@ "symfony/var-exporter": "^4.4|^5.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\String\\": "" @@ -7068,7 +7922,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony String component", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", "keywords": [ "grapheme", @@ -7078,46 +7932,62 @@ "utf-8", "utf8" ], - "time": "2020-07-08T08:27:49+00:00" + "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-01-25T15:14:59+00:00" }, { "name": "symfony/translation", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "a8ea9d97353294eb6783f2894ef8cee99a045822" + "reference": "c021864d4354ee55160ddcfd31dc477a1bc77949" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/a8ea9d97353294eb6783f2894ef8cee99a045822", - "reference": "a8ea9d97353294eb6783f2894ef8cee99a045822", + "url": "https://api.github.com/repos/symfony/translation/zipball/c021864d4354ee55160ddcfd31dc477a1bc77949", + "reference": "c021864d4354ee55160ddcfd31dc477a1bc77949", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/polyfill-php80": "^1.15", + "symfony/translation-contracts": "^2.3" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" }, "provide": { - "symfony/translation-implementation": "1.0" + "symfony/translation-implementation": "2.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.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", "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -7125,12 +7995,10 @@ "symfony/yaml": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { + "files": [ + "Resources/functions.php" + ], "psr-4": { "Symfony\\Component\\Translation\\": "" }, @@ -7152,22 +8020,36 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Translation Component", + "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.1.3", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "616a9773c853097607cf9dd6577d5b143ffdcd63" + "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/616a9773c853097607cf9dd6577d5b143ffdcd63", - "reference": "616a9773c853097607cf9dd6577d5b143ffdcd63", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e2eaa60b558f26a4b0354e1bbb25636efaaad105", + "reference": "e2eaa60b558f26a4b0354e1bbb25636efaaad105", "shasum": "" }, "require": { @@ -7179,7 +8061,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "2.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -7215,58 +8097,77 @@ "interoperability", "standards" ], - "time": "2020-07-06T13:23:11+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2020-09-28T13:05:58+00:00" }, { "name": "symfony/twig-bridge", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "36e7f0bdb09fb88367e91375d739f95e8a5ad7bc" + "reference": "3e8a56f4a8ab4db819f5ec726afad29d470b452d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/36e7f0bdb09fb88367e91375d739f95e8a5ad7bc", - "reference": "36e7f0bdb09fb88367e91375d739f95e8a5ad7bc", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/3e8a56f4a8ab4db819f5ec726afad29d470b452d", + "reference": "3e8a56f4a8ab4db819f5ec726afad29d470b452d", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15", "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.41|^2.10|^3.0" + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/console": "<3.4", - "symfony/form": "<4.4", - "symfony/http-foundation": "<4.3", - "symfony/translation": "<4.2", - "symfony/workflow": "<4.3" + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/console": "<4.4", + "symfony/form": "<5.1", + "symfony/http-foundation": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/translation": "<5.2", + "symfony/workflow": "<5.2" }, "require-dev": { "egulias/email-validator": "^2.1.10", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "^4.4|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/form": "^4.3.5", - "symfony/http-foundation": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/mime": "^4.3|^5.0", + "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.1.9", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/mime": "^5.2", "symfony/polyfill-intl-icu": "~1.0", - "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/property-info": "^4.4|^5.1", + "symfony/routing": "^4.4|^5.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^3.0|^4.0|^5.0", - "symfony/security-csrf": "^3.4|^4.0|^5.0", - "symfony/security-http": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2.1|^5.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": "^4.3|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0", + "symfony/workflow": "^5.2", + "symfony/yaml": "^4.4|^5.0", "twig/cssinliner-extra": "^2.12", "twig/inky-extra": "^2.12", "twig/markdown-extra": "^2.12" @@ -7282,18 +8183,12 @@ "symfony/security-csrf": "For using the CsrfExtension", "symfony/security-http": "For using the LogoutUrlExtension", "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/templating": "For using the TwigEngine", "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", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bridge\\Twig\\": "" @@ -7316,59 +8211,68 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Twig Bridge", + "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", - "time": "2020-06-30T17:59:39+00:00" + "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-02-03T04:42:09+00:00" }, { "name": "symfony/twig-bundle", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "c83e606bdc54504a1b2bcd8807b5dd139187b4a4" + "reference": "5ebbb5f0e8bfaa0b4b37cb25ff97f83b18caf221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/c83e606bdc54504a1b2bcd8807b5dd139187b4a4", - "reference": "c83e606bdc54504a1b2bcd8807b5dd139187b4a4", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/5ebbb5f0e8bfaa0b4b37cb25ff97f83b18caf221", + "reference": "5ebbb5f0e8bfaa0b4b37cb25ff97f83b18caf221", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/http-foundation": "^4.3|^5.0", - "symfony/http-kernel": "^4.4", + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", "symfony/polyfill-ctype": "~1.8", - "symfony/twig-bridge": "^4.4|^5.0", - "twig/twig": "^1.41|^2.10|^3.0" + "symfony/twig-bridge": "^5.0", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/dependency-injection": "<4.1", - "symfony/framework-bundle": "<4.4", - "symfony/translation": "<4.2" + "symfony/dependency-injection": "<5.2", + "symfony/framework-bundle": "<5.0", + "symfony/translation": "<5.0" }, "require-dev": { - "doctrine/annotations": "~1.7", + "doctrine/annotations": "^1.10.4", "doctrine/cache": "~1.0", - "symfony/asset": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.2.5|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/form": "^3.4|^4.0|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", - "symfony/web-link": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/asset": "^4.4|^5.0", + "symfony/dependency-injection": "^5.2", + "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" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bundle\\TwigBundle\\": "" @@ -7391,56 +8295,76 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony TwigBundle", + "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", - "time": "2020-05-20T08:37:50+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/validator", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "f2b1e1d0c731987f15268816bc9cd998bd50a468" + "reference": "d83d2a9f060ce42636feef6af6facc39793354cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/f2b1e1d0c731987f15268816bc9cd998bd50a468", - "reference": "f2b1e1d0c731987f15268816bc9cd998bd50a468", + "url": "https://api.github.com/repos/symfony/validator/zipball/d83d2a9f060ce42636feef6af6facc39793354cf", + "reference": "d83d2a9f060ce42636feef6af6facc39793354cf", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "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" }, "conflict": { "doctrine/lexer": "<1.0.2", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", + "phpunit/phpunit": "<5.4.3", + "symfony/dependency-injection": "<4.4", + "symfony/expression-language": "<5.1", "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": ">=5.0", - "symfony/yaml": "<3.4" + "symfony/intl": "<4.4", + "symfony/translation": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "~1.7", + "doctrine/annotations": "^1.10.4", "doctrine/cache": "~1.0", "egulias/email-validator": "^2.1.10", - "symfony/cache": "^3.4|^4.0|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/http-foundation": "^4.1|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^4.3|^5.0", + "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": "^3.4|^4.0|^5.0", - "symfony/property-info": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/property-access": "^4.4|^5.0", + "symfony/property-info": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", @@ -7448,7 +8372,7 @@ "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", + "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", @@ -7457,11 +8381,6 @@ "symfony/yaml": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Validator\\": "" @@ -7484,39 +8403,52 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Validator Component", + "description": "Provides tools to validate values", "homepage": "https://symfony.com", - "time": "2020-06-30T17:40:09+00:00" + "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-01-28T22:06:19+00:00" }, { "name": "symfony/var-dumper", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2125805a1a4e57f2340bc566c3013ca94d2722dc" + "reference": "72ca213014a92223a5d18651ce79ef441c12b694" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2125805a1a4e57f2340bc566c3013ca94d2722dc", - "reference": "2125805a1a4e57f2340bc566c3013ca94d2722dc", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/72ca213014a92223a5d18651ce79ef441c12b694", + "reference": "72ca213014a92223a5d18651ce79ef441c12b694", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", "symfony/polyfill-php80": "^1.15" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", + "symfony/console": "^4.4|^5.0", "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.34|^2.4|^3.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).", @@ -7527,11 +8459,6 @@ "Resources/bin/var-dump-server" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "files": [ "Resources/functions/dump.php" @@ -7557,40 +8484,50 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony mechanism for exploring and dumping PHP variables", + "description": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", "keywords": [ "debug", "dump" ], - "time": "2020-06-24T13:34:53+00:00" + "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-01-27T10:15:41+00:00" }, { "name": "symfony/var-exporter", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "09f0aec4b8bfc25c1dd306e6203cf055c9886560" + "reference": "5aed4875ab514c8cb9b6ff4772baa25fa4c10307" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/09f0aec4b8bfc25c1dd306e6203cf055c9886560", - "reference": "09f0aec4b8bfc25c1dd306e6203cf055c9886560", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5aed4875ab514c8cb9b6ff4772baa25fa4c10307", + "reference": "5aed4875ab514c8cb9b6ff4772baa25fa4c10307", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" }, "require-dev": { "symfony/var-dumper": "^4.4.9|^5.0.9" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\VarExporter\\": "" @@ -7613,7 +8550,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", + "description": "Allows exporting any serializable PHP data structure to plain PHP code", "homepage": "https://symfony.com", "keywords": [ "clone", @@ -7623,46 +8560,54 @@ "instantiate", "serialize" ], - "time": "2020-07-05T09:39:30+00:00" + "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-01-27T10:01:46+00:00" }, { "name": "symfony/web-link", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "b862a104ef3a233b6f12fdbf6b57113308af79ff" + "reference": "28e6bd9028740602c158f5c6ac8d5e2a2692812e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/b862a104ef3a233b6f12fdbf6b57113308af79ff", - "reference": "b862a104ef3a233b6f12fdbf6b57113308af79ff", + "url": "https://api.github.com/repos/symfony/web-link/zipball/28e6bd9028740602c158f5c6ac8d5e2a2692812e", + "reference": "28e6bd9028740602c158f5c6ac8d5e2a2692812e", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/link": "^1.0", - "symfony/polyfill-php72": "^1.5" + "php": ">=7.2.5", + "psr/link": "^1.0" }, "conflict": { - "symfony/http-kernel": "<4.3" + "symfony/http-kernel": "<4.4" }, "provide": { "psr/link-implementation": "1.0" }, "require-dev": { "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.3|^5.0" + "symfony/http-kernel": "^4.4|^5.0" }, "suggest": { "symfony/http-kernel": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\WebLink\\": "" @@ -7685,7 +8630,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony WebLink Component", + "description": "Manages links between resources", "homepage": "https://symfony.com", "keywords": [ "dns-prefetch", @@ -7699,35 +8644,49 @@ "psr13", "push" ], - "time": "2020-05-26T09:42:42+00:00" + "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-01-10T16:29:19+00:00" }, { "name": "symfony/webpack-encore-bundle", - "version": "v1.7.3", + "version": "v1.11.1", "source": { "type": "git", "url": "https://github.com/symfony/webpack-encore-bundle.git", - "reference": "5c0f659eceae87271cce54bbdfb05ed8ec9007bd" + "reference": "395b60a549ded8e7f77f0d551815d7555e2d9eb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/5c0f659eceae87271cce54bbdfb05ed8ec9007bd", - "reference": "5c0f659eceae87271cce54bbdfb05ed8ec9007bd", + "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/395b60a549ded8e7f77f0d551815d7555e2d9eb0", + "reference": "395b60a549ded8e7f77f0d551815d7555e2d9eb0", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/asset": "^3.4 || ^4.0 || ^5.0", - "symfony/config": "^3.4 || ^4.0 || ^5.0", - "symfony/dependency-injection": "^3.4 || ^4.0 || ^5.0", - "symfony/http-kernel": "^3.4 || ^4.0 || ^5.0", + "php": ">=7.1.3", + "symfony/asset": "^4.4 || ^5.0", + "symfony/config": "^4.4 || ^5.0", + "symfony/dependency-injection": "^4.4 || ^5.0", + "symfony/http-kernel": "^4.4 || ^5.0", "symfony/service-contracts": "^1.0 || ^2.0" }, "require-dev": { - "symfony/framework-bundle": "^3.4 || ^4.0 || ^5.0", - "symfony/phpunit-bridge": "^4.3.5 || ^5.0", - "symfony/twig-bundle": "^3.4 || ^4.0 || ^5.0", - "symfony/web-link": "^3.4 || ^4.0 || ^5.0" + "symfony/framework-bundle": "^4.4 || ^5.0", + "symfony/phpunit-bridge": "^4.4 || ^5.0", + "symfony/twig-bundle": "^4.4 || ^5.0", + "symfony/web-link": "^4.4 || ^5.0" }, "type": "symfony-bundle", "extra": { @@ -7752,41 +8711,54 @@ } ], "description": "Integration with your Symfony app & Webpack Encore!", - "time": "2020-01-31T15:31:59+00:00" + "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-02-17T13:45:51+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a" + "reference": "338cddc6d74929f6adf19ca5682ac4b8e109cdb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", - "reference": "c2d2cc66e892322cfcc03f8f12f8340dbd7a3f8a", + "url": "https://api.github.com/repos/symfony/yaml/zipball/338cddc6d74929f6adf19ca5682ac4b8e109cdb0", + "reference": "338cddc6d74929f6adf19ca5682ac4b8e109cdb0", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<4.4" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" + "symfony/console": "^4.4|^5.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\Yaml\\": "" @@ -7809,22 +8781,36 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2020-05-20T08:37:50+00:00" + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "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-02-03T04:42:09+00:00" }, { "name": "twig/extra-bundle", - "version": "v3.0.5", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/twig-extra-bundle.git", - "reference": "a7c5799cf742ab0827f5d32df37528ee8bf5a233" + "reference": "e2d27a86c3f47859eb07808fa7c8679d30fcbdde" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/a7c5799cf742ab0827f5d32df37528ee8bf5a233", - "reference": "a7c5799cf742ab0827f5d32df37528ee8bf5a233", + "url": "https://api.github.com/repos/twigphp/twig-extra-bundle/zipball/e2d27a86c3f47859eb07808fa7c8679d30fcbdde", + "reference": "e2d27a86c3f47859eb07808fa7c8679d30fcbdde", "shasum": "" }, "require": { @@ -7834,22 +8820,28 @@ "twig/twig": "^2.4|^3.0" }, "require-dev": { + "symfony/phpunit-bridge": "^4.4.9|^5.0.9", + "twig/cache-extra": "^3.0", "twig/cssinliner-extra": "^2.12|^3.0", "twig/html-extra": "^2.12|^3.0", "twig/inky-extra": "^2.12|^3.0", "twig/intl-extra": "^2.12|^3.0", - "twig/markdown-extra": "^2.12|^3.0" + "twig/markdown-extra": "^2.12|^3.0", + "twig/string-extra": "^2.12|^3.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { "psr-4": { - "Twig\\Extra\\TwigExtraBundle\\": "src/" - } + "Twig\\Extra\\TwigExtraBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7870,20 +8862,30 @@ "extra", "twig" ], - "time": "2020-05-21T09:56:39+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-02-06T21:13:17+00:00" }, { "name": "twig/intl-extra", - "version": "v3.0.5", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/intl-extra.git", - "reference": "6f1889920753e6ffd72b06fc1d9b363ec2cec540" + "reference": "919e8f945c30bd3efeb6a4d79722cda538116658" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/6f1889920753e6ffd72b06fc1d9b363ec2cec540", - "reference": "6f1889920753e6ffd72b06fc1d9b363ec2cec540", + "url": "https://api.github.com/repos/twigphp/intl-extra/zipball/919e8f945c30bd3efeb6a4d79722cda538116658", + "reference": "919e8f945c30bd3efeb6a4d79722cda538116658", "shasum": "" }, "require": { @@ -7897,13 +8899,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { "psr-4": { - "Twig\\Extra\\Intl\\": "src/" - } + "Twig\\Extra\\Intl\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7923,20 +8928,30 @@ "intl", "twig" ], - "time": "2020-06-22T06:17:05+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-01-01T14:58:18+00:00" }, { "name": "twig/markdown-extra", - "version": "v3.0.5", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/markdown-extra.git", - "reference": "1fe798d559665b64bda4b08eda10793427d7e3bc" + "reference": "48142a7727b2b84691f843056346d534933f1d3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/markdown-extra/zipball/1fe798d559665b64bda4b08eda10793427d7e3bc", - "reference": "1fe798d559665b64bda4b08eda10793427d7e3bc", + "url": "https://api.github.com/repos/twigphp/markdown-extra/zipball/48142a7727b2b84691f843056346d534933f1d3f", + "reference": "48142a7727b2b84691f843056346d534933f1d3f", "shasum": "" }, "require": { @@ -7953,13 +8968,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { "psr-4": { - "Twig\\Extra\\Markdown\\": "src/" - } + "Twig\\Extra\\Markdown\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7980,25 +8998,36 @@ "markdown", "twig" ], - "time": "2020-08-05T14:54:08+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-01-01T14:58:18+00:00" }, { "name": "twig/string-extra", - "version": "v3.0.5", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", - "reference": "8e9b436d25b9473e9dc163c83cff1eb9f5dd68c4" + "reference": "8a8bb5631e8e27573fae741211b9c752b9b0b428" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/8e9b436d25b9473e9dc163c83cff1eb9f5dd68c4", - "reference": "8e9b436d25b9473e9dc163c83cff1eb9f5dd68c4", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/8a8bb5631e8e27573fae741211b9c752b9b0b428", + "reference": "8a8bb5631e8e27573fae741211b9c752b9b0b428", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/string": "^5.0", + "symfony/translation-contracts": "^1.1|^2", "twig/twig": "^2.4|^3.0" }, "require-dev": { @@ -8007,13 +9036,16 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.12-dev" + "dev-master": "3.2-dev" } }, "autoload": { "psr-4": { - "Twig\\Extra\\String\\": "src/" - } + "Twig\\Extra\\String\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8035,20 +9067,30 @@ "twig", "unicode" ], - "time": "2020-05-21T09:54:27+00:00" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" + } + ], + "time": "2021-01-29T14:39:43+00:00" }, { "name": "twig/twig", - "version": "v3.0.5", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "9b76b1535483cdf4edf01bb787b0217b62bd68a5" + "reference": "1f3b7e2c06cc05d42936a8ad508ff1db7975cdc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/9b76b1535483cdf4edf01bb787b0217b62bd68a5", - "reference": "9b76b1535483cdf4edf01bb787b0217b62bd68a5", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/1f3b7e2c06cc05d42936a8ad508ff1db7975cdc5", + "reference": "1f3b7e2c06cc05d42936a8ad508ff1db7975cdc5", "shasum": "" }, "require": { @@ -8063,7 +9105,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -8097,55 +9139,17 @@ "keywords": [ "templating" ], - "time": "2020-08-05T15:13:19+00:00" - }, - { - "name": "webimpress/safe-writer", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/webimpress/safe-writer.git", - "reference": "d6e879960febb307c112538997316371f1e95b12" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webimpress/safe-writer/zipball/d6e879960febb307c112538997316371f1e95b12", - "reference": "d6e879960febb307c112538997316371f1e95b12", - "shasum": "" - }, - "require": { - "php": "^7.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.2 || ^9.0.1", - "webimpress/coding-standard": "^1.1.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev", - "dev-develop": "2.1.x-dev", - "dev-release-1.0": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Webimpress\\SafeWriter\\": "src/" + "funding": [ + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/twig/twig", + "type": "tidelift" } - }, - "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" ], - "time": "2020-03-21T15:49:08+00:00" + "time": "2021-02-08T09:54:36+00:00" }, { "name": "webmozart/assert", @@ -8238,28 +9242,28 @@ }, { "name": "willdurand/negotiation", - "version": "v2.3.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/willdurand/Negotiation.git", - "reference": "03436ededa67c6e83b9b12defac15384cb399dc9" + "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/03436ededa67c6e83b9b12defac15384cb399dc9", - "reference": "03436ededa67c6e83b9b12defac15384cb399dc9", + "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/04e14f38d4edfcc974114a07d2777d90c98f3d9c", + "reference": "04e14f38d4edfcc974114a07d2777d90c98f3d9c", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": ">=7.1.0" }, "require-dev": { - "phpunit/phpunit": "~4.5" + "symfony/phpunit-bridge": "^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -8286,20 +9290,20 @@ "header", "negotiation" ], - "time": "2017-05-14T17:21:12+00:00" + "time": "2020-09-25T08:01:41+00:00" }, { "name": "wohali/oauth2-discord-new", - "version": "v1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/wohali/oauth2-discord-new.git", - "reference": "990bdfb59b4cd2086e0524b429dc12b5142d66ad" + "reference": "0dcb5059cded358f55ae566de9621652cf8542c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/wohali/oauth2-discord-new/zipball/990bdfb59b4cd2086e0524b429dc12b5142d66ad", - "reference": "990bdfb59b4cd2086e0524b429dc12b5142d66ad", + "url": "https://api.github.com/repos/wohali/oauth2-discord-new/zipball/0dcb5059cded358f55ae566de9621652cf8542c6", + "reference": "0dcb5059cded358f55ae566de9621652cf8542c6", "shasum": "" }, "require": { @@ -8309,9 +9313,9 @@ "team-reflex/oauth2-discord": ">=1.0" }, "require-dev": { - "jakub-onderka/php-parallel-lint": "~0.9", - "mockery/mockery": "~0.9", - "phpunit/phpunit": "^5.0", + "mockery/mockery": "~1.3.0", + "php-parallel-lint/php-parallel-lint": "~0.9", + "phpunit/phpunit": "~8.0", "squizlabs/php_codesniffer": "^2.0" }, "type": "library", @@ -8332,7 +9336,7 @@ "authors": [ { "name": "Joan Touzet", - "email": "wohali@gmail.com", + "email": "code@atypical.net", "homepage": "https://github.com/wohali" } ], @@ -8345,7 +9349,7 @@ "oauth", "oauth2" ], - "time": "2017-10-15T23:24:28+00:00" + "time": "2020-06-12T07:27:09+00:00" } ], "packages-dev": [ @@ -8410,16 +9414,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.8.0", + "version": "v4.10.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8c58eb4cd4f3883f82611abeac2efbc3dbed787e" + "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8c58eb4cd4f3883f82611abeac2efbc3dbed787e", - "reference": "8c58eb4cd4f3883f82611abeac2efbc3dbed787e", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", "shasum": "" }, "require": { @@ -8427,7 +9431,7 @@ "php": ">=7.0" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.6", + "ircmaxell/php-yacc": "^0.0.7", "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" }, "bin": [ @@ -8436,7 +9440,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.8-dev" + "dev-master": "4.9-dev" } }, "autoload": { @@ -8458,7 +9462,7 @@ "parser", "php" ], - "time": "2020-08-09T10:23:20+00:00" + "time": "2020-12-20T10:01:03+00:00" }, { "name": "roave/security-advisories", @@ -8466,12 +9470,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "a9e4cf90fc47b0ffbb90ee79f24be1b7c5ce82dc" + "reference": "640ff0b5dcacc0958534c8c0255b90697f3eb2a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/a9e4cf90fc47b0ffbb90ee79f24be1b7c5ce82dc", - "reference": "a9e4cf90fc47b0ffbb90ee79f24be1b7c5ce82dc", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/640ff0b5dcacc0958534c8c0255b90697f3eb2a8", + "reference": "640ff0b5dcacc0958534c8c0255b90697f3eb2a8", "shasum": "" }, "conflict": { @@ -8487,7 +9491,9 @@ "bagisto/bagisto": "<0.1.5", "barrelstrength/sprout-base-email": "<1.2.7", "barrelstrength/sprout-forms": "<3.9", + "baserproject/basercms": ">=4,<=4.3.6|>=4.4,<4.4.1", "bolt/bolt": "<3.7.1", + "bolt/core": "<4.1.13", "brightlocal/phpwhois": "<=4.2.5", "buddypress/buddypress": "<5.1.2", "bugsnag/bugsnag-laravel": ">=2,<2.0.2", @@ -8500,10 +9506,11 @@ "composer/composer": "<=1-alpha.11", "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/core": ">=2,<3.5.39", - "contao/core-bundle": ">=4,<4.4.46|>=4.5,<4.8.6", + "contao/core-bundle": ">=4,<4.4.52|>=4.5,<4.9.6|= 4.10.0", "contao/listing-bundle": ">=4,<4.4.8", "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", "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", @@ -8515,24 +9522,28 @@ "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", "dolibarr/dolibarr": "<11.0.4", "dompdf/dompdf": ">=0.6,<0.6.2", - "drupal/core": ">=7,<7.72|>=8,<8.8.8|>=8.9,<8.9.1|>=9,<9.0.1", - "drupal/drupal": ">=7,<7.72|>=8,<8.8.8|>=8.9,<8.9.1|>=9,<9.0.1", + "drupal/core": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8", + "drupal/drupal": ">=7,<7.74|>=8,<8.8.11|>=8.9,<8.9.9|>=9,<9.0.8", "endroid/qr-code-bundle": "<3.4.2", "enshrined/svg-sanitize": "<0.13.1", "erusev/parsedown": "<1.7.2", "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-admin-ui-assets": ">=4,<4.2", + "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", "ezsystems/ezplatform-kernel": ">=1,<1.0.2.1", "ezsystems/ezplatform-user": ">=1,<1.0.1", "ezsystems/ezpublish-kernel": ">=5.3,<5.3.12.1|>=5.4,<5.4.14.2|>=6,<6.7.9.1|>=6.8,<6.13.6.3|>=7,<7.2.4.1|>=7.3,<7.3.2.1|>=7.5,<7.5.7.1", - "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.6|>=5.4,<5.4.14.1|>=2011,<2017.12.7.2|>=2018.6,<2018.6.1.4|>=2018.9,<2018.9.1.3|>=2019.3,<2019.3.4.2", + "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/platform-ui-assets-bundle": ">=4.2,<4.2.3", "ezsystems/repository-forms": ">=2.3,<2.3.2.1", "ezyang/htmlpurifier": "<4.1.1", "firebase/php-jwt": "<2", + "flarum/sticky": ">=0.1-beta.14,<=0.1-beta.15", + "flarum/tags": "<=0.1-beta.13", "fooman/tcpdf": "<6.2.22", "fossar/tcpdf-parser": "<6.2.22", "friendsofsymfony/oauth2-php": "<1.3", @@ -8541,13 +9552,15 @@ "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", "fuel/core": "<1.8.1", "getgrav/grav": "<1.7-beta.8", + "getkirby/cms": ">=3,<3.4.5", + "getkirby/panel": "<2.5.14", "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", "gree/jose": "<=2.2", "gregwar/rst": "<1.0.3", "guzzlehttp/guzzle": ">=4-rc.2,<4.2.4|>=5,<5.3.1|>=6,<6.2.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.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.44|>=5.6,<5.6.30|>=6,<6.18.31|>=7,<7.22.4", - "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29|>=5.5,<=5.5.44|>=6,<6.18.34|>=7,<7.23.2", + "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.14|>=7,<7.30.4|>=8,<8.24", "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", "ivankristianto/phpwhois": "<=4.3", @@ -8558,58 +9571,74 @@ "kitodo/presentation": "<3.1.2", "kreait/firebase-php": ">=3.2,<3.8.1", "la-haute-societe/tcpdf": "<6.2.22", - "laravel/framework": ">=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.49|>=5.6,<5.6.30|>=6,<6.18.34|>=7,<7.23.2", + "laravel/framework": "<6.20.14|>=7,<7.30.4|>=8,<8.24", "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", "league/commonmark": "<0.18.3", "librenms/librenms": "<1.53", + "livewire/livewire": ">2.2.4,<2.2.6", "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": "<2.16.5|>=3,<3.2.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", "mittwald/typo3_forum": "<1.2.1", "monolog/monolog": ">=1.8,<1.12", "namshi/jose": "<2.2", + "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", "nystudio107/craft-seomatic": "<3.3", "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", - "october/backend": ">=1.0.319,<1.0.467", - "october/cms": ">=1.0.319,<1.0.466", + "october/backend": ">=1.0.319,<1.0.470", + "october/cms": "= 1.0.469|>=1.0.319,<1.0.469", "october/october": ">=1.0.319,<1.0.466", - "october/rain": ">=1.0.319,<1.0.468", + "october/rain": "<1.0.472|>=1.1,<1.1.2", "onelogin/php-saml": "<2.10.4", "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5", "openid/php-openid": "<2.3", + "openmage/magento-lts": "<19.4.8|>=20,<20.0.4", + "orchid/platform": ">=9,<9.4.4", "oro/crm": ">=1.7,<1.7.4", "oro/platform": ">=1.7,<1.7.4", "padraic/humbug_get_contents": "<1.1.2", "pagarme/pagarme-php": ">=0,<3", "paragonie/random_compat": "<2", + "passbolt/passbolt_api": "<2.11", "paypal/merchant-sdk-php": "<3.12", - "pear/archive_tar": "<1.4.4", + "pear/archive_tar": "<1.4.12", + "personnummer/personnummer": "<3.0.2", "phpfastcache/phpfastcache": ">=5,<5.0.13", "phpmailer/phpmailer": "<6.1.6", "phpmussel/phpmussel": ">=1,<1.6", - "phpmyadmin/phpmyadmin": "<4.9.2", + "phpmyadmin/phpmyadmin": "<4.9.6|>=5,<5.0.3", "phpoffice/phpexcel": "<1.8.2", - "phpoffice/phpspreadsheet": "<1.8", + "phpoffice/phpspreadsheet": "<1.16", "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.3", + "pocketmine/pocketmine-mp": "<3.15.4", "prestashop/autoupgrade": ">=4,<4.10.1", + "prestashop/contactform": ">1.0.1,<4.3", "prestashop/gamification": "<2.3.2", + "prestashop/productcomments": ">=4,<4.2.1", "prestashop/ps_facetedsearch": "<3.4.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", "pusher/pusher-php-server": "<2.2.1", "rainlab/debugbar-plugin": "<3.1", "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", "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/shopware": "<5.3.7", + "shopware/core": "<=6.3.4", + "shopware/platform": "<=6.3.5", + "shopware/shopware": "<5.6.9", "silverstripe/admin": ">=1.0.3,<1.0.4|>=1.1,<1.1.1", "silverstripe/assets": ">=1,<1.4.7|>=1.5,<1.5.2", "silverstripe/cms": "<4.3.6|>=4.4,<4.4.4", @@ -8630,6 +9659,7 @@ "slim/slim": "<2.6", "smarty/smarty": "<3.1.33", "socalnick/scn-social-auth": "<1.15.2", + "socialiteproviders/steam": "<1.1", "spoonity/tcpdf": "<6.2.22", "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", "ssddanbrown/bookstack": "<0.29.2", @@ -8640,8 +9670,8 @@ "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/resource-bundle": "<1.3.13|>=1.4,<1.4.6|>=1.5,<1.5.1|>=1.6,<1.6.3", - "sylius/sylius": "<1.3.16|>=1.4,<1.4.12|>=1.5,<1.5.9|>=1.6,<1.6.5", + "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", "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", "symbiote/silverstripe-versionedfiles": "<=2.0.3", "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", @@ -8650,7 +9680,7 @@ "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/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.3.8", + "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/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", "symfony/mime": ">=4.3,<4.3.8", "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", @@ -8665,7 +9695,7 @@ "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", "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", "symfony/serializer": ">=2,<2.0.11", - "symfony/symfony": ">=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/symfony": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.4.13|>=5,<5.1.5", "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", @@ -8679,19 +9709,21 @@ "titon/framework": ">=0,<9.9.99", "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.30|>=9,<9.5.20|>=10,<10.4.6", - "typo3/cms-core": ">=8,<8.7.30|>=9,<9.5.20|>=10,<10.4.6", + "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.32|>=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10", + "typo3/cms-core": ">=8,<8.7.38|>=9,<9.5.23|>=10,<10.4.10", "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", + "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", "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4", + "vrana/adminer": "<4.7.9", "wallabag/tcpdf": "<6.2.22", "willdurand/js-translation-bundle": "<2.1.1", "yii2mod/yii2-cms": "<1.9.2", "yiisoft/yii": ">=1.1.14,<1.1.15", - "yiisoft/yii2": "<2.0.15", + "yiisoft/yii2": "<2.0.38", "yiisoft/yii2-bootstrap": "<2.0.4", "yiisoft/yii2-dev": "<2.0.15", "yiisoft/yii2-elasticsearch": "<2.0.5", @@ -8743,41 +9775,46 @@ } ], "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "time": "2020-08-08T10:05:44+00:00" + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", + "type": "tidelift" + } + ], + "time": "2021-02-18T21:02:27+00:00" }, { "name": "symfony/browser-kit", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "f53310646af9901292488b2ff36e26ea10f545f5" + "reference": "b03b2057ed53ee4eab2e8f372084d7722b7b8ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/f53310646af9901292488b2ff36e26ea10f545f5", - "reference": "f53310646af9901292488b2ff36e26ea10f545f5", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/b03b2057ed53ee4eab2e8f372084d7722b7b8ffd", + "reference": "b03b2057ed53ee4eab2e8f372084d7722b7b8ffd", "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" }, "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", + "symfony/http-client": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0" }, "suggest": { "symfony/process": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\BrowserKit\\": "" @@ -8800,33 +9837,42 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony BrowserKit Component", + "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", - "time": "2020-05-22T17:28:00+00:00" + "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-01-27T12:56:27+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "bf17dc9f6ce144e41f786c32435feea4d8e11dcc" + "reference": "f65f217b3314504a1ec99c2d6ef69016bb13490f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/bf17dc9f6ce144e41f786c32435feea4d8e11dcc", - "reference": "bf17dc9f6ce144e41f786c32435feea4d8e11dcc", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/f65f217b3314504a1ec99c2d6ef69016bb13490f", + "reference": "f65f217b3314504a1ec99c2d6ef69016bb13490f", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=7.2.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\CssSelector\\": "" @@ -8853,50 +9899,59 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony CssSelector Component", + "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", - "time": "2020-07-05T09:39:30+00:00" + "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-01-27T10:01:46+00:00" }, { "name": "symfony/debug-bundle", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "12a020d14b4f6f3a5cfb46cd83836b78be036210" + "reference": "ec21bd26d24dab02ac40e4bec362b3f4032486e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/12a020d14b4f6f3a5cfb46cd83836b78be036210", - "reference": "12a020d14b4f6f3a5cfb46cd83836b78be036210", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/ec21bd26d24dab02ac40e4bec362b3f4032486e8", + "reference": "ec21bd26d24dab02ac40e4bec362b3f4032486e8", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.1.3", - "symfony/http-kernel": "^3.4|^4.0|^5.0", - "symfony/twig-bridge": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.1.1|^5.0" + "php": ">=7.2.5", + "symfony/http-kernel": "^4.4|^5.0", + "symfony/twig-bridge": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4" + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.2" }, "require-dev": { - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/web-profiler-bundle": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/web-profiler-bundle": "^4.4|^5.0" }, "suggest": { "symfony/config": "For service container configuration", "symfony/dependency-injection": "For using as a service from the container" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bundle\\DebugBundle\\": "" @@ -8919,45 +9974,55 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DebugBundle", + "description": "Provides a tight integration of the Symfony Debug component into the Symfony full-stack framework", "homepage": "https://symfony.com", - "time": "2020-05-20T08:37:50+00:00" + "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-01-10T16:30:10+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "72b3a65ddd5052cf6d65eac6669748ed311f39bf" + "reference": "5d89ceb53ec65e1973a555072fac8ed5ecad3384" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/72b3a65ddd5052cf6d65eac6669748ed311f39bf", - "reference": "72b3a65ddd5052cf6d65eac6669748ed311f39bf", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/5d89ceb53ec65e1973a555072fac8ed5ecad3384", + "reference": "5d89ceb53ec65e1973a555072fac8ed5ecad3384", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" }, "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" }, "suggest": { "symfony/css-selector": "" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Component\\DomCrawler\\": "" @@ -8980,31 +10045,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DomCrawler Component", + "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "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-01-27T10:01:46+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.20.0", + "version": "v1.29.1", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "b048c7b2be5bce9024ae3b0db97d44a107029c27" + "reference": "313b5669a5370bf36cd34fa8f5b5bbbfa5fb8aa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/b048c7b2be5bce9024ae3b0db97d44a107029c27", - "reference": "b048c7b2be5bce9024ae3b0db97d44a107029c27", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/313b5669a5370bf36cd34fa8f5b5bbbfa5fb8aa8", + "reference": "313b5669a5370bf36cd34fa8f5b5bbbfa5fb8aa8", "shasum": "" }, "require": { - "doctrine/inflector": "^1.2", + "doctrine/inflector": "^1.2|^2.0", "nikic/php-parser": "^4.0", - "php": "^7.1.3", + "php": ">=7.1.3", "symfony/config": "^3.4|^4.0|^5.0", "symfony/console": "^3.4|^4.0|^5.0", "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/deprecation-contracts": "^2.2", "symfony/filesystem": "^3.4|^4.0|^5.0", "symfony/finder": "^3.4|^4.0|^5.0", "symfony/framework-bundle": "^3.4|^4.0|^5.0", @@ -9025,7 +10105,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "1.0-dev" } }, "autoload": { @@ -9051,20 +10131,34 @@ "scaffold", "scaffolding" ], - "time": "2020-07-14T11:22:04+00:00" + "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-02-10T19:21:31+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v5.1.3", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "964bd57046dfa48687e1412fe5f8006adfcb9675" + "reference": "587f2b6bbcda8c473b91c18165958ffbb8af3c4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/964bd57046dfa48687e1412fe5f8006adfcb9675", - "reference": "964bd57046dfa48687e1412fe5f8006adfcb9675", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/587f2b6bbcda8c473b91c18165958ffbb8af3c4c", + "reference": "587f2b6bbcda8c473b91c18165958ffbb8af3c4c", "shasum": "" }, "require": { @@ -9073,6 +10167,10 @@ "conflict": { "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0|<6.4,>=6.0|9.1.2" }, + "require-dev": { + "symfony/deprecation-contracts": "^2.1", + "symfony/error-handler": "^4.4|^5.0" + }, "suggest": { "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" }, @@ -9081,9 +10179,6 @@ ], "type": "symfony-bridge", "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - }, "thanks": { "name": "phpunit/phpunit", "url": "https://github.com/sebastianbergmann/phpunit" @@ -9114,50 +10209,59 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony PHPUnit Bridge", + "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", - "time": "2020-07-23T09:26:24+00:00" + "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-01-25T13:54:05+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v4.4.11", + "version": "v5.2.3", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "c946a250ac41542c481265d8e958d62cf5a172c9" + "reference": "4b28c24db64156ad892300be7fae1978bed075ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/c946a250ac41542c481265d8e958d62cf5a172c9", - "reference": "c946a250ac41542c481265d8e958d62cf5a172c9", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4b28c24db64156ad892300be7fae1978bed075ce", + "reference": "4b28c24db64156ad892300be7fae1978bed075ce", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/config": "^4.2|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/routing": "^4.3|^5.0", - "symfony/twig-bundle": "^4.2|^5.0", - "twig/twig": "^1.41|^2.10|^3.0" + "php": ">=7.2.5", + "symfony/config": "^4.4|^5.0", + "symfony/framework-bundle": "^5.1", + "symfony/http-kernel": "^5.2", + "symfony/routing": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/form": "<4.3", - "symfony/messenger": "<4.2" + "symfony/dependency-injection": "<5.2", + "symfony/form": "<4.4", + "symfony/messenger": "<4.4" }, "require-dev": { - "symfony/browser-kit": "^4.3|^5.0", - "symfony/console": "^4.3|^5.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/browser-kit": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0" }, "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, "autoload": { "psr-4": { "Symfony\\Bundle\\WebProfilerBundle\\": "" @@ -9180,20 +10284,34 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony WebProfilerBundle", + "description": "Provides a development tool that gives detailed information about the execution of any request", "homepage": "https://symfony.com", - "time": "2020-07-23T08:31:43+00:00" + "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-01-28T22:06:19+00:00" } ], "aliases": [], - "minimum-stability": "stable", + "minimum-stability": "dev", "stability-flags": { "roave/security-advisories": 20 }, - "prefer-stable": false, + "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.3", + "php": ">=7.4", "ext-ctype": "*", "ext-iconv": "*" }, diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 67d71ddd..0d0694c1 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -4,7 +4,7 @@ doctrine: # IMPORTANT: You MUST configure your server version, # either here or in the DATABASE_URL env var (see .env file) - #server_version: '5.7' + #server_version: '13' orm: auto_generate_proxy_classes: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml index 61e66124..752065e4 100644 --- a/config/packages/doctrine_migrations.yaml +++ b/config/packages/doctrine_migrations.yaml @@ -3,3 +3,8 @@ doctrine_migrations: # namespace is arbitrary but should be different from App\Migrations # as migrations classes should NOT be autoloaded 'DoctrineMigrations': '%kernel.project_dir%/migrations' + + # https://github.com/doctrine/migrations/blob/3.0.x/UPGRADE.md + storage: + table_storage: + table_name: migration_versions diff --git a/config/packages/elao_enum.yaml b/config/packages/elao_enum.yaml index a05b1037..c74df974 100644 --- a/config/packages/elao_enum.yaml +++ b/config/packages/elao_enum.yaml @@ -1,6 +1,9 @@ elao_enum: doctrine: types: - App\Entity\Mod\Enum\ModTypeEnum: mod_type_enum - App\Entity\Mod\Enum\ModStatusEnum: mod_status_enum - App\Entity\Mod\Enum\ModSourceEnum: mod_source_enum + mod_type_enum: + class: App\Entity\Mod\Enum\ModTypeEnum + mod_status_enum: + class: App\Entity\Mod\Enum\ModStatusEnum + mod_source_enum: + class: App\Entity\Mod\Enum\ModSourceEnum diff --git a/config/packages/notifier.yaml b/config/packages/notifier.yaml new file mode 100644 index 00000000..3984a48d --- /dev/null +++ b/config/packages/notifier.yaml @@ -0,0 +1,16 @@ +framework: + notifier: + #chatter_transports: + # slack: '%env(SLACK_DSN)%' + # telegram: '%env(TELEGRAM_DSN)%' + #texter_transports: + # twilio: '%env(TWILIO_DSN)%' + # nexmo: '%env(NEXMO_DSN)%' + channel_policy: + # use chat/slack, chat/telegram, sms/twilio or sms/nexmo + urgent: ['email'] + high: ['email'] + medium: ['email'] + low: ['email'] + admin_recipients: + - { email: admin@example.com } diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml index 7e977620..b45c1cec 100644 --- a/config/packages/routing.yaml +++ b/config/packages/routing.yaml @@ -1,3 +1,7 @@ framework: router: utf8: true + + # Configure how to generate URLs in non-HTTP contexts, such as CLI commands. + # See https://symfony.com/doc/current/routing.html#generating-urls-in-commands + #default_uri: http://localhost diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 95325ebd..3f48383c 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -13,7 +13,8 @@ security: pattern: ^/(_(profiler|wdt)|css|images|js)/ security: false main: - anonymous: lazy + anonymous: true + lazy: true remember_me: secret: '%kernel.secret%' lifetime: 604800 # 1 week in seconds diff --git a/config/preload.php b/config/preload.php new file mode 100644 index 00000000..7cbe578d --- /dev/null +++ b/config/preload.php @@ -0,0 +1,7 @@ + + @@ -39,5 +40,6 @@ + diff --git a/public/index.php b/public/index.php index 912c45a2..52ca8cc7 100644 --- a/public/index.php +++ b/public/index.php @@ -3,10 +3,13 @@ declare(strict_types=1); use App\Kernel; +use Symfony\Component\Dotenv\Dotenv; use Symfony\Component\ErrorHandler\Debug; use Symfony\Component\HttpFoundation\Request; -require dirname(__DIR__).'/config/bootstrap.php'; +require dirname(__DIR__).'/vendor/autoload.php'; + +(new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); if ($_SERVER['APP_DEBUG']) { umask(0000); @@ -14,14 +17,6 @@ Debug::enable(); } -if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) { - Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); -} - -if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) { - Request::setTrustedHosts([$trustedHosts]); -} - $kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); $request = Request::createFromGlobals(); $response = $kernel->handle($request); diff --git a/src/Api/Controller/GetModListByNameAction.php b/src/Api/Controller/GetModListByNameAction.php index 87d02b9e..44d3934a 100644 --- a/src/Api/Controller/GetModListByNameAction.php +++ b/src/Api/Controller/GetModListByNameAction.php @@ -9,8 +9,7 @@ class GetModListByNameAction { - /** @var ModListRepository */ - protected $modListRepository; + protected ModListRepository $modListRepository; public function __construct(ModListRepository $modListRepository) { diff --git a/src/Api/DataTransformer/ModListDetailsOutputDataTransformer.php b/src/Api/DataTransformer/ModListDetailsOutputDataTransformer.php index ec3e4425..225bdfd4 100644 --- a/src/Api/DataTransformer/ModListDetailsOutputDataTransformer.php +++ b/src/Api/DataTransformer/ModListDetailsOutputDataTransformer.php @@ -14,11 +14,8 @@ class ModListDetailsOutputDataTransformer implements DataTransformerInterface { - /** @var ModOutputDataTransformer */ - protected $modDataTransformer; - - /** @var ModRepository */ - protected $modRepository; + protected ModOutputDataTransformer $modDataTransformer; + protected ModRepository $modRepository; public function __construct( ModOutputDataTransformer $modDataTransformer, diff --git a/src/Api/Dto/ModListDetailsOutput.php b/src/Api/Dto/ModListDetailsOutput.php index c4cf6231..c4415615 100644 --- a/src/Api/Dto/ModListDetailsOutput.php +++ b/src/Api/Dto/ModListDetailsOutput.php @@ -6,10 +6,7 @@ class ModListDetailsOutput extends ModListOutput { - /** - * @var ModOutput[] - */ - protected $mods = []; + protected array $mods = []; /** * @return ModOutput[] diff --git a/src/Api/Dto/ModListOutput.php b/src/Api/Dto/ModListOutput.php index c7e88556..a2acb01e 100644 --- a/src/Api/Dto/ModListOutput.php +++ b/src/Api/Dto/ModListOutput.php @@ -6,25 +6,10 @@ class ModListOutput { - /** - * @var null|string - */ - protected $id; - - /** - * @var null|string - */ - protected $name; - - /** - * @var null|\DateTimeInterface - */ - protected $createdAt; - - /** - * @var null|\DateTimeInterface - */ - protected $lastUpdatedAt; + protected ?string $id = null; + protected ?string $name = null; + protected ?\DateTimeInterface $createdAt = null; + protected ?\DateTimeInterface $lastUpdatedAt = null; public function getId(): ?string { diff --git a/src/Api/Dto/ModOutput.php b/src/Api/Dto/ModOutput.php index 3fffd23b..4d04b33c 100644 --- a/src/Api/Dto/ModOutput.php +++ b/src/Api/Dto/ModOutput.php @@ -6,50 +6,15 @@ class ModOutput { - /** - * @var null|string - */ - protected $id; - - /** - * @var null|string - */ - protected $name; - - /** - * @var null|\DateTimeInterface - */ - protected $createdAt; - - /** - * @var null|\DateTimeInterface - */ - protected $lastUpdatedAt; - - /** - * @var null|string - */ - protected $source; - - /** - * @var null|string - */ - protected $status; - - /** - * @var null|string - */ - protected $type; - - /** - * @var null|int - */ - protected $itemId; - - /** - * @var null|string - */ - protected $directory; + protected ?string $id = null; + protected ?string $name = null; + protected ?\DateTimeInterface $createdAt = null; + protected ?\DateTimeInterface $lastUpdatedAt = null; + protected ?string $source = null; + protected ?string $status = null; + protected ?string $type = null; + protected ?int $itemId = null; + protected ?string $directory = null; public function getId(): ?string { diff --git a/src/Cache/CacheWarmer/BackgroundImageCacheWarmer.php b/src/Cache/CacheWarmer/BackgroundImageCacheWarmer.php index e57ab4e3..63412bfc 100644 --- a/src/Cache/CacheWarmer/BackgroundImageCacheWarmer.php +++ b/src/Cache/CacheWarmer/BackgroundImageCacheWarmer.php @@ -9,8 +9,7 @@ class BackgroundImageCacheWarmer extends CacheWarmer { - /** @var string */ - protected $backgroundImagesDirectory; + protected string $backgroundImagesDirectory; public function __construct(string $backgroundImagesDirectory) { @@ -43,9 +42,7 @@ protected function findImagesToCache(): array { $imagesIterator = (Finder::create())->in($this->backgroundImagesDirectory)->files()->getIterator(); - $images = array_map(static function (\SplFileInfo $imageFile) { - return $imageFile->getFilename(); - }, iterator_to_array($imagesIterator)); + $images = array_map(static fn (\SplFileInfo $imageFile) => $imageFile->getFilename(), iterator_to_array($imagesIterator)); return array_values($images); } diff --git a/src/Command/ImportModListsCommand.php b/src/Command/ImportModListsCommand.php index 5f7b9e04..90ae65c4 100644 --- a/src/Command/ImportModListsCommand.php +++ b/src/Command/ImportModListsCommand.php @@ -14,15 +14,8 @@ class ImportModListsCommand extends Command { public const DEFAULT_IMPORT_DIRECTORY = __DIR__.'/../../var/import'; - /** @var string */ - protected static $defaultName = 'app:import:modlists'; + protected ModListImport $modListImport; - /** @var ModListImport */ - protected $modListImport; - - /** - * @{@inheritdoc} - */ public function __construct(ModListImport $modListImport) { parent::__construct(); @@ -31,18 +24,25 @@ public function __construct(ModListImport $modListImport) } /** - * @{@inheritdoc} + * {@inheritdoc} */ protected function configure(): void { $this + ->setName('app:import:modlists') ->setDescription('Imports mods') - ->addOption('path', 'p', InputOption::VALUE_OPTIONAL, 'Path to directory with CSV files', self::DEFAULT_IMPORT_DIRECTORY) + ->addOption( + 'path', + 'p', + InputOption::VALUE_OPTIONAL, + 'Path to directory with CSV files', + self::DEFAULT_IMPORT_DIRECTORY + ) ; } /** - * @{@inheritdoc} + * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output): int { diff --git a/src/Command/PermissionsMakeAdminCommand.php b/src/Command/PermissionsMakeAdminCommand.php index a34021dc..72b76980 100644 --- a/src/Command/PermissionsMakeAdminCommand.php +++ b/src/Command/PermissionsMakeAdminCommand.php @@ -16,18 +16,9 @@ class PermissionsMakeAdminCommand extends Command { - /** @var string */ - protected static $defaultName = 'app:permissions:make-admin'; + protected EntityManagerInterface $entityManager; + protected UserRepository $userRepository; - /** @var EntityManagerInterface */ - protected $entityManager; - - /** @var UserRepository */ - protected $userRepository; - - /** - * @{@inheritdoc} - */ public function __construct(EntityManagerInterface $entityManager, UserRepository $userRepository) { parent::__construct(); @@ -37,18 +28,19 @@ public function __construct(EntityManagerInterface $entityManager, UserRepositor } /** - * @{@inheritdoc} + * {@inheritdoc} */ protected function configure(): void { $this + ->setName('app:permissions:make-admin') ->setDescription('Grants permissions to manage permissions to given user identified by Discord user id.') ->addArgument('discord_user_id', InputArgument::OPTIONAL, 'Discord user id (18-digits integer)') ; } /** - * @{@inheritdoc} + * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output): int { @@ -64,9 +56,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int return 1; } - $allUsersNames = array_map(static function (User $user) { - return sprintf('%d (%s)', $user->getExternalId(), $user->getUsername()); - }, $allUsers); + $allUsersNames = array_map(static fn (User $user) => sprintf('%d (%s)', $user->getExternalId(), $user->getUsername()), $allUsers); $helper = $this->getHelper('question'); $question = new ChoiceQuestion('Please select user from the list', $allUsersNames); diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index a576f32a..2c7d6f1a 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -15,11 +15,8 @@ */ class HomeController extends AbstractController { - /** @var MissionClient */ - protected $missionClient; - - /** @var LoggerInterface */ - protected $logger; + protected MissionClient $missionClient; + protected LoggerInterface $logger; public function __construct(MissionClient $missionClient, LoggerInterface $logger) { diff --git a/src/Controller/ModController.php b/src/Controller/ModController.php index 068a4371..128b2d40 100644 --- a/src/Controller/ModController.php +++ b/src/Controller/ModController.php @@ -26,20 +26,11 @@ */ class ModController extends AbstractController { - /** @var EntityManagerInterface */ - protected $entityManager; - - /** @var ModRepository */ - protected $modRepository; - - /** @var ModGroupRepository */ - protected $modGroupRepository; - - /** @var ModListRepository */ - protected $modListRepository; - - /** @var DataTransformerRegistry */ - protected $dataTransformerRegistry; + protected EntityManagerInterface $entityManager; + protected ModRepository $modRepository; + protected ModGroupRepository $modGroupRepository; + protected ModListRepository $modListRepository; + protected DataTransformerRegistry $dataTransformerRegistry; public function __construct( EntityManagerInterface $entityManager, diff --git a/src/Controller/ModGroupController.php b/src/Controller/ModGroupController.php index 9e049a0c..af8013f9 100644 --- a/src/Controller/ModGroupController.php +++ b/src/Controller/ModGroupController.php @@ -25,17 +25,10 @@ */ class ModGroupController extends AbstractController { - /** @var EntityManagerInterface */ - protected $entityManager; - - /** @var ModGroupRepository */ - protected $modGroupRepository; - - /** @var ModListRepository */ - protected $modListRepository; - - /** @var DataTransformerRegistry */ - protected $dataTransformerRegistry; + protected EntityManagerInterface $entityManager; + protected ModGroupRepository $modGroupRepository; + protected ModListRepository $modListRepository; + protected DataTransformerRegistry $dataTransformerRegistry; public function __construct( EntityManagerInterface $entityManager, diff --git a/src/Controller/ModListController.php b/src/Controller/ModListController.php index 6347ba23..491124cb 100644 --- a/src/Controller/ModListController.php +++ b/src/Controller/ModListController.php @@ -24,14 +24,9 @@ */ class ModListController extends AbstractController { - /** @var EntityManagerInterface */ - protected $entityManager; - - /** @var ModListRepository */ - protected $modListRepository; - - /** @var DataTransformerRegistry */ - protected $dataTransformerRegistry; + protected EntityManagerInterface $entityManager; + protected ModListRepository $modListRepository; + protected DataTransformerRegistry $dataTransformerRegistry; public function __construct( EntityManagerInterface $entityManager, diff --git a/src/Controller/ModListPublicController.php b/src/Controller/ModListPublicController.php index 11757b47..46bf695c 100644 --- a/src/Controller/ModListPublicController.php +++ b/src/Controller/ModListPublicController.php @@ -19,11 +19,8 @@ */ class ModListPublicController extends AbstractController { - /** @var ModRepository */ - protected $modRepository; - - /** @var ModListRepository */ - protected $modListRepository; + protected ModRepository $modRepository; + protected ModListRepository $modListRepository; public function __construct(ModRepository $modRepository, ModListRepository $modListRepository) { diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index c63f4b82..574aa406 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -22,11 +22,8 @@ */ class UserController extends AbstractController { - /** @var EntityManagerInterface */ - protected $entityManager; - - /** @var UserRepository */ - protected $userRepository; + protected EntityManagerInterface $entityManager; + protected UserRepository $userRepository; public function __construct(EntityManagerInterface $entityManager, UserRepository $userRepository) { diff --git a/src/Controller/UserGroupController.php b/src/Controller/UserGroupController.php index 340ca1b7..486c5ff7 100644 --- a/src/Controller/UserGroupController.php +++ b/src/Controller/UserGroupController.php @@ -24,14 +24,9 @@ */ class UserGroupController extends AbstractController { - /** @var EntityManagerInterface */ - protected $entityManager; - - /** @var UserGroupRepository */ - protected $userGroupRepository; - - /** @var DataTransformerRegistry */ - protected $dataTransformerRegistry; + protected EntityManagerInterface $entityManager; + protected UserGroupRepository $userGroupRepository; + protected DataTransformerRegistry $dataTransformerRegistry; public function __construct( EntityManagerInterface $entityManager, diff --git a/src/DataFixtures/Mod/Optional/AceInteractionMenuExpansionModFixture.php b/src/DataFixtures/Mod/Optional/AceInteractionMenuExpansionModFixture.php new file mode 100644 index 00000000..26272c4d --- /dev/null +++ b/src/DataFixtures/Mod/Optional/AceInteractionMenuExpansionModFixture.php @@ -0,0 +1,32 @@ +setCreatedAt(\DateTimeImmutable::createFromFormat('Y-m-d H:i:s', '2020-01-01 00:00:00')); + + $manager->persist($mod); + $manager->flush(); + + $this->addReference(self::ID, $mod); + } +} diff --git a/src/DataFixtures/Mod/ArmaForcesModsModFixture.php b/src/DataFixtures/Mod/Required/ArmaForcesModsModFixture.php similarity index 95% rename from src/DataFixtures/Mod/ArmaForcesModsModFixture.php rename to src/DataFixtures/Mod/Required/ArmaForcesModsModFixture.php index 0e957e3f..cccd7f7c 100644 --- a/src/DataFixtures/Mod/ArmaForcesModsModFixture.php +++ b/src/DataFixtures/Mod/Required/ArmaForcesModsModFixture.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\DataFixtures\Mod; +namespace App\DataFixtures\Mod\Required; use App\Entity\Mod\Enum\ModTypeEnum; use App\Entity\Mod\SteamWorkshopMod; diff --git a/src/DataFixtures/Mod/Broken/ArmaForcesAceMedicalModFixture.php b/src/DataFixtures/Mod/Required/Broken/ArmaForcesAceMedicalModFixture.php similarity index 95% rename from src/DataFixtures/Mod/Broken/ArmaForcesAceMedicalModFixture.php rename to src/DataFixtures/Mod/Required/Broken/ArmaForcesAceMedicalModFixture.php index a858b0d8..428c643c 100644 --- a/src/DataFixtures/Mod/Broken/ArmaForcesAceMedicalModFixture.php +++ b/src/DataFixtures/Mod/Required/Broken/ArmaForcesAceMedicalModFixture.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\DataFixtures\Mod\Broken; +namespace App\DataFixtures\Mod\Required\Broken; use App\Entity\Mod\Enum\ModStatusEnum; use App\Entity\Mod\Enum\ModTypeEnum; diff --git a/src/DataFixtures/Mod/Deprecated/LegacyArmaForcesModsModFixture.php b/src/DataFixtures/Mod/Required/Deprecated/LegacyArmaForcesModsModFixture.php similarity index 94% rename from src/DataFixtures/Mod/Deprecated/LegacyArmaForcesModsModFixture.php rename to src/DataFixtures/Mod/Required/Deprecated/LegacyArmaForcesModsModFixture.php index 7abd44e2..6390d892 100644 --- a/src/DataFixtures/Mod/Deprecated/LegacyArmaForcesModsModFixture.php +++ b/src/DataFixtures/Mod/Required/Deprecated/LegacyArmaForcesModsModFixture.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\DataFixtures\Mod\Deprecated; +namespace App\DataFixtures\Mod\Required\Deprecated; use App\Entity\Mod\Enum\ModStatusEnum; use App\Entity\Mod\Enum\ModTypeEnum; diff --git a/src/DataFixtures/Mod/Disabled/ArmaForcesJbadBuildingFixModFixture.php b/src/DataFixtures/Mod/Required/Disabled/ArmaForcesJbadBuildingFixModFixture.php similarity index 94% rename from src/DataFixtures/Mod/Disabled/ArmaForcesJbadBuildingFixModFixture.php rename to src/DataFixtures/Mod/Required/Disabled/ArmaForcesJbadBuildingFixModFixture.php index 4d3d7290..8e39181a 100644 --- a/src/DataFixtures/Mod/Disabled/ArmaForcesJbadBuildingFixModFixture.php +++ b/src/DataFixtures/Mod/Required/Disabled/ArmaForcesJbadBuildingFixModFixture.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\DataFixtures\Mod\Disabled; +namespace App\DataFixtures\Mod\Required\Disabled; use App\Entity\Mod\Enum\ModStatusEnum; use App\Entity\Mod\Enum\ModTypeEnum; diff --git a/src/DataFixtures/ModList/DefaultModListFixture.php b/src/DataFixtures/ModList/DefaultModListFixture.php index 7d5b8903..e40864d7 100644 --- a/src/DataFixtures/ModList/DefaultModListFixture.php +++ b/src/DataFixtures/ModList/DefaultModListFixture.php @@ -4,10 +4,8 @@ namespace App\DataFixtures\ModList; -use App\DataFixtures\Mod\ArmaForcesModsModFixture; -use App\DataFixtures\Mod\Broken; -use App\DataFixtures\Mod\Deprecated; -use App\DataFixtures\Mod\Disabled; +use App\DataFixtures\Mod\Optional; +use App\DataFixtures\Mod\Required; use App\Entity\ModList\ModList; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Persistence\ObjectManager; @@ -26,11 +24,11 @@ public function load(ObjectManager $manager): void $modList->setCreatedAt(\DateTimeImmutable::createFromFormat('Y-m-d H:i:s', '2020-01-01 00:00:00')); $mods = [ - $this->getReference(ArmaForcesModsModFixture::ID), - - $this->getReference(Broken\ArmaForcesAceMedicalModFixture::ID), - $this->getReference(Deprecated\LegacyArmaForcesModsModFixture::ID), - $this->getReference(Disabled\ArmaForcesJbadBuildingFixModFixture::ID), + $this->getReference(Optional\AceInteractionMenuExpansionModFixture::ID), + $this->getReference(Required\ArmaForcesModsModFixture::ID), + $this->getReference(Required\Broken\ArmaForcesAceMedicalModFixture::ID), + $this->getReference(Required\Deprecated\LegacyArmaForcesModsModFixture::ID), + $this->getReference(Required\Disabled\ArmaForcesJbadBuildingFixModFixture::ID), ]; foreach ($mods as $mod) { diff --git a/src/Entity/AbstractDescribedEntity.php b/src/Entity/AbstractDescribedEntity.php index 182e36e6..f2aec6b4 100644 --- a/src/Entity/AbstractDescribedEntity.php +++ b/src/Entity/AbstractDescribedEntity.php @@ -6,8 +6,7 @@ abstract class AbstractDescribedEntity extends AbstractNamedEntity implements DescribedEntityInterface { - /** @var null|string */ - protected $description; + protected ?string $description = null; public function getDescription(): ?string { diff --git a/src/Entity/AbstractEntity.php b/src/Entity/AbstractEntity.php index 03cc1f2e..d707069a 100644 --- a/src/Entity/AbstractEntity.php +++ b/src/Entity/AbstractEntity.php @@ -9,20 +9,11 @@ abstract class AbstractEntity implements EntityInterface { - /** @var UuidInterface */ - protected $id; - - /** @var \DateTimeInterface */ - protected $createdAt; - - /** @var null|UserInterface */ - protected $createdBy; - - /** @var null|\DateTimeInterface */ - protected $lastUpdatedAt; - - /** @var null|UserInterface */ - protected $lastUpdatedBy; + protected UuidInterface $id; + protected \DateTimeInterface $createdAt; + protected ?UserInterface $createdBy = null; + protected ?\DateTimeInterface $lastUpdatedAt = null; + protected ?UserInterface $lastUpdatedBy = null; public function __construct(UuidInterface $id) { diff --git a/src/Entity/AbstractNamedEntity.php b/src/Entity/AbstractNamedEntity.php index 2776b0b5..ee341bb1 100644 --- a/src/Entity/AbstractNamedEntity.php +++ b/src/Entity/AbstractNamedEntity.php @@ -8,8 +8,7 @@ abstract class AbstractNamedEntity extends AbstractEntity implements NamedEntityInterface { - /** @var string */ - protected $name; + protected string $name; public function __construct(UuidInterface $id, string $name) { diff --git a/src/Entity/Mod/AbstractMod.php b/src/Entity/Mod/AbstractMod.php index ad5e77af..af242773 100644 --- a/src/Entity/Mod/AbstractMod.php +++ b/src/Entity/Mod/AbstractMod.php @@ -11,11 +11,8 @@ abstract class AbstractMod extends AbstractDescribedEntity implements ModInterface { - /** @var ModTypeEnum */ - protected $type; - - /** @var ?ModStatusEnum */ - protected $status; + protected ModTypeEnum $type; + protected ?ModStatusEnum $status = null; public function __construct(UuidInterface $id, string $name, ModTypeEnum $type) { diff --git a/src/Entity/Mod/DirectoryMod.php b/src/Entity/Mod/DirectoryMod.php index 97b85019..b875a6ce 100644 --- a/src/Entity/Mod/DirectoryMod.php +++ b/src/Entity/Mod/DirectoryMod.php @@ -9,8 +9,7 @@ class DirectoryMod extends AbstractMod implements DirectoryModInterface { - /** @var string */ - protected $directory; + protected string $directory; public function __construct(UuidInterface $id, string $name, ModTypeEnum $type, string $directory) { diff --git a/src/Entity/Mod/SteamWorkshopMod.php b/src/Entity/Mod/SteamWorkshopMod.php index 3e8d4f8f..dfc499f4 100644 --- a/src/Entity/Mod/SteamWorkshopMod.php +++ b/src/Entity/Mod/SteamWorkshopMod.php @@ -9,14 +9,13 @@ class SteamWorkshopMod extends AbstractMod implements SteamWorkshopModInterface { - /** @var int|string */ - protected $itemId; + protected string $itemId; public function __construct(UuidInterface $id, string $name, ModTypeEnum $type, int $itemId) { parent::__construct($id, $name, $type); - $this->itemId = $itemId; + $this->itemId = (string) $itemId; } public function getItemId(): int @@ -26,6 +25,6 @@ public function getItemId(): int public function setItemId(int $itemId): void { - $this->itemId = $itemId; + $this->itemId = (string) $itemId; } } diff --git a/src/Entity/ModGroup/ModGroup.php b/src/Entity/ModGroup/ModGroup.php index e3ec093a..c4080ae7 100644 --- a/src/Entity/ModGroup/ModGroup.php +++ b/src/Entity/ModGroup/ModGroup.php @@ -12,8 +12,7 @@ class ModGroup extends AbstractDescribedEntity implements ModGroupInterface { - /** @var Collection|ModInterface[] */ - protected $mods; + protected Collection $mods; public function __construct(UuidInterface $id, string $name) { diff --git a/src/Entity/ModList/ModList.php b/src/Entity/ModList/ModList.php index 2fb23081..8b930c22 100644 --- a/src/Entity/ModList/ModList.php +++ b/src/Entity/ModList/ModList.php @@ -14,20 +14,11 @@ class ModList extends AbstractDescribedEntity implements ModListInterface { - /** @var Collection|ModInterface[] */ - protected $mods; - - /** @var Collection|ModGroupInterface[] */ - protected $modGroups; - - /** @var null|UserInterface */ - protected $owner; - - /** @var bool */ - protected $active = true; - - /** @var bool */ - protected $approved = false; + protected Collection$mods; + protected Collection $modGroups; + protected ?UserInterface $owner = null; + protected bool $active = true; + protected bool $approved = false; public function __construct(UuidInterface $id, string $name) { diff --git a/src/Entity/Permissions/AbstractPermissions.php b/src/Entity/Permissions/AbstractPermissions.php index a46f5555..a7c8a7b3 100644 --- a/src/Entity/Permissions/AbstractPermissions.php +++ b/src/Entity/Permissions/AbstractPermissions.php @@ -14,20 +14,11 @@ abstract class AbstractPermissions extends AbstractEntity implements PermissionsInterface { - /** @var UserManagementPermissions */ - protected $userManagementPermissions; - - /** @var UserGroupManagementPermissions */ - protected $userGroupManagementPermissions; - - /** @var ModManagementPermissions */ - protected $modManagementPermissions; - - /** @var ModGroupManagementPermissions */ - protected $modGroupManagementPermissions; - - /** @var ModListManagementPermissions */ - protected $modListManagementPermissions; + protected UserManagementPermissions $userManagementPermissions; + protected UserGroupManagementPermissions $userGroupManagementPermissions; + protected ModManagementPermissions $modManagementPermissions; + protected ModGroupManagementPermissions $modGroupManagementPermissions; + protected ModListManagementPermissions $modListManagementPermissions; public function __construct(UuidInterface $id) { diff --git a/src/Entity/Permissions/Mod/ModManagementPermissions.php b/src/Entity/Permissions/Mod/ModManagementPermissions.php index f9fa3e83..941721b0 100644 --- a/src/Entity/Permissions/Mod/ModManagementPermissions.php +++ b/src/Entity/Permissions/Mod/ModManagementPermissions.php @@ -8,8 +8,7 @@ class ModManagementPermissions extends AbstractManagementPermissions { - /** @var bool */ - protected $changeStatus = false; + protected bool $changeStatus = false; public function canChangeStatus(): bool { diff --git a/src/Entity/Permissions/ModList/ModListManagementPermissions.php b/src/Entity/Permissions/ModList/ModListManagementPermissions.php index 5af70807..5bea7701 100644 --- a/src/Entity/Permissions/ModList/ModListManagementPermissions.php +++ b/src/Entity/Permissions/ModList/ModListManagementPermissions.php @@ -8,11 +8,8 @@ class ModListManagementPermissions extends AbstractManagementPermissions { - /** @var bool */ - protected $copy = false; - - /** @var bool */ - protected $approve = false; + protected bool $copy = false; + protected bool $approve = false; public function canCopy(): bool { diff --git a/src/Entity/Permissions/Traits/CreatePermissionTrait.php b/src/Entity/Permissions/Traits/CreatePermissionTrait.php index 51b0b8c2..e623e43c 100644 --- a/src/Entity/Permissions/Traits/CreatePermissionTrait.php +++ b/src/Entity/Permissions/Traits/CreatePermissionTrait.php @@ -6,8 +6,7 @@ trait CreatePermissionTrait { - /** @var bool */ - protected $create = false; + protected bool $create = false; public function canCreate(): bool { diff --git a/src/Entity/Permissions/Traits/DeletePermissionTrait.php b/src/Entity/Permissions/Traits/DeletePermissionTrait.php index 0f9888dc..ed8835e6 100644 --- a/src/Entity/Permissions/Traits/DeletePermissionTrait.php +++ b/src/Entity/Permissions/Traits/DeletePermissionTrait.php @@ -6,8 +6,7 @@ trait DeletePermissionTrait { - /** @var bool */ - protected $delete = false; + protected bool $delete = false; public function canDelete(): bool { diff --git a/src/Entity/Permissions/Traits/ListPermissionTrait.php b/src/Entity/Permissions/Traits/ListPermissionTrait.php index 5ef13b9c..b382a0c4 100644 --- a/src/Entity/Permissions/Traits/ListPermissionTrait.php +++ b/src/Entity/Permissions/Traits/ListPermissionTrait.php @@ -6,8 +6,7 @@ trait ListPermissionTrait { - /** @var bool */ - protected $list = false; + protected bool $list = false; public function canList(): bool { diff --git a/src/Entity/Permissions/Traits/UpdatePermissionTrait.php b/src/Entity/Permissions/Traits/UpdatePermissionTrait.php index 0d5a5f0f..d21f8e0a 100644 --- a/src/Entity/Permissions/Traits/UpdatePermissionTrait.php +++ b/src/Entity/Permissions/Traits/UpdatePermissionTrait.php @@ -6,8 +6,7 @@ trait UpdatePermissionTrait { - /** @var bool */ - protected $update = false; + protected bool $update = false; public function canUpdate(): bool { diff --git a/src/Entity/Permissions/User/UserManagementPermissions.php b/src/Entity/Permissions/User/UserManagementPermissions.php index da8d459d..b769e118 100644 --- a/src/Entity/Permissions/User/UserManagementPermissions.php +++ b/src/Entity/Permissions/User/UserManagementPermissions.php @@ -12,8 +12,7 @@ class UserManagementPermissions use ListPermissionTrait; use DeletePermissionTrait; - /** @var bool */ - protected $managePermissions = false; + protected bool $managePermissions = false; public function canManagePermissions(): bool { diff --git a/src/Entity/User/User.php b/src/Entity/User/User.php index 43c1745d..44f95a45 100644 --- a/src/Entity/User/User.php +++ b/src/Entity/User/User.php @@ -16,23 +16,12 @@ class User extends AbstractEntity implements UserInterface { use UserInterfaceTrait; - /** @var string */ - protected $username; - - /** @var string */ - protected $email; - - /** @var string */ - protected $externalId; - - /** @var UserPermissions */ - protected $permissions; - - /** @var Collection|UserGroupInterface[] */ - protected $userGroups; - - /** @var null|string */ - protected $avatarHash; + protected string $username; + protected string $email; + protected string $externalId; + protected UserPermissions $permissions; + protected Collection $userGroups; + protected ?string $avatarHash = null; public function __construct( UuidInterface $id, diff --git a/src/Entity/UserGroup/UserGroup.php b/src/Entity/UserGroup/UserGroup.php index 1c6435eb..3c55e440 100644 --- a/src/Entity/UserGroup/UserGroup.php +++ b/src/Entity/UserGroup/UserGroup.php @@ -13,11 +13,8 @@ class UserGroup extends AbstractDescribedEntity implements UserGroupInterface { - /** @var UserGroupPermissions */ - protected $permissions; - - /** @var Collection|UserInterface[] */ - protected $users; + protected UserGroupPermissions $permissions; + protected Collection $users; public function __construct(UuidInterface $id, string $name, UserGroupPermissions $permissions) { diff --git a/src/EventSubscriber/Doctrine/EntityBlameableSubscriber.php b/src/EventSubscriber/Doctrine/EntityBlameableSubscriber.php index d1f480f8..7ee29b19 100644 --- a/src/EventSubscriber/Doctrine/EntityBlameableSubscriber.php +++ b/src/EventSubscriber/Doctrine/EntityBlameableSubscriber.php @@ -13,8 +13,7 @@ class EntityBlameableSubscriber implements EventSubscriber { - /** @var Security */ - protected $security; + protected Security $security; public function __construct(Security $security) { diff --git a/src/EventSubscriber/Doctrine/ModGroupUpdatedSubscriber.php b/src/EventSubscriber/Doctrine/ModGroupUpdatedSubscriber.php index 7c4fe68f..f291bedb 100644 --- a/src/EventSubscriber/Doctrine/ModGroupUpdatedSubscriber.php +++ b/src/EventSubscriber/Doctrine/ModGroupUpdatedSubscriber.php @@ -16,11 +16,8 @@ class ModGroupUpdatedSubscriber implements EventSubscriber { - /** @var Security */ - protected $security; - - /** @var null|ModGroupInterface */ - protected $updatedModGroup; + protected Security $security; + protected ?ModGroupInterface $updatedModGroup = null; public function __construct(Security $security) { diff --git a/src/EventSubscriber/UserLocaleRequestSubscriber.php b/src/EventSubscriber/UserLocaleRequestSubscriber.php index cae16c1c..2ea9826f 100644 --- a/src/EventSubscriber/UserLocaleRequestSubscriber.php +++ b/src/EventSubscriber/UserLocaleRequestSubscriber.php @@ -20,11 +20,8 @@ class UserLocaleRequestSubscriber implements EventSubscriberInterface 'pl', ]; - /** @var SessionInterface */ - protected $session; - - /** @var LoggerInterface */ - protected $logger; + protected SessionInterface $session; + protected LoggerInterface $logger; public function __construct(SessionInterface $session, LoggerInterface $logger) { diff --git a/src/Form/DataTransformerRegistry.php b/src/Form/DataTransformerRegistry.php index 9e403318..4ee7d3b7 100644 --- a/src/Form/DataTransformerRegistry.php +++ b/src/Form/DataTransformerRegistry.php @@ -9,7 +9,7 @@ class DataTransformerRegistry implements DataTransformerInterface { /** @var RegisteredDataTransformerInterface[] */ - protected $registeredDataTransformers; + protected iterable $registeredDataTransformers; public function __construct(iterable $registeredDataTransformers) { diff --git a/src/Form/Mod/DataTransformer/ModFormDtoDataTransformer.php b/src/Form/Mod/DataTransformer/ModFormDtoDataTransformer.php index 99107883..c6087b66 100644 --- a/src/Form/Mod/DataTransformer/ModFormDtoDataTransformer.php +++ b/src/Form/Mod/DataTransformer/ModFormDtoDataTransformer.php @@ -20,8 +20,7 @@ class ModFormDtoDataTransformer implements RegisteredDataTransformerInterface { - /** @var SteamWorkshopClient */ - protected $steamWorkshopClient; + protected SteamWorkshopClient $steamWorkshopClient; public function __construct(SteamWorkshopClient $steamWorkshopClient) { diff --git a/src/Form/Mod/Dto/ModFormDto.php b/src/Form/Mod/Dto/ModFormDto.php index 45c0d736..0de56058 100644 --- a/src/Form/Mod/Dto/ModFormDto.php +++ b/src/Form/Mod/Dto/ModFormDto.php @@ -19,63 +19,47 @@ */ class ModFormDto extends AbstractFormDto { - /** @var null|UuidInterface */ - protected $id; + protected ?UuidInterface $id = null; /** - * @var null|string - * * @Assert\NotBlank(groups={ModSourceEnum::DIRECTORY}) * @Assert\Length(min=1, max=255) */ - protected $name; + protected ?string $name = null; /** - * @var null|string - * * @Assert\Length(min=1, max=255) */ - protected $description; + protected ?string $description = null; /** - * @var null|string - * * @Assert\Expression( * "!(this.getType() != constant('App\\Entity\\Mod\\Enum\\ModTypeEnum::SERVER_SIDE') && this.getSource() == constant('App\\Entity\\Mod\\Enum\\ModSourceEnum::DIRECTORY'))", * ) */ - protected $type; + protected ?string $type = null; - /** - * @var null|string - */ - protected $status; + protected ?string $status = null; /** - * @var null|string - * * @Assert\Expression( * "!(this.getSource() == constant('App\\Entity\\Mod\\Enum\\ModSourceEnum::DIRECTORY') && this.getType() != constant('App\\Entity\\Mod\\Enum\\ModTypeEnum::SERVER_SIDE'))", * ) */ - protected $source; + protected ?string $source = null; /** - * @var null|string - * * @Assert\NotBlank(groups={ModSourceEnum::STEAM_WORKSHOP}) * @Assert\Length(min=1, max=255, groups={ModSourceEnum::STEAM_WORKSHOP}) * @SteamWorkshopArma3ModUrl(groups={ModSourceEnum::STEAM_WORKSHOP})) */ - protected $url; + protected ?string $url = null; /** - * @var null|string - * * @Assert\NotBlank(groups={ModSourceEnum::DIRECTORY}) * @WindowsDirectoryName(groups={ModSourceEnum::DIRECTORY}) */ - protected $directory; + protected ?string $directory = null; /** * {@inheritdoc} diff --git a/src/Form/Mod/ModFormType.php b/src/Form/Mod/ModFormType.php index b5d6534c..e688d82d 100644 --- a/src/Form/Mod/ModFormType.php +++ b/src/Form/Mod/ModFormType.php @@ -7,8 +7,10 @@ use App\Entity\Mod\Enum\ModSourceEnum; use App\Entity\Mod\Enum\ModStatusEnum; use App\Entity\Mod\Enum\ModTypeEnum; +use App\Entity\Permissions\PermissionsInterface; use App\Entity\User\UserInterface; use App\Form\Mod\Dto\ModFormDto; +use App\Security\Voter\AbstractVoter; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -19,8 +21,7 @@ class ModFormType extends AbstractType { - /** @var Security */ - protected $security; + protected Security $security; public function __construct(Security $security) { @@ -103,7 +104,12 @@ protected function addChangeStatusType(FormBuilderInterface $builder): void /** @var UserInterface $currentUser */ $currentUser = $this->security->getUser(); - if (!$currentUser->getPermissions()->getModManagementPermissions()->canChangeStatus()) { + $canChangeStatus = AbstractVoter::userHasPermissions( + $currentUser, + static fn (PermissionsInterface $permissions) => $permissions->getModManagementPermissions()->canChangeStatus() + ); + + if (!$canChangeStatus) { return; } diff --git a/src/Form/ModGroup/Dto/ModGroupFormDto.php b/src/Form/ModGroup/Dto/ModGroupFormDto.php index ae33bf6c..4f9b5a63 100644 --- a/src/Form/ModGroup/Dto/ModGroupFormDto.php +++ b/src/Form/ModGroup/Dto/ModGroupFormDto.php @@ -17,28 +17,23 @@ */ class ModGroupFormDto extends AbstractFormDto { - /** @var null|UuidInterface */ - protected $id; + protected ?UuidInterface $id = null; /** - * @var null|string - * * @Assert\NotBlank * @Assert\Length(max=255) */ - protected $name; + protected ?string $name = null; /** - * @var null|string - * * @Assert\Length(min=1, max=255) */ - protected $description; + protected ?string $description = null; /** * @var Collection|ModInterface[] */ - protected $mods; + protected Collection $mods; public function __construct() { diff --git a/src/Form/ModList/DataTransformer/ModListFormDtoDataTransformer.php b/src/Form/ModList/DataTransformer/ModListFormDtoDataTransformer.php index 43d6abfb..055802f7 100644 --- a/src/Form/ModList/DataTransformer/ModListFormDtoDataTransformer.php +++ b/src/Form/ModList/DataTransformer/ModListFormDtoDataTransformer.php @@ -8,17 +8,18 @@ use App\Entity\Mod\ModInterface; use App\Entity\ModList\ModList; use App\Entity\ModList\ModListInterface; +use App\Entity\Permissions\PermissionsInterface; use App\Entity\User\UserInterface; use App\Form\FormDtoInterface; use App\Form\ModList\Dto\ModListFormDto; use App\Form\RegisteredDataTransformerInterface; +use App\Security\Voter\AbstractVoter; use Ramsey\Uuid\Uuid; use Symfony\Component\Security\Core\Security; class ModListFormDtoDataTransformer implements RegisteredDataTransformerInterface { - /** @var Security */ - protected $security; + protected Security $security; public function __construct(Security $security) { @@ -40,8 +41,13 @@ public function transformToEntity(FormDtoInterface $formDto, EntityInterface $en /** @var UserInterface $currentUser */ $currentUser = $this->security->getUser(); + $canUpdate = AbstractVoter::userHasPermissions( + $currentUser, + static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canUpdate() + ); + // If user has permissions set selected user as owner. Otherwise assign current user. - $owner = $currentUser->getPermissions()->getModListManagementPermissions()->canUpdate() ? $formDto->getOwner() : $currentUser; + $owner = $canUpdate ? $formDto->getOwner() : $currentUser; $entity->setName($formDto->getName()); $entity->setDescription($formDto->getDescription()); diff --git a/src/Form/ModList/Dto/ModListFormDto.php b/src/Form/ModList/Dto/ModListFormDto.php index 70987f1c..9dcbc128 100644 --- a/src/Form/ModList/Dto/ModListFormDto.php +++ b/src/Form/ModList/Dto/ModListFormDto.php @@ -19,48 +19,34 @@ */ class ModListFormDto extends AbstractFormDto { - /** @var null|UuidInterface */ - protected $id; + protected ?UuidInterface $id = null; /** - * @var null|string - * * @Assert\NotBlank * @Assert\Length(max=255) */ - protected $name; + protected ?string $name = null; /** - * @var null|string - * * @Assert\Length(min=1, max=255) */ - protected $description; + protected ?string $description = null; /** * @var Collection|ModInterface[] */ - protected $mods; + protected Collection $mods; /** * @var Collection|ModGroupInterface[] */ - protected $modGroups; + protected Collection $modGroups; - /** - * @var null|UserInterface - */ - protected $owner; + protected ?UserInterface $owner = null; - /** - * @var bool - */ - protected $active = true; + protected bool $active = true; - /** - * @var bool - */ - protected $approved = false; + protected bool $approved = false; public function __construct() { diff --git a/src/Form/ModList/ModListFormType.php b/src/Form/ModList/ModListFormType.php index d4c99fc4..de20b291 100644 --- a/src/Form/ModList/ModListFormType.php +++ b/src/Form/ModList/ModListFormType.php @@ -6,9 +6,11 @@ use App\Entity\Mod\AbstractMod; use App\Entity\ModGroup\ModGroup; +use App\Entity\Permissions\PermissionsInterface; use App\Entity\User\User; use App\Entity\User\UserInterface; use App\Form\ModList\Dto\ModListFormDto; +use App\Security\Voter\AbstractVoter; use Doctrine\ORM\EntityRepository; use Symfony\Bridge\Doctrine\Form\Type\EntityType; use Symfony\Component\Form\AbstractType; @@ -20,8 +22,7 @@ class ModListFormType extends AbstractType { - /** @var Security */ - protected $security; + protected Security $security; public function __construct(Security $security) { @@ -99,8 +100,13 @@ protected function addOwnerType(FormBuilderInterface $builder): void /** @var UserInterface $currentUser */ $currentUser = $this->security->getUser(); - // Add owner list only if user has full permissions to edit Mod Lists - if (!$currentUser->getPermissions()->getModListManagementPermissions()->canUpdate()) { + $canUpdate = AbstractVoter::userHasPermissions( + $currentUser, + static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canUpdate() + ); + + // User cannot change Mod List owner if he doesn't have full update permissions granted + if (!$canUpdate) { return; } @@ -118,9 +124,7 @@ protected function addOwnerType(FormBuilderInterface $builder): void ->orderBy('u.username', 'ASC') ; }, - 'choice_label' => static function (UserInterface $user) { - return $user->getUsername(); - }, + 'choice_label' => static fn (UserInterface $user) => $user->getUsername(), ]; if (!$modListExists) { @@ -136,7 +140,12 @@ protected function addApprovedType(FormBuilderInterface $builder): void /** @var UserInterface $currentUser */ $currentUser = $this->security->getUser(); - if (!$currentUser->getPermissions()->getModListManagementPermissions()->canApprove()) { + $canApprove = AbstractVoter::userHasPermissions( + $currentUser, + static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canApprove() + ); + + if (!$canApprove) { return; } diff --git a/src/Form/Permissions/User/UserManagementPermissionsType.php b/src/Form/Permissions/User/UserManagementPermissionsType.php index 226a499e..68d272f2 100644 --- a/src/Form/Permissions/User/UserManagementPermissionsType.php +++ b/src/Form/Permissions/User/UserManagementPermissionsType.php @@ -14,8 +14,7 @@ class UserManagementPermissionsType extends AbstractType { - /** @var Security */ - protected $security; + protected Security $security; public function __construct(Security $security) { diff --git a/src/Form/UserGroup/Dto/UserGroupFormDto.php b/src/Form/UserGroup/Dto/UserGroupFormDto.php index 0d8119f2..33a904c3 100644 --- a/src/Form/UserGroup/Dto/UserGroupFormDto.php +++ b/src/Form/UserGroup/Dto/UserGroupFormDto.php @@ -19,33 +19,22 @@ */ class UserGroupFormDto extends AbstractFormDto { - /** @var null|UuidInterface */ - protected $id; + protected ?UuidInterface $id = null; /** - * @var null|string - * * @Assert\NotBlank * @Assert\Length(max=255) */ - protected $name; + protected ?string $name = null; /** - * @var null|string - * * @Assert\Length(min=1, max=255) */ - protected $description; + protected ?string $description = null; - /** - * @var null|UserGroupPermissions - */ - protected $permissions; + protected ?UserGroupPermissions $permissions = null; - /** - * @var Collection|UserInterface[] - */ - protected $users; + protected Collection $users; public function __construct() { diff --git a/src/Kernel.php b/src/Kernel.php index 07198545..e63175f5 100644 --- a/src/Kernel.php +++ b/src/Kernel.php @@ -5,52 +5,36 @@ namespace App; use Symfony\Bundle\FrameworkBundle\Kernel\MicroKernelTrait; -use Symfony\Component\Config\Loader\LoaderInterface; -use Symfony\Component\Config\Resource\FileResource; -use Symfony\Component\DependencyInjection\ContainerBuilder; +use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; use Symfony\Component\HttpKernel\Kernel as BaseKernel; -use Symfony\Component\Routing\RouteCollectionBuilder; +use Symfony\Component\Routing\Loader\Configurator\RoutingConfigurator; class Kernel extends BaseKernel { use MicroKernelTrait; - private const CONFIG_EXTS = '.{php,xml,yaml,yml}'; - - public function registerBundles(): iterable + protected function configureContainer(ContainerConfigurator $container): void { - $contents = require $this->getProjectDir().'/config/bundles.php'; - foreach ($contents as $class => $envs) { - if ($envs[$this->environment] ?? $envs['all'] ?? false) { - yield new $class(); - } + $container->import('../config/{packages}/*.yaml'); + $container->import('../config/{packages}/'.$this->environment.'/*.yaml'); + + if (is_file(\dirname(__DIR__).'/config/services.yaml')) { + $container->import('../config/services.yaml'); + $container->import('../config/{services}_'.$this->environment.'.yaml'); + } elseif (is_file($path = \dirname(__DIR__).'/config/services.php')) { + (require $path)($container->withPath($path), $this); } } - public function getProjectDir(): string - { - return \dirname(__DIR__); - } - - protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader): void + protected function configureRoutes(RoutingConfigurator $routes): void { - $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); - $container->setParameter('container.dumper.inline_class_loader', \PHP_VERSION_ID < 70400 || $this->debug); - $container->setParameter('container.dumper.inline_factories', true); - $confDir = $this->getProjectDir().'/config'; - - $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); - $loader->load($confDir.'/{packages}/'.$this->environment.'/*'.self::CONFIG_EXTS, 'glob'); - $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); - $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); - } - - protected function configureRoutes(RouteCollectionBuilder $routes): void - { - $confDir = $this->getProjectDir().'/config'; + $routes->import('../config/{routes}/'.$this->environment.'/*.yaml'); + $routes->import('../config/{routes}/*.yaml'); - $routes->import($confDir.'/{routes}/'.$this->environment.'/*'.self::CONFIG_EXTS, '/', 'glob'); - $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); - $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); + if (is_file(\dirname(__DIR__).'/config/routes.yaml')) { + $routes->import('../config/routes.yaml'); + } elseif (is_file($path = \dirname(__DIR__).'/config/routes.php')) { + (require $path)($routes->withPath($path), $this); + } } } diff --git a/src/Repository/Mod/DirectoryModRepository.php b/src/Repository/Mod/DirectoryModRepository.php index 39adf4a2..e44e8890 100644 --- a/src/Repository/Mod/DirectoryModRepository.php +++ b/src/Repository/Mod/DirectoryModRepository.php @@ -6,7 +6,7 @@ use App\Entity\Mod\DirectoryMod; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|DirectoryMod find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Repository/Mod/ModRepository.php b/src/Repository/Mod/ModRepository.php index f13dd0d6..aeb5f07f 100644 --- a/src/Repository/Mod/ModRepository.php +++ b/src/Repository/Mod/ModRepository.php @@ -13,9 +13,9 @@ use App\Entity\ModList\ModList; use App\Entity\ModList\ModListInterface; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; use Doctrine\ORM\Query\Expr\Join; use Doctrine\ORM\QueryBuilder; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|ModInterface find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Repository/Mod/SteamWorkshopModRepository.php b/src/Repository/Mod/SteamWorkshopModRepository.php index 32d141f7..894fd106 100644 --- a/src/Repository/Mod/SteamWorkshopModRepository.php +++ b/src/Repository/Mod/SteamWorkshopModRepository.php @@ -6,7 +6,7 @@ use App\Entity\Mod\SteamWorkshopMod; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|SteamWorkshopMod find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Repository/ModGroup/ModGroupRepository.php b/src/Repository/ModGroup/ModGroupRepository.php index a84f3fe1..b033c3c7 100644 --- a/src/Repository/ModGroup/ModGroupRepository.php +++ b/src/Repository/ModGroup/ModGroupRepository.php @@ -7,7 +7,7 @@ use App\Entity\ModGroup\ModGroup; use App\Entity\ModGroup\ModGroupInterface; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|ModGroupInterface find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Repository/ModList/ModListRepository.php b/src/Repository/ModList/ModListRepository.php index d6e2406a..1ca700a9 100644 --- a/src/Repository/ModList/ModListRepository.php +++ b/src/Repository/ModList/ModListRepository.php @@ -8,7 +8,7 @@ use App\Entity\ModList\ModList; use App\Entity\ModList\ModListInterface; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|ModListInterface find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Repository/Permissions/PermissionsRepository.php b/src/Repository/Permissions/PermissionsRepository.php index ed8a2ac5..d47891a0 100644 --- a/src/Repository/Permissions/PermissionsRepository.php +++ b/src/Repository/Permissions/PermissionsRepository.php @@ -7,7 +7,7 @@ use App\Entity\Permissions\AbstractPermissions; use App\Entity\Permissions\PermissionsInterface; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|PermissionsInterface find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Repository/Permissions/UserGroupPermissionsRepository.php b/src/Repository/Permissions/UserGroupPermissionsRepository.php index 9ee372eb..58a4df8d 100644 --- a/src/Repository/Permissions/UserGroupPermissionsRepository.php +++ b/src/Repository/Permissions/UserGroupPermissionsRepository.php @@ -7,7 +7,7 @@ use App\Entity\Permissions\PermissionsInterface; use App\Entity\Permissions\UserGroupPermissions; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|PermissionsInterface find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Repository/Permissions/UserPermissionsRepository.php b/src/Repository/Permissions/UserPermissionsRepository.php index 2baabe4e..826e1557 100644 --- a/src/Repository/Permissions/UserPermissionsRepository.php +++ b/src/Repository/Permissions/UserPermissionsRepository.php @@ -7,7 +7,7 @@ use App\Entity\Permissions\PermissionsInterface; use App\Entity\Permissions\UserPermissions; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|PermissionsInterface find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Repository/User/UserRepository.php b/src/Repository/User/UserRepository.php index 1b1c1ad7..96f0ad87 100644 --- a/src/Repository/User/UserRepository.php +++ b/src/Repository/User/UserRepository.php @@ -7,7 +7,7 @@ use App\Entity\User\User; use App\Entity\User\UserInterface; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|UserInterface find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Repository/UserGroup/UserGroupRepository.php b/src/Repository/UserGroup/UserGroupRepository.php index b916a554..34b907a6 100644 --- a/src/Repository/UserGroup/UserGroupRepository.php +++ b/src/Repository/UserGroup/UserGroupRepository.php @@ -7,7 +7,7 @@ use App\Entity\UserGroup\UserGroup; use App\Entity\UserGroup\UserGroupInterface; use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository; -use Doctrine\Common\Persistence\ManagerRegistry; +use Doctrine\Persistence\ManagerRegistry; /** * @method null|UserGroupInterface find($id, $lockMode = null, $lockVersion = null) diff --git a/src/Security/DiscordAuthenticator.php b/src/Security/DiscordAuthenticator.php index 42d27bda..fcb5de96 100644 --- a/src/Security/DiscordAuthenticator.php +++ b/src/Security/DiscordAuthenticator.php @@ -14,16 +14,13 @@ use App\Service\RestCord\DiscordClientFactory; use App\Service\RestCord\Enum\TokenTypeEnum; use Doctrine\ORM\EntityManagerInterface; +use GuzzleHttp\Command\Exception\CommandException; use KnpU\OAuth2ClientBundle\Client\ClientRegistry; use KnpU\OAuth2ClientBundle\Client\OAuth2ClientInterface; use KnpU\OAuth2ClientBundle\Security\Authenticator\SocialAuthenticator; use League\OAuth2\Client\Token\AccessToken; use Ramsey\Uuid\Uuid; -use RestCord\DiscordClient; -use RestCord\Model\Guild\Guild; -use RestCord\Model\Guild\GuildMember; use RestCord\Model\Permissions\Role; -use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\RouterInterface; @@ -45,53 +42,32 @@ class DiscordAuthenticator extends SocialAuthenticator protected const LOGIN_PAGE_ROUTE_NAME = 'app_security_connect_discord'; protected const SUPPORTED_ROUTE_NAME = 'app_security_connect_discord_check'; - /** @var ClientRegistry */ - protected $clientRegistry; + protected ClientRegistry $clientRegistry; + protected EntityManagerInterface $em; + protected RouterInterface $router; + protected DiscordClientFactory $discordClientFactory; + protected int $discordServerId; + protected string $botToken; - /** @var EntityManagerInterface */ - protected $em; - - /** @var RouterInterface */ - protected $router; - - /** @var DiscordClientFactory */ - protected $discordClientFactory; - - /** @var ParameterBagInterface */ - protected $parameterBag; - - /** @var int */ - protected $discordServerId; - - /** @var string */ - protected $botToken; - - /** @var string */ - protected $recruitRoleName; - - /** @var string */ - protected $memberRoleName; + /** @var string[] */ + protected array $requiredServerRoleNames; public function __construct( ClientRegistry $clientRegistry, EntityManagerInterface $em, RouterInterface $router, DiscordClientFactory $discordClientFactory, - ParameterBagInterface $parameterBag, int $discordServerId, string $botToken, - string $recruitRoleName, - string $memberRoleName + array $requiredServerRoleNames ) { $this->clientRegistry = $clientRegistry; $this->em = $em; $this->router = $router; $this->discordClientFactory = $discordClientFactory; - $this->parameterBag = $parameterBag; $this->discordServerId = $discordServerId; $this->botToken = $botToken; - $this->recruitRoleName = $recruitRoleName; - $this->memberRoleName = $memberRoleName; + $this->requiredServerRoleNames = $requiredServerRoleNames; } /** @@ -118,24 +94,44 @@ public function getUser($credentials, UserProviderInterface $userProvider): User /** @var DiscordResourceOwner $discordResourceOwner */ $discordResourceOwner = $this->getDiscordClient()->fetchUserFromToken($credentials); - $userToken = $credentials->getToken(); - $discordClientAsUser = $this->discordClientFactory->createFromToken( - $userToken, - TokenTypeEnum::get(TokenTypeEnum::TOKEN_TYPE_OAUTH) - ); - $this->verifyDiscordMembership($discordClientAsUser, $discordResourceOwner); + $userId = (int) $discordResourceOwner->getId(); + $username = $discordResourceOwner->getUsername(); + $fullUsername = $discordResourceOwner->getUsername().'#'.$discordResourceOwner->getDiscriminator(); + $email = $discordResourceOwner->getEmail(); + $externalId = $discordResourceOwner->getId(); $discordClientAsBot = $this->discordClientFactory->createFromToken( $this->botToken, TokenTypeEnum::get(TokenTypeEnum::TOKEN_TYPE_BOT) ); - $this->verifyDiscordRoleAssigned($discordClientAsBot, $discordResourceOwner); - $fullUsername = $discordResourceOwner->getUsername().'#'.$discordResourceOwner->getDiscriminator(); - /** @var string $email */ - $email = $discordResourceOwner->getEmail(); - /** @var string $externalId */ - $externalId = $discordResourceOwner->getId(); + $server = $discordClientAsBot->guild->getGuild(['guild.id' => $this->discordServerId]); + + try { + $userAsServerMember = $discordClientAsBot->guild->getGuildMember([ + 'guild.id' => $server->id, + 'user.id' => $userId, + ]); + } catch (CommandException $ex) { + throw new UserNotADiscordMemberException( + sprintf('User "%s" is not a member of "%s" Discord server!', $username, $server->name) + ); + } + + // Collect IDs of required server roles by their names + // This is needed as user object contains only IDs of roles assigned + $serverRoleIds = []; + $serverRoles = $discordClientAsBot->guild->getGuildRoles(['guild.id' => $server->id]); + foreach ($this->requiredServerRoleNames as $requiredServerRoleName) { + $serverRoleIds[] = $this->getRoleByName($serverRoles, $requiredServerRoleName)->id; + } + + // Check if user has at least one role assigned + if (0 === \count(array_intersect($serverRoleIds, $userAsServerMember->roles))) { + throw new RequiredRolesNotAssignedException( + sprintf('User "%s" does not have required roles assigned!', $username) + ); + } try { /** @var User $user */ @@ -178,7 +174,7 @@ public function onAuthenticationFailure(Request $request, AuthenticationExceptio /** * {@inheritdoc} */ - public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey): ?RedirectResponse + public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $providerKey): ?RedirectResponse { $targetUrl = $this->router->generate(self::HOME_INDEX_PAGE_ROUTE_NAME); @@ -195,95 +191,30 @@ public function start(Request $request, AuthenticationException $authException = return new RedirectResponse($targetUrl); } - protected function verifyDiscordMembership(DiscordClient $discordClient, DiscordResourceOwner $discordResourceOwner): void - { - $username = $discordResourceOwner->getUsername(); - $guilds = $discordClient->user->getCurrentUserGuilds([]); - - if (!$this->isMemberOfDiscordServer($guilds, $this->discordServerId)) { - throw new UserNotADiscordMemberException( - sprintf('User "%s" is not a member of ArmaForces Discord server!', $username) - ); - } - } - - protected function verifyDiscordRoleAssigned(DiscordClient $discordClient, DiscordResourceOwner $discordResourceOwner): void - { - $username = $discordResourceOwner->getUsername(); - $userId = (int) $discordResourceOwner->getId(); - $guildId = $this->discordServerId; - - $guildRoles = $discordClient->guild->getGuildRoles([ - 'guild.id' => $guildId, - ]); - - $userAsGuildMember = $discordClient->guild->getGuildMember([ - 'guild.id' => $guildId, - 'user.id' => $userId, - ]); - - $recruitRoleId = $this->getRoleIdByName($guildRoles, $this->recruitRoleName); - $memberRoleId = $this->getRoleIdByName($guildRoles, $this->memberRoleName); - - if ($this->hasServerRole($userAsGuildMember, $recruitRoleId) || $this->hasServerRole($userAsGuildMember, $memberRoleId)) { - return; - } - - throw new RequiredRolesNotAssignedException( - sprintf('User "%s" doesn\'t have required roles assigned!', $username) - ); - } - - protected function getDiscordClient(): OAuth2ClientInterface - { - return $this->clientRegistry->getClient(self::DISCORD_CLIENT_NAME); - } - - /** - * @param Role[] $roles - */ - protected function getRoleIdByName(array $roles, string $roleName): int + protected function getRoleByName(array $roles, string $roleName): Role { - $rolesIdsFound = []; + $rolesFound = []; foreach ($roles as $role) { if ($role->name === $roleName) { - $rolesIdsFound[] = $role->id; + $rolesFound[] = $role; } } - switch (\count($rolesIdsFound)) { - case 1: - return $rolesIdsFound[0]; + switch (\count($rolesFound)) { case 0: - throw new RoleNotFoundException(sprintf('Role "%s" wasn\'t not found!', $roleName)); + throw new RoleNotFoundException(sprintf('Role "%s" was not found!', $roleName)); + + case 1: + return $rolesFound[0]; + default: throw new MultipleRolesFound(sprintf('Multiple roles found by given name "%s"!', $roleName)); } } - /** - * @param Guild[] $guilds - */ - protected function isMemberOfDiscordServer(array $guilds, int $guildId): bool - { - foreach ($guilds as $guild) { - if ($guild->id === $guildId) { - return true; - } - } - - return false; - } - - protected function hasServerRole(GuildMember $guildMember, int $roleId): bool + protected function getDiscordClient(): OAuth2ClientInterface { - foreach ($guildMember->roles as $role) { - if ($role === $roleId) { - return true; - } - } - - return false; + return $this->clientRegistry->getClient(self::DISCORD_CLIENT_NAME); } } diff --git a/src/Security/Voter/AbstractVoter.php b/src/Security/Voter/AbstractVoter.php index 65b12383..3390d71c 100644 --- a/src/Security/Voter/AbstractVoter.php +++ b/src/Security/Voter/AbstractVoter.php @@ -11,13 +11,11 @@ abstract class AbstractVoter extends Voter { - public function userHasPermissions(UserInterface $user, callable $permissionsCheck): bool + public static function userHasPermissions(UserInterface $user, callable $permissionsCheck): bool { return $permissionsCheck($user->getPermissions()) || (new ArrayCollection($user->getUserGroups()))->exists( - static function (int $index, UserGroupInterface $userGroup) use ($permissionsCheck) { - return $permissionsCheck($userGroup->getPermissions()); - } + static fn (int $index, UserGroupInterface $userGroup) => $permissionsCheck($userGroup->getPermissions()) ); } } diff --git a/src/Security/Voter/Mod/CreateModVoter.php b/src/Security/Voter/Mod/CreateModVoter.php index 12997518..1879b5a9 100644 --- a/src/Security/Voter/Mod/CreateModVoter.php +++ b/src/Security/Voter/Mod/CreateModVoter.php @@ -15,7 +15,7 @@ class CreateModVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_CREATE === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModManagementPermissions()->canCreate(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModManagementPermissions()->canCreate()); } } diff --git a/src/Security/Voter/Mod/DeleteModVoter.php b/src/Security/Voter/Mod/DeleteModVoter.php index b1d67759..b3f77abd 100644 --- a/src/Security/Voter/Mod/DeleteModVoter.php +++ b/src/Security/Voter/Mod/DeleteModVoter.php @@ -16,7 +16,7 @@ class DeleteModVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_DELETE === $attribute && $subject instanceof ModInterface; } @@ -24,7 +24,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -32,8 +32,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModManagementPermissions()->canDelete(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModManagementPermissions()->canDelete()); } } diff --git a/src/Security/Voter/Mod/ListModsVoter.php b/src/Security/Voter/Mod/ListModsVoter.php index bd0129e2..893bbc41 100644 --- a/src/Security/Voter/Mod/ListModsVoter.php +++ b/src/Security/Voter/Mod/ListModsVoter.php @@ -15,7 +15,7 @@ class ListModsVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_LIST === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModManagementPermissions()->canList(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModManagementPermissions()->canList()); } } diff --git a/src/Security/Voter/Mod/UpdateModVoter.php b/src/Security/Voter/Mod/UpdateModVoter.php index ba314a52..820cb759 100644 --- a/src/Security/Voter/Mod/UpdateModVoter.php +++ b/src/Security/Voter/Mod/UpdateModVoter.php @@ -16,7 +16,7 @@ class UpdateModVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_UPDATE === $attribute && $subject instanceof ModInterface; } @@ -24,7 +24,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -32,8 +32,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModManagementPermissions()->canUpdate(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModManagementPermissions()->canUpdate()); } } diff --git a/src/Security/Voter/ModGroup/CreateModGroupVoter.php b/src/Security/Voter/ModGroup/CreateModGroupVoter.php index 9217aeb7..a124d08f 100644 --- a/src/Security/Voter/ModGroup/CreateModGroupVoter.php +++ b/src/Security/Voter/ModGroup/CreateModGroupVoter.php @@ -15,7 +15,7 @@ class CreateModGroupVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_GROUP_CREATE === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModGroupManagementPermissions()->canCreate(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModGroupManagementPermissions()->canCreate()); } } diff --git a/src/Security/Voter/ModGroup/DeleteModGroupVoter.php b/src/Security/Voter/ModGroup/DeleteModGroupVoter.php index 59d16b2f..eb711482 100644 --- a/src/Security/Voter/ModGroup/DeleteModGroupVoter.php +++ b/src/Security/Voter/ModGroup/DeleteModGroupVoter.php @@ -16,7 +16,7 @@ class DeleteModGroupVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_GROUP_DELETE === $attribute && $subject instanceof ModGroupInterface; } @@ -24,7 +24,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -32,8 +32,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModGroupManagementPermissions()->canDelete(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModGroupManagementPermissions()->canDelete()); } } diff --git a/src/Security/Voter/ModGroup/ListModGroupsVoter.php b/src/Security/Voter/ModGroup/ListModGroupsVoter.php index 332554d9..23887bb2 100644 --- a/src/Security/Voter/ModGroup/ListModGroupsVoter.php +++ b/src/Security/Voter/ModGroup/ListModGroupsVoter.php @@ -15,7 +15,7 @@ class ListModGroupsVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_GROUP_LIST === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModGroupManagementPermissions()->canList(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModGroupManagementPermissions()->canList()); } } diff --git a/src/Security/Voter/ModGroup/UpdateModGroupVoter.php b/src/Security/Voter/ModGroup/UpdateModGroupVoter.php index 3b83e3d1..aa79eb7a 100644 --- a/src/Security/Voter/ModGroup/UpdateModGroupVoter.php +++ b/src/Security/Voter/ModGroup/UpdateModGroupVoter.php @@ -16,7 +16,7 @@ class UpdateModGroupVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_GROUP_UPDATE === $attribute && $subject instanceof ModGroupInterface; } @@ -24,7 +24,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -32,8 +32,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModGroupManagementPermissions()->canUpdate(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModGroupManagementPermissions()->canUpdate()); } } diff --git a/src/Security/Voter/ModList/ApproveModListVoter.php b/src/Security/Voter/ModList/ApproveModListVoter.php index 131ed92d..a7adc08b 100644 --- a/src/Security/Voter/ModList/ApproveModListVoter.php +++ b/src/Security/Voter/ModList/ApproveModListVoter.php @@ -15,7 +15,7 @@ class ApproveModListVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_LIST_APPROVE === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModListManagementPermissions()->canApprove(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canApprove()); } } diff --git a/src/Security/Voter/ModList/CopyModListVoter.php b/src/Security/Voter/ModList/CopyModListVoter.php index f09a97fc..aa9c90b6 100644 --- a/src/Security/Voter/ModList/CopyModListVoter.php +++ b/src/Security/Voter/ModList/CopyModListVoter.php @@ -16,7 +16,7 @@ class CopyModListVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_LIST_COPY === $attribute && $subject instanceof ModListInterface; } @@ -24,7 +24,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -32,8 +32,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModListManagementPermissions()->canCopy(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canCopy()); } } diff --git a/src/Security/Voter/ModList/CreateModListVoter.php b/src/Security/Voter/ModList/CreateModListVoter.php index 45ea2853..e6b957ac 100644 --- a/src/Security/Voter/ModList/CreateModListVoter.php +++ b/src/Security/Voter/ModList/CreateModListVoter.php @@ -15,7 +15,7 @@ class CreateModListVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_LIST_CREATE === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModListManagementPermissions()->canCreate(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canCreate()); } } diff --git a/src/Security/Voter/ModList/DeleteModListVoter.php b/src/Security/Voter/ModList/DeleteModListVoter.php index 116cfdab..133abd66 100644 --- a/src/Security/Voter/ModList/DeleteModListVoter.php +++ b/src/Security/Voter/ModList/DeleteModListVoter.php @@ -17,7 +17,7 @@ class DeleteModListVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_LIST_DELETE === $attribute && $subject instanceof ModListInterface; } @@ -25,7 +25,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -37,9 +37,7 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): $modList = $subject; return $modList->getOwner() === $currentUser - || $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModListManagementPermissions()->canDelete(); - }) + || $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canDelete()) ; } } diff --git a/src/Security/Voter/ModList/DownloadModListVoter.php b/src/Security/Voter/ModList/DownloadModListVoter.php index ee87e20d..6e379d00 100644 --- a/src/Security/Voter/ModList/DownloadModListVoter.php +++ b/src/Security/Voter/ModList/DownloadModListVoter.php @@ -17,7 +17,7 @@ class DownloadModListVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_LIST_DOWNLOAD === $attribute && $subject instanceof ModListInterface; } @@ -25,7 +25,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -40,9 +40,7 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): // Otherwise user needs to be logged-in and have "List" permission granted return $currentUser instanceof UserInterface - && $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModListManagementPermissions()->canList(); - }) + && $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canList()) ; } } diff --git a/src/Security/Voter/ModList/ListModListsVoter.php b/src/Security/Voter/ModList/ListModListsVoter.php index a4e01355..d44815e0 100644 --- a/src/Security/Voter/ModList/ListModListsVoter.php +++ b/src/Security/Voter/ModList/ListModListsVoter.php @@ -15,7 +15,7 @@ class ListModListsVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_LIST_LIST === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModListManagementPermissions()->canList(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canList()); } } diff --git a/src/Security/Voter/ModList/UpdateModListVoter.php b/src/Security/Voter/ModList/UpdateModListVoter.php index 9e50c547..23762caf 100644 --- a/src/Security/Voter/ModList/UpdateModListVoter.php +++ b/src/Security/Voter/ModList/UpdateModListVoter.php @@ -17,7 +17,7 @@ class UpdateModListVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::MOD_LIST_UPDATE === $attribute && $subject instanceof ModListInterface; } @@ -25,7 +25,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -37,9 +37,7 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): $modList = $subject; return $modList->getOwner() === $currentUser - || $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getModListManagementPermissions()->canUpdate(); - }) + || $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getModListManagementPermissions()->canUpdate()) ; } } diff --git a/src/Security/Voter/User/DeleteUserVoter.php b/src/Security/Voter/User/DeleteUserVoter.php index 4d10b68a..a26c0cc8 100644 --- a/src/Security/Voter/User/DeleteUserVoter.php +++ b/src/Security/Voter/User/DeleteUserVoter.php @@ -15,7 +15,7 @@ class DeleteUserVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::USER_DELETE === $attribute && $subject instanceof UserInterface; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -35,9 +35,7 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): $user = $subject; return $currentUser !== $user - && $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getUserManagementPermissions()->canDelete(); - }) + && $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getUserManagementPermissions()->canDelete()) ; } } diff --git a/src/Security/Voter/User/ListUsersVoter.php b/src/Security/Voter/User/ListUsersVoter.php index e67afebc..e31ddd6c 100644 --- a/src/Security/Voter/User/ListUsersVoter.php +++ b/src/Security/Voter/User/ListUsersVoter.php @@ -15,7 +15,7 @@ class ListUsersVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::USER_LIST === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getUserManagementPermissions()->canList(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getUserManagementPermissions()->canList()); } } diff --git a/src/Security/Voter/User/ManageUserPermissionsVoter.php b/src/Security/Voter/User/ManageUserPermissionsVoter.php index f9d12f84..bad8faa2 100644 --- a/src/Security/Voter/User/ManageUserPermissionsVoter.php +++ b/src/Security/Voter/User/ManageUserPermissionsVoter.php @@ -15,7 +15,7 @@ class ManageUserPermissionsVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::USER_PERMISSIONS_MANAGE === $attribute && $subject instanceof UserInterface; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getUserManagementPermissions()->canManagePermissions(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getUserManagementPermissions()->canManagePermissions()); } } diff --git a/src/Security/Voter/UserGroup/CreateUserGroupVoter.php b/src/Security/Voter/UserGroup/CreateUserGroupVoter.php index 814c2c87..8c77ef26 100644 --- a/src/Security/Voter/UserGroup/CreateUserGroupVoter.php +++ b/src/Security/Voter/UserGroup/CreateUserGroupVoter.php @@ -15,7 +15,7 @@ class CreateUserGroupVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::USER_GROUP_CREATE === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getUserGroupManagementPermissions()->canCreate(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getUserGroupManagementPermissions()->canCreate()); } } diff --git a/src/Security/Voter/UserGroup/DeleteUserGroupVoter.php b/src/Security/Voter/UserGroup/DeleteUserGroupVoter.php index 227e8349..e9e52293 100644 --- a/src/Security/Voter/UserGroup/DeleteUserGroupVoter.php +++ b/src/Security/Voter/UserGroup/DeleteUserGroupVoter.php @@ -16,7 +16,7 @@ class DeleteUserGroupVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::USER_GROUP_DELETE === $attribute && $subject instanceof UserGroupInterface; } @@ -24,7 +24,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -32,8 +32,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getUserGroupManagementPermissions()->canDelete(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getUserGroupManagementPermissions()->canDelete()); } } diff --git a/src/Security/Voter/UserGroup/ListUserGroupsVoter.php b/src/Security/Voter/UserGroup/ListUserGroupsVoter.php index 9bb2586f..2afbc643 100644 --- a/src/Security/Voter/UserGroup/ListUserGroupsVoter.php +++ b/src/Security/Voter/UserGroup/ListUserGroupsVoter.php @@ -15,7 +15,7 @@ class ListUserGroupsVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::USER_GROUP_LIST === $attribute; } @@ -23,7 +23,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -31,8 +31,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getUserGroupManagementPermissions()->canList(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getUserGroupManagementPermissions()->canList()); } } diff --git a/src/Security/Voter/UserGroup/UpdateUserGroupVoter.php b/src/Security/Voter/UserGroup/UpdateUserGroupVoter.php index 56c07b77..fe4d26ec 100644 --- a/src/Security/Voter/UserGroup/UpdateUserGroupVoter.php +++ b/src/Security/Voter/UserGroup/UpdateUserGroupVoter.php @@ -16,7 +16,7 @@ class UpdateUserGroupVoter extends AbstractVoter /** * {@inheritdoc} */ - protected function supports($attribute, $subject): bool + protected function supports(string $attribute, $subject): bool { return PermissionsEnum::USER_GROUP_UPDATE === $attribute && $subject instanceof UserGroupInterface; } @@ -24,7 +24,7 @@ protected function supports($attribute, $subject): bool /** * {@inheritdoc} */ - protected function voteOnAttribute($attribute, $subject, TokenInterface $token): bool + protected function voteOnAttribute(string $attribute, $subject, TokenInterface $token): bool { /** @var null|UserInterface $currentUser */ $currentUser = $token->getUser(); @@ -32,8 +32,6 @@ protected function voteOnAttribute($attribute, $subject, TokenInterface $token): return false; } - return $this->userHasPermissions($currentUser, static function (PermissionsInterface $permissions) { - return $permissions->getUserGroupManagementPermissions()->canUpdate(); - }); + return $this->userHasPermissions($currentUser, static fn (PermissionsInterface $permissions) => $permissions->getUserGroupManagementPermissions()->canUpdate()); } } diff --git a/src/Service/LegacyModListImport/Dto/ModCsvEntryDto.php b/src/Service/LegacyModListImport/Dto/ModCsvEntryDto.php index 8d12f96c..d77efaa1 100644 --- a/src/Service/LegacyModListImport/Dto/ModCsvEntryDto.php +++ b/src/Service/LegacyModListImport/Dto/ModCsvEntryDto.php @@ -6,20 +6,11 @@ class ModCsvEntryDto { - /** @var string */ - protected $id; - - /** @var string */ - protected $name; - - /** @var null|string */ - protected $isServerSide; - - /** @var null|string */ - protected $isOptional; - - /** @var null|string */ - protected $isMap; + protected string $id; + protected string $name; + protected ?string $isServerSide; + protected ?string $isOptional; + protected ?string $isMap; public function __construct(string $id, string $name, ?string $isServerSide, ?string $isOptional, ?string $isMap) { diff --git a/src/Service/LegacyModListImport/ModListImport.php b/src/Service/LegacyModListImport/ModListImport.php index 82081c82..2268c21f 100644 --- a/src/Service/LegacyModListImport/ModListImport.php +++ b/src/Service/LegacyModListImport/ModListImport.php @@ -15,20 +15,11 @@ class ModListImport { - /** @var EntityManagerInterface */ - protected $entityManager; - - /** @var ModListCsvReader */ - protected $modListCsvReader; - - /** @var DtoToEntityConverter */ - protected $dtoToEntityConverter; - - /** @var SteamWorkshopModRepository */ - protected $steamWorkshopModRepository; - - /** @var DirectoryModRepository */ - protected $directoryModRepository; + protected EntityManagerInterface $entityManager; + protected ModListCsvReader $modListCsvReader; + protected DtoToEntityConverter $dtoToEntityConverter; + protected SteamWorkshopModRepository $steamWorkshopModRepository; + protected DirectoryModRepository $directoryModRepository; public function __construct( EntityManagerInterface $entityManager, diff --git a/src/Service/Mission/Dto/MissionDto.php b/src/Service/Mission/Dto/MissionDto.php index c161b9f2..8eed976c 100644 --- a/src/Service/Mission/Dto/MissionDto.php +++ b/src/Service/Mission/Dto/MissionDto.php @@ -6,32 +6,15 @@ class MissionDto { - /** @var null|int */ - protected $id; - - /** @var string */ - protected $title; - - /** @var \DateTimeImmutable */ - protected $date; - - /** @var \DateTimeImmutable */ - protected $closeDate; - - /** @var string */ - protected $description; - - /** @var int */ - protected $freeSlots; - - /** @var int */ - protected $allSlots; - - /** @var null|string */ - protected $image; - - /** @var string */ - protected $state; + protected ?int $id; + protected string $title; + protected \DateTimeImmutable $date; + protected \DateTimeImmutable $closeDate; + protected string $description; + protected int $freeSlots; + protected int $allSlots; + protected ?string $image; + protected string $state; public function __construct( ?int $id, diff --git a/src/Service/Mission/MissionClient.php b/src/Service/Mission/MissionClient.php index 6ed0e779..9708f118 100644 --- a/src/Service/Mission/MissionClient.php +++ b/src/Service/Mission/MissionClient.php @@ -12,8 +12,7 @@ class MissionClient { - /** @var HttpClientInterface */ - protected $client; + protected HttpClientInterface $client; public function __construct(HttpClientInterface $client, MissionStore $store, string $missionApiUrl) { @@ -60,11 +59,7 @@ public function getArchivedMissions(): array /** @var MissionDto[] $allMissions */ $allMissions = iterator_to_array($this->getMissions(true)); - return array_filter($allMissions, static function (MissionDto $mission) { - if (MissionStateEnum::ARCHIVED === $mission->getState()) { - return $mission; - } - }); + return array_filter($allMissions, static fn (MissionDto $mission) => MissionStateEnum::ARCHIVED === $mission->getState()); } /** @@ -75,10 +70,6 @@ public function getUpcomingMissions(): array /** @var MissionDto[] $allMissions */ $allMissions = iterator_to_array($this->getMissions(true)); - return array_filter($allMissions, static function (MissionDto $mission) { - if (MissionStateEnum::ARCHIVED !== $mission->getState()) { - return $mission; - } - }); + return array_filter($allMissions, static fn (MissionDto $mission) => MissionStateEnum::ARCHIVED !== $mission->getState()); } } diff --git a/src/Service/Mission/MissionStore.php b/src/Service/Mission/MissionStore.php index a44e16f2..96672956 100644 --- a/src/Service/Mission/MissionStore.php +++ b/src/Service/Mission/MissionStore.php @@ -11,8 +11,7 @@ class MissionStore implements StoreInterface { - /** @var Store */ - protected $store; + protected Store $store; public function __construct(string $storagePath) { diff --git a/src/Service/SteamWorkshop/Dto/SteamWorkshopItemInfoDto.php b/src/Service/SteamWorkshop/Dto/SteamWorkshopItemInfoDto.php index ebe13a30..8ef576ac 100644 --- a/src/Service/SteamWorkshop/Dto/SteamWorkshopItemInfoDto.php +++ b/src/Service/SteamWorkshop/Dto/SteamWorkshopItemInfoDto.php @@ -6,14 +6,9 @@ class SteamWorkshopItemInfoDto { - /** @var int */ - protected $id; - - /** @var string */ - protected $name; - - /** @var int */ - protected $gameId; + protected int $id; + protected string $name; + protected int $gameId; public function __construct(int $id, string $name, int $gameId) { diff --git a/src/Service/SteamWorkshop/SteamWorkshopClient.php b/src/Service/SteamWorkshop/SteamWorkshopClient.php index 092150a0..592d74f9 100644 --- a/src/Service/SteamWorkshop/SteamWorkshopClient.php +++ b/src/Service/SteamWorkshop/SteamWorkshopClient.php @@ -11,8 +11,7 @@ class SteamWorkshopClient { - /** @var HttpClientInterface */ - protected $httpClient; + protected HttpClientInterface $httpClient; public function __construct(HttpClientInterface $httpClient) { diff --git a/src/Service/Version/VersionProvider.php b/src/Service/Version/VersionProvider.php index f678cd95..5bad1d2a 100644 --- a/src/Service/Version/VersionProvider.php +++ b/src/Service/Version/VersionProvider.php @@ -6,11 +6,8 @@ class VersionProvider { - /** @var string */ - protected $filePath; - - /** @var string */ - protected $defaultVersion; + protected string $filePath; + protected string $defaultVersion; public function __construct(string $projectDir, string $fileName = 'VERSION', string $defaultVersion = 'dev') { diff --git a/src/Test/Enum/RouteEnum.php b/src/Test/Enum/RouteEnum.php index 98bc2d5d..805b4e91 100644 --- a/src/Test/Enum/RouteEnum.php +++ b/src/Test/Enum/RouteEnum.php @@ -16,7 +16,7 @@ class RouteEnum public const MOD_LIST_PUBLIC_SELECT = '/mod-list/select'; public const MOD_LIST_PUBLIC_CUSTOMIZE = '/mod-list/%s'; - public const MOD_LIST_PUBLIC_DOWNLOAD = '/mod-list/%s/download/%s'; + public const MOD_LIST_PUBLIC_DOWNLOAD = '/mod-list/%s/download'; public const USER_LIST = '/user/list'; public const USER_DELETE = '/user/%s/delete'; diff --git a/src/Test/Traits/AssertsTrait.php b/src/Test/Traits/AssertsTrait.php index d4873b22..db8df368 100644 --- a/src/Test/Traits/AssertsTrait.php +++ b/src/Test/Traits/AssertsTrait.php @@ -4,7 +4,10 @@ namespace App\Test\Traits; +use App\Entity\Mod\SteamWorkshopMod; +use App\Entity\ModList\ModList; use Symfony\Component\DomCrawler\Crawler; +use Symfony\Component\HttpFoundation\Response; trait AssertsTrait { @@ -15,4 +18,34 @@ public static function assertTeamSpeakUrlVisible(Crawler $crawler, bool $visible $url = $crawler->filter('.icon-teamspeak a')->attr('href'); self::assertSame($expectedUrl, $url); } + + public static function assertResponseContainsModListAttachmentHeader(Response $response, ModList $modList): void + { + $contentDispositionHeader = $response->headers->get('Content-Disposition'); + $pattern = "/^attachment; filename=\"{$modList->getName()} \\d{4}-\\d{2}-\\d{2} \\d{2}-\\d{2}-\\d{2}.html\"$/"; + + self::assertTrue(1 === preg_match($pattern, $contentDispositionHeader)); + } + + public static function assertLauncherPresetContainsMods(Crawler $crawler, array $expectedMods): void + { + $expectedMods = array_map(static function (SteamWorkshopMod $steamWorkshopMod) { + return [ + 'name' => $steamWorkshopMod->getName(), + 'url' => "https://steamcommunity.com/sharedfiles/filedetails/?id={$steamWorkshopMod->getItemId()}", + ]; + }, $expectedMods); + + $modContainerNodes = $crawler->filter('[data-type="ModContainer"]'); + $presetMods = array_map(static function (\DOMNode $modContainerNode) { + $modContainerCrawler = (new Crawler($modContainerNode)); + + return [ + 'name' => $modContainerCrawler->filter('[data-type="DisplayName"]')->html(), + 'url' => $modContainerCrawler->filter('[data-type="Link"]')->attr('href'), + ]; + }, iterator_to_array($modContainerNodes->getIterator())); + + self::assertSame(var_export($expectedMods, true), var_export($presetMods, true)); + } } diff --git a/src/Test/Traits/DataProvidersTrait.php b/src/Test/Traits/DataProvidersTrait.php index f451d291..ac9823c0 100644 --- a/src/Test/Traits/DataProvidersTrait.php +++ b/src/Test/Traits/DataProvidersTrait.php @@ -4,7 +4,7 @@ namespace App\Test\Traits; -use App\DataFixtures\Mod\ArmaForcesModsModFixture; +use App\DataFixtures\Mod\Required\ArmaForcesModsModFixture; use App\DataFixtures\ModGroup\RhsModGroupFixture; use App\DataFixtures\ModList\DefaultModListFixture; use App\DataFixtures\User\AdminUserFixture; diff --git a/src/Twig/BackgroundImageExtension.php b/src/Twig/BackgroundImageExtension.php index 0fb4f1c0..2eee5302 100644 --- a/src/Twig/BackgroundImageExtension.php +++ b/src/Twig/BackgroundImageExtension.php @@ -10,8 +10,7 @@ class BackgroundImageExtension extends AbstractExtension { - /** @var string */ - protected $cacheDir; + protected string $cacheDir; public function __construct(string $cacheDir) { diff --git a/src/Twig/ImgproxyExtension.php b/src/Twig/ImgproxyExtension.php index d3dad9d6..6aa4cc6c 100644 --- a/src/Twig/ImgproxyExtension.php +++ b/src/Twig/ImgproxyExtension.php @@ -9,14 +9,9 @@ class ImgproxyExtension extends AbstractExtension { - /** @var string */ - protected $baseProxyUrl; - - /** @var string */ - protected $proxyKey; - - /** @var string */ - protected $proxySalt; + protected string $baseProxyUrl; + protected string $proxyKey; + protected string $proxySalt; public function __construct(string $baseProxyUrl, string $proxyKey, string $proxySalt) { diff --git a/src/Twig/UserExtension.php b/src/Twig/UserExtension.php index a1e659e4..96282e13 100644 --- a/src/Twig/UserExtension.php +++ b/src/Twig/UserExtension.php @@ -5,7 +5,7 @@ namespace App\Twig; use App\Entity\User\User; -use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; +use Symfony\Component\Security\Core\Security; use Twig\Extension\AbstractExtension; use Twig\TwigFunction; @@ -14,12 +14,11 @@ class UserExtension extends AbstractExtension public const AVATAR_CDN = 'https://cdn.discordapp.com'; public const DEFAULT_AVATAR_URL = '/embed/avatars/3.png'; - /** @var TokenStorageInterface */ - protected $tokenStorage; + protected Security $security; - public function __construct(TokenStorageInterface $tokenStorage) + public function __construct(Security $security) { - $this->tokenStorage = $tokenStorage; + $this->security = $security; } public function getFunctions(): array @@ -33,14 +32,12 @@ public function getFunctions(): array public function getCurrentUserAvatarUrl(): string { - $token = $this->tokenStorage->getToken(); - if (null === $token) { + /** @var null|User $user */ + $user = $this->security->getUser(); + if (!$user) { throw new \LogicException('Can\'t get user avatar url without user token!'); } - /** @var User $user */ - $user = $token->getUser(); - return $this->getUserAvatarUrl($user); } diff --git a/src/Twig/UtilsExtension.php b/src/Twig/UtilsExtension.php index 9b7193aa..eda24247 100644 --- a/src/Twig/UtilsExtension.php +++ b/src/Twig/UtilsExtension.php @@ -12,11 +12,8 @@ class UtilsExtension extends AbstractExtension { - /** @var ParameterBagInterface */ - protected $parameterBag; - - /** @var RequestStack */ - protected $requestStack; + protected ParameterBagInterface $parameterBag; + protected RequestStack $requestStack; public function __construct(ParameterBagInterface $parameterBag, RequestStack $requestStack) { diff --git a/src/Twig/VersionExtension.php b/src/Twig/VersionExtension.php index 32525d90..81c7359f 100644 --- a/src/Twig/VersionExtension.php +++ b/src/Twig/VersionExtension.php @@ -10,8 +10,7 @@ class VersionExtension extends AbstractExtension { - /** @var VersionProvider */ - protected $version; + protected VersionProvider $version; public function __construct(VersionProvider $version) { diff --git a/src/Validator/AbstractValidator.php b/src/Validator/AbstractValidator.php index 23fcc078..af857973 100644 --- a/src/Validator/AbstractValidator.php +++ b/src/Validator/AbstractValidator.php @@ -11,8 +11,7 @@ abstract class AbstractValidator extends ConstraintValidator { - /** @var EntityManagerInterface */ - protected $entityManager; + protected EntityManagerInterface $entityManager; public function __construct(EntityManagerInterface $entityManager) { diff --git a/src/Validator/Mod/SteamWorkshopArma3ModUrl.php b/src/Validator/Mod/SteamWorkshopArma3ModUrl.php index 6744e866..24a791e3 100644 --- a/src/Validator/Mod/SteamWorkshopArma3ModUrl.php +++ b/src/Validator/Mod/SteamWorkshopArma3ModUrl.php @@ -11,14 +11,9 @@ */ class SteamWorkshopArma3ModUrl extends Constraint { - /** @var string */ - public $invalidModUrlMessage = 'Invalid Steam Workshop mod URL'; - - /** @var string */ - public $modNotFoundMessage = 'Mod not found'; - - /** @var string */ - public $notAnArma3ModMessage = 'Mod is not an Arma 3 mod'; + public string $invalidModUrlMessage = 'Invalid Steam Workshop mod URL'; + public string $modNotFoundMessage = 'Mod not found'; + public string $notAnArma3ModMessage = 'Mod is not an Arma 3 mod'; /** * @return string[] diff --git a/src/Validator/Mod/SteamWorkshopArma3ModUrlValidator.php b/src/Validator/Mod/SteamWorkshopArma3ModUrlValidator.php index b1689674..173cb812 100644 --- a/src/Validator/Mod/SteamWorkshopArma3ModUrlValidator.php +++ b/src/Validator/Mod/SteamWorkshopArma3ModUrlValidator.php @@ -17,8 +17,7 @@ class SteamWorkshopArma3ModUrlValidator extends ConstraintValidator { protected const ARMA_3_GAME_ID = 107410; - /** @var SteamWorkshopClient */ - protected $steamWorkshopClient; + protected SteamWorkshopClient $steamWorkshopClient; public function __construct(SteamWorkshopClient $steamWorkshopClient) { diff --git a/src/Validator/Mod/UniqueDirectoryMod.php b/src/Validator/Mod/UniqueDirectoryMod.php index 2ad1137d..0558fc11 100644 --- a/src/Validator/Mod/UniqueDirectoryMod.php +++ b/src/Validator/Mod/UniqueDirectoryMod.php @@ -11,11 +11,8 @@ */ class UniqueDirectoryMod extends Constraint { - /** @var string */ - public $message = 'Mod associated with directory "{{ directoryName }}" already exist'; - - /** @var null|string */ - public $errorPath; + public string $message = 'Mod associated with directory "{{ directoryName }}" already exist'; + public ?string $errorPath; public function getTargets() { diff --git a/src/Validator/Mod/UniqueSteamWorkshopMod.php b/src/Validator/Mod/UniqueSteamWorkshopMod.php index 24690e57..8f072054 100644 --- a/src/Validator/Mod/UniqueSteamWorkshopMod.php +++ b/src/Validator/Mod/UniqueSteamWorkshopMod.php @@ -11,11 +11,8 @@ */ class UniqueSteamWorkshopMod extends Constraint { - /** @var string */ - public $message = 'Mod associated with url "{{ modUrl }}" already exist'; - - /** @var null|string */ - public $errorPath; + public string $message = 'Mod associated with url "{{ modUrl }}" already exist'; + public ?string $errorPath; public function getTargets() { diff --git a/src/Validator/ModGroup/UniqueModGroupName.php b/src/Validator/ModGroup/UniqueModGroupName.php index 9344fa93..80fec7ec 100644 --- a/src/Validator/ModGroup/UniqueModGroupName.php +++ b/src/Validator/ModGroup/UniqueModGroupName.php @@ -11,11 +11,8 @@ */ class UniqueModGroupName extends Constraint { - /** @var string */ - public $message = 'Mod group with the same name "{{ modGroupName }}" already exist'; - - /** @var null|string */ - public $errorPath; + public string $message = 'Mod group with the same name "{{ modGroupName }}" already exist'; + public ?string $errorPath; public function getTargets() { diff --git a/src/Validator/ModList/UniqueModListName.php b/src/Validator/ModList/UniqueModListName.php index fa6d00e0..7c962e24 100644 --- a/src/Validator/ModList/UniqueModListName.php +++ b/src/Validator/ModList/UniqueModListName.php @@ -11,11 +11,8 @@ */ class UniqueModListName extends Constraint { - /** @var string */ - public $message = 'Mod list with the same name "{{ modListName }}" already exist'; - - /** @var null|string */ - public $errorPath; + public string $message = 'Mod list with the same name "{{ modListName }}" already exist'; + public ?string $errorPath = null; public function getTargets() { diff --git a/src/Validator/UserGroup/UniqueUserGroupName.php b/src/Validator/UserGroup/UniqueUserGroupName.php index 5e26e937..14c4d6dd 100644 --- a/src/Validator/UserGroup/UniqueUserGroupName.php +++ b/src/Validator/UserGroup/UniqueUserGroupName.php @@ -11,11 +11,8 @@ */ class UniqueUserGroupName extends Constraint { - /** @var string */ - public $message = 'User group with the same name "{{ userGroupName }}" already exist'; - - /** @var null|string */ - public $errorPath; + public string $message = 'User group with the same name "{{ userGroupName }}" already exist'; + public ?string $errorPath = null; public function getTargets() { diff --git a/symfony.lock b/symfony.lock index c4cc296b..c434ee70 100644 --- a/symfony.lock +++ b/symfony.lock @@ -1,6 +1,6 @@ { "api-platform/api-pack": { - "version": "v1.2.2" + "version": "v1.3.0" }, "api-platform/core": { "version": "2.5", @@ -17,10 +17,10 @@ ] }, "brick/math": { - "version": "0.9.1" + "version": "0.9.2" }, "composer/package-versions-deprecated": { - "version": "1.10.99" + "version": "1.11.99.1" }, "dama/doctrine-test-bundle": { "version": "4.0", @@ -53,13 +53,13 @@ "version": "1.6.7" }, "doctrine/common": { - "version": "2.13.3" + "version": "3.1.1" }, "doctrine/data-fixtures": { - "version": "1.4.4" + "version": "1.5.0" }, "doctrine/dbal": { - "version": "2.10.2" + "version": "2.12.1" }, "doctrine/doctrine-bundle": { "version": "2.0", @@ -67,7 +67,7 @@ "repo": "github.com/symfony/recipes", "branch": "master", "version": "2.0", - "ref": "a9f2463b9f73efe74482f831f03a204a41328555" + "ref": "40631978d2c4adc9b11220b13eba539b727c36a8" }, "files": [ "config/packages/doctrine.yaml", @@ -105,31 +105,28 @@ "version": "1.1.1" }, "doctrine/inflector": { - "version": "1.4.3" + "version": "2.0.3" }, "doctrine/instantiator": { - "version": "1.3.1" + "version": "1.4.0" }, "doctrine/lexer": { "version": "1.2.1" }, "doctrine/migrations": { - "version": "2.2.1" + "version": "3.1.0" }, "doctrine/orm": { - "version": "v2.7.3" + "version": "2.8.2" }, "doctrine/persistence": { - "version": "1.3.8" - }, - "doctrine/reflection": { - "version": "1.2.1" + "version": "2.1.0" }, "doctrine/sql-formatter": { "version": "1.1.1" }, "egulias/email-validator": { - "version": "2.1.19" + "version": "2.1.25" }, "elao/enum": { "version": "1.7", @@ -147,7 +144,10 @@ "version": "1.7.4" }, "fig/link-util": { - "version": "1.1.1" + "version": "1.1.2" + }, + "friendsofphp/proxy-manager-lts": { + "version": "v1.0.3" }, "friendsofsymfony/jsrouting-bundle": { "version": "2.3", @@ -171,10 +171,10 @@ "version": "1.1.3" }, "guzzlehttp/promises": { - "version": "v1.3.1" + "version": "1.4.0" }, "guzzlehttp/psr7": { - "version": "1.6.1" + "version": "1.7.0" }, "knpuniversity/oauth2-client-bundle": { "version": "1.20", @@ -189,22 +189,22 @@ ] }, "laminas/laminas-code": { - "version": "3.4.1" + "version": "4.0.0" }, "laminas/laminas-eventmanager": { - "version": "3.2.1" + "version": "3.3.0" }, "laminas/laminas-zendframework-bridge": { - "version": "1.0.4" + "version": "1.1.1" }, "league/csv": { - "version": "9.6.0" + "version": "9.6.2" }, "league/oauth2-client": { - "version": "2.5.0" + "version": "2.6.0" }, "monolog/monolog": { - "version": "1.25.5" + "version": "2.2.0" }, "nelmio/cors-bundle": { "version": "1.5", @@ -212,7 +212,7 @@ "repo": "github.com/symfony/recipes", "branch": "master", "version": "1.5", - "ref": "6388de23860284db9acce0a7a5d9d13153bcb571" + "ref": "6bea22e6c564fba3a1391615cada1437d0bde39c" }, "files": [ "config/packages/nelmio_cors.yaml" @@ -222,11 +222,14 @@ "version": "v1.6.0" }, "nikic/php-parser": { - "version": "v4.8.0" + "version": "v4.10.4" }, "ocramius/proxy-manager": { "version": "2.8.0" }, + "paragonie/random_compat": { + "version": "v9.99.100" + }, "php": { "version": "7.4" }, @@ -234,10 +237,10 @@ "version": "2.2.0" }, "phpdocumentor/reflection-docblock": { - "version": "5.2.0" + "version": "5.2.2" }, "phpdocumentor/type-resolver": { - "version": "1.3.0" + "version": "1.4.0" }, "psr/cache": { "version": "1.0.1" @@ -245,6 +248,9 @@ "psr/container": { "version": "1.0.0" }, + "psr/event-dispatcher": { + "version": "1.0.0" + }, "psr/http-message": { "version": "1.0.1" }, @@ -258,10 +264,10 @@ "version": "3.0.3" }, "ramsey/collection": { - "version": "1.1.1" + "version": "1.1.3" }, "ramsey/uuid": { - "version": "3.9.3" + "version": "4.1.1" }, "ramsey/uuid-doctrine": { "version": "1.3", @@ -276,7 +282,7 @@ ] }, "restcord/restcord": { - "version": "0.3.2" + "version": "0.5.0" }, "roave/security-advisories": { "version": "dev-master" @@ -294,41 +300,37 @@ ] }, "spatie/calendar-links": { - "version": "1.4.0" + "version": "1.4.2" }, "symfony/asset": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/browser-kit": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/cache": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/cache-contracts": { - "version": "v2.1.3" + "version": "v2.2.0" }, "symfony/config": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/console": { - "version": "4.4", + "version": "5.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "master", - "version": "4.4", - "ref": "ea8c0eda34fda57e7d5cd8cbd889e2a387e3472c" + "version": "5.1", + "ref": "c6d02bdfba9da13c22157520e32a602dbee8a75c" }, "files": [ - "bin/console", - "config/bootstrap.php" + "bin/console" ] }, "symfony/css-selector": { - "version": "v4.4.11" - }, - "symfony/debug": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/debug-bundle": { "version": "4.1", @@ -343,34 +345,37 @@ ] }, "symfony/dependency-injection": { - "version": "v4.4.11" + "version": "v5.2.3" + }, + "symfony/deprecation-contracts": { + "version": "v2.2.0" }, "symfony/doctrine-bridge": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/dom-crawler": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/dotenv": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/error-handler": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/event-dispatcher": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/event-dispatcher-contracts": { - "version": "v1.1.9" + "version": "v2.2.0" }, "symfony/expression-language": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/filesystem": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/finder": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/flex": { "version": "1.0", @@ -385,21 +390,21 @@ ] }, "symfony/form": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/framework-bundle": { - "version": "4.4", + "version": "5.2", "recipe": { "repo": "github.com/symfony/recipes", "branch": "master", - "version": "4.4", - "ref": "af2e2efad553bc959a0c61d9185e33ca9eec5c99" + "version": "5.2", + "ref": "6ec87563dcc85cd0c48856dcfbfc29610506d250" }, "files": [ - "config/bootstrap.php", "config/packages/cache.yaml", "config/packages/framework.yaml", "config/packages/test/framework.yaml", + "config/preload.php", "config/routes/dev/framework.yaml", "config/services.yaml", "public/index.php", @@ -408,22 +413,19 @@ ] }, "symfony/http-client": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/http-client-contracts": { - "version": "v2.1.3" + "version": "v2.3.1" }, "symfony/http-foundation": { - "version": "v5.0.7" + "version": "v5.2.3" }, "symfony/http-kernel": { - "version": "v4.4.11" - }, - "symfony/inflector": { - "version": "v5.0.7" + "version": "v5.2.3" }, "symfony/intl": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/mailer": { "version": "4.3", @@ -447,10 +449,10 @@ } }, "symfony/mime": { - "version": "v5.0.7" + "version": "v5.2.3" }, "symfony/monolog-bridge": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/monolog-bundle": { "version": "3.3", @@ -467,16 +469,31 @@ "config/packages/test/monolog.yaml" ] }, + "symfony/notifier": { + "version": "5.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "5.0", + "ref": "c31585e252b32fe0e1f30b1f256af553f4a06eb9" + }, + "files": [ + "config/packages/notifier.yaml" + ] + }, "symfony/options-resolver": { - "version": "v4.4.11" + "version": "v5.2.3" + }, + "symfony/orm-pack": { + "version": "v2.1.0" }, "symfony/phpunit-bridge": { - "version": "4.3", + "version": "5.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "master", - "version": "4.3", - "ref": "6d0e35f749d5f4bfe1f011762875275cd3f9874f" + "version": "5.1", + "ref": "bf16921ef8309a81d9f046e9b6369c46bcbd031f" }, "files": [ ".env.test", @@ -486,45 +503,45 @@ ] }, "symfony/polyfill-intl-grapheme": { - "version": "v1.18.1" + "version": "v1.22.1" }, "symfony/polyfill-intl-icu": { - "version": "v1.18.1" + "version": "v1.22.1" }, "symfony/polyfill-intl-idn": { - "version": "v1.18.1" + "version": "v1.22.1" }, "symfony/polyfill-intl-normalizer": { - "version": "v1.18.1" + "version": "v1.22.1" }, "symfony/polyfill-mbstring": { - "version": "v1.18.1" - }, - "symfony/polyfill-php72": { - "version": "v1.18.1" + "version": "v1.22.1" }, "symfony/polyfill-php73": { - "version": "v1.18.1" + "version": "v1.22.1" }, "symfony/polyfill-php80": { - "version": "v1.18.1" + "version": "v1.22.1" }, "symfony/process": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/property-access": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/property-info": { - "version": "v4.4.11" + "version": "v5.2.3" + }, + "symfony/proxy-manager-bridge": { + "version": "v5.2.3" }, "symfony/routing": { - "version": "4.2", + "version": "5.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "master", - "version": "4.2", - "ref": "683dcb08707ba8d41b7e34adb0344bfd68d248a7" + "version": "5.1", + "ref": "b4f3e7c95e38b606eef467e8a42a8408fc460c43" }, "files": [ "config/packages/prod/routing.yaml", @@ -533,40 +550,43 @@ ] }, "symfony/security-bundle": { - "version": "4.4", + "version": "5.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "master", - "version": "4.4", - "ref": "7b4408dc203049666fe23fabed23cbadc6d8440f" + "version": "5.1", + "ref": "0a4bae19389d3b9cba1ca0102e3b2bccea724603" }, "files": [ "config/packages/security.yaml" ] }, "symfony/security-core": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/security-csrf": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/security-guard": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/security-http": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/serializer": { - "version": "v4.4.11" + "version": "v5.2.3" + }, + "symfony/serializer-pack": { + "version": "v1.0.4" }, "symfony/service-contracts": { - "version": "v2.1.3" + "version": "v2.2.0" }, "symfony/stopwatch": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/string": { - "version": "v5.1.3" + "version": "v5.2.3" }, "symfony/translation": { "version": "3.3", @@ -582,18 +602,18 @@ ] }, "symfony/translation-contracts": { - "version": "v2.1.3" + "version": "v2.3.0" }, "symfony/twig-bridge": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/twig-bundle": { - "version": "4.4", + "version": "5.0", "recipe": { "repo": "github.com/symfony/recipes", "branch": "master", - "version": "4.4", - "ref": "15a41bbd66a1323d09824a189b485c126bbefa51" + "version": "5.0", + "ref": "fab9149bbaa4d5eca054ed93f9e1b66cc500895d" }, "files": [ "config/packages/test/twig.yaml", @@ -615,13 +635,13 @@ ] }, "symfony/var-dumper": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/var-exporter": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/web-link": { - "version": "v4.4.11" + "version": "v5.2.3" }, "symfony/web-profiler-bundle": { "version": "3.3", @@ -638,16 +658,19 @@ ] }, "symfony/webpack-encore-bundle": { - "version": "1.6", + "version": "1.9", "recipe": { "repo": "github.com/symfony/recipes", "branch": "master", - "version": "1.6", - "ref": "69e1d805ad95964088bd510c05995e87dc391564" + "version": "1.9", + "ref": "34a82422147bc632dec0db2676bf27aaaa582ba0" }, "files": [ - "assets/css/app.css", - "assets/js/app.js", + "assets/app.js", + "assets/bootstrap.js", + "assets/controllers.json", + "assets/controllers/hello_controller.js", + "assets/styles/app.css", "config/packages/assets.yaml", "config/packages/prod/webpack_encore.yaml", "config/packages/test/webpack_encore.yaml", @@ -657,25 +680,22 @@ ] }, "symfony/yaml": { - "version": "v4.4.11" + "version": "v5.2.3" }, "twig/extra-bundle": { - "version": "v3.0.5" + "version": "v3.3.0" }, "twig/intl-extra": { - "version": "v3.0.5" + "version": "v3.3.0" }, "twig/markdown-extra": { - "version": "v3.0.5" + "version": "v3.3.0" }, "twig/string-extra": { - "version": "v3.0.5" + "version": "v3.3.0" }, "twig/twig": { - "version": "v3.0.5" - }, - "webimpress/safe-writer": { - "version": "2.0.1" + "version": "v3.3.0" }, "webmozart/assert": { "version": "1.9.1" @@ -684,9 +704,9 @@ "version": "v1.1.0" }, "willdurand/negotiation": { - "version": "v2.3.1" + "version": "3.0.0" }, "wohali/oauth2-discord-new": { - "version": "v1.0.0" + "version": "1.1.0" } } diff --git a/templates/_partial/navbar/_navbar_icons.html.twig b/templates/_partial/navbar/_navbar_icons.html.twig index 8cdffeef..02e2a9f4 100644 --- a/templates/_partial/navbar/_navbar_icons.html.twig +++ b/templates/_partial/navbar/_navbar_icons.html.twig @@ -17,20 +17,15 @@ - + {% else %} + + + {% endif %} diff --git a/templates/_partial/navbar/_navbar_links.html.twig b/templates/_partial/navbar/_navbar_links.html.twig index 8006910b..4e9fa6ef 100644 --- a/templates/_partial/navbar/_navbar_links.html.twig +++ b/templates/_partial/navbar/_navbar_links.html.twig @@ -13,7 +13,7 @@ is_granted(constant('App\\Security\\Enum\\PermissionsEnum::MOD_LIST')) or is_granted(constant('App\\Security\\Enum\\PermissionsEnum::MOD_GROUP_LIST')) or is_granted(constant('App\\Security\\Enum\\PermissionsEnum::MOD_LIST_LIST')) - -%} + %}
  • diff --git a/templates/home/missions/missions.html.twig b/templates/home/missions/missions.html.twig index 9dea40b8..f0a5e684 100644 --- a/templates/home/missions/missions.html.twig +++ b/templates/home/missions/missions.html.twig @@ -11,11 +11,13 @@ {% block content %}
    -
    - {% if upcomingMissions is null or archivedMissions is null %} + {% if upcomingMissions is null or archivedMissions is null %} +

    {{ 'Something went wrong while fetching missions list...'|trans }}

    {{ 'Try again later'|trans }}

    - {% else %} +
    + {% else %} +

    {{ 'Upcoming missions'|trans }}

    @@ -54,8 +56,8 @@
    {% endfor %} - {% endif %} - + + {% endif %} {% endblock %} diff --git a/tests/functional/Api/Controller/ModList/GetModListByNameActionTest.php b/tests/functional/Api/Controller/ModList/GetModListByNameActionTest.php index 59f79c0a..b2ca8c09 100644 --- a/tests/functional/Api/Controller/ModList/GetModListByNameActionTest.php +++ b/tests/functional/Api/Controller/ModList/GetModListByNameActionTest.php @@ -52,46 +52,57 @@ public function getModListByNameAction_authorizedUser_returnsSuccessfulResponse( [ 'id' => '7e11c37e-930e-49e8-a87d-8f942d98edb0', 'name' => '[legacy] ArmaForces - Mods', + 'createdAt' => '2020-01-01T00:00:00+01:00', + 'lastUpdatedAt' => null, 'source' => 'steam_workshop', 'status' => 'deprecated', 'type' => 'required', 'itemId' => 1639399387, 'directory' => null, - 'createdAt' => '2020-01-01T00:00:00+01:00', - 'lastUpdatedAt' => null, ], [ 'id' => 'b8e88103-69d2-438b-8d89-933ccfdb3a5a', 'name' => '[OBSOLETE] ArmaForces - JBAD Building Fix', + 'createdAt' => '2020-01-01T00:00:00+01:00', + 'lastUpdatedAt' => null, 'source' => 'steam_workshop', 'status' => 'disabled', 'type' => 'required', 'itemId' => 1781106281, 'directory' => null, + ], + [ + 'id' => '37f58e30-5194-4594-89af-4a82c7fc02be', + 'name' => 'ACE Interaction Menu Expansion', 'createdAt' => '2020-01-01T00:00:00+01:00', 'lastUpdatedAt' => null, + 'source' => 'steam_workshop', + 'status' => null, + 'type' => 'optional', + 'itemId' => 1376867375, + 'directory' => null, ], [ 'id' => '2f1d2dea-a7a6-4509-b478-66a980d724ca', 'name' => 'ArmaForces - ACE Medical [OBSOLETE]', + 'createdAt' => '2020-01-01T00:00:00+01:00', + 'lastUpdatedAt' => null, 'source' => 'steam_workshop', 'status' => 'broken', 'type' => 'required', 'itemId' => 1704054308, 'directory' => null, - 'createdAt' => '2020-01-01T00:00:00+01:00', - 'lastUpdatedAt' => null, ], [ 'id' => '0e4e059c-eef6-42a9-aec3-abdab344ec21', 'name' => 'ArmaForces - Mods', + 'createdAt' => '2020-01-01T00:00:00+01:00', + 'lastUpdatedAt' => null, 'source' => 'steam_workshop', 'status' => null, 'type' => 'required', 'itemId' => 1934142795, 'directory' => null, - 'createdAt' => '2020-01-01T00:00:00+01:00', - 'lastUpdatedAt' => null, ], ], ]); diff --git a/tests/functional/Api/Controller/ModList/GetModListsByIdActionTest.php b/tests/functional/Api/Controller/ModList/GetModListsByIdActionTest.php index 3e825ae7..8e20c1c4 100644 --- a/tests/functional/Api/Controller/ModList/GetModListsByIdActionTest.php +++ b/tests/functional/Api/Controller/ModList/GetModListsByIdActionTest.php @@ -52,46 +52,57 @@ public function getModListByNameAction_authorizedUser_returnsSuccessfulResponse( [ 'id' => '7e11c37e-930e-49e8-a87d-8f942d98edb0', 'name' => '[legacy] ArmaForces - Mods', + 'createdAt' => '2020-01-01T00:00:00+01:00', + 'lastUpdatedAt' => null, 'source' => 'steam_workshop', 'status' => 'deprecated', 'type' => 'required', 'itemId' => 1639399387, 'directory' => null, - 'createdAt' => '2020-01-01T00:00:00+01:00', - 'lastUpdatedAt' => null, ], [ 'id' => 'b8e88103-69d2-438b-8d89-933ccfdb3a5a', 'name' => '[OBSOLETE] ArmaForces - JBAD Building Fix', + 'createdAt' => '2020-01-01T00:00:00+01:00', + 'lastUpdatedAt' => null, 'source' => 'steam_workshop', 'status' => 'disabled', 'type' => 'required', 'itemId' => 1781106281, 'directory' => null, + ], + [ + 'id' => '37f58e30-5194-4594-89af-4a82c7fc02be', + 'name' => 'ACE Interaction Menu Expansion', 'createdAt' => '2020-01-01T00:00:00+01:00', 'lastUpdatedAt' => null, + 'source' => 'steam_workshop', + 'status' => null, + 'type' => 'optional', + 'itemId' => 1376867375, + 'directory' => null, ], [ 'id' => '2f1d2dea-a7a6-4509-b478-66a980d724ca', 'name' => 'ArmaForces - ACE Medical [OBSOLETE]', + 'createdAt' => '2020-01-01T00:00:00+01:00', + 'lastUpdatedAt' => null, 'source' => 'steam_workshop', 'status' => 'broken', 'type' => 'required', 'itemId' => 1704054308, 'directory' => null, - 'createdAt' => '2020-01-01T00:00:00+01:00', - 'lastUpdatedAt' => null, ], [ 'id' => '0e4e059c-eef6-42a9-aec3-abdab344ec21', 'name' => 'ArmaForces - Mods', + 'createdAt' => '2020-01-01T00:00:00+01:00', + 'lastUpdatedAt' => null, 'source' => 'steam_workshop', 'status' => null, 'type' => 'required', 'itemId' => 1934142795, 'directory' => null, - 'createdAt' => '2020-01-01T00:00:00+01:00', - 'lastUpdatedAt' => null, ], ], ]); diff --git a/tests/functional/Controller/ModListPublicController/DownloadActionTest.php b/tests/functional/Controller/ModListPublicController/DownloadActionTest.php new file mode 100644 index 00000000..9d9a0943 --- /dev/null +++ b/tests/functional/Controller/ModListPublicController/DownloadActionTest.php @@ -0,0 +1,128 @@ +request(Request::METHOD_GET, $this->createModListDownloadUrl($subjectModList->getName(), [ + $optionalMod->getId()->toString() => true, + ])); + + $this::assertResponseStatusCodeSame(Response::HTTP_OK); + $this::assertResponseContainsModListAttachmentHeader($client->getResponse(), $subjectModList); + $this::assertLauncherPresetContainsMods($crawler, [ + $this::getEntityById(SteamWorkshopMod::class, Required\Deprecated\LegacyArmaForcesModsModFixture::ID), + $this::getEntityById(SteamWorkshopMod::class, Optional\AceInteractionMenuExpansionModFixture::ID), + $this::getEntityById(SteamWorkshopMod::class, Required\Broken\ArmaForcesAceMedicalModFixture::ID), + $this::getEntityById(SteamWorkshopMod::class, Required\ArmaForcesModsModFixture::ID), + ]); + } + + /** + * @test + * @dataProvider allUserTypesDataProvider + */ + public function downloadAction_requiredMods_returnsFileResponse(string $userId): void + { + /** @var User $user */ + $user = $this::getEntityById(User::class, $userId); + + /** @var ModList $subjectModList */ + $subjectModList = $this::getEntityById(ModList::class, DefaultModListFixture::ID); + + $client = $this::authenticateClient($user); + $crawler = $client->request(Request::METHOD_GET, sprintf(RouteEnum::MOD_LIST_PUBLIC_DOWNLOAD, $subjectModList->getName())); + + $this::assertResponseStatusCodeSame(Response::HTTP_OK); + $this::assertResponseContainsModListAttachmentHeader($client->getResponse(), $subjectModList); + $this::assertLauncherPresetContainsMods($crawler, [ + $this::getEntityById(SteamWorkshopMod::class, Required\Deprecated\LegacyArmaForcesModsModFixture::ID), + $this::getEntityById(SteamWorkshopMod::class, Required\Broken\ArmaForcesAceMedicalModFixture::ID), + $this::getEntityById(SteamWorkshopMod::class, Required\ArmaForcesModsModFixture::ID), + ]); + } + + /** + * @test + * @dataProvider allUserTypesDataProvider + */ + public function customizeAction_optionalMods_returnsNotFoundResponse(string $userId): void + { + /** @var User $user */ + $user = $this::getEntityById(User::class, $userId); + + /** @var SteamWorkshopMod $optionalMod */ + $optionalMod = $this::getEntityById(SteamWorkshopMod::class, AceInteractionMenuExpansionModFixture::ID); + + $client = $this::authenticateClient($user); + $client->request(Request::METHOD_GET, $this->createModListDownloadUrl('non-existing-name', [ + $optionalMod->getId()->toString() => true, + ])); + + $this::assertResponseStatusCodeSame(Response::HTTP_NOT_FOUND); + } + + /** + * @test + * @dataProvider allUserTypesDataProvider + */ + public function customizeAction_requiredMods_returnsNotFoundResponse(string $userId): void + { + /** @var User $user */ + $user = $this::getEntityById(User::class, $userId); + + $client = $this::authenticateClient($user); + $client->request(Request::METHOD_GET, sprintf(RouteEnum::MOD_LIST_PUBLIC_DOWNLOAD, 'non-existing-name')); + + $this::assertResponseStatusCodeSame(Response::HTTP_NOT_FOUND); + } + + private function createModListDownloadUrl(string $modListId, array $optionalMods = []): string + { + $url = sprintf(RouteEnum::MOD_LIST_PUBLIC_DOWNLOAD, $modListId); + $optionalModsParameter = $optionalMods ? '/'.json_encode($optionalMods) : ''; + + return $url.$optionalModsParameter; + } +}