From 7b324dd8f18919fc4d728bdb0afbcf27c8c02cb2 Mon Sep 17 00:00:00 2001 From: Alex Pott <alex.a.pott@googlemail.com> Date: Mon, 17 Jan 2022 09:03:46 +0000 Subject: [PATCH] =?UTF-8?q?Issue=20#3197482=20by=20longwave,=20Spokje,=20T?= =?UTF-8?q?aran2L,=20murilohp,=20catch,=20G=C3=A1bor=20Hojtsy,=20daffie:?= =?UTF-8?q?=20Update=20Drupal=2010=20to=20depend=20on=20Symfony=205.4=20(a?= =?UTF-8?q?s=20a=20stepping=20stone=20to=20Symfony=206,=20for=20deprecatio?= =?UTF-8?q?n=20checking=20support)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- composer.json | 14 +- composer.lock | 1123 +++++++++-------- .../Metapackage/CoreRecommended/composer.json | 49 +- .../Metapackage/DevDependencies/composer.json | 14 +- .../PinnedDevDependencies/composer.json | 12 +- composer/Plugin/VendorHardening/Config.php | 2 - core/composer.json | 21 +- core/includes/bootstrap.inc | 27 - .../ContainerAwareEventDispatcher.php | 38 +- .../Component/EventDispatcher/Event.php | 2 +- core/lib/Drupal/Core/Composer/Composer.php | 2 - .../Compiler/DeprecatedServicePass.php | 4 +- .../Compiler/MimeTypePass.php | 14 +- .../DependencyInjection/ContainerBuilder.php | 17 - core/lib/Drupal/Core/DrupalKernel.php | 4 - .../MimeType/ExtensionMimeTypeGuesser.php | 3 +- .../Core/File/MimeType/MimeTypeGuesser.php | 46 +- core/lib/Drupal/Core/Http/KernelEvent.php | 88 -- core/lib/Drupal/Core/Http/RequestStack.php | 2 +- .../Core/Http/TrustedHostsRequestFactory.php | 13 +- .../MimeType/ExtensionMimeTypeGuesser.php | 4 +- .../File/MimeType/MimeTypeGuesser.php | 22 +- .../EntityResource/EntityResourceTestBase.php | 12 +- .../user/tests/src/Unit/UserAuthTest.php | 18 +- .../Core/DrupalKernel/DrupalKernelTest.php | 14 - .../KernelTests/Core/File/MimeTypeTest.php | 15 - .../Core/Routing/ExceptionHandlingTest.php | 2 +- .../Core/TypedData/TypedDataTest.php | 2 +- .../ContainerAwareEventDispatcherTest.php | 38 +- .../Compiler/MimeTypePassTest.php | 68 - .../ContainerBuilderTest.php | 14 - .../DrupalKernel/DrupalKernelLegacyTest.php | 2 +- .../Tests/Core/File/MimeTypeGuesserTest.php | 54 - .../Drupal/Tests/Core/Http/InputBagTest.php | 10 - .../Listeners/DeprecationListenerTrait.php | 13 - 35 files changed, 712 insertions(+), 1071 deletions(-) delete mode 100644 core/lib/Drupal/Core/Http/KernelEvent.php delete mode 100644 core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/MimeTypePassTest.php delete mode 100644 core/tests/Drupal/Tests/Core/File/MimeTypeGuesserTest.php diff --git a/composer.json b/composer.json index 3f2706e28f41..0d4b093d74fb 100644 --- a/composer.json +++ b/composer.json @@ -24,16 +24,16 @@ "mikey179/vfsstream": "^1.6.8", "phpunit/phpunit": "^9.5", "phpspec/prophecy-phpunit": "^2", - "symfony/css-selector": "^4.4", + "symfony/css-selector": "^5.4", "symfony/phpunit-bridge": "^5.4", "symfony/var-dumper": "^5.4", - "symfony/error-handler": "^4.4", + "symfony/error-handler": "^5.4", "justinrainbow/json-schema": "^5.2", - "symfony/filesystem": "^4.4", - "symfony/finder": "^4.4", - "symfony/lock": "^4.4", - "symfony/browser-kit": "^4.4", - "symfony/dom-crawler": "^4.4 !=4.4.5", + "symfony/filesystem": "^5.4", + "symfony/finder": "^5.4", + "symfony/lock": "^5.4", + "symfony/browser-kit": "^5.4", + "symfony/dom-crawler": "^5.4", "easyrdf/easyrdf": "^0.9 || ^1.0" }, "replace": { diff --git a/composer.lock b/composer.lock index e6f41f52dc3d..35794d91c95b 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": "490321b85335eac0b33fbc05bcdbae26", + "content-hash": "6209de25fead07a04a71b6af893db664", "packages": [ { "name": "asm89/stack-cors", @@ -452,7 +452,7 @@ "dist": { "type": "path", "url": "core", - "reference": "0c0d32e4674b75c965916f8ec909674a0b9dd3e9" + "reference": "9b93035f22d45a6129f2709b54c86f062f11e972" }, "require": { "asm89/stack-cors": "^2.0.2", @@ -479,21 +479,20 @@ "php": ">=8.0.2", "psr/log": "^1.0", "stack/builder": "^1.0", - "symfony/console": "^4.4", - "symfony/dependency-injection": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-foundation": "^4.4.7", - "symfony/http-kernel": "^4.4", + "symfony/console": "^5.4", + "symfony/dependency-injection": "^5.4", + "symfony/event-dispatcher": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", "symfony/mime": "^5.4", "symfony/polyfill-iconv": "^1.0", "symfony/polyfill-php80": "^1.16", - "symfony/process": "^4.4", + "symfony/process": "^5.4", "symfony/psr-http-message-bridge": "^2.0", - "symfony/routing": "^4.4", - "symfony/serializer": "^4.4", - "symfony/translation": "^4.4", - "symfony/validator": "^4.4", - "symfony/yaml": "^4.4.19", + "symfony/routing": "^5.4", + "symfony/serializer": "^5.4", + "symfony/validator": "^5.4", + "symfony/yaml": "^5.4", "twig/twig": "^3.0", "typo3/phar-stream-wrapper": "^3.1.3" }, @@ -1756,6 +1755,56 @@ }, "time": "2021-03-05T17:36:06+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" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" + }, + "time": "2019-01-08T18:20:26+00:00" + }, { "name": "psr/http-client", "version": "1.0.1", @@ -2066,43 +2115,46 @@ }, { "name": "symfony/console", - "version": "v4.4.34", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0" + "reference": "a2c6b7ced2eb7799a35375fb9022519282b5405e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/329b3a75cc6b16d435ba1b1a41df54a53382a3f0", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0", + "url": "https://api.github.com/repos/symfony/console/zipball/a2c6b7ced2eb7799a35375fb9022519282b5405e", + "reference": "a2c6b7ced2eb7799a35375fb9022519282b5405e", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" }, "conflict": { "psr/log": ">=3", - "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|2.0" }, "require-dev": { "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -2135,76 +2187,14 @@ ], "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/console/tree/v4.4.34" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-04T12:23:33+00:00" - }, - { - "name": "symfony/debug", - "version": "v4.4.31", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/43ede438d4cb52cd589ae5dc070e9323866ba8e0", - "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0", - "shasum": "" - }, - "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } + "keywords": [ + "cli", + "command line", + "console", + "terminal" ], - "description": "Provides tools to ease debugging PHP code", - "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug/tree/v4.4.31" + "source": "https://github.com/symfony/console/tree/v5.4.2" }, "funding": [ { @@ -2220,42 +2210,45 @@ "type": "tidelift" } ], - "time": "2021-09-24T13:30:14+00:00" + "time": "2021-12-20T16:11:12+00:00" }, { "name": "symfony/dependency-injection", - "version": "v4.4.34", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "117d7f132ed7efbd535ec947709d49bec1b9d24b" + "reference": "ba94559be9738d77cd29e24b5d81cf3b89b7d628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/117d7f132ed7efbd535ec947709d49bec1b9d24b", - "reference": "117d7f132ed7efbd535ec947709d49bec1b9d24b", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ba94559be9738d77cd29e24b5d81cf3b89b7d628", + "reference": "ba94559be9738d77cd29e24b5d81cf3b89b7d628", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/container": "^1.0", + "php": ">=7.2.5", + "psr/container": "^1.1.1", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/config": "<4.3|>=5.0", - "symfony/finder": "<3.4", - "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" + "ext-psr": "<1.1|>=2", + "symfony/config": "<5.3", + "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|2.0" }, "require-dev": { - "symfony/config": "^4.3", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/config": "^5.3|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/config": "", @@ -2290,7 +2283,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/v4.4.34" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.2" }, "funding": [ { @@ -2306,7 +2299,7 @@ "type": "tidelift" } ], - "time": "2021-11-15T14:42:25+00:00" + "time": "2021-12-29T10:10:35+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2377,28 +2370,31 @@ }, { "name": "symfony/error-handler", - "version": "v4.4.34", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "17785c374645def1e884d8ec49976c156c61db4d" + "reference": "e0c0dd0f9d4120a20158fc9aec2367d07d38bc56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/17785c374645def1e884d8ec49976c156c61db4d", - "reference": "17785c374645def1e884d8ec49976c156c61db4d", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/e0c0dd0f9d4120a20158fc9aec2367d07d38bc56", + "reference": "e0c0dd0f9d4120a20158fc9aec2367d07d38bc56", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/debug": "^4.4.5", - "symfony/var-dumper": "^4.4|^5.0" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/http-kernel": "^4.4|^5.0", - "symfony/serializer": "^4.4|^5.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, + "bin": [ + "Resources/bin/patch-type-declarations" + ], "type": "library", "autoload": { "psr-4": { @@ -2425,7 +2421,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/v4.4.34" + "source": "https://github.com/symfony/error-handler/tree/v5.4.2" }, "funding": [ { @@ -2441,43 +2437,44 @@ "type": "tidelift" } ], - "time": "2021-11-12T14:57:39+00:00" + "time": "2021-12-19T20:02:00+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.34", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8" + "reference": "27d39ae126352b9fa3be5e196ccf4617897be3eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/27d39ae126352b9fa3be5e196ccf4617897be3eb", + "reference": "27d39ae126352b9fa3be5e196ccf4617897be3eb", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", "symfony/polyfill-php80": "^1.16" }, "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|^2|^3", - "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/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/dependency-injection": "", @@ -2509,7 +2506,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v4.4.34" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.0" }, "funding": [ { @@ -2525,33 +2522,33 @@ "type": "tidelift" } ], - "time": "2021-11-15T14:42:25+00:00" + "time": "2021-11-23T10:19:22+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.11", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c" + "reference": "aa5422287b75594b90ee9cd807caf8f0df491385" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", - "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/aa5422287b75594b90ee9cd807caf8f0df491385", + "reference": "aa5422287b75594b90ee9cd807caf8f0df491385", "shasum": "" }, "require": { - "php": ">=7.1.3" + "php": ">=8.0.2", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -2588,7 +2585,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.11" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.0.0" }, "funding": [ { @@ -2604,109 +2601,36 @@ "type": "tidelift" } ], - "time": "2021-03-23T15:25:38+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ec82e57b5b714dbb69300d348bd840b345e24166" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ec82e57b5b714dbb69300d348bd840b345e24166", - "reference": "ec82e57b5b714dbb69300d348bd840b345e24166", - "shasum": "" - }, - "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-03T09:24:47+00:00" + "time": "2021-07-15T12:33:35+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.34", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "f4cbbb6fc428588ce8373802461e7fe84e6809ab" + "reference": "ce952af52877eaf3eab5d0c08cc0ea865ed37313" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f4cbbb6fc428588ce8373802461e7fe84e6809ab", - "reference": "f4cbbb6fc428588ce8373802461e7fe84e6809ab", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ce952af52877eaf3eab5d0c08cc0ea865ed37313", + "reference": "ce952af52877eaf3eab5d0c08cc0ea865ed37313", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/mime": "^4.3|^5.0", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", "symfony/polyfill-php80": "^1.16" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" }, "type": "library", "autoload": { @@ -2734,7 +2658,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v4.4.34" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.2" }, "funding": [ { @@ -2750,61 +2674,69 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2021-12-28T17:15:56+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.35", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "fb793f1381c34b79a43596a532a6a49bd729c9db" + "reference": "35b7e9868953e0d1df84320bb063543369e43ef5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fb793f1381c34b79a43596a532a6a49bd729c9db", - "reference": "fb793f1381c34b79a43596a532a6a49bd729c9db", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/35b7e9868953e0d1df84320bb063543369e43ef5", + "reference": "35b7e9868953e0d1df84320bb063543369e43ef5", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-client-contracts": "^1.1|^2", - "symfony/http-foundation": "^4.4.30|^5.3.7", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.3.7|^6.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" }, "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.43|<2.13,>=2" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" }, "provide": { "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.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/translation-contracts": "^1.1|^2", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" }, "suggest": { "symfony/browser-kit": "", @@ -2838,7 +2770,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/v4.4.35" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.2" }, "funding": [ { @@ -2854,20 +2786,20 @@ "type": "tidelift" } ], - "time": "2021-11-24T08:40:10+00:00" + "time": "2021-12-29T13:20:26+00:00" }, { "name": "symfony/mime", - "version": "v5.4.0", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "d4365000217b67c01acff407573906ff91bcfb34" + "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d4365000217b67c01acff407573906ff91bcfb34", - "reference": "d4365000217b67c01acff407573906ff91bcfb34", + "url": "https://api.github.com/repos/symfony/mime/zipball/1bfd938cf9562822c05c4d00e8f92134d3c8e42d", + "reference": "1bfd938cf9562822c05c4d00e8f92134d3c8e42d", "shasum": "" }, "require": { @@ -2921,7 +2853,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.0" + "source": "https://github.com/symfony/mime/tree/v5.4.2" }, "funding": [ { @@ -2937,25 +2869,28 @@ "type": "tidelift" } ], - "time": "2021-11-23T10:19:22+00:00" + "time": "2021-12-28T17:15:56+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "reference": "30885182c981ab175d4d034db0f6f469898070ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", + "reference": "30885182c981ab175d4d034db0f6f469898070ab", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-ctype": "*" + }, "suggest": { "ext-ctype": "For best performance" }, @@ -3000,7 +2935,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0" }, "funding": [ { @@ -3016,25 +2951,28 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2021-10-20T20:35:02+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933" + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/63b5bb7db83e5673936d6e3b8b3e022ff6474933", - "reference": "63b5bb7db83e5673936d6e3b8b3e022ff6474933", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f1aed619e28cb077fc83fac8c4c0383578356e40", + "reference": "f1aed619e28cb077fc83fac8c4c0383578356e40", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-iconv": "*" + }, "suggest": { "ext-iconv": "For best performance" }, @@ -3080,7 +3018,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.24.0" }, "funding": [ { @@ -3096,20 +3034,101 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2022-01-04T09:04:05+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", + "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "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 for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-11-23T21:10:46+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65" + "reference": "749045c69efb97c70d25d7463abba812e91f3a44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/65bd267525e82759e7d8c4e8ceea44f398838e65", - "reference": "65bd267525e82759e7d8c4e8ceea44f398838e65", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", + "reference": "749045c69efb97c70d25d7463abba812e91f3a44", "shasum": "" }, "require": { @@ -3167,7 +3186,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0" }, "funding": [ { @@ -3183,11 +3202,11 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2021-09-14T14:02:44+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.23.0", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -3251,7 +3270,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0" }, "funding": [ { @@ -3271,21 +3290,24 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", + "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, "suggest": { "ext-mbstring": "For best performance" }, @@ -3331,7 +3353,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0" }, "funding": [ { @@ -3347,20 +3369,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2021-11-30T18:21:41+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "version": "v1.24.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", + "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", "shasum": "" }, "require": { @@ -3414,7 +3436,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" }, "funding": [ { @@ -3430,24 +3452,103 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2021-09-13T13:58:33+00:00" + }, + { + "name": "symfony/polyfill-php81", + "version": "v1.24.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "reference": "5de4ba2d41b15f9bd0e19b2ab9674135813ec98f", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.23-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.24.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-09-13T13:58:11+00:00" }, { "name": "symfony/process", - "version": "v4.4.35", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "c2098705326addae6e6742151dfade47ac71da1b" + "reference": "2b3ba8722c4aaf3e88011be5e7f48710088fb5e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c2098705326addae6e6742151dfade47ac71da1b", - "reference": "c2098705326addae6e6742151dfade47ac71da1b", + "url": "https://api.github.com/repos/symfony/process/zipball/2b3ba8722c4aaf3e88011be5e7f48710088fb5e4", + "reference": "2b3ba8722c4aaf3e88011be5e7f48710088fb5e4", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -3476,7 +3577,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v4.4.35" + "source": "https://github.com/symfony/process/tree/v5.4.2" }, "funding": [ { @@ -3492,7 +3593,7 @@ "type": "tidelift" } ], - "time": "2021-11-22T22:36:24+00:00" + "time": "2021-12-27T21:01:00+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -3584,38 +3685,39 @@ }, { "name": "symfony/routing", - "version": "v4.4.34", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366" + "reference": "9eeae93c32ca86746e5d38f3679e9569981038b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", - "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", + "url": "https://api.github.com/repos/symfony/routing/zipball/9eeae93c32ca86746e5d38f3679e9569981038b1", + "reference": "9eeae93c32ca86746e5d38f3679e9569981038b1", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "symfony/config": "<5.3", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12", "psr/log": "^1|^2|^3", - "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.3|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation loader", "symfony/config": "For using the all-in-one router or any loader", "symfony/expression-language": "For using expression matching", "symfony/http-foundation": "For using a Symfony Request object", @@ -3653,7 +3755,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.34" + "source": "https://github.com/symfony/routing/tree/v5.4.0" }, "funding": [ { @@ -3669,56 +3771,65 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2021-11-23T10:19:22+00:00" }, { "name": "symfony/serializer", - "version": "v4.4.35", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "1b2ae02cb1b923987947e013688c51954a80b751" + "reference": "2dba9731463e0bb4fa9568ce67887ed6fa08e9bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/1b2ae02cb1b923987947e013688c51954a80b751", - "reference": "1b2ae02cb1b923987947e013688c51954a80b751", + "url": "https://api.github.com/repos/symfony/serializer/zipball/2dba9731463e0bb4fa9568ce67887ed6fa08e9bc", + "reference": "2dba9731463e0bb4fa9568ce67887ed6fa08e9bc", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0|>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.3.0|1.3.*", - "symfony/dependency-injection": "<3.4", - "symfony/property-access": "<3.4", - "symfony/property-info": "<3.4", - "symfony/yaml": "<3.4" + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<3.2.2", + "phpdocumentor/type-resolver": "<1.4.0", + "symfony/dependency-injection": "<4.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.3", + "symfony/uid": "<5.3", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", + "doctrine/annotations": "^1.12", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.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", - "symfony/error-handler": "^4.4|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/mime": "^4.4|^5.0", - "symfony/property-access": "^3.4.41|^4.4.9|^5.0.9", - "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/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^5.4|^6.0", + "symfony/property-info": "^5.3|^6.0", + "symfony/uid": "^5.3|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping.", "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", @@ -3747,7 +3858,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/v4.4.35" + "source": "https://github.com/symfony/serializer/tree/v5.4.2" }, "funding": [ { @@ -3763,7 +3874,7 @@ "type": "tidelift" } ], - "time": "2021-11-24T08:12:42+00:00" + "time": "2021-12-25T19:17:31+00:00" }, { "name": "symfony/service-contracts", @@ -3849,55 +3960,43 @@ "time": "2021-11-04T16:48:04+00:00" }, { - "name": "symfony/translation", - "version": "v4.4.34", + "name": "symfony/string", + "version": "v6.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "26d330720627b234803595ecfc0191eeabc65190" + "url": "https://github.com/symfony/string.git", + "reference": "bae261d0c3ac38a1f802b4dfed42094296100631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/26d330720627b234803595ecfc0191eeabc65190", - "reference": "26d330720627b234803595ecfc0191eeabc65190", + "url": "https://api.github.com/repos/symfony/string/zipball/bae261d0c3ac38a1f802b4dfed42094296100631", + "reference": "bae261d0c3ac38a1f802b4dfed42094296100631", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1.6|^2" + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" - }, - "provide": { - "symfony/translation-implementation": "1.0|2.0" + "symfony/translation-contracts": "<2.0" }, "require-dev": { - "psr/log": "^1|^2|^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/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Translation\\": "" + "Symfony\\Component\\String\\": "" }, + "files": [ + "Resources/functions.php" + ], "exclude-from-classmap": [ "/Tests/" ] @@ -3908,18 +4007,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools to internationalize your application", + "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", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.34" + "source": "https://github.com/symfony/string/tree/v6.0.2" }, "funding": [ { @@ -3935,24 +4042,24 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2021-12-16T22:13:01+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.5.0", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" + "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/d28150f0f44ce854e942b671fc2620a98aae1b1e", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", + "reference": "1b6ea5a7442af5a12dba3dbd6d71034b5b234e77", "shasum": "" }, "require": { - "php": ">=7.2.5" + "php": ">=8.0.2" }, "suggest": { "symfony/translation-implementation": "" @@ -3960,7 +4067,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -3997,7 +4104,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.0.0" }, "funding": [ { @@ -4013,63 +4120,69 @@ "type": "tidelift" } ], - "time": "2021-08-17T14:20:01+00:00" + "time": "2021-09-07T12:43:40+00:00" }, { "name": "symfony/validator", - "version": "v4.4.35", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "629f420d8350634fd8ed686d4472c1f10044b265" + "reference": "6ad607e0bb8f3a8b04bf56fecb9a95ac55cea9a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/629f420d8350634fd8ed686d4472c1f10044b265", - "reference": "629f420d8350634fd8ed686d4472c1f10044b265", + "url": "https://api.github.com/repos/symfony/validator/zipball/6ad607e0bb8f3a8b04bf56fecb9a95ac55cea9a3", + "reference": "6ad607e0bb8f3a8b04bf56fecb9a95ac55cea9a3", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "~1.0", "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2" + "symfony/translation-contracts": "^1.1|^2|^3" }, "conflict": { - "doctrine/lexer": "<1.0.2", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/dependency-injection": "<3.4", + "doctrine/annotations": "<1.13", + "doctrine/cache": "<1.11", + "doctrine/lexer": "<1.1", + "phpunit/phpunit": "<5.4.3", + "symfony/dependency-injection": "<4.4", + "symfony/expression-language": "<5.1", "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.3", - "symfony/translation": ">=5.0", - "symfony/yaml": "<3.4" + "symfony/intl": "<4.4", + "symfony/property-info": "<5.3", + "symfony/translation": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4", - "doctrine/cache": "^1.0|^2.0", + "doctrine/annotations": "^1.13", + "doctrine/cache": "^1.11|^2.0", "egulias/email-validator": "^2.1.10|^3", - "symfony/cache": "^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/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/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^5.1|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.3|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" }, "suggest": { - "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", - "doctrine/cache": "For using the default cached annotation reader.", "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", @@ -4103,7 +4216,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.35" + "source": "https://github.com/symfony/validator/tree/v5.4.2" }, "funding": [ { @@ -4119,20 +4232,20 @@ "type": "tidelift" } ], - "time": "2021-11-22T21:43:32+00:00" + "time": "2021-12-21T11:59:32+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.0", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "89ab66eaef230c9cd1992de2e9a1b26652b127b9" + "reference": "1b56c32c3679002b3a42384a580e16e2600f41c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/89ab66eaef230c9cd1992de2e9a1b26652b127b9", - "reference": "89ab66eaef230c9cd1992de2e9a1b26652b127b9", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1b56c32c3679002b3a42384a580e16e2600f41c1", + "reference": "1b56c32c3679002b3a42384a580e16e2600f41c1", "shasum": "" }, "require": { @@ -4192,7 +4305,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.2" }, "funding": [ { @@ -4208,35 +4321,39 @@ "type": "tidelift" } ], - "time": "2021-11-29T15:30:56+00:00" + "time": "2021-12-29T10:10:35+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.34", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2c309e258adeb9970229042be39b360d34986fad" + "reference": "b9eb163846a61bb32dfc147f7859e274fab38b58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2c309e258adeb9970229042be39b360d34986fad", - "reference": "2c309e258adeb9970229042be39b360d34986fad", + "url": "https://api.github.com/repos/symfony/yaml/zipball/b9eb163846a61bb32dfc147f7859e274fab38b58", + "reference": "b9eb163846a61bb32dfc147f7859e274fab38b58", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" + "symfony/console": "^5.3|^6.0" }, "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "autoload": { "psr-4": { @@ -4263,7 +4380,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.34" + "source": "https://github.com/symfony/yaml/tree/v5.4.2" }, "funding": [ { @@ -4279,7 +4396,7 @@ "type": "tidelift" } ], - "time": "2021-11-18T18:49:23+00:00" + "time": "2021-12-16T21:58:21+00:00" }, { "name": "twig/twig", @@ -7526,28 +7643,28 @@ }, { "name": "symfony/browser-kit", - "version": "v4.4.27", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b" + "reference": "1fb93b0aab42392aa0a742db205173b49afaf80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", - "reference": "9629d1524d8ced5a4ec3e94abdbd638b4ec8319b", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/1fb93b0aab42392aa0a742db205173b49afaf80f", + "reference": "1fb93b0aab42392aa0a742db205173b49afaf80f", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "php": ">=7.2.5", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/http-client": "^4.3|^5.0", - "symfony/mime": "^4.3|^5.0", - "symfony/process": "^3.4|^4.0|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/process": "" @@ -7578,7 +7695,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v4.4.27" + "source": "https://github.com/symfony/browser-kit/tree/v5.4.2" }, "funding": [ { @@ -7594,24 +7711,24 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:19:41+00:00" + "time": "2021-12-16T21:58:21+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.27", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6" + "reference": "cfcbee910e159df402603502fe387e8b677c22fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6", - "reference": "5194f18bd80d106f11efa8f7cd0fbdcc3af96ce6", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/cfcbee910e159df402603502fe387e8b677c22fd", + "reference": "cfcbee910e159df402603502fe387e8b677c22fd", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -7644,7 +7761,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v4.4.27" + "source": "https://github.com/symfony/css-selector/tree/v5.4.2" }, "funding": [ { @@ -7660,24 +7777,25 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:19:41+00:00" + "time": "2021-12-16T21:58:21+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.30", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "4632ae3567746c7e915c33c67a2fb6ab746090c4" + "reference": "bb3bc3699779fc6d9646270789026a7e2cec7ec7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4632ae3567746c7e915c33c67a2fb6ab746090c4", - "reference": "4632ae3567746c7e915c33c67a2fb6ab746090c4", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/bb3bc3699779fc6d9646270789026a7e2cec7ec7", + "reference": "bb3bc3699779fc6d9646270789026a7e2cec7ec7", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php80": "^1.16" @@ -7687,7 +7805,7 @@ }, "require-dev": { "masterminds/html5": "^2.6", - "symfony/css-selector": "^3.4|^4.0|^5.0" + "symfony/css-selector": "^4.4|^5.0|^6.0" }, "suggest": { "symfony/css-selector": "" @@ -7718,7 +7836,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v4.4.30" + "source": "https://github.com/symfony/dom-crawler/tree/v5.4.2" }, "funding": [ { @@ -7734,25 +7852,26 @@ "type": "tidelift" } ], - "time": "2021-08-28T15:40:01+00:00" + "time": "2021-12-28T17:15:56+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.27", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "517fb795794faf29086a77d99eb8f35e457837a7" + "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/517fb795794faf29086a77d99eb8f35e457837a7", - "reference": "517fb795794faf29086a77d99eb8f35e457837a7", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/731f917dc31edcffec2c6a777f3698c33bea8f01", + "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -7781,7 +7900,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v4.4.27" + "source": "https://github.com/symfony/filesystem/tree/v5.4.0" }, "funding": [ { @@ -7797,24 +7916,25 @@ "type": "tidelift" } ], - "time": "2021-07-21T12:19:41+00:00" + "time": "2021-10-28T13:39:27+00:00" }, { "name": "symfony/finder", - "version": "v4.4.30", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "70362f1e112280d75b30087c7598b837c1b468b6" + "reference": "e77046c252be48c48a40816187ed527703c8f76c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/70362f1e112280d75b30087c7598b837c1b468b6", - "reference": "70362f1e112280d75b30087c7598b837c1b468b6", + "url": "https://api.github.com/repos/symfony/finder/zipball/e77046c252be48c48a40816187ed527703c8f76c", + "reference": "e77046c252be48c48a40816187ed527703c8f76c", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "type": "library", @@ -7843,7 +7963,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v4.4.30" + "source": "https://github.com/symfony/finder/tree/v5.4.2" }, "funding": [ { @@ -7859,32 +7979,33 @@ "type": "tidelift" } ], - "time": "2021-08-04T20:31:23+00:00" + "time": "2021-12-15T11:06:13+00:00" }, { "name": "symfony/lock", - "version": "v4.4.33", + "version": "v5.4.2", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "567d29b1bc6e3937652054dafc069151d17824a9" + "reference": "5e1d6adfff3b2586f2854188dd2fc35afe42dd59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/567d29b1bc6e3937652054dafc069151d17824a9", - "reference": "567d29b1bc6e3937652054dafc069151d17824a9", + "url": "https://api.github.com/repos/symfony/lock/zipball/5e1d6adfff3b2586f2854188dd2fc35afe42dd59", + "reference": "5e1d6adfff3b2586f2854188dd2fc35afe42dd59", "shasum": "" }, "require": { - "php": ">=7.1.3", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-php80": "^1.16" }, "conflict": { - "doctrine/dbal": "<2.6" + "doctrine/dbal": "<2.13" }, "require-dev": { - "doctrine/dbal": "^2.6|^3.0", + "doctrine/dbal": "^2.13|^3.0", "predis/predis": "~1.0" }, "type": "library", @@ -7921,7 +8042,7 @@ "semaphore" ], "support": { - "source": "https://github.com/symfony/lock/tree/v4.4.33" + "source": "https://github.com/symfony/lock/tree/v5.4.2" }, "funding": [ { @@ -7937,7 +8058,7 @@ "type": "tidelift" } ], - "time": "2021-10-05T20:27:01+00:00" + "time": "2021-12-29T10:12:08+00:00" }, { "name": "symfony/phpunit-bridge", @@ -8145,5 +8266,5 @@ "platform-overrides": { "php": "8.0.2" }, - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.2.0" } diff --git a/composer/Metapackage/CoreRecommended/composer.json b/composer/Metapackage/CoreRecommended/composer.json index 88b05f6b2183..853c61733196 100644 --- a/composer/Metapackage/CoreRecommended/composer.json +++ b/composer/Metapackage/CoreRecommended/composer.json @@ -26,39 +26,40 @@ "pear/pear_exception": "v1.0.2", "psr/cache": "1.0.1", "psr/container": "1.1.1", + "psr/event-dispatcher": "1.0.0", "psr/http-client": "1.0.1", "psr/http-factory": "1.0.1", "psr/http-message": "1.0.1", "psr/log": "1.1.4", "ralouphie/getallheaders": "3.0.3", "stack/builder": "v1.0.6", - "symfony/console": "v4.4.34", - "symfony/debug": "v4.4.31", - "symfony/dependency-injection": "v4.4.34", + "symfony/console": "v5.4.2", + "symfony/dependency-injection": "v5.4.2", "symfony/deprecation-contracts": "v2.5.0", - "symfony/error-handler": "v4.4.34", - "symfony/event-dispatcher": "v4.4.34", - "symfony/event-dispatcher-contracts": "v1.1.11", - "symfony/http-client-contracts": "v2.5.0", - "symfony/http-foundation": "v4.4.34", - "symfony/http-kernel": "v4.4.35", - "symfony/mime": "v5.4.0", - "symfony/polyfill-ctype": "v1.23.0", - "symfony/polyfill-iconv": "v1.23.0", - "symfony/polyfill-intl-idn": "v1.23.0", - "symfony/polyfill-intl-normalizer": "v1.23.0", - "symfony/polyfill-mbstring": "v1.23.1", - "symfony/polyfill-php80": "v1.23.1", - "symfony/process": "v4.4.35", + "symfony/error-handler": "v5.4.2", + "symfony/event-dispatcher": "v5.4.0", + "symfony/event-dispatcher-contracts": "v3.0.0", + "symfony/http-foundation": "v5.4.2", + "symfony/http-kernel": "v5.4.2", + "symfony/mime": "v5.4.2", + "symfony/polyfill-ctype": "v1.24.0", + "symfony/polyfill-iconv": "v1.24.0", + "symfony/polyfill-intl-grapheme": "v1.24.0", + "symfony/polyfill-intl-idn": "v1.24.0", + "symfony/polyfill-intl-normalizer": "v1.24.0", + "symfony/polyfill-mbstring": "v1.24.0", + "symfony/polyfill-php80": "v1.24.0", + "symfony/polyfill-php81": "v1.24.0", + "symfony/process": "v5.4.2", "symfony/psr-http-message-bridge": "v2.1.2", - "symfony/routing": "v4.4.34", - "symfony/serializer": "v4.4.35", + "symfony/routing": "v5.4.0", + "symfony/serializer": "v5.4.2", "symfony/service-contracts": "v2.5.0", - "symfony/translation": "v4.4.34", - "symfony/translation-contracts": "v2.5.0", - "symfony/validator": "v4.4.35", - "symfony/var-dumper": "v5.4.0", - "symfony/yaml": "v4.4.34", + "symfony/string": "v6.0.2", + "symfony/translation-contracts": "v3.0.0", + "symfony/validator": "v5.4.2", + "symfony/var-dumper": "v5.4.2", + "symfony/yaml": "v5.4.2", "twig/twig": "v3.3.7", "typo3/phar-stream-wrapper": "v3.1.7" } diff --git a/composer/Metapackage/DevDependencies/composer.json b/composer/Metapackage/DevDependencies/composer.json index 2c50609ec89a..3ed3c24e65f8 100644 --- a/composer/Metapackage/DevDependencies/composer.json +++ b/composer/Metapackage/DevDependencies/composer.json @@ -18,13 +18,13 @@ "mikey179/vfsstream": "^1.6.8", "phpspec/prophecy-phpunit": "^2", "phpunit/phpunit": "^9.5", - "symfony/browser-kit": "^4.4", - "symfony/css-selector": "^4.4", - "symfony/dom-crawler": "^4.4 !=4.4.5", - "symfony/error-handler": "^4.4", - "symfony/filesystem": "^4.4", - "symfony/finder": "^4.4", - "symfony/lock": "^4.4", + "symfony/browser-kit": "^5.4", + "symfony/css-selector": "^5.4", + "symfony/dom-crawler": "^5.4", + "symfony/error-handler": "^5.4", + "symfony/filesystem": "^5.4", + "symfony/finder": "^5.4", + "symfony/lock": "^5.4", "symfony/phpunit-bridge": "^5.4", "symfony/var-dumper": "^5.4" } diff --git a/composer/Metapackage/PinnedDevDependencies/composer.json b/composer/Metapackage/PinnedDevDependencies/composer.json index efd325335412..60b30be386c4 100644 --- a/composer/Metapackage/PinnedDevDependencies/composer.json +++ b/composer/Metapackage/PinnedDevDependencies/composer.json @@ -58,12 +58,12 @@ "seld/phar-utils": "1.1.2", "sirbrillig/phpcs-variable-analysis": "v2.11.2", "squizlabs/php_codesniffer": "3.6.1", - "symfony/browser-kit": "v4.4.27", - "symfony/css-selector": "v4.4.27", - "symfony/dom-crawler": "v4.4.30", - "symfony/filesystem": "v4.4.27", - "symfony/finder": "v4.4.30", - "symfony/lock": "v4.4.33", + "symfony/browser-kit": "v5.4.2", + "symfony/css-selector": "v5.4.2", + "symfony/dom-crawler": "v5.4.2", + "symfony/filesystem": "v5.4.0", + "symfony/finder": "v5.4.2", + "symfony/lock": "v5.4.2", "symfony/phpunit-bridge": "v5.4.0", "theseer/tokenizer": "1.2.1", "webmozart/assert": "1.10.0" diff --git a/composer/Plugin/VendorHardening/Config.php b/composer/Plugin/VendorHardening/Config.php index b1c79e6e23d3..600da2461778 100644 --- a/composer/Plugin/VendorHardening/Config.php +++ b/composer/Plugin/VendorHardening/Config.php @@ -64,7 +64,6 @@ class Config { 'symfony/browser-kit' => ['Tests'], 'symfony/console' => ['Tests'], 'symfony/css-selector' => ['Tests'], - 'symfony/debug' => ['Tests'], 'symfony/dependency-injection' => ['Tests'], 'symfony/dom-crawler' => ['Tests'], 'symfony/filesystem' => ['Tests'], @@ -77,7 +76,6 @@ class Config { 'symfony/psr-http-message-bridge' => ['Tests'], 'symfony/routing' => ['Tests'], 'symfony/serializer' => ['Tests'], - 'symfony/translation' => ['Tests'], 'symfony/var-dumper' => ['Tests'], 'symfony/validator' => ['Tests', 'Resources'], 'symfony/yaml' => ['Tests'], diff --git a/core/composer.json b/core/composer.json index 1e3a3ab50771..185fe304e164 100644 --- a/core/composer.json +++ b/core/composer.json @@ -18,20 +18,19 @@ "ext-tokenizer": "*", "ext-xml": "*", "php": ">=8.0.2", - "symfony/console": "^4.4", - "symfony/dependency-injection": "^4.4", - "symfony/event-dispatcher": "^4.4", - "symfony/http-foundation": "^4.4.7", - "symfony/http-kernel": "^4.4", + "symfony/console": "^5.4", + "symfony/dependency-injection": "^5.4", + "symfony/event-dispatcher": "^5.4", + "symfony/http-foundation": "^5.4", + "symfony/http-kernel": "^5.4", "symfony/mime": "^5.4", - "symfony/routing": "^4.4", - "symfony/serializer": "^4.4", - "symfony/translation": "^4.4", - "symfony/validator": "^4.4", - "symfony/process": "^4.4", + "symfony/routing": "^5.4", + "symfony/serializer": "^5.4", + "symfony/validator": "^5.4", + "symfony/process": "^5.4", "symfony/polyfill-iconv": "^1.0", "symfony/polyfill-php80": "^1.16", - "symfony/yaml": "^4.4.19", + "symfony/yaml": "^5.4", "typo3/phar-stream-wrapper": "^3.1.3", "twig/twig": "^3.0", "doctrine/annotations": "^1.12", diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 2a28d04e0873..3e12c53beb03 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -6,14 +6,11 @@ */ use Drupal\Component\Utility\Crypt; -use Drupal\Core\Http\InputBag; use Drupal\Core\Logger\RfcLogLevel; use Drupal\Core\Test\TestDatabase; use Drupal\Core\Utility\Error; use Drupal\Core\StringTranslation\TranslatableMarkup; use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpFoundation\InputBag as SymfonyInputBag; /** * Minimum allowed version of PHP for Drupal to be bootstrapped. @@ -126,30 +123,6 @@ */ define('DRUPAL_ROOT', dirname(__DIR__, 2)); -/** - * Declare class aliases that will be added by the autoloader. - */ -// @todo https://www.drupal.org/project/drupal/issues/3197482 Remove this class -// alias once Drupal is running Symfony 5.3 or higher. -class_alias('Drupal\Core\Http\KernelEvent', 'Symfony\Component\HttpKernel\Event\KernelEvent', TRUE); - -/** - * Set up the Symfony Request factory for forward compatibility with Symfony 5. - * - * @todo Remove this when Symfony 4 is no longer supported. - */ -Request::setFactory( - function ($query, $request, $attributes, $cookies, $files, $server, $content) { - $request = new Request($query, $request, $attributes, $cookies, $files, $server, $content); - foreach (['request', 'query', 'cookies'] as $bag) { - if (!($bag instanceof SymfonyInputBag)) { - $request->$bag = new InputBag($request->$bag->all()); - } - } - return $request; - } -); - /** * Returns and optionally sets the filename for a system resource. * diff --git a/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php b/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php index 323b8e37f29b..9d6ac424b91d 100644 --- a/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php +++ b/core/lib/Drupal/Component/EventDispatcher/ContainerAwareEventDispatcher.php @@ -3,11 +3,8 @@ namespace Drupal\Component\EventDispatcher; use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\EventDispatcher\Event; use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Contracts\EventDispatcher\Event as ContractsEvent; -use Symfony\Contracts\EventDispatcher\EventDispatcherInterface as ContractsEventDispatcherInterface; /** * A performance optimized container aware event dispatcher. @@ -88,39 +85,8 @@ public function __construct(ContainerInterface $container, array $listeners = [] /** * {@inheritdoc} */ - public function dispatch($event/*, string $event_name = NULL*/) { - $event_name = 1 < \func_num_args() ? func_get_arg(1) : NULL; - if (\is_object($event)) { - $class_name = get_class($event); - $event_name = $event_name ?? $class_name; - - $deprecation_message = 'Symfony\Component\EventDispatcher\Event is deprecated in drupal:9.1.0 and will be replaced by Symfony\Contracts\EventDispatcher\Event in drupal:10.0.0. A new Drupal\Component\EventDispatcher\Event class is available to bridge the two versions of the class. See https://www.drupal.org/node/3159012'; - - // Trigger a deprecation error if the deprecated Event class is used - // directly. - if ($class_name === 'Symfony\Component\EventDispatcher\Event') { - @trigger_error($deprecation_message, E_USER_DEPRECATED); - } - // Also try to trigger deprecation errors when classes are in the Drupal - // namespace and inherit directly from the deprecated class. If a class is - // in the Symfony namespace or a different one, we have to assume those - // will be updated by the dependency itself. Exclude the Drupal Event - // bridge class as a special case, otherwise it's pointless. - elseif ($class_name !== 'Drupal\Component\EventDispatcher\Event' && strpos($class_name, 'Drupal') !== FALSE) { - if (get_parent_class($event) === 'Symfony\Component\EventDispatcher\Event') { - @trigger_error($deprecation_message, E_USER_DEPRECATED); - } - } - } - elseif (\is_string($event) && (NULL === $event_name || $event_name instanceof ContractsEvent || $event_name instanceof Event)) { - @trigger_error('Calling the Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch() method with a string event name as the first argument is deprecated in drupal:9.1.0, an Event object will be required instead in drupal:10.0.0. See https://www.drupal.org/node/3154407', E_USER_DEPRECATED); - $swap = $event; - $event = $event_name ?? new Event(); - $event_name = $swap; - } - else { - throw new \TypeError(sprintf('Argument 1 passed to "%s::dispatch()" must be an object, %s given.', ContractsEventDispatcherInterface::class, \gettype($event))); - } + public function dispatch(object $event, ?string $eventName = NULL): object { + $event_name = $eventName ?? get_class($event); if (isset($this->listeners[$event_name])) { // Sort listeners if necessary. diff --git a/core/lib/Drupal/Component/EventDispatcher/Event.php b/core/lib/Drupal/Component/EventDispatcher/Event.php index 5d6dfe017e39..4586c7358893 100644 --- a/core/lib/Drupal/Component/EventDispatcher/Event.php +++ b/core/lib/Drupal/Component/EventDispatcher/Event.php @@ -2,7 +2,7 @@ namespace Drupal\Component\EventDispatcher; -use Symfony\Component\EventDispatcher\Event as SymfonyEvent; +use Symfony\Contracts\EventDispatcher\Event as SymfonyEvent; /** * Provides a forward-compatibility layer for the Symfony 5 event class. diff --git a/core/lib/Drupal/Core/Composer/Composer.php b/core/lib/Drupal/Core/Composer/Composer.php index 9719d6c40ebf..ccd3dc47a86d 100644 --- a/core/lib/Drupal/Core/Composer/Composer.php +++ b/core/lib/Drupal/Core/Composer/Composer.php @@ -60,7 +60,6 @@ class Composer { 'symfony/browser-kit' => ['Tests'], 'symfony/console' => ['Tests'], 'symfony/css-selector' => ['Tests'], - 'symfony/debug' => ['Tests'], 'symfony/dependency-injection' => ['Tests'], 'symfony/dom-crawler' => ['Tests'], 'symfony/filesystem' => ['Tests'], @@ -74,7 +73,6 @@ class Composer { 'symfony/psr-http-message-bridge' => ['Tests'], 'symfony/routing' => ['Tests'], 'symfony/serializer' => ['Tests'], - 'symfony/translation' => ['Tests'], 'symfony/validator' => ['Tests', 'Resources'], 'symfony/yaml' => ['Tests'], 'theseer/tokenizer' => ['tests'], diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/DeprecatedServicePass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/DeprecatedServicePass.php index 92d1d97a68dd..7f1759d8ceac 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/DeprecatedServicePass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/DeprecatedServicePass.php @@ -20,7 +20,7 @@ public function process(ContainerBuilder $container) { foreach ($container->getDefinitions() as $service_id => $definition) { if ($definition->isDeprecated()) { // @todo: remove when Drupal requires Symfony 5. See - // https://www.drupal.org/project/drupal/issues/3197482 + // https://www.drupal.org/project/drupal/issues/3197729 if (method_exists($definition, 'getDeprecation')) { $deprecated_services[$service_id] = $definition->getDeprecation($service_id)['message']; } @@ -32,7 +32,7 @@ public function process(ContainerBuilder $container) { foreach ($container->getAliases() as $service_id => $definition) { if ($definition->isDeprecated()) { // @todo: remove when Drupal requires Symfony 5. See - // https://www.drupal.org/project/drupal/issues/3197482 + // https://www.drupal.org/project/drupal/issues/3197729 if (method_exists($definition, 'getDeprecation')) { $deprecated_services[$service_id] = $definition->getDeprecation($service_id)['message']; } diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php index 5daa81a65587..6c0380a310a5 100644 --- a/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php +++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/MimeTypePass.php @@ -6,7 +6,6 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\LogicException; use Symfony\Component\DependencyInjection\Reference; -use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface as LegacyMimeTypeGuesserInterface; use Symfony\Component\Mime\MimeTypeGuesserInterface; /** @@ -29,7 +28,6 @@ public function process(ContainerBuilder $container) { $tag = 'mime_type_guesser'; $interface = MimeTypeGuesserInterface::class; - $deprecated_interface = LegacyMimeTypeGuesserInterface::class; // Find all tagged handlers. $handlers = []; @@ -37,10 +35,7 @@ public function process(ContainerBuilder $container) { // Validate the interface. $handler = $container->getDefinition($id); if (!is_subclass_of($handler->getClass(), $interface)) { - // Special handling for $deprecated_interface. - if (!is_subclass_of($handler->getClass(), $deprecated_interface)) { - throw new LogicException("Service '$id' does not implement $interface."); - } + throw new LogicException("Service '$id' does not implement $interface."); } $handlers[$id] = $attributes[0]['priority'] ?? 0; $interfaces[$id] = $handler->getClass(); @@ -56,12 +51,7 @@ public function process(ContainerBuilder $container) { // definition. foreach ($handlers as $id => $priority) { $arguments = [new Reference($id), $priority]; - if (is_subclass_of($interfaces[$id], $interface)) { - $consumer->addMethodCall('addMimeTypeGuesser', $arguments); - } - else { - $consumer->addMethodCall('addGuesser', $arguments); - } + $consumer->addMethodCall('addMimeTypeGuesser', $arguments); } } diff --git a/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php b/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php index 5174d3818e81..58dfe6d12f37 100644 --- a/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php +++ b/core/lib/Drupal/Core/DependencyInjection/ContainerBuilder.php @@ -108,23 +108,6 @@ public function setAlias($alias, $id): Alias { return $alias; } - /** - * {@inheritdoc} - */ - public function setDefinition($id, Definition $definition): Definition { - $definition = parent::setDefinition($id, $definition); - // As of Symfony 3.4 all definitions are private by default. - // \Symfony\Component\DependencyInjection\Compiler\ResolvePrivatesPassOnly - // removes services marked as private from the container even if they are - // also marked as public. Drupal requires services that are public to - // remain in the container and not be removed. - if ($definition->isPublic() && $definition->isPrivate()) { - @trigger_error('Not marking service definitions as public is deprecated in drupal:9.2.0 and is required in drupal:10.0.0. Call $definition->setPublic(TRUE) before calling ::setDefinition(). See https://www.drupal.org/node/3194517', E_USER_DEPRECATED); - $definition->setPrivate(FALSE); - } - return $definition; - } - /** * {@inheritdoc} */ diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php index d9c18029994a..2eea7f987c64 100644 --- a/core/lib/Drupal/Core/DrupalKernel.php +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -17,7 +17,6 @@ use Drupal\Core\DependencyInjection\YamlFileLoader; use Drupal\Core\Extension\Extension; use Drupal\Core\Extension\ExtensionDiscovery; -use Drupal\Core\File\MimeType\MimeTypeGuesser; use Drupal\Core\Http\TrustedHostsRequestFactory; use Drupal\Core\Installer\InstallerKernel; use Drupal\Core\Installer\InstallerRedirectTrait; @@ -597,9 +596,6 @@ public function preHandle(Request $request) { // Set the allowed protocols. UrlHelper::setAllowedProtocols($this->container->getParameter('filter_protocols')); - // Override of Symfony's MIME type guesser singleton. - MimeTypeGuesser::registerWithSymfonyGuesser($this->container); - $this->prepared = TRUE; } diff --git a/core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php b/core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php index d8ec40554230..57b7468c1467 100644 --- a/core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php +++ b/core/lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php @@ -3,13 +3,12 @@ namespace Drupal\Core\File\MimeType; use Drupal\Core\Extension\ModuleHandlerInterface; -use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface as LegacyMimeTypeGuesserInterface; use Symfony\Component\Mime\MimeTypeGuesserInterface; /** * Makes possible to guess the MIME type of a file using its extension. */ -class ExtensionMimeTypeGuesser implements MimeTypeGuesserInterface, LegacyMimeTypeGuesserInterface { +class ExtensionMimeTypeGuesser implements MimeTypeGuesserInterface { /** * Default MIME extension mapping. diff --git a/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php b/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php index 90a2c4257e3b..dab20cabfbed 100644 --- a/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php +++ b/core/lib/Drupal/Core/File/MimeType/MimeTypeGuesser.php @@ -3,15 +3,12 @@ namespace Drupal\Core\File\MimeType; use Drupal\Core\StreamWrapper\StreamWrapperManagerInterface; -use Symfony\Component\DependencyInjection\ContainerInterface; -use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser as SymfonyMimeTypeGuesser; -use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface as LegacyMimeTypeGuesserInterface; -use Symfony\Component\Mime\MimeTypeGuesserInterface as MimeTypeGuesserInterface; +use Symfony\Component\Mime\MimeTypeGuesserInterface; /** * Defines a MIME type guesser that also supports stream wrapper paths. */ -class MimeTypeGuesser implements LegacyMimeTypeGuesserInterface, MimeTypeGuesserInterface { +class MimeTypeGuesser implements MimeTypeGuesserInterface { /** * An array of arrays of registered guessers keyed by priority. @@ -104,29 +101,6 @@ public function addMimeTypeGuesser(MimeTypeGuesserInterface $guesser, $priority return $this; } - /** - * Appends a MIME type guesser to the guessers chain. - * - * @param \Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface $guesser - * The guesser to be appended. - * @param int $priority - * The priority of the guesser being added. - * - * @return $this - * - * @deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use - * ::addMimeTypeGuesser() instead. - * - * @see https://www.drupal.org/node/3133341 - */ - public function addGuesser(LegacyMimeTypeGuesserInterface $guesser, $priority = 0) { - @trigger_error(__METHOD__ . ' is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use ::addMimeTypeGuesser() instead. See https://www.drupal.org/node/3133341', E_USER_DEPRECATED); - $this->guessers[$priority][] = $guesser; - // Mark sorted guessers for rebuild. - $this->sortedGuessers = NULL; - return $this; - } - /** * {@inheritdoc} */ @@ -150,20 +124,4 @@ protected function sortGuessers() { return $sorted; } - /** - * A helper function to register with Symfony's singleton MIME type guesser. - * - * Symfony's default mimetype guessers have dependencies on PHP's fileinfo - * extension or being able to run the system command file. Drupal's guesser - * does not have these dependencies. - * - * @see \Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser - */ - public static function registerWithSymfonyGuesser(ContainerInterface $container) { - // Reset state, so we do not store more and more services during test runs. - SymfonyMimeTypeGuesser::reset(); - $singleton = SymfonyMimeTypeGuesser::getInstance(); - $singleton->register($container->get('file.mime_type.guesser')); - } - } diff --git a/core/lib/Drupal/Core/Http/KernelEvent.php b/core/lib/Drupal/Core/Http/KernelEvent.php deleted file mode 100644 index 301f31aab33b..000000000000 --- a/core/lib/Drupal/Core/Http/KernelEvent.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -// @codingStandardsIgnoreFile -// cspell:disable - -namespace Drupal\Core\Http; - -use Drupal\Component\EventDispatcher\Event; -use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\HttpKernelInterface; - -/** - * Symfony 6 bridge. - * - * This is a copy of Symfony\Component\HttpKernel\Event\KernelEvent - * with two changes: adding an ::isMainRequest() method for forward - * compatibility with Symfony 5.3+, and issuing a deprecation message from - * ::isMasterRequest(). - */ -class KernelEvent extends Event -{ - private $kernel; - private $request; - private $requestType; - - /** - * @param int $requestType The request type the kernel is currently processing; one of - * HttpKernelInterface::MASTER_REQUEST or HttpKernelInterface::SUB_REQUEST - */ - public function __construct(HttpKernelInterface $kernel, Request $request, ?int $requestType) - { - $this->kernel = $kernel; - $this->request = $request; - $this->requestType = $requestType; - } - - /** - * Returns the kernel in which this event was thrown. - * - * @return HttpKernelInterface - */ - public function getKernel() - { - return $this->kernel; - } - - /** - * Returns the request the kernel is currently processing. - * - * @return Request - */ - public function getRequest() - { - return $this->request; - } - - /** - * Returns the request type the kernel is currently processing. - * - * @return int One of HttpKernelInterface::MASTER_REQUEST and - * HttpKernelInterface::SUB_REQUEST - */ - public function getRequestType() - { - return $this->requestType; - } - - /** - * Checks if this is a master request. - * - * @return bool True if the request is a master request - */ - public function isMasterRequest() - { - @trigger_error('Symfony\Component\HttpKernel\Event\KernelEvent::isMasterRequest() is deprecated, use isMainRequest()', E_USER_DEPRECATED); - return HttpKernelInterface::MASTER_REQUEST === $this->requestType; - } - - /** - * Checks if this is a main request. - * - * @return bool True if the request is a main request - */ - public function isMainRequest() - { - return HttpKernelInterface::MASTER_REQUEST === $this->requestType; - } -} diff --git a/core/lib/Drupal/Core/Http/RequestStack.php b/core/lib/Drupal/Core/Http/RequestStack.php index 328550069a08..604c5b3282cd 100644 --- a/core/lib/Drupal/Core/Http/RequestStack.php +++ b/core/lib/Drupal/Core/Http/RequestStack.php @@ -30,7 +30,7 @@ public function getMainRequest(): ?Request { /** * {@inheritdoc} */ - public function getMasterRequest() { + public function getMasterRequest(): ?Request { @trigger_error('Drupal\Core\Http\RequestStack::getMasterRequest() is deprecated, use getMainRequest() instead.', E_USER_DEPRECATED); return $this->getMainRequest(); } diff --git a/core/lib/Drupal/Core/Http/TrustedHostsRequestFactory.php b/core/lib/Drupal/Core/Http/TrustedHostsRequestFactory.php index 7c46418138e4..f1ddd55a7470 100644 --- a/core/lib/Drupal/Core/Http/TrustedHostsRequestFactory.php +++ b/core/lib/Drupal/Core/Http/TrustedHostsRequestFactory.php @@ -2,7 +2,6 @@ namespace Drupal\Core\Http; -use Symfony\Component\HttpFoundation\InputBag as SymfonyInputBag; use Symfony\Component\HttpFoundation\Request; /** @@ -62,17 +61,7 @@ public function createRequest(array $query = [], array $request = [], array $att if (empty($server['HTTP_HOST']) || ($server['HTTP_HOST'] === 'localhost' && $this->host !== 'localhost')) { $server['HTTP_HOST'] = $this->host; } - $request = new Request($query, $request, $attributes, $cookies, $files, $server, $content); - - // Replace ParameterBag with InputBag for compatibility with Symfony 5. - // @todo Remove this when Symfony 4 is no longer supported. - foreach (['request', 'query', 'cookies'] as $bag) { - if (!($bag instanceof SymfonyInputBag)) { - $request->$bag = new InputBag($request->$bag->all()); - } - } - - return $request; + return new Request($query, $request, $attributes, $cookies, $files, $server, $content); } } diff --git a/core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php b/core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php index 760323619893..8cb8b4f59cc8 100644 --- a/core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php +++ b/core/lib/Drupal/Core/ProxyClass/File/MimeType/ExtensionMimeTypeGuesser.php @@ -12,7 +12,7 @@ * * @see \Drupal\Component\ProxyBuilder */ - class ExtensionMimeTypeGuesser implements \Symfony\Component\Mime\MimeTypeGuesserInterface, \Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface + class ExtensionMimeTypeGuesser implements \Symfony\Component\Mime\MimeTypeGuesserInterface { use \Drupal\Core\DependencyInjection\DependencySerializationTrait; @@ -78,7 +78,7 @@ public function guess($path) /** * {@inheritdoc} */ - public function guessMimeType($path): string + public function guessMimeType($path): ?string { return $this->lazyLoadItself()->guessMimeType($path); } diff --git a/core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php b/core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php index ad7f37fda131..1bea10a4c82c 100644 --- a/core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php +++ b/core/lib/Drupal/Core/ProxyClass/File/MimeType/MimeTypeGuesser.php @@ -12,7 +12,7 @@ * * @see \Drupal\Component\ProxyBuilder */ - class MimeTypeGuesser implements \Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface, \Symfony\Component\Mime\MimeTypeGuesserInterface + class MimeTypeGuesser implements \Symfony\Component\Mime\MimeTypeGuesserInterface { use \Drupal\Core\DependencyInjection\DependencySerializationTrait; @@ -70,7 +70,7 @@ protected function lazyLoadItself() /** * {@inheritdoc} */ - public function guessMimeType(string $path): string + public function guessMimeType(string $path): ?string { return $this->lazyLoadItself()->guessMimeType($path); } @@ -86,19 +86,11 @@ public function guess($path) /** * {@inheritdoc} */ - public function addMimeTypeGuesser($guesser, $priority = 0) + public function addMimeTypeGuesser(\Symfony\Component\Mime\MimeTypeGuesserInterface $guesser, $priority = 0) { return $this->lazyLoadItself()->addMimeTypeGuesser($guesser, $priority); } - /** - * {@inheritdoc} - */ - public function addGuesser(\Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface $guesser, $priority = 0) - { - return $this->lazyLoadItself()->addGuesser($guesser, $priority); - } - /** * {@inheritdoc} */ @@ -107,14 +99,6 @@ public function isGuesserSupported(): bool return $this->lazyLoadItself()->isGuesserSupported(); } - /** - * {@inheritdoc} - */ - public static function registerWithSymfonyGuesser(\Symfony\Component\DependencyInjection\ContainerInterface $container) - { - \Drupal\Core\File\MimeType\MimeTypeGuesser::registerWithSymfonyGuesser($container); - } - } } diff --git a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php index 44fd2bd40704..8918f174e711 100644 --- a/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php +++ b/core/modules/rest/tests/src/Functional/EntityResource/EntityResourceTestBase.php @@ -437,7 +437,7 @@ public function testGet() { $this->assertResourceErrorResponse(403, $this->getExpectedUnauthorizedAccessMessage('GET'), $response, $expected_cacheability->getCacheTags(), $expected_cacheability->getCacheContexts(), 'MISS', FALSE); } else { - $this->assertResourceErrorResponse(404, 'No route found for "GET ' . str_replace($this->baseUrl, '', $this->getEntityResourceUrl()->setAbsolute()->toString()) . '"', $response); + $this->assertResourceErrorResponse(404, 'No route found for "GET ' . $this->getEntityResourceUrl()->setAbsolute()->toString() . '"', $response); } $this->provisionEntityResource(); @@ -723,7 +723,7 @@ public function testPost() { // DX: 404 when resource not provisioned. $response = $this->request('POST', $url, $request_options); - $this->assertResourceErrorResponse(404, 'No route found for "POST ' . str_replace($this->baseUrl, '', $this->getEntityResourcePostUrl()->setAbsolute()->toString()) . '"', $response); + $this->assertResourceErrorResponse(404, 'No route found for "POST ' . $this->getEntityResourcePostUrl()->setAbsolute()->toString() . '"', $response); $this->provisionEntityResource(); // Simulate the developer again forgetting the ?_format query string. @@ -913,10 +913,10 @@ public function testPatch() { // DX: 404 when resource not provisioned, 405 if canonical route. $response = $this->request('PATCH', $url, $request_options); if ($has_canonical_url) { - $this->assertResourceErrorResponse(405, 'No route found for "PATCH ' . str_replace($this->baseUrl, '', $this->getEntityResourceUrl()->setAbsolute()->toString()) . '": Method Not Allowed (Allow: GET, POST, HEAD)', $response); + $this->assertResourceErrorResponse(405, 'No route found for "PATCH ' . $this->getEntityResourceUrl()->setAbsolute()->toString() . '": Method Not Allowed (Allow: GET, POST, HEAD)', $response); } else { - $this->assertResourceErrorResponse(404, 'No route found for "PATCH ' . str_replace($this->baseUrl, '', $this->getEntityResourceUrl()->setAbsolute()->toString()) . '"', $response); + $this->assertResourceErrorResponse(404, 'No route found for "PATCH ' . $this->getEntityResourceUrl()->setAbsolute()->toString() . '"', $response); } $this->provisionEntityResource(); @@ -1140,10 +1140,10 @@ public function testDelete() { $response = $this->request('DELETE', $url, $request_options); if ($has_canonical_url) { $this->assertSame(['GET, POST, HEAD'], $response->getHeader('Allow')); - $this->assertResourceErrorResponse(405, 'No route found for "DELETE ' . str_replace($this->baseUrl, '', $this->getEntityResourceUrl()->setAbsolute()->toString()) . '": Method Not Allowed (Allow: GET, POST, HEAD)', $response); + $this->assertResourceErrorResponse(405, 'No route found for "DELETE ' . $this->getEntityResourceUrl()->setAbsolute()->toString() . '": Method Not Allowed (Allow: GET, POST, HEAD)', $response); } else { - $this->assertResourceErrorResponse(404, 'No route found for "DELETE ' . str_replace($this->baseUrl, '', $this->getEntityResourceUrl()->setAbsolute()->toString()) . '"', $response); + $this->assertResourceErrorResponse(404, 'No route found for "DELETE ' . $this->getEntityResourceUrl()->setAbsolute()->toString() . '"', $response); } $this->provisionEntityResource(); diff --git a/core/modules/user/tests/src/Unit/UserAuthTest.php b/core/modules/user/tests/src/Unit/UserAuthTest.php index 10526a403927..926d48d4bc26 100644 --- a/core/modules/user/tests/src/Unit/UserAuthTest.php +++ b/core/modules/user/tests/src/Unit/UserAuthTest.php @@ -12,6 +12,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Event\ResponseEvent; +use Symfony\Component\HttpKernel\HttpKernelInterface; /** * @coversDefaultClass \Drupal\user\UserAuth @@ -257,15 +258,12 @@ public function testAddCheckToUrlForTrustedRedirectResponse(): void { ->method('remove') ->with('check_logged_in'); - $event_mock = $this->createMock(ResponseEvent::class); - $event_mock - ->expects($this->once()) - ->method('getResponse') - ->willReturn($response); - $event_mock - ->expects($this->exactly(3)) - ->method('getRequest') - ->willReturn($request); + $event = new ResponseEvent( + $this->createMock(HttpKernelInterface::class), + $request, + HttpKernelInterface::MAIN_REQUEST, + $response + ); $request ->setSession($session_mock); @@ -275,7 +273,7 @@ public function testAddCheckToUrlForTrustedRedirectResponse(): void { ->disableOriginalConstructor() ->onlyMethods([]) ->getMock() - ->addCheckToUrl($event_mock); + ->addCheckToUrl($event); $this->assertSame("$frontend_url?check_logged_in=1", $response->getTargetUrl()); } diff --git a/core/tests/Drupal/KernelTests/Core/DrupalKernel/DrupalKernelTest.php b/core/tests/Drupal/KernelTests/Core/DrupalKernel/DrupalKernelTest.php index 29b22bd6072b..7796ce55451d 100644 --- a/core/tests/Drupal/KernelTests/Core/DrupalKernel/DrupalKernelTest.php +++ b/core/tests/Drupal/KernelTests/Core/DrupalKernel/DrupalKernelTest.php @@ -9,7 +9,6 @@ use org\bovigo\vfs\vfsStream; use Prophecy\Argument; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Event\KernelEvent; /** * Tests DIC compilation to disk. @@ -59,19 +58,6 @@ protected function getTestKernel(Request $request, array $modules_enabled = NULL return $kernel; } - /** - * Tests KernelEvent class_alias() override. - * - * @todo https://www.drupal.org/project/drupal/issues/3197482 Remove this test - * once Drupal is using Symfony 5.3 or higher. - */ - public function testKernelEvent() { - $request = Request::createFromGlobals(); - $kernel = $this->getTestKernel($request); - $event = new KernelEvent($kernel, $request, $kernel::MASTER_REQUEST); - $this->assertTrue($event->isMainRequest()); - } - /** * Tests DIC compilation. */ diff --git a/core/tests/Drupal/KernelTests/Core/File/MimeTypeTest.php b/core/tests/Drupal/KernelTests/Core/File/MimeTypeTest.php index 15541a42bd1d..50ae3914aacf 100644 --- a/core/tests/Drupal/KernelTests/Core/File/MimeTypeTest.php +++ b/core/tests/Drupal/KernelTests/Core/File/MimeTypeTest.php @@ -89,19 +89,4 @@ public function testFileMimeTypeDetection() { } } - /** - * Test deprecations. - * - * @group legacy - */ - public function testFileMimeTypeDetectionDeprecation() { - $this->expectDeprecation('The "Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser" class is deprecated since Symfony 4.3, use "Symfony\Component\Mime\MimeTypes" instead.'); - $this->expectDeprecation('The "Symfony\Component\HttpFoundation\File\MimeType\FileBinaryMimeTypeGuesser" class is deprecated since Symfony 4.3, use "Symfony\Component\Mime\FileBinaryMimeTypeGuesser" instead.'); - $this->expectDeprecation('The "Symfony\Component\HttpFoundation\File\MimeType\FileinfoMimeTypeGuesser" class is deprecated since Symfony 4.3, use "Symfony\Component\Mime\FileinfoMimeTypeGuesser" instead.'); - $this->expectDeprecation('Drupal\Core\File\MimeType\MimeTypeGuesser::guess() is deprecated in drupal:9.1.0 and is removed from drupal:10.0.0. Use ::guessMimeType() instead. See https://www.drupal.org/node/3133341'); - $guesser = $this->container->get('file.mime_type.guesser'); - $output = $guesser->guess('public://test.jar'); - $this->assertSame('application/java-archive', $output); - } - } diff --git a/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php b/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php index a0bd58876670..99cc6fd6b35b 100644 --- a/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php +++ b/core/tests/Drupal/KernelTests/Core/Routing/ExceptionHandlingTest.php @@ -74,7 +74,7 @@ public function testJson404() { $this->assertEquals(Response::HTTP_NOT_FOUND, $response->getStatusCode()); $this->assertEquals('application/json', $response->headers->get('Content-type')); - $this->assertEquals('{"message":"No route found for \\u0022GET \\/not-found\\u0022"}', $response->getContent()); + $this->assertEquals('{"message":"No route found for \\u0022GET http:\/\/localhost\\/not-found\\u0022"}', $response->getContent()); } /** diff --git a/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php b/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php index a87004ead6bf..91962abc6063 100644 --- a/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php +++ b/core/tests/Drupal/KernelTests/Core/TypedData/TypedDataTest.php @@ -590,7 +590,7 @@ public function testTypedDataValidation() { // Test translating violation messages when pluralization is used. $definition = DataDefinition::create('string') ->setConstraints([ - 'Length' => ['min' => 10, 'allowEmptyString' => FALSE], + 'Length' => ['min' => 10], ]); $violations = $this->typedDataManager->create($definition, "short")->validate(); $this->assertEquals(1, $violations->count()); diff --git a/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php b/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php index d8a99cd70430..9050744de070 100644 --- a/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php +++ b/core/tests/Drupal/Tests/Component/EventDispatcher/ContainerAwareEventDispatcherTest.php @@ -8,7 +8,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\EventDispatcher\Event as SymfonyEvent; +use Symfony\Contracts\EventDispatcher\Event as SymfonyEvent; use Symfony\Component\EventDispatcher\GenericEvent; use Drupal\Component\EventDispatcher\Event; use Symfony\Bridge\PhpUnit\ExpectDeprecationTrait; @@ -145,30 +145,6 @@ public function testGetListenersWithServices() { $this->assertSame($expectedListeners, $actualListeners); } - /** - * Tests argument order deprecation. - * - * @group legacy - */ - public function testDispatchArgumentOrderDeprecation() { - $this->expectDeprecation('Calling the Symfony\Component\EventDispatcher\EventDispatcherInterface::dispatch() method with a string event name as the first argument is deprecated in drupal:9.1.0, an Event object will be required instead in drupal:10.0.0. See https://www.drupal.org/node/3154407'); - $container = new ContainerBuilder(); - $dispatcher = new ContainerAwareEventDispatcher($container, []); - $dispatcher->dispatch('foo'); - } - - /** - * Tests deprecation notice for Symfony Event class. - * - * @group legacy - */ - public function testSymfonyEventDeprecation() { - $this->expectDeprecation('Symfony\Component\EventDispatcher\Event is deprecated in drupal:9.1.0 and will be replaced by Symfony\Contracts\EventDispatcher\Event in drupal:10.0.0. A new Drupal\Component\EventDispatcher\Event class is available to bridge the two versions of the class. See https://www.drupal.org/node/3159012'); - $container = new ContainerBuilder(); - $dispatcher = new ContainerAwareEventDispatcher($container, []); - $dispatcher->dispatch(new SymfonyEvent()); - } - /** * Tests dispatching Symfony events with core's event dispatcher. */ @@ -178,18 +154,6 @@ public function testSymfonyEventDispatching() { $dispatcher->dispatch(new GenericEvent()); } - /** - * Tests deprecation notice for Symfony Event class inheritance. - * - * @group legacy - */ - public function testSymfonyInheritedEventDeprecation() { - $this->expectDeprecation('Symfony\Component\EventDispatcher\Event is deprecated in drupal:9.1.0 and will be replaced by Symfony\Contracts\EventDispatcher\Event in drupal:10.0.0. A new Drupal\Component\EventDispatcher\Event class is available to bridge the two versions of the class. See https://www.drupal.org/node/3159012'); - $container = new ContainerBuilder(); - $dispatcher = new ContainerAwareEventDispatcher($container, []); - $dispatcher->dispatch(new SymfonyInheritedEvent()); - } - public function testDispatchWithServices() { $container = new ContainerBuilder(); $container->register('listener_service', TestEventListener::class); diff --git a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/MimeTypePassTest.php b/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/MimeTypePassTest.php deleted file mode 100644 index a92b5a1e2c4a..000000000000 --- a/core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/MimeTypePassTest.php +++ /dev/null @@ -1,68 +0,0 @@ -<?php - -namespace Drupal\Tests\Core\DependencyInjection\Compiler; - -use Drupal\Core\DependencyInjection\Compiler\MimeTypePass; -use Drupal\Tests\UnitTestCase; -use Symfony\Component\DependencyInjection\ContainerBuilder; -use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface as LegacyMimeTypeGuesserInterface; -use Symfony\Component\Mime\MimeTypeGuesserInterface; -use Drupal\Core\File\MimeType\MimeTypeGuesser; - -/** - * @coversDefaultClass \Drupal\Core\DependencyInjection\Compiler\MimeTypePass - * @group DependencyInjection - * @group legacy - * @runInSeparateProcess - */ -class MimeTypePassTest extends UnitTestCase { - - protected function buildContainer($environment = 'dev') { - $container = new ContainerBuilder(); - $container->setParameter('kernel.environment', $environment); - return $container; - } - - /** - * Tests backwards compatibility shim for MimeTypeGuesser interface changes. - */ - public function testProcessLegacy() { - $this->expectDeprecation('The "Drupal\Tests\Core\DependencyInjection\Compiler\LegacyMimeTypeGuesser" class implements "Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface" that is deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead.'); - $container = $this->buildContainer(); - $container - ->register('file.mime_type.guesser', MimeTypeGuesser::class); - - $container - ->register('handler1', __NAMESPACE__ . '\NewMimeTypeGuesser') - ->addTag('mime_type_guesser', ['priority' => 200]); - $container - ->register('handler2', __NAMESPACE__ . '\LegacyMimeTypeGuesser') - ->addTag('mime_type_guesser', ['priority' => 100]); - - $handler_pass = new MimeTypePass(); - $handler_pass->process($container); - $method_calls = $container->getDefinition('file.mime_type.guesser')->getMethodCalls(); - $this->assertCount(2, $method_calls); - $this->assertSame(200, $method_calls[0][1][1]); - $this->assertSame(100, $method_calls[1][1][1]); - } - -} - -class NewMimeTypeGuesser implements MimeTypeGuesserInterface { - - public function guessMimeType(string $string): string { - return ''; - } - - public function isGuesserSupported(): bool { - return TRUE; - } - -} - -class LegacyMimeTypeGuesser implements LegacyMimeTypeGuesserInterface { - - public function guess($string) {} - -} diff --git a/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerBuilderTest.php b/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerBuilderTest.php index f8b82e2fb782..bff672f3a7e3 100644 --- a/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerBuilderTest.php +++ b/core/tests/Drupal/Tests/Core/DependencyInjection/ContainerBuilderTest.php @@ -92,20 +92,6 @@ public function testSetDefinition() { $this->assertFalse($service->isPublic()); } - /** - * @covers ::setDefinition - * - * @group legacy - */ - public function testLegacySetDefinition() { - // Test a service with public set to default. - $container = new ContainerBuilder(); - $definition = new Definition(); - $this->expectDeprecation('Not marking service definitions as public is deprecated in drupal:9.2.0 and is required in drupal:10.0.0. Call $definition->setPublic(TRUE) before calling ::setDefinition(). See https://www.drupal.org/node/3194517'); - $service = $container->setDefinition('foo', $definition); - $this->assertTrue($service->isPublic()); - } - /** * @covers ::setAlias */ diff --git a/core/tests/Drupal/Tests/Core/DrupalKernel/DrupalKernelLegacyTest.php b/core/tests/Drupal/Tests/Core/DrupalKernel/DrupalKernelLegacyTest.php index adca11d80544..9afef566f4fa 100644 --- a/core/tests/Drupal/Tests/Core/DrupalKernel/DrupalKernelLegacyTest.php +++ b/core/tests/Drupal/Tests/Core/DrupalKernel/DrupalKernelLegacyTest.php @@ -23,7 +23,7 @@ public function testKernelEventDeprecation() { $request = $this->createMock(Request::class); $event = new KernelEvent($kernel, $request, $kernel::MASTER_REQUEST); - $this->expectDeprecation('Symfony\Component\HttpKernel\Event\KernelEvent::isMasterRequest() is deprecated, use isMainRequest()'); + $this->expectDeprecation('Since symfony/http-kernel 5.3: "Symfony\Component\HttpKernel\Event\KernelEvent::isMasterRequest()" is deprecated, use "isMainRequest()" instead.'); $this->assertTrue($event->isMasterRequest()); } diff --git a/core/tests/Drupal/Tests/Core/File/MimeTypeGuesserTest.php b/core/tests/Drupal/Tests/Core/File/MimeTypeGuesserTest.php deleted file mode 100644 index b7222892d8bc..000000000000 --- a/core/tests/Drupal/Tests/Core/File/MimeTypeGuesserTest.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php - -namespace Drupal\Tests\Core\File; - -use Drupal\Core\DependencyInjection\ContainerBuilder; -use Drupal\Core\File\MimeType\MimeTypeGuesser; -use Drupal\Core\StreamWrapper\StreamWrapperManager; -use Drupal\Tests\UnitTestCase; -use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser as SymfonyMimeTypeGuesser; - -/** - * @coversDefaultClass \Drupal\Core\File\MimeType\MimeTypeGuesser - * @group DrupalKernel - */ -class MimeTypeGuesserTest extends UnitTestCase { - - /** - * @covers ::registerWithSymfonyGuesser - * - * @see Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser - */ - public function testSymfonyGuesserRegistration() { - // Make the guessers property accessible on Symfony's MimeTypeGuesser. - $symfony_guesser = SymfonyMimeTypeGuesser::getInstance(); - // Test that the Drupal mime type guess is not being used before the - // override method is called. It is possible that the test environment does - // not support the default guessers. - $reflected_guessers = new \ReflectionProperty($symfony_guesser, 'guessers'); - $reflected_guessers->setAccessible(TRUE); - $guessers = $reflected_guessers->getValue($symfony_guesser); - if (count($guessers)) { - $this->assertNotInstanceOf('Drupal\Core\File\MimeType\MimeTypeGuesser', $guessers[0]); - } - $container = new ContainerBuilder(); - $container->set('file.mime_type.guesser', new MimeTypeGuesser(new StreamWrapperManager())); - MimeTypeGuesser::registerWithSymfonyGuesser($container); - $symfony_guesser = SymfonyMimeTypeGuesser::getInstance(); - $guessers = $reflected_guessers->getValue($symfony_guesser); - $this->assertSame($container->get('file.mime_type.guesser'), $guessers[0]); - $this->assertInstanceOf('Drupal\Core\File\MimeType\MimeTypeGuesser', $guessers[0]); - $count = count($guessers); - - $container = new ContainerBuilder(); - $container->set('file.mime_type.guesser', new MimeTypeGuesser(new StreamWrapperManager())); - MimeTypeGuesser::registerWithSymfonyGuesser($container); - $symfony_guesser = SymfonyMimeTypeGuesser::getInstance(); - $guessers = $reflected_guessers->getValue($symfony_guesser); - $this->assertSame($container->get('file.mime_type.guesser'), $guessers[0]); - $this->assertInstanceOf('Drupal\Core\File\MimeType\MimeTypeGuesser', $guessers[0]); - $new_count = count($guessers); - $this->assertEquals($count, $new_count, 'The count of mime type guessers remains the same after container re-init.'); - } - -} diff --git a/core/tests/Drupal/Tests/Core/Http/InputBagTest.php b/core/tests/Drupal/Tests/Core/Http/InputBagTest.php index f2120e4afe5f..43b24db1298c 100644 --- a/core/tests/Drupal/Tests/Core/Http/InputBagTest.php +++ b/core/tests/Drupal/Tests/Core/Http/InputBagTest.php @@ -4,7 +4,6 @@ use Drupal\Core\Http\InputBag; use Drupal\Tests\UnitTestCase; -use Symfony\Component\HttpFoundation\Request; /** * @coversDefaultClass \Drupal\Core\Http\InputBag @@ -29,13 +28,4 @@ public function testAll() { $input_bag->all('bad'); } - /** - * @coversNothing - * @todo Remove this when Symfony 4 is no longer supported. - */ - public function testRequestFactory() { - $request = Request::create(''); - $this->assertInstanceOf(InputBag::class, $request->query); - } - } diff --git a/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php b/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php index 8c0369f912a1..3637e2a75d3b 100644 --- a/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php +++ b/core/tests/Drupal/Tests/Listeners/DeprecationListenerTrait.php @@ -69,7 +69,6 @@ public static function isDeprecationSkipped($message) { return TRUE; } $dynamic_skipped_deprecations = [ - '%The "[^"]+" class extends "Symfony\\\\Component\\\\EventDispatcher\\\\Event" that is deprecated since Symfony 4\.3, use "Symfony\\\\Contracts\\\\EventDispatcher\\\\Event" instead\.$%', '%The "Symfony\\\\Component\\\\Validator\\\\Context\\\\ExecutionContextInterface::.*\(\)" method is considered internal Used by the validator engine\. Should not be called by user\W+code\. It may change without further notice\. You should not extend it from "[^"]+".%', '%The "PHPUnit\\\\Framework\\\\TestCase::addWarning\(\)" method is considered internal%', // The following deprecations were not added as part of the original @@ -84,8 +83,6 @@ public static function isDeprecationSkipped($message) { // Skip DebugClassLoader false positives. '%Method "[^"]+" might add "[^"]+" as a native return type declaration in the future. Do the same in (child class|implementation) "(?!Drupal\\\\)[^"]+" now to avoid errors or add an explicit @return annotation to suppress this message%', '%The "Drupal\\\\[^"]+" method will require a new "[^"]+" argument in the next major version of its interface "Drupal\\\\[^"]+", not defining it is deprecated%', - // Symfony 5.4 - '%Method "Symfony\\\\Component\\\\Serializer\\\\Normalizer\\\\NormalizerInterface::normalize\(\)" might add "array\|string\|int\|float\|bool\|\\\\ArrayObject\|null" as a native return type declaration in the future. Do the same in implementation "(?!Drupal\\\\)[^"]+" now to avoid errors or add an explicit @return annotation to suppress this message.%', ]; return (bool) preg_filter($dynamic_skipped_deprecations, '$0', $message); } @@ -111,16 +108,6 @@ public static function getSkippedDeprecations() { // The following deprecation messages are skipped for testing purposes. '\Drupal\Tests\SkippedDeprecationTest deprecation', 'Return type of PhpDeprecation::getIterator() should either be compatible with IteratorAggregate::getIterator(): Traversable, or the #[\ReturnTypeWillChange] attribute should be used to temporarily suppress the notice', - // The following Symfony deprecations are introduced in the Symfony 4 - // development cycle. They will need to be resolved prior to Symfony 5 - // compatibility. - 'The "Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser" class is deprecated since Symfony 4.3, use "Symfony\Component\Mime\MimeTypes" instead.', - 'The "Drupal\Core\File\MimeType\MimeTypeGuesser" class implements "Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface" that is deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead.', - 'The "Symfony\Component\HttpFoundation\File\MimeType\FileBinaryMimeTypeGuesser" class is deprecated since Symfony 4.3, use "Symfony\Component\Mime\FileBinaryMimeTypeGuesser" instead.', - 'The "Symfony\Component\HttpFoundation\File\MimeType\FileinfoMimeTypeGuesser" class is deprecated since Symfony 4.3, use "Symfony\Component\Mime\FileinfoMimeTypeGuesser" instead.', - 'The "Drupal\Tests\Core\DependencyInjection\Compiler\LegacyMimeTypeGuesser" class implements "Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface" that is deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead.', - 'The "Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch()" method will require a new "string|null $eventName" argument in the next major version of its interface "Symfony\Contracts\EventDispatcher\EventDispatcherInterface", not defining it is deprecated.', - 'The "Drupal\Component\EventDispatcher\ContainerAwareEventDispatcher::dispatch()" method will require a new "string|null $eventName" argument in the next major version of its parent class "Symfony\Contracts\EventDispatcher\EventDispatcherInterface", not defining it is deprecated.', // The following deprecation is listed for Twig 2 compatibility when unit // testing using \Symfony\Component\ErrorHandler\DebugClassLoader. 'The "Twig\Environment::getTemplateClass()" method is considered internal. It may change without further notice. You should not extend it from "Drupal\Core\Template\TwigEnvironment".', -- GitLab