From 642c176a011c8125ba5e455a66e21ee5f17bdb56 Mon Sep 17 00:00:00 2001 From: Simon Gilli <25326036+gilbertsoft@users.noreply.github.com> Date: Tue, 25 Apr 2023 20:46:16 +0200 Subject: [PATCH 1/2] [TASK] Update packages and recipes --- .env | 5 +- bin/console | 40 +----- composer.json | 130 ++++++++--------- composer.lock | 165 ++++++++++++---------- config/bundles.php | 2 +- config/packages/debug.yaml | 5 + config/packages/dev/debug.yaml | 4 - config/packages/dev/jms_serializer.yaml | 7 - config/packages/dev/monolog.yaml | 19 --- config/packages/doctrine.yaml | 27 ++++ config/packages/doctrine_migrations.yaml | 1 + config/packages/framework.yaml | 1 + config/packages/jms_serializer.yaml | 17 +++ config/packages/monolog.yaml | 61 ++++++++ config/packages/prod/deprecations.yaml | 8 -- config/packages/prod/doctrine.yaml | 20 --- config/packages/prod/jms_serializer.yaml | 6 - config/packages/prod/monolog.yaml | 16 --- config/packages/prod/routing.yaml | 3 - config/packages/routing.yaml | 5 + config/packages/security.yaml | 21 ++- config/packages/test/monolog.yaml | 12 -- config/packages/test/twig.yaml | 2 - config/packages/test/validator.yaml | 3 - config/packages/translation.yaml | 7 + config/packages/twig.yaml | 4 + config/packages/validator.yaml | 5 + config/packages/web_profiler.yaml | 4 +- config/routes.yaml | 8 +- config/routes/annotations.yaml | 7 - config/routes/dev/framework.yaml | 3 - config/routes/framework.yaml | 4 + config/services.yaml | 9 +- public/index.php | 30 +--- src/Repository/MajorVersionRepository.php | 8 +- symfony.lock | 156 ++++++++++---------- 36 files changed, 409 insertions(+), 416 deletions(-) create mode 100644 config/packages/debug.yaml delete mode 100644 config/packages/dev/debug.yaml delete mode 100644 config/packages/dev/jms_serializer.yaml delete mode 100644 config/packages/dev/monolog.yaml create mode 100644 config/packages/monolog.yaml delete mode 100644 config/packages/prod/deprecations.yaml delete mode 100644 config/packages/prod/doctrine.yaml delete mode 100644 config/packages/prod/jms_serializer.yaml delete mode 100644 config/packages/prod/monolog.yaml delete mode 100644 config/packages/prod/routing.yaml delete mode 100644 config/packages/test/monolog.yaml delete mode 100644 config/packages/test/twig.yaml delete mode 100644 config/packages/test/validator.yaml delete mode 100644 config/routes/annotations.yaml delete mode 100644 config/routes/dev/framework.yaml create mode 100644 config/routes/framework.yaml diff --git a/.env b/.env index 34d06bcb..f97f9ff8 100644 --- a/.env +++ b/.env @@ -9,6 +9,7 @@ # Real environment variables win over .env files. # # DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES. +# https://symfony.com/doc/current/configuration/secrets.html # # Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2). # https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration @@ -16,8 +17,6 @@ ###> symfony/framework-bundle ### APP_ENV=dev APP_SECRET=1a7aae67ad2d7c7ec1efeb892cbff4ff -#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 ### ###> doctrine/doctrine-bundle ### @@ -34,7 +33,7 @@ CORS_ALLOW_ORIGIN=^https?://(get\.typo3\.org)(:[0-9]+)?$ ###< nelmio/cors-bundle ### ###> symfony/mailer ### -# MAILER_DSN=smtp://localhost +# MAILER_DSN=null://null ###< symfony/mailer ### # todo: reduce to APP_DOMAIN diff --git a/bin/console b/bin/console index 8fe9d494..c933dc53 100755 --- a/bin/console +++ b/bin/console @@ -3,41 +3,15 @@ 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)) { - echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.PHP_SAPI.' SAPI'.PHP_EOL; +if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) { + throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".'); } -set_time_limit(0); +require_once dirname(__DIR__).'/vendor/autoload_runtime.php'; -require dirname(__DIR__).'/vendor/autoload.php'; +return function (array $context) { + $kernel = new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); -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(); -if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) { - putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env); -} - -if ($input->hasParameterOption('--no-debug', true)) { - putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0'); -} - -(new Dotenv())->bootEnv(dirname(__DIR__).'/.env'); - -if ($_SERVER['APP_DEBUG']) { - umask(0000); - - if (class_exists(Debug::class)) { - Debug::enable(); - } -} - -$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']); -$application = new Application($kernel); -$application->run($input); + return new Application($kernel); +}; diff --git a/composer.json b/composer.json index 1bfdd2ed..7aa7b19a 100644 --- a/composer.json +++ b/composer.json @@ -36,76 +36,76 @@ "ext-json": "*", "ext-sqlite3": "*", "ext-zlib": "*", - "composer/semver": "^3.3", - "doctrine/collections": "^1.6", - "doctrine/dbal": "^3.3", - "doctrine/doctrine-bundle": "^2.7", - "doctrine/doctrine-migrations-bundle": "^3.2", - "doctrine/inflector": "^2.0", - "doctrine/orm": "^2.12", - "doctrine/persistence": "^2.5", - "easycorp/easyadmin-bundle": "^4.3", - "erusev/parsedown": "^1.7", - "guzzlehttp/guzzle": "^7.4", - "guzzlehttp/promises": "^1.5", - "jms/serializer": "^3.17", - "jms/serializer-bundle": "^4.0.2", + "composer/semver": "^3.3.2", + "doctrine/collections": "^2.1.2", + "doctrine/dbal": "^3.6.2", + "doctrine/doctrine-bundle": "^2.9.1", + "doctrine/doctrine-migrations-bundle": "^3.2.2", + "doctrine/inflector": "^2.0.6", + "doctrine/orm": "^2.14.3", + "doctrine/persistence": "^3.1.4", + "easycorp/easyadmin-bundle": "^4.6.1", + "erusev/parsedown": "^1.7.4", + "guzzlehttp/guzzle": "^7.5.1", + "guzzlehttp/promises": "^1.5.2", + "jms/serializer": "^3.23", + "jms/serializer-bundle": "^4.2.0", "knplabs/knp-menu": "^3.3", - "nelmio/api-doc-bundle": "^4.9", - "nelmio/cors-bundle": "^2.2", - "nelmio/security-bundle": "^2.5", - "psr/log": "^2.0", - "symfony/asset": "^6.2", - "symfony/cache": "^6.2", - "symfony/cache-contracts": "^2.5", - "symfony/console": "^6.2", - "symfony/dependency-injection": "^6.2", - "symfony/dotenv": "^6.2", - "symfony/expression-language": "^6.2", - "symfony/flex": "^2.2", - "symfony/form": "^6.2", - "symfony/framework-bundle": "^6.2", - "symfony/http-client": "^6.2", - "symfony/http-foundation": "^6.2", - "symfony/http-kernel": "^6.2", - "symfony/intl": "^6.2", - "symfony/mailer": "^6.2", - "symfony/mime": "^6.2", - "symfony/monolog-bundle": "^3.1", - "symfony/notifier": "^6.2", - "symfony/process": "^6.2", - "symfony/property-access": "^6.2", - "symfony/property-info": "^6.2", - "symfony/proxy-manager-bridge": "^6.2", - "symfony/routing": "^6.2", - "symfony/runtime": "^6.2", - "symfony/security-bundle": "^6.2", - "symfony/security-http": "^6.2", - "symfony/serializer": "^6.2", - "symfony/translation": "^6.2", - "symfony/twig-bundle": "^6.2", - "symfony/validator": "^6.2", - "symfony/web-link": "^6.2", - "symfony/yaml": "^6.2", - "t3g/symfony-template-bundle": "^3.4", + "nelmio/api-doc-bundle": "^4.11.1", + "nelmio/cors-bundle": "^2.3.1", + "nelmio/security-bundle": "^3", + "psr/log": "^3", + "symfony/asset": "^6.2.7", + "symfony/cache": "^6.2.8", + "symfony/cache-contracts": "^3.2.1", + "symfony/console": "^6.2.8", + "symfony/dependency-injection": "^6.2.8", + "symfony/dotenv": "^6.2.8", + "symfony/expression-language": "^6.2.7", + "symfony/flex": "^2.2.5", + "symfony/form": "^6.2.8", + "symfony/framework-bundle": "^6.2.9", + "symfony/http-client": "^6.2.9", + "symfony/http-foundation": "^6.2.8", + "symfony/http-kernel": "^6.2.9", + "symfony/intl": "^6.2.9", + "symfony/mailer": "^6.2.8", + "symfony/mime": "^6.2.7", + "symfony/monolog-bundle": "^3.8", + "symfony/notifier": "^6.2.8", + "symfony/process": "^6.2.8", + "symfony/property-access": "^6.2.8", + "symfony/property-info": "^6.2.8", + "symfony/proxy-manager-bridge": "^6.2.7", + "symfony/routing": "^6.2.8", + "symfony/runtime": "^6.2.8", + "symfony/security-bundle": "^6.2.8", + "symfony/security-http": "^6.2.8", + "symfony/serializer": "^6.2.8", + "symfony/translation": "^6.2.8", + "symfony/twig-bundle": "^6.2.7", + "symfony/validator": "^6.2.8", + "symfony/web-link": "^6.2.7", + "symfony/yaml": "^6.2.7", + "t3g/symfony-template-bundle": "^3.5", "t3g/symfony-usercentrics-bundle": "^1.0.2 || dev-master", - "twig/extra-bundle": "^2.12 || ^3.0", - "twig/twig": "^2.12 || ^3.0" + "twig/extra-bundle": "^3.5.1", + "twig/twig": "^3.5.1" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8", - "doctrine/doctrine-fixtures-bundle": "^3.4", - "ergebnis/composer-normalize": "^2.28", - "fakerphp/faker": "^1.20", + "bamarni/composer-bin-plugin": "^1.8.2", + "doctrine/doctrine-fixtures-bundle": "^3.4.3", + "ergebnis/composer-normalize": "^2.30.2", + "fakerphp/faker": "^1.21", "roave/security-advisories": "dev-latest", - "symfony/browser-kit": "^6.2", - "symfony/css-selector": "^6.2", - "symfony/debug-bundle": "^6.2", - "symfony/maker-bundle": "^1.45", - "symfony/panther": "^2.0", - "symfony/stopwatch": "^6.2", - "symfony/var-dumper": "^6.2", - "symfony/web-profiler-bundle": "^6.2" + "symfony/browser-kit": "^6.2.7", + "symfony/css-selector": "^6.2.7", + "symfony/debug-bundle": "^6.2.7", + "symfony/maker-bundle": "^1.48", + "symfony/panther": "^2.0.1", + "symfony/stopwatch": "^6.2.7", + "symfony/var-dumper": "^6.2.8", + "symfony/web-profiler-bundle": "^6.2.7" }, "replace": { "paragonie/random_compat": "2.*", diff --git a/composer.lock b/composer.lock index 0ee4eacc..7fd4000b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "8e1b5f08cabf42768a73e907373eb415", + "content-hash": "1bb7be7279c79f5afedc74a8d905d566", "packages": [ { "name": "composer/ca-bundle", @@ -334,32 +334,34 @@ }, { "name": "doctrine/collections", - "version": "1.8.0", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e" + "reference": "db8cda536a034337f7dd63febecc713d4957f9ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e", - "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e", + "url": "https://api.github.com/repos/doctrine/collections/zipball/db8cda536a034337f7dd63febecc713d4957f9ee", + "reference": "db8cda536a034337f7dd63febecc713d4957f9ee", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0 || ^10.0", - "phpstan/phpstan": "^1.4.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", + "doctrine/coding-standard": "^10.0", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5", "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -398,9 +400,23 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.8.0" + "source": "https://github.com/doctrine/collections/tree/2.1.2" }, - "time": "2022-09-01T20:12:10+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", + "type": "tidelift" + } + ], + "time": "2022-12-27T23:41:38+00:00" }, { "name": "doctrine/common", @@ -1384,44 +1400,40 @@ }, { "name": "doctrine/persistence", - "version": "2.5.7", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c" + "reference": "8bf8ab15960787f1a49d405f6eb8c787b4841119" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/e36f22765f4d10a7748228babbf73da5edfeed3c", - "reference": "e36f22765f4d10a7748228babbf73da5edfeed3c", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/8bf8ab15960787f1a49d405f6eb8c787b4841119", + "reference": "8bf8ab15960787f1a49d405f6eb8c787b4841119", "shasum": "" }, "require": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/collections": "^1.0", - "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1 || ^2", - "php": "^7.1 || ^8.0", + "php": "^7.2 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { - "doctrine/annotations": "<1.0 || >=3.0", "doctrine/common": "<2.10" }, "require-dev": { "composer/package-versions-deprecated": "^1.11", - "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^9 || ^11", + "doctrine/coding-standard": "^11", "doctrine/common": "^3.0", - "phpstan/phpstan": "~1.4.10 || 1.9.4", - "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.5", + "phpstan/phpstan": "1.9.4", + "phpstan/phpstan-phpunit": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "phpunit/phpunit": "^8.5 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0", "vimeo/psalm": "4.30.0 || 5.3.0" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "src/Common", "Doctrine\\Persistence\\": "src/Persistence" } }, @@ -1456,7 +1468,7 @@ } ], "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://doctrine-project.org/projects/persistence.html", + "homepage": "https://www.doctrine-project.org/projects/persistence.html", "keywords": [ "mapper", "object", @@ -1466,7 +1478,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/2.5.7" + "source": "https://github.com/doctrine/persistence/tree/3.1.4" }, "funding": [ { @@ -1482,7 +1494,7 @@ "type": "tidelift" } ], - "time": "2023-02-03T15:51:16+00:00" + "time": "2023-02-03T11:13:07+00:00" }, { "name": "doctrine/sql-formatter", @@ -3039,47 +3051,52 @@ }, { "name": "nelmio/security-bundle", - "version": "v2.12.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioSecurityBundle.git", - "reference": "dc8b8c3ee5c64715486e1e3947f83f4169f4374f" + "reference": "34699d40d81b58b6bd256e34489c799620dff2a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/dc8b8c3ee5c64715486e1e3947f83f4169f4374f", - "reference": "dc8b8c3ee5c64715486e1e3947f83f4169f4374f", + "url": "https://api.github.com/repos/nelmio/NelmioSecurityBundle/zipball/34699d40d81b58b6bd256e34489c799620dff2a4", + "reference": "34699d40d81b58b6bd256e34489c799620dff2a4", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0|~9.99.99", - "php": ">5.4", - "symfony/framework-bundle": "~2.3|~v3.0|~4.0|~5.0|~6.0", - "symfony/security-core": "~2.3|~3.0|~4.0|~5.0|~6.0", - "symfony/security-csrf": "~2.3|~3.0|~4.0|~5.0|~6.0", - "symfony/security-http": "~2.3|~3.0|~4.0|~5.0|~6.0", - "symfony/yaml": "~2.3|~3.0|~4.0|~5.0|~6.0", + "php": "^7.4 || ^8.0", + "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0", + "symfony/http-kernel": "^4.4 || ^5.4 || ^6.0", + "symfony/security-core": "^4.4 || ^5.4 || ^6.0", + "symfony/security-csrf": "^4.4 || ^5.4 || ^6.0", + "symfony/security-http": "^4.4 || ^5.4 || ^6.0", + "symfony/yaml": "^4.4 || ^5.4 || ^6.0", "ua-parser/uap-php": "^3.4.4" }, "require-dev": { - "doctrine/cache": "^1.0", - "psr/cache": "^1.0", - "symfony/phpunit-bridge": "^5.0.5|^6.0", - "twig/twig": "^1.38|^2.10|^3.0" + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.1", + "phpunit/phpunit": "^9.5", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "symfony/browser-kit": "^4.4 || ^5.4 || ^6.0", + "symfony/cache": "^4.4 || ^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.0", + "symfony/twig-bundle": "^4.4 || ^5.4 || ^6.0", + "twig/twig": "^2.10 || ^3.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.11.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Nelmio\\SecurityBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Nelmio\\SecurityBundle\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3101,9 +3118,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioSecurityBundle/issues", - "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v2.12.0" + "source": "https://github.com/nelmio/NelmioSecurityBundle/tree/v3.0.0" }, - "time": "2022-02-23T06:10:58+00:00" + "time": "2022-03-17T07:30:15+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -3688,16 +3705,16 @@ }, { "name": "psr/log", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { @@ -3706,7 +3723,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -3732,9 +3749,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/2.0.0" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2021-07-14T16:41:46+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { "name": "ralouphie/getallheaders", @@ -4022,21 +4039,21 @@ }, { "name": "symfony/cache-contracts", - "version": "v2.5.2", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + "reference": "eeb71f04b6f7f34ca6d15633df82e014528b1632" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/eeb71f04b6f7f34ca6d15633df82e014528b1632", + "reference": "eeb71f04b6f7f34ca6d15633df82e014528b1632", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0|^3.0" + "php": ">=8.1", + "psr/cache": "^3.0" }, "suggest": { "symfony/cache-implementation": "" @@ -4044,7 +4061,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -4081,7 +4098,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/cache-contracts/tree/v3.2.1" }, "funding": [ { @@ -4097,7 +4114,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-03-01T10:32:47+00:00" }, { "name": "symfony/config", @@ -10002,12 +10019,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "d2832e4594571d458e36fb4622220915a3c3a8f4" + "reference": "5eb9b0587e4625150e4892e569bb223714c86256" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/d2832e4594571d458e36fb4622220915a3c3a8f4", - "reference": "d2832e4594571d458e36fb4622220915a3c3a8f4", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/5eb9b0587e4625150e4892e569bb223714c86256", + "reference": "5eb9b0587e4625150e4892e569bb223714c86256", "shasum": "" }, "conflict": { @@ -10343,7 +10360,7 @@ "prestashop/blockwishlist": ">=2,<2.1.1", "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.0.1", + "prestashop/prestashop": "<8.0.4", "prestashop/productcomments": "<5.0.2", "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", @@ -10599,7 +10616,7 @@ "type": "tidelift" } ], - "time": "2023-04-25T13:05:55+00:00" + "time": "2023-04-25T20:04:17+00:00" }, { "name": "symfony/browser-kit", diff --git a/config/bundles.php b/config/bundles.php index ef9a69da..618ffff6 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -18,7 +18,7 @@ Knp\Bundle\PaginatorBundle\KnpPaginatorBundle::class => ['all' => true], T3G\Bundle\TemplateBundle\TemplateBundle::class => ['all' => true], Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true], - Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true], + Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], T3G\Bundle\UsercentricsBundle\UsercentricsBundle::class => ['all' => true], EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle::class => ['all' => true], ]; diff --git a/config/packages/debug.yaml b/config/packages/debug.yaml new file mode 100644 index 00000000..ad874afd --- /dev/null +++ b/config/packages/debug.yaml @@ -0,0 +1,5 @@ +when@dev: + debug: + # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. + # See the "server:dump" command to start a new server. + dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/dev/debug.yaml b/config/packages/dev/debug.yaml deleted file mode 100644 index 26d4e53d..00000000 --- a/config/packages/dev/debug.yaml +++ /dev/null @@ -1,4 +0,0 @@ -debug: - # Forwards VarDumper Data clones to a centralized server allowing to inspect dumps on CLI or in your browser. - # See the "server:dump" command to start a new server. - dump_destination: "tcp://%env(VAR_DUMPER_SERVER)%" diff --git a/config/packages/dev/jms_serializer.yaml b/config/packages/dev/jms_serializer.yaml deleted file mode 100644 index f9460410..00000000 --- a/config/packages/dev/jms_serializer.yaml +++ /dev/null @@ -1,7 +0,0 @@ -jms_serializer: - visitors: - json_serialization: - options: - - JSON_PRETTY_PRINT - - JSON_UNESCAPED_SLASHES - - JSON_PRESERVE_ZERO_FRACTION diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml deleted file mode 100644 index b1998da1..00000000 --- a/config/packages/dev/monolog.yaml +++ /dev/null @@ -1,19 +0,0 @@ -monolog: - handlers: - main: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - channels: ["!event"] - # uncomment to get logging in your browser - # you may have to allow bigger header sizes in your Web server configuration - #firephp: - # type: firephp - # level: info - #chromephp: - # type: chromephp - # level: info - console: - type: console - process_psr_3_messages: false - channels: ["!event", "!doctrine", "!console"] diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index bfc718bb..7ced169b 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -6,6 +6,7 @@ doctrine: charset: utf8mb4 orm: auto_generate_proxy_classes: true + enable_lazy_ghost_objects: true naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware auto_mapping: true mappings: @@ -15,3 +16,29 @@ doctrine: dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App + +when@test: + doctrine: + dbal: + # "TEST_TOKEN" is typically set by ParaTest + dbname_suffix: '_test%env(default::TEST_TOKEN)%' + +when@prod: + doctrine: + orm: + auto_generate_proxy_classes: false + proxy_dir: '%kernel.build_dir%/doctrine/orm/Proxies' + query_cache_driver: + type: pool + pool: doctrine.system_cache_pool + result_cache_driver: + type: pool + pool: doctrine.result_cache_pool + + framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/config/packages/doctrine_migrations.yaml b/config/packages/doctrine_migrations.yaml index 0a2b3cf0..e6d5ce4a 100644 --- a/config/packages/doctrine_migrations.yaml +++ b/config/packages/doctrine_migrations.yaml @@ -6,3 +6,4 @@ doctrine_migrations: storage: table_storage: table_name: 'migration_versions' + enable_profiler: false diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index 7853e9ed..6d85c295 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -3,6 +3,7 @@ framework: secret: '%env(APP_SECRET)%' #csrf_protection: true http_method_override: false + handle_all_throwables: true # Enables session support. Note that the session will ONLY be started if you read or write from it. # Remove or comment this section to explicitly disable session support. diff --git a/config/packages/jms_serializer.yaml b/config/packages/jms_serializer.yaml index b6b9fb32..70d919e5 100644 --- a/config/packages/jms_serializer.yaml +++ b/config/packages/jms_serializer.yaml @@ -14,3 +14,20 @@ jms_serializer: # another-name: # namespace_prefix: "My\\BarBundle" # path: "@MyBarBundle/Resources/config/serializer" + +when@prod: + jms_serializer: + visitors: + json_serialization: + options: + - JSON_UNESCAPED_SLASHES + - JSON_PRESERVE_ZERO_FRACTION + +when@dev: + jms_serializer: + visitors: + json_serialization: + options: + - JSON_PRETTY_PRINT + - JSON_UNESCAPED_SLASHES + - JSON_PRESERVE_ZERO_FRACTION diff --git a/config/packages/monolog.yaml b/config/packages/monolog.yaml new file mode 100644 index 00000000..8c9efa91 --- /dev/null +++ b/config/packages/monolog.yaml @@ -0,0 +1,61 @@ +monolog: + channels: + - deprecation # Deprecations are logged in the dedicated "deprecation" channel when it exists + +when@dev: + monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine", "!console"] + +when@test: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + channels: ["!event"] + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + +when@prod: + monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_http_codes: [404, 405] + buffer_size: 50 # How many messages should be saved? Prevent memory leaks + nested: + type: stream + path: php://stderr + level: debug + formatter: monolog.formatter.json + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] + deprecation: + type: stream + channels: [deprecation] + path: php://stderr diff --git a/config/packages/prod/deprecations.yaml b/config/packages/prod/deprecations.yaml deleted file mode 100644 index 920a0619..00000000 --- a/config/packages/prod/deprecations.yaml +++ /dev/null @@ -1,8 +0,0 @@ -# As of Symfony 5.1, deprecations are logged in the dedicated "deprecation" channel when it exists -#monolog: -# channels: [deprecation] -# handlers: -# deprecation: -# type: stream -# channels: [deprecation] -# path: "%kernel.logs_dir%/%kernel.environment%.deprecations.log" diff --git a/config/packages/prod/doctrine.yaml b/config/packages/prod/doctrine.yaml deleted file mode 100644 index 084f59a0..00000000 --- a/config/packages/prod/doctrine.yaml +++ /dev/null @@ -1,20 +0,0 @@ -doctrine: - orm: - auto_generate_proxy_classes: false - metadata_cache_driver: - type: pool - pool: doctrine.system_cache_pool - query_cache_driver: - type: pool - pool: doctrine.system_cache_pool - result_cache_driver: - type: pool - pool: doctrine.result_cache_pool - -framework: - cache: - pools: - doctrine.result_cache_pool: - adapter: cache.app - doctrine.system_cache_pool: - adapter: cache.system diff --git a/config/packages/prod/jms_serializer.yaml b/config/packages/prod/jms_serializer.yaml deleted file mode 100644 index 89c86c89..00000000 --- a/config/packages/prod/jms_serializer.yaml +++ /dev/null @@ -1,6 +0,0 @@ -jms_serializer: - visitors: - json_serialization: - options: - - JSON_UNESCAPED_SLASHES - - JSON_PRESERVE_ZERO_FRACTION diff --git a/config/packages/prod/monolog.yaml b/config/packages/prod/monolog.yaml deleted file mode 100644 index bfe69c01..00000000 --- a/config/packages/prod/monolog.yaml +++ /dev/null @@ -1,16 +0,0 @@ -monolog: - handlers: - main: - type: fingers_crossed - action_level: error - handler: nested - excluded_http_codes: [404, 405] - buffer_size: 50 # How many messages should be saved? Prevent memory leaks - nested: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug - console: - type: console - process_psr_3_messages: false - channels: ["!event", "!doctrine"] diff --git a/config/packages/prod/routing.yaml b/config/packages/prod/routing.yaml deleted file mode 100644 index b3e6a0af..00000000 --- a/config/packages/prod/routing.yaml +++ /dev/null @@ -1,3 +0,0 @@ -framework: - router: - strict_requirements: null diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml index b45c1cec..4b766ce5 100644 --- a/config/packages/routing.yaml +++ b/config/packages/routing.yaml @@ -5,3 +5,8 @@ framework: # 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 + +when@prod: + framework: + router: + strict_requirements: null diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 789a44eb..ed052e30 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -1,10 +1,8 @@ security: - # https://symfony.com/doc/current/security/experimental_authenticators.html - enable_authenticator_manager: true - # https://symfony.com/doc/current/security.html#c-hashing-passwords + # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords password_hashers: Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' - # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers + # https://symfony.com/doc/current/security.html#loading-the-user-the-user-provider providers: users_in_memory: memory: @@ -32,7 +30,7 @@ security: target: app_login # activate different ways to authenticate - # https://symfony.com/doc/current/security.html#firewalls-authentication + # https://symfony.com/doc/current/security.html#the-firewall # https://symfony.com/doc/current/security/impersonating_user.html # switch_user: true @@ -45,3 +43,16 @@ security: # Special rules for get.typo3.dev - { path: ^/, roles: IS_AUTHENTICATED_ANONYMOUSLY, ips: [127.0.0.1, ::1, 185.17.71.134, 2a04:503:0:1019::134], host: ^get\.typo3\.dev$ } - { path: ^/, roles: IS_AUTHENTICATED_REMEMBERED, host: ^get\.typo3\.dev$ } + +when@test: + security: + password_hashers: + # By default, password hashers are resource intensive and take time. This is + # important to generate secure password hashes. In tests however, secure hashes + # are not important, waste resources and increase test times. The following + # reduces the work factor to the lowest possible values. + Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: + algorithm: auto + cost: 4 # Lowest possible value for bcrypt + time_cost: 3 # Lowest possible value for argon + memory_cost: 10 # Lowest possible value for argon diff --git a/config/packages/test/monolog.yaml b/config/packages/test/monolog.yaml deleted file mode 100644 index fc40641d..00000000 --- a/config/packages/test/monolog.yaml +++ /dev/null @@ -1,12 +0,0 @@ -monolog: - handlers: - main: - type: fingers_crossed - action_level: error - handler: nested - excluded_http_codes: [404, 405] - channels: ["!event"] - nested: - type: stream - path: "%kernel.logs_dir%/%kernel.environment%.log" - level: debug diff --git a/config/packages/test/twig.yaml b/config/packages/test/twig.yaml deleted file mode 100644 index 8c6e0b40..00000000 --- a/config/packages/test/twig.yaml +++ /dev/null @@ -1,2 +0,0 @@ -twig: - strict_variables: true diff --git a/config/packages/test/validator.yaml b/config/packages/test/validator.yaml deleted file mode 100644 index 1e5ab788..00000000 --- a/config/packages/test/validator.yaml +++ /dev/null @@ -1,3 +0,0 @@ -framework: - validation: - not_compromised_password: false diff --git a/config/packages/translation.yaml b/config/packages/translation.yaml index 05a2b3d8..abb76aae 100644 --- a/config/packages/translation.yaml +++ b/config/packages/translation.yaml @@ -4,3 +4,10 @@ framework: default_path: '%kernel.project_dir%/translations' fallbacks: - en +# providers: +# crowdin: +# dsn: '%env(CROWDIN_DSN)%' +# loco: +# dsn: '%env(LOCO_DSN)%' +# lokalise: +# dsn: '%env(LOKALISE_DSN)%' diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml index 8f4c7e42..afaa7365 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -5,3 +5,7 @@ twig: packagist: search: https://packagist.org/explore/?type=typo3-cms-extension submit: https://packagist.org/packages/submit + +when@test: + twig: + strict_variables: true diff --git a/config/packages/validator.yaml b/config/packages/validator.yaml index 350786a1..0201281d 100644 --- a/config/packages/validator.yaml +++ b/config/packages/validator.yaml @@ -6,3 +6,8 @@ framework: # For instance, basic validation constraints will be inferred from Doctrine's metadata. #auto_mapping: # App\Entity\: [] + +when@test: + framework: + validation: + not_compromised_password: false diff --git a/config/packages/web_profiler.yaml b/config/packages/web_profiler.yaml index 17893da1..b9461110 100644 --- a/config/packages/web_profiler.yaml +++ b/config/packages/web_profiler.yaml @@ -4,7 +4,9 @@ when@dev: intercept_redirects: false framework: - profiler: { only_exceptions: false } + profiler: + only_exceptions: false + collect_serializer_data: true when@test: web_profiler: diff --git a/config/routes.yaml b/config/routes.yaml index c3283aa2..41ef8140 100644 --- a/config/routes.yaml +++ b/config/routes.yaml @@ -1,3 +1,5 @@ -#index: -# path: / -# controller: App\Controller\DefaultController::index +controllers: + resource: + path: ../src/Controller/ + namespace: App\Controller + type: attribute diff --git a/config/routes/annotations.yaml b/config/routes/annotations.yaml deleted file mode 100644 index e92efc59..00000000 --- a/config/routes/annotations.yaml +++ /dev/null @@ -1,7 +0,0 @@ -controllers: - resource: ../../src/Controller/ - type: annotation - -kernel: - resource: ../../src/Kernel.php - type: annotation diff --git a/config/routes/dev/framework.yaml b/config/routes/dev/framework.yaml deleted file mode 100644 index bcbbf13d..00000000 --- a/config/routes/dev/framework.yaml +++ /dev/null @@ -1,3 +0,0 @@ -_errors: - resource: '@FrameworkBundle/Resources/config/routing/errors.xml' - prefix: /_error diff --git a/config/routes/framework.yaml b/config/routes/framework.yaml new file mode 100644 index 00000000..0fc74bba --- /dev/null +++ b/config/routes/framework.yaml @@ -0,0 +1,4 @@ +when@dev: + _errors: + resource: '@FrameworkBundle/Resources/config/routing/errors.xml' + prefix: /_error diff --git a/config/services.yaml b/config/services.yaml index cd4c0610..b59088f2 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -2,7 +2,7 @@ # Files in the packages/ subdirectory configure your dependencies. # Put parameters here that don't need to change on each machine where the app is deployed -# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration +# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration parameters: app.domain: '%env(APP_DOMAIN)%' @@ -20,13 +20,6 @@ services: - '../src/DependencyInjection/' - '../src/Entity/' - '../src/Kernel.php' - - '../src/Tests/' - - # controllers are imported separately to make sure services can be injected - # as action arguments even if you don't extend any base controller class - App\Controller\: - resource: '../src/Controller/' - tags: ['controller.service_arguments'] # add more service definitions when explicit configuration is needed # please note that last definitions always *replace* previous ones diff --git a/public/index.php b/public/index.php index 18b71692..9982c218 100644 --- a/public/index.php +++ b/public/index.php @@ -1,31 +1,9 @@ bootEnv(dirname(__DIR__).'/.env'); - -if ($_SERVER['APP_DEBUG']) { - umask(0000); - - Debug::enable(); -} - -if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) { - Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_FOR | Request::HEADER_X_FORWARDED_PORT | Request::HEADER_X_FORWARDED_PROTO); -} - -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); -$response->send(); -$kernel->terminate($request, $response); +return function (array $context) { + return new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']); +}; diff --git a/src/Repository/MajorVersionRepository.php b/src/Repository/MajorVersionRepository.php index 24efffd0..5f0c7578 100644 --- a/src/Repository/MajorVersionRepository.php +++ b/src/Repository/MajorVersionRepository.php @@ -325,9 +325,11 @@ private function formatVersion(float|int|string $version): string private function removeEltsReleases(MajorVersion $version): MajorVersion { - $version->setReleases($version->getReleases()->filter( - static fn (Release $release): bool => !$release->isElts() - )); + foreach ($version->getReleases()->filter( + static fn (Release $release): bool => $release->isElts() + ) as $key => $release) { + $version->getReleases()->removeElement($release); + } return $version; } diff --git a/symfony.lock b/symfony.lock index 5ec60cca..69f04905 100644 --- a/symfony.lock +++ b/symfony.lock @@ -6,16 +6,14 @@ "version": "1.2.8" }, "doctrine/annotations": { - "version": "1.0", + "version": "2.0", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "1.0", - "ref": "a2759dd6123694c8d901d0ec80006e044c2e6457" + "branch": "main", + "version": "1.10", + "ref": "64d8583af5ea57b7afa4aba4b159907f3a148b05" }, - "files": [ - "config/routes/annotations.yaml" - ] + "files": [] }, "doctrine/cache": { "version": "1.10.2" @@ -36,39 +34,38 @@ "version": "v0.5.3" }, "doctrine/doctrine-bundle": { - "version": "2.0", + "version": "2.9", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "2.0", - "ref": "368794356c1fb634e58b38ad2addb36933f2e73e" + "branch": "main", + "version": "2.8", + "ref": "6b43b7b6ff6bf2551f2933ebeb66721fa3db8fbc" }, "files": [ "config/packages/doctrine.yaml", - "config/packages/prod/doctrine.yaml", "src/Entity/.gitignore", "src/Repository/.gitignore" ] }, "doctrine/doctrine-fixtures-bundle": { - "version": "3.0", + "version": "3.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "3.0", - "ref": "e5b542d4ef47d8a003c91beb35650c76907f7e53" + "ref": "1f5514cfa15b947298df4d771e694e578d4c204d" }, "files": [ "src/DataFixtures/AppFixtures.php" ] }, "doctrine/doctrine-migrations-bundle": { - "version": "2.2", + "version": "3.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "2.2", - "ref": "baaa439e3e3179e69e3da84b671f0a3e4a2f56ad" + "branch": "main", + "version": "3.1", + "ref": "1d01ec03c6ecbd67c3375c5478c9a423ae5d6a33" }, "files": [ "config/packages/doctrine_migrations.yaml", @@ -148,17 +145,15 @@ "version": "3.10.0" }, "jms/serializer-bundle": { - "version": "3.0", + "version": "4.2", "recipe": { "repo": "github.com/symfony/recipes-contrib", - "branch": "master", - "version": "3.0", - "ref": "384cec52df45f3bfd46a09930d6960a58872b268" + "branch": "main", + "version": "4.0", + "ref": "cc04e10cf7171525b50c18b36004edf64cb478be" }, "files": [ - "config/packages/dev/jms_serializer.yaml", - "config/packages/jms_serializer.yaml", - "config/packages/prod/jms_serializer.yaml" + "config/packages/jms_serializer.yaml" ] }, "justinrainbow/json-schema": { @@ -199,12 +194,12 @@ ] }, "nelmio/cors-bundle": { - "version": "1.5", + "version": "2.3", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "1.5", - "ref": "6388de23860284db9acce0a7a5d9d13153bcb571" + "ref": "6bea22e6c564fba3a1391615cada1437d0bde39c" }, "files": [ "config/packages/nelmio_cors.yaml" @@ -286,12 +281,12 @@ "version": "v5.1.9" }, "symfony/console": { - "version": "5.1", + "version": "6.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "5.1", - "ref": "c6d02bdfba9da13c22157520e32a602dbee8a75c" + "branch": "main", + "version": "5.3", + "ref": "da0c8be8157600ad34f10ff0c9cc91232522e047" }, "files": [ "bin/console" @@ -301,15 +296,15 @@ "version": "v5.1.9" }, "symfony/debug-bundle": { - "version": "4.1", + "version": "6.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "4.1", - "ref": "f8863cbad2f2e58c4b65fa1eac892ab189971bea" + "branch": "main", + "version": "5.3", + "ref": "5aa8aa48234c8eb6dbdd7b3cd5d791485d2cec4b" }, "files": [ - "config/packages/dev/debug.yaml" + "config/packages/debug.yaml" ] }, "symfony/dependency-injection": { @@ -346,12 +341,12 @@ "version": "v5.1.9" }, "symfony/flex": { - "version": "1.0", + "version": "2.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "1.0", - "ref": "c0eeb50665f0f77226616b6038a9b06c03752d8e" + "ref": "146251ae39e06a95be0fe3d13c807bcf3938b172" }, "files": [ ".env" @@ -361,19 +356,18 @@ "version": "v5.1.9" }, "symfony/framework-bundle": { - "version": "5.1", + "version": "6.3", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "5.1", - "ref": "5f0d0fd82ffa3580fe0ce8e3b2d18506ebf37a0e" + "branch": "main", + "version": "6.2", + "ref": "af47254c5e4cd543e6af3e4508298ffebbdaddd3" }, "files": [ "config/packages/cache.yaml", "config/packages/framework.yaml", - "config/packages/test/framework.yaml", "config/preload.php", - "config/routes/dev/framework.yaml", + "config/routes/framework.yaml", "config/services.yaml", "public/index.php", "src/Controller/.gitignore", @@ -396,12 +390,12 @@ "version": "v5.1.9" }, "symfony/mailer": { - "version": "4.3", + "version": "6.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", + "branch": "main", "version": "4.3", - "ref": "15658c2a0176cda2e7dba66276a2030b52bd81b2" + "ref": "2bf89438209656b85b9a49238c4467bff1b1f939" }, "files": [ "config/packages/mailer.yaml" @@ -423,18 +417,15 @@ "version": "v5.1.9" }, "symfony/monolog-bundle": { - "version": "3.3", + "version": "3.8", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "d7249f7d560f6736115eee1851d02a65826f0a56" + "branch": "main", + "version": "3.7", + "ref": "213676c4ec929f046dfde5ea8e97625b81bc0578" }, "files": [ - "config/packages/dev/monolog.yaml", - "config/packages/prod/deprecations.yaml", - "config/packages/prod/monolog.yaml", - "config/packages/test/monolog.yaml" + "config/packages/monolog.yaml" ] }, "symfony/notifier": { @@ -471,15 +462,14 @@ "version": "v5.3.4" }, "symfony/routing": { - "version": "5.1", + "version": "6.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "5.1", - "ref": "b4f3e7c95e38b606eef467e8a42a8408fc460c43" + "branch": "main", + "version": "6.2", + "ref": "e0a11b4ccb8c9e70b574ff5ad3dfdcd41dec5aa6" }, "files": [ - "config/packages/prod/routing.yaml", "config/packages/routing.yaml", "config/routes.yaml" ] @@ -488,12 +478,12 @@ "version": "v5.3.4" }, "symfony/security-bundle": { - "version": "5.1", + "version": "6.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "5.1", - "ref": "0a4bae19389d3b9cba1ca0102e3b2bccea724603" + "branch": "main", + "version": "6.0", + "ref": "8a5b112826f7d3d5b07027f93786ae11a1c7de48" }, "files": [ "config/packages/security.yaml" @@ -521,12 +511,12 @@ "version": "v5.1.9" }, "symfony/translation": { - "version": "3.3", + "version": "6.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "2ad9d2545bce8ca1a863e50e92141f0b9d87ffcd" + "branch": "main", + "version": "5.3", + "ref": "da64f5a2b6d96f5dc24914517c0350a5f91dee43" }, "files": [ "config/packages/translation.yaml", @@ -540,15 +530,14 @@ "version": "v5.1.9" }, "symfony/twig-bundle": { - "version": "5.0", + "version": "6.2", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "5.0", - "ref": "fab9149bbaa4d5eca054ed93f9e1b66cc500895d" + "branch": "main", + "version": "5.4", + "ref": "bb2178c57eee79e6be0b297aa96fc0c0def81387" }, "files": [ - "config/packages/test/twig.yaml", "config/packages/twig.yaml", "templates/base.html.twig" ] @@ -566,15 +555,14 @@ ] }, "symfony/validator": { - "version": "4.3", + "version": "6.3", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "4.3", - "ref": "d902da3e4952f18d3bf05aab29512eb61cabd869" + "branch": "main", + "version": "5.3", + "ref": "c32cfd98f714894c4f128bb99aa2530c1227603c" }, "files": [ - "config/packages/test/validator.yaml", "config/packages/validator.yaml" ] }, @@ -588,12 +576,12 @@ "version": "v5.1.9" }, "symfony/web-profiler-bundle": { - "version": "5.4", + "version": "6.2", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "5.3", - "ref": "24bbc3d84ef2f427f82104f766014e799eefcc3e" + "version": "6.1", + "ref": "e42b3f0177df239add25373083a564e5ead4e13a" }, "files": [ "config/packages/web_profiler.yaml", From 0098d6a32b26bb9f5b59c2527700b6b3e761d351 Mon Sep 17 00:00:00 2001 From: Simon Gilli <25326036+gilbertsoft@users.noreply.github.com> Date: Tue, 25 Apr 2023 20:46:16 +0200 Subject: [PATCH 2/2] [FEATURE] Provide webhook for new releases Resolves #375 --- .env | 7 + composer.json | 20 +- composer.lock | 689 ++++++++++++++++++++------ config/packages/messenger.yaml | 22 + config/routes/webhook.yaml | 3 + config/services.yaml | 5 + src/EventListener/ReleaseListener.php | 3 + src/Service/WebhookService.php | 49 ++ symfony.lock | 32 +- 9 files changed, 670 insertions(+), 160 deletions(-) create mode 100644 config/packages/messenger.yaml create mode 100644 config/routes/webhook.yaml create mode 100644 src/Service/WebhookService.php diff --git a/.env b/.env index f97f9ff8..feff3c1b 100644 --- a/.env +++ b/.env @@ -43,3 +43,10 @@ APP_DOMAIN=typo3.org ###> t3g/symfony-usercentrics-bundle ### USERCENTRICS_ID="R9wBKTwzv" ###< t3g/symfony-usercentrics-bundle ### + +###> symfony/messenger ### +# Choose one of the transports below +# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages +# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages +MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 +###< symfony/messenger ### diff --git a/composer.json b/composer.json index 7aa7b19a..ae3f5030 100644 --- a/composer.json +++ b/composer.json @@ -54,20 +54,20 @@ "nelmio/api-doc-bundle": "^4.11.1", "nelmio/cors-bundle": "^2.3.1", "nelmio/security-bundle": "^3", - "psr/log": "^3", + "psr/log": "^3.0", "symfony/asset": "^6.2.7", "symfony/cache": "^6.2.8", "symfony/cache-contracts": "^3.2.1", "symfony/console": "^6.2.8", - "symfony/dependency-injection": "^6.2.8", + "symfony/dependency-injection": "^6.3", "symfony/dotenv": "^6.2.8", "symfony/expression-language": "^6.2.7", "symfony/flex": "^2.2.5", "symfony/form": "^6.2.8", - "symfony/framework-bundle": "^6.2.9", - "symfony/http-client": "^6.2.9", - "symfony/http-foundation": "^6.2.8", - "symfony/http-kernel": "^6.2.9", + "symfony/framework-bundle": "^6.3", + "symfony/http-client": "^6.3", + "symfony/http-foundation": "^6.3", + "symfony/http-kernel": "^6.3", "symfony/intl": "^6.2.9", "symfony/mailer": "^6.2.8", "symfony/mime": "^6.2.7", @@ -76,16 +76,17 @@ "symfony/process": "^6.2.8", "symfony/property-access": "^6.2.8", "symfony/property-info": "^6.2.8", - "symfony/proxy-manager-bridge": "^6.2.7", + "symfony/proxy-manager-bridge": "^6.3", "symfony/routing": "^6.2.8", "symfony/runtime": "^6.2.8", "symfony/security-bundle": "^6.2.8", "symfony/security-http": "^6.2.8", - "symfony/serializer": "^6.2.8", + "symfony/serializer": "^6.3", "symfony/translation": "^6.2.8", "symfony/twig-bundle": "^6.2.7", - "symfony/validator": "^6.2.8", + "symfony/validator": "^6.3", "symfony/web-link": "^6.2.7", + "symfony/webhook": "^6.3", "symfony/yaml": "^6.2.7", "t3g/symfony-template-bundle": "^3.5", "t3g/symfony-usercentrics-bundle": "^1.0.2 || dev-master", @@ -128,6 +129,7 @@ "conflict": { "symfony/symfony": "*" }, + "minimum-stability": "dev", "prefer-stable": true, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 7fd4000b..e42b0315 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1bb7be7279c79f5afedc74a8d905d566", + "content-hash": "988ec4de55d9a654cf55eb07d9e3b7ce", "packages": [ { "name": "composer/ca-bundle", @@ -3384,6 +3384,54 @@ }, "time": "2021-02-03T23:26:27+00:00" }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, { "name": "psr/container", "version": "2.0.2", @@ -4116,6 +4164,79 @@ ], "time": "2023-03-01T10:32:47+00:00" }, + { + "name": "symfony/clock", + "version": "6.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "ccae3a2f1eb48a2515c84b8d456679fe3d79c9ea" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/ccae3a2f1eb48a2515c84b8d456679fe3d79c9ea", + "reference": "ccae3a2f1eb48a2515c84b8d456679fe3d79c9ea", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/clock": "^1.0" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/6.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": "2023-02-21T10:58:00+00:00" + }, { "name": "symfony/config", "version": "v6.2.7", @@ -4291,30 +4412,30 @@ }, { "name": "symfony/dependency-injection", - "version": "v6.2.8", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "b6195feacceb88fc58a02b69522b569e4c6188ac" + "reference": "e96cb014f2f1e84ea8a03f360a0617741d8b7c98" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/b6195feacceb88fc58a02b69522b569e4c6188ac", - "reference": "b6195feacceb88fc58a02b69522b569e4c6188ac", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e96cb014f2f1e84ea8a03f360a0617741d8b7c98", + "reference": "e96cb014f2f1e84ea8a03f360a0617741d8b7c98", "shasum": "" }, "require": { "php": ">=8.1", "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/service-contracts": "^1.1.6|^2.0|^3.0", - "symfony/var-exporter": "^6.2.7" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10" }, "conflict": { "ext-psr": "<1.1|>=2", "symfony/config": "<6.1", "symfony/finder": "<5.4", - "symfony/proxy-manager-bridge": "<6.2", + "symfony/proxy-manager-bridge": "<6.3", "symfony/yaml": "<5.4" }, "provide": { @@ -4326,12 +4447,6 @@ "symfony/expression-language": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/yaml": "" - }, "type": "library", "autoload": { "psr-4": { @@ -4358,7 +4473,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.2.8" + "source": "https://github.com/symfony/dependency-injection/tree/6.3" }, "funding": [ { @@ -4374,7 +4489,7 @@ "type": "tidelift" } ], - "time": "2023-03-30T13:35:57+00:00" + "time": "2023-04-24T14:22:26+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4634,16 +4749,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.2.9", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "e95f1273b3953c3b5e5341172dae838bacee11ee" + "reference": "7b28b8c1ee05d55fbe7ebd0e9f59447e38ad3684" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/e95f1273b3953c3b5e5341172dae838bacee11ee", - "reference": "e95f1273b3953c3b5e5341172dae838bacee11ee", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/7b28b8c1ee05d55fbe7ebd0e9f59447e38ad3684", + "reference": "7b28b8c1ee05d55fbe7ebd0e9f59447e38ad3684", "shasum": "" }, "require": { @@ -4651,8 +4766,11 @@ "psr/log": "^1|^2|^3", "symfony/var-dumper": "^5.4|^6.0" }, + "conflict": { + "symfony/deprecation-contracts": "<2.5" + }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^5.4|^6.0", "symfony/serializer": "^5.4|^6.0" }, @@ -4685,7 +4803,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.2.9" + "source": "https://github.com/symfony/error-handler/tree/6.3" }, "funding": [ { @@ -4701,7 +4819,7 @@ "type": "tidelift" } ], - "time": "2023-04-11T16:03:19+00:00" + "time": "2023-04-24T14:22:26+00:00" }, { "name": "symfony/event-dispatcher", @@ -5226,16 +5344,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v6.2.9", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "df1899b6e9e52fc495daad6b4e307801860a66da" + "reference": "585195a26ce521b955022da346eabfa99d5c1b68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/df1899b6e9e52fc495daad6b4e307801860a66da", - "reference": "df1899b6e9e52fc495daad6b4e307801860a66da", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/585195a26ce521b955022da346eabfa99d5c1b68", + "reference": "585195a26ce521b955022da346eabfa99d5c1b68", "shasum": "" }, "require": { @@ -5245,13 +5363,13 @@ "symfony/cache": "^5.4|^6.0", "symfony/config": "^6.1", "symfony/dependency-injection": "^6.2.8", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.1", "symfony/event-dispatcher": "^5.4|^6.0", "symfony/filesystem": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-foundation": "^6.2", - "symfony/http-kernel": "^6.2.1", + "symfony/http-foundation": "^6.3", + "symfony/http-kernel": "^6.3", "symfony/polyfill-mbstring": "~1.0", "symfony/routing": "^5.4|^6.0" }, @@ -5262,25 +5380,26 @@ "phpdocumentor/type-resolver": "<1.4.0", "phpunit/phpunit": "<5.4.3", "symfony/asset": "<5.4", + "symfony/clock": "<6.3", "symfony/console": "<5.4", - "symfony/dom-crawler": "<5.4", + "symfony/dom-crawler": "<6.3", "symfony/dotenv": "<5.4", "symfony/form": "<5.4", - "symfony/http-client": "<5.4", + "symfony/http-client": "<6.3", "symfony/lock": "<5.4", "symfony/mailer": "<5.4", - "symfony/messenger": "<6.2", + "symfony/messenger": "<6.3", "symfony/mime": "<6.2", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4", "symfony/security-core": "<5.4", "symfony/security-csrf": "<5.4", - "symfony/serializer": "<6.1", + "symfony/serializer": "<6.3", "symfony/stopwatch": "<5.4", "symfony/translation": "<6.2.8", "symfony/twig-bridge": "<5.4", "symfony/twig-bundle": "<5.4", - "symfony/validator": "<5.4", + "symfony/validator": "<6.3", "symfony/web-profiler-bundle": "<5.4", "symfony/workflow": "<5.4" }, @@ -5290,47 +5409,39 @@ "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/asset": "^5.4|^6.0", "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", "symfony/console": "^5.4.9|^6.0.9", "symfony/css-selector": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", + "symfony/dom-crawler": "^6.3", "symfony/dotenv": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/form": "^5.4|^6.0", "symfony/html-sanitizer": "^6.1", - "symfony/http-client": "^5.4|^6.0", + "symfony/http-client": "^6.3", "symfony/lock": "^5.4|^6.0", "symfony/mailer": "^5.4|^6.0", - "symfony/messenger": "^6.2", + "symfony/messenger": "^6.3", "symfony/mime": "^6.2", "symfony/notifier": "^5.4|^6.0", "symfony/polyfill-intl-icu": "~1.0", "symfony/process": "^5.4|^6.0", "symfony/property-info": "^5.4|^6.0", "symfony/rate-limiter": "^5.4|^6.0", + "symfony/scheduler": "^6.3", "symfony/security-bundle": "^5.4|^6.0", "symfony/semaphore": "^5.4|^6.0", - "symfony/serializer": "^6.1", + "symfony/serializer": "^6.3", "symfony/stopwatch": "^5.4|^6.0", "symfony/string": "^5.4|^6.0", "symfony/translation": "^6.2.8", "symfony/twig-bundle": "^5.4|^6.0", "symfony/uid": "^5.4|^6.0", - "symfony/validator": "^5.4|^6.0", + "symfony/validator": "^6.3", "symfony/web-link": "^5.4|^6.0", "symfony/workflow": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0", "twig/twig": "^2.10|^3.0" }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, "type": "symfony-bundle", "autoload": { "psr-4": { @@ -5357,7 +5468,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.2.9" + "source": "https://github.com/symfony/framework-bundle/tree/6.3" }, "funding": [ { @@ -5373,28 +5484,31 @@ "type": "tidelift" } ], - "time": "2023-04-01T11:12:43+00:00" + "time": "2023-04-24T14:22:26+00:00" }, { "name": "symfony/http-client", - "version": "v6.2.9", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "7daf5d24c21a683164688b95bb73b7a4bd3b32fc" + "reference": "1065a1e43670b2f955999237794956880561672a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/7daf5d24c21a683164688b95bb73b7a4bd3b32fc", - "reference": "7daf5d24c21a683164688b95bb73b7a4bd3b32fc", + "url": "https://api.github.com/repos/symfony/http-client/zipball/1065a1e43670b2f955999237794956880561672a", + "reference": "1065a1e43670b2f955999237794956880561672a", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-client-contracts": "^3", - "symfony/service-contracts": "^1.0|^2|^3" + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/http-foundation": "<6.3" }, "provide": { "php-http/async-client-implementation": "*", @@ -5445,7 +5559,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.2.9" + "source": "https://github.com/symfony/http-client/tree/6.3" }, "funding": [ { @@ -5461,7 +5575,7 @@ "type": "tidelift" } ], - "time": "2023-04-11T16:03:19+00:00" + "time": "2023-04-24T14:22:26+00:00" }, { "name": "symfony/http-client-contracts", @@ -5546,28 +5660,30 @@ }, { "name": "symfony/http-foundation", - "version": "v6.2.8", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "511a524affeefc191939348823ac75e9921c2112" + "reference": "531373672a99eec1c6dfecf8be5269bad413a103" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/511a524affeefc191939348823ac75e9921c2112", - "reference": "511a524affeefc191939348823ac75e9921c2112", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/531373672a99eec1c6dfecf8be5269bad413a103", + "reference": "531373672a99eec1c6dfecf8be5269bad413a103", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.1" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" }, "conflict": { "symfony/cache": "<6.2" }, "require-dev": { - "predis/predis": "~1.0", + "doctrine/dbal": "^2.13.1|^3.0", + "predis/predis": "^1.1|^2.0", "symfony/cache": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", @@ -5575,9 +5691,6 @@ "symfony/mime": "^5.4|^6.0", "symfony/rate-limiter": "^5.2|^6.0" }, - "suggest": { - "symfony/mime": "To use the file extension guesser" - }, "type": "library", "autoload": { "psr-4": { @@ -5604,7 +5717,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.2.8" + "source": "https://github.com/symfony/http-foundation/tree/6.3" }, "funding": [ { @@ -5620,29 +5733,29 @@ "type": "tidelift" } ], - "time": "2023-03-29T21:42:15+00:00" + "time": "2023-04-21T14:41:17+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.2.9", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "02246510cf7031726f7237138d61b796b95799b3" + "reference": "a3c4051b5fc151ba2f1d3541de0eada1e0ec346a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/02246510cf7031726f7237138d61b796b95799b3", - "reference": "02246510cf7031726f7237138d61b796b95799b3", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a3c4051b5fc151ba2f1d3541de0eada1e0ec346a", + "reference": "a3c4051b5fc151ba2f1d3541de0eada1e0ec346a", "shasum": "" }, "require": { "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^6.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.3", "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/http-foundation": "^6.2.7", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -5650,13 +5763,15 @@ "symfony/cache": "<5.4", "symfony/config": "<6.1", "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.2", + "symfony/dependency-injection": "<6.3", "symfony/doctrine-bridge": "<5.4", "symfony/form": "<5.4", "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", "symfony/mailer": "<5.4", "symfony/messenger": "<5.4", "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", "symfony/twig-bridge": "<5.4", "symfony/validator": "<5.4", "twig/twig": "<2.13" @@ -5667,28 +5782,26 @@ "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", "symfony/browser-kit": "^5.4|^6.0", + "symfony/clock": "^6.2", "symfony/config": "^6.1", "symfony/console": "^5.4|^6.0", "symfony/css-selector": "^5.4|^6.0", - "symfony/dependency-injection": "^6.2", + "symfony/dependency-injection": "^6.3", "symfony/dom-crawler": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/finder": "^5.4|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/http-client-contracts": "^2.5|^3", "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4.5|^6.0.5", "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^6.3", "symfony/stopwatch": "^5.4|^6.0", "symfony/translation": "^5.4|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/translation-contracts": "^2.5|^3", "symfony/uid": "^5.4|^6.0", + "symfony/validator": "^6.3", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -5715,7 +5828,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.2.9" + "source": "https://github.com/symfony/http-kernel/tree/6.3" }, "funding": [ { @@ -5731,7 +5844,7 @@ "type": "tidelift" } ], - "time": "2023-04-13T16:41:43+00:00" + "time": "2023-04-21T14:41:17+00:00" }, { "name": "symfony/intl", @@ -5893,6 +6006,91 @@ ], "time": "2023-03-14T15:00:05+00:00" }, + { + "name": "symfony/messenger", + "version": "6.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/messenger.git", + "reference": "da57aa97306f0f623638ef1e2ea0bf6a98e3718d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/messenger/zipball/da57aa97306f0f623638ef1e2ea0bf6a98e3718d", + "reference": "da57aa97306f0f623638ef1e2ea0bf6a98e3718d", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/clock": "^6.3" + }, + "conflict": { + "symfony/event-dispatcher": "<5.4", + "symfony/event-dispatcher-contracts": "<2.5", + "symfony/framework-bundle": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/serializer": "<5.4" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/console": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/http-kernel": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/rate-limiter": "^5.4|^6.0", + "symfony/routing": "^5.4|^6.0", + "symfony/serializer": "^5.4|^6.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0", + "symfony/validator": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Messenger\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Samuel Roze", + "email": "samuel.roze@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Helps applications send and receive messages to/from other applications or via message queues", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/messenger/tree/6.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": "2023-04-24T14:22:26+00:00" + }, { "name": "symfony/mime", "version": "v6.2.7", @@ -6355,6 +6553,83 @@ ], "time": "2023-02-14T08:44:56+00:00" }, + { + "name": "symfony/polyfill-php83", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "508c652ba3ccf69f8c97f251534f229791b52a57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/508c652ba3ccf69f8c97f251534f229791b52a57", + "reference": "508c652ba3ccf69f8c97f251534f229791b52a57", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php83\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php83/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, { "name": "symfony/polyfill-uuid", "version": "v1.27.0", @@ -6669,22 +6944,23 @@ }, { "name": "symfony/proxy-manager-bridge", - "version": "v6.2.7", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", - "reference": "534119513ce1d06faa6d55b6717f237e980b4e91" + "reference": "f3f273ac1103e20c8eea7fa71f1503c1e38a0993" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/534119513ce1d06faa6d55b6717f237e980b4e91", - "reference": "534119513ce1d06faa6d55b6717f237e980b4e91", + "url": "https://api.github.com/repos/symfony/proxy-manager-bridge/zipball/f3f273ac1103e20c8eea7fa71f1503c1e38a0993", + "reference": "f3f273ac1103e20c8eea7fa71f1503c1e38a0993", "shasum": "" }, "require": { "friendsofphp/proxy-manager-lts": "^1.0.2", "php": ">=8.1", - "symfony/dependency-injection": "^6.2" + "symfony/dependency-injection": "^6.3", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { "symfony/config": "^6.1" @@ -6715,7 +6991,7 @@ "description": "Provides integration for ProxyManager with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/proxy-manager-bridge/tree/v6.2.7" + "source": "https://github.com/symfony/proxy-manager-bridge/tree/6.3" }, "funding": [ { @@ -6731,7 +7007,73 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:57:23+00:00" + "time": "2023-02-16T10:14:28+00:00" + }, + { + "name": "symfony/remote-event", + "version": "6.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/remote-event.git", + "reference": "7948725b4f18f9acb41a78c4d1e6b8d2668efdef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/remote-event/zipball/7948725b4f18f9acb41a78c4d1e6b8d2668efdef", + "reference": "7948725b4f18f9acb41a78c4d1e6b8d2668efdef", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/messenger": "^5.4|^6.1" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\RemoteEvent\\": "" + }, + "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": "Eases handling remote events", + "homepage": "https://symfony.com", + "keywords": [ + "event" + ], + "support": { + "source": "https://github.com/symfony/remote-event/tree/6.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": "2023-04-21T11:34:45+00:00" }, { "name": "symfony/routing", @@ -7249,16 +7591,16 @@ }, { "name": "symfony/serializer", - "version": "v6.2.8", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "db9d36470bf0990990fda9320b8b001bb582f075" + "reference": "8f4afa580455433e0948a17e9290713f8075894b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/db9d36470bf0990990fda9320b8b001bb582f075", - "reference": "db9d36470bf0990990fda9320b8b001bb582f075", + "url": "https://api.github.com/repos/symfony/serializer/zipball/8f4afa580455433e0948a17e9290713f8075894b", + "reference": "8f4afa580455433e0948a17e9290713f8075894b", "shasum": "" }, "require": { @@ -7280,6 +7622,7 @@ "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", "symfony/cache": "^5.4|^6.0", "symfony/config": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0", "symfony/dependency-injection": "^5.4|^6.0", "symfony/error-handler": "^5.4|^6.0", "symfony/filesystem": "^5.4|^6.0", @@ -7295,15 +7638,6 @@ "symfony/var-exporter": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "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", "autoload": { "psr-4": { @@ -7330,7 +7664,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.2.8" + "source": "https://github.com/symfony/serializer/tree/6.3" }, "funding": [ { @@ -7346,7 +7680,7 @@ "type": "tidelift" } ], - "time": "2023-03-31T09:14:44+00:00" + "time": "2023-04-22T13:51:15+00:00" }, { "name": "symfony/service-contracts", @@ -8045,24 +8379,25 @@ }, { "name": "symfony/validator", - "version": "v6.2.8", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "c63584f84edbdba9d2519f888350dd90615abe35" + "reference": "1748e107c993b87914d692be84b6a2bfddd86e30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/c63584f84edbdba9d2519f888350dd90615abe35", - "reference": "c63584f84edbdba9d2519f888350dd90615abe35", + "url": "https://api.github.com/repos/symfony/validator/zipball/1748e107c993b87914d692be84b6a2bfddd86e30", + "reference": "1748e107c993b87914d692be84b6a2bfddd86e30", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1|^2|^3" + "symfony/polyfill-php83": "^1.27", + "symfony/translation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.13", @@ -8095,18 +8430,6 @@ "symfony/translation": "^5.4|^6.0", "symfony/yaml": "^5.4|^6.0" }, - "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" - }, "type": "library", "autoload": { "psr-4": { @@ -8133,7 +8456,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.2.8" + "source": "https://github.com/symfony/validator/tree/6.3" }, "funding": [ { @@ -8149,7 +8472,7 @@ "type": "tidelift" } ], - "time": "2023-03-20T16:06:02+00:00" + "time": "2023-04-24T07:06:38+00:00" }, { "name": "symfony/var-dumper", @@ -8241,16 +8564,16 @@ }, { "name": "symfony/var-exporter", - "version": "v6.2.8", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "8302bb670204500d492c6b8c595ee9a27da62cd6" + "reference": "db5416d04269f2827d8c54331ba4cfa42620d350" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/8302bb670204500d492c6b8c595ee9a27da62cd6", - "reference": "8302bb670204500d492c6b8c595ee9a27da62cd6", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/db5416d04269f2827d8c54331ba4cfa42620d350", + "reference": "db5416d04269f2827d8c54331ba4cfa42620d350", "shasum": "" }, "require": { @@ -8295,7 +8618,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.2.8" + "source": "https://github.com/symfony/var-exporter/tree/6.3" }, "funding": [ { @@ -8311,7 +8634,7 @@ "type": "tidelift" } ], - "time": "2023-03-14T15:48:45+00:00" + "time": "2023-04-21T08:48:44+00:00" }, { "name": "symfony/web-link", @@ -8399,6 +8722,75 @@ ], "time": "2023-02-14T08:44:56+00:00" }, + { + "name": "symfony/webhook", + "version": "6.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/symfony/webhook.git", + "reference": "e1e0c85b92447745bcff20dd110fd85783174dc0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/webhook/zipball/e1e0c85b92447745bcff20dd110fd85783174dc0", + "reference": "e1e0c85b92447745bcff20dd110fd85783174dc0", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/http-foundation": "^6.3", + "symfony/http-kernel": "^6.3", + "symfony/messenger": "^5.4|^6.1", + "symfony/remote-event": "^6.3" + }, + "default-branch": true, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Webhook\\": "" + }, + "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": "Eases sending and consuming webhooks", + "homepage": "https://symfony.com", + "keywords": [ + "webhook" + ], + "support": { + "source": "https://github.com/symfony/webhook/tree/6.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": "2023-04-21T14:42:22+00:00" + }, { "name": "symfony/yaml", "version": "v6.2.7", @@ -10834,16 +11226,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v6.2.9", + "version": "6.3.x-dev", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "328bc3795059651d2d4e462e8febdf7ec2d7a626" + "reference": "321d4f73cd9bb71fb93b021f0e7a196e1843d9af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/328bc3795059651d2d4e462e8febdf7ec2d7a626", - "reference": "328bc3795059651d2d4e462e8febdf7ec2d7a626", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/321d4f73cd9bb71fb93b021f0e7a196e1843d9af", + "reference": "321d4f73cd9bb71fb93b021f0e7a196e1843d9af", "shasum": "" }, "require": { @@ -10855,9 +11247,6 @@ "require-dev": { "symfony/css-selector": "^5.4|^6.0" }, - "suggest": { - "symfony/css-selector": "" - }, "type": "library", "autoload": { "psr-4": { @@ -10884,7 +11273,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v6.2.9" + "source": "https://github.com/symfony/dom-crawler/tree/6.3" }, "funding": [ { @@ -10900,7 +11289,7 @@ "type": "tidelift" } ], - "time": "2023-04-11T16:03:19+00:00" + "time": "2023-04-21T14:41:17+00:00" }, { "name": "symfony/maker-bundle", @@ -11164,7 +11553,7 @@ } ], "aliases": [], - "minimum-stability": "stable", + "minimum-stability": "dev", "stability-flags": { "t3g/symfony-usercentrics-bundle": 20, "roave/security-advisories": 20 diff --git a/config/packages/messenger.yaml b/config/packages/messenger.yaml new file mode 100644 index 00000000..672b6c40 --- /dev/null +++ b/config/packages/messenger.yaml @@ -0,0 +1,22 @@ +framework: + messenger: + # Uncomment this (and the failed transport below) to send failed messages to this transport for later handling. + # failure_transport: failed + + transports: + # https://symfony.com/doc/current/messenger.html#transport-configuration + # async: '%env(MESSENGER_TRANSPORT_DSN)%' + # failed: 'doctrine://default?queue_name=failed' + # sync: 'sync://' + + routing: + # Route your messages to the transports + # 'App\Message\YourMessage': async + +# when@test: +# framework: +# messenger: +# transports: +# # replace with your transport name here (e.g., my_transport: 'in-memory://') +# # For more Messenger testing tools, see https://github.com/zenstruck/messenger-test +# async: 'in-memory://' diff --git a/config/routes/webhook.yaml b/config/routes/webhook.yaml new file mode 100644 index 00000000..bf07b381 --- /dev/null +++ b/config/routes/webhook.yaml @@ -0,0 +1,3 @@ +webhook: + resource: '@FrameworkBundle/Resources/config/routing/webhook.xml' + prefix: /webhook diff --git a/config/services.yaml b/config/services.yaml index b59088f2..2b6970e1 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -39,3 +39,8 @@ services: App\Service\CacheWarmupService: arguments: $baseUrl: '%env(BASE_URL)%' + + App\Service\WebhookService: + arguments: + $url: '%env(APP_WEBHOOK_MY_TYPO3_URL)%' + $secret: '%env(APP_WEBHOOK_MY_TYPO3_SECRET)%' diff --git a/src/EventListener/ReleaseListener.php b/src/EventListener/ReleaseListener.php index 30b447fd..d8428b3d 100644 --- a/src/EventListener/ReleaseListener.php +++ b/src/EventListener/ReleaseListener.php @@ -25,6 +25,7 @@ use App\Entity\Release; use App\Service\CacheService; +use App\Service\WebhookService; use Doctrine\ORM\Event\PostPersistEventArgs; use Doctrine\ORM\Event\PostRemoveEventArgs; use Doctrine\ORM\Event\PostUpdateEventArgs; @@ -33,6 +34,7 @@ final class ReleaseListener { public function __construct( private readonly CacheService $cacheService, + private readonly WebhookService $webhookService, ) { } @@ -49,5 +51,6 @@ public function postRemove(Release $release, PostRemoveEventArgs $eventArgs): vo public function postPersist(Release $release, PostPersistEventArgs $eventArgs): void { $this->cacheService->purgeMajorVersionReleases((string)$release->getMajorVersion()->getVersion()); + $this->webhookService->announceRelease($release); } } diff --git a/src/Service/WebhookService.php b/src/Service/WebhookService.php new file mode 100644 index 00000000..27afd980 --- /dev/null +++ b/src/Service/WebhookService.php @@ -0,0 +1,49 @@ +secret); + $event = new RemoteEvent('release.new', '1', [ + 'release' => $release, + ]); + $this->bus->dispatch(new SendWebhookMessage($subscriber, $event)); + } +} diff --git a/symfony.lock b/symfony.lock index 69f04905..a95e2794 100644 --- a/symfony.lock +++ b/symfony.lock @@ -410,6 +410,18 @@ "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" } }, + "symfony/messenger": { + "version": "6.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.0", + "ref": "ba1ac4e919baba5644d31b57a3284d6ba12d52ee" + }, + "files": [ + "config/packages/messenger.yaml" + ] + }, "symfony/mime": { "version": "v5.1.9" }, @@ -444,7 +456,13 @@ "version": "v5.1.9" }, "symfony/panther": { - "version": "v0.7.1" + "version": "2.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "877d853a05c6713665a2f4b954734592680abff6" + } }, "symfony/password-hasher": { "version": "v5.3.4" @@ -588,6 +606,18 @@ "config/routes/web_profiler.yaml" ] }, + "symfony/webhook": { + "version": "6.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.3", + "ref": "0bc853a74c98e448116ba53e118a7b6b3cdf9a03" + }, + "files": [ + "config/routes/webhook.yaml" + ] + }, "symfony/yaml": { "version": "v5.1.9" },