diff --git a/composer.json b/composer.json index a06f49c2..9f8d440b 100644 --- a/composer.json +++ b/composer.json @@ -18,11 +18,11 @@ "composer/installers": "^1.12", "cweagans/composer-patches": "^1.7", "drupal/consumer_image_styles": "^4.0", - "drupal/core": "^9.3", - "drupal/core-composer-scaffold": "9.3.*", - "drupal/core-project-message": "9.3.*", - "drupal/core-recommended": "9.3.*", - "drupal/core-vendor-hardening": "9.3.*", + "drupal/core": "^9.4", + "drupal/core-composer-scaffold": "9.4.*", + "drupal/core-project-message": "9.4.*", + "drupal/core-recommended": "9.4.*", + "drupal/core-vendor-hardening": "9.4.*", "drupal/entity": "^1.3", "drupal/filefield_paths": "^1.0@beta", "drupal/image_style_warmer": "^1.1", @@ -128,10 +128,10 @@ } }, "require-dev": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.1", + "dealerdirect/phpcodesniffer-composer-installer": "^0.7", "drupal/admin_toolbar": "^3.0", "drupal/coder": "^8.3", - "drupal/core-dev": "9.3.*", + "drupal/core-dev": "9.4.*", "drupal/devel": "^4.1", "drupal/devel_mail_logger": "^1.0@beta", "drupal/druqs": "2.0.x-dev@dev", @@ -146,7 +146,7 @@ "phpcompatibility/php-compatibility": "^9.3", "phpspec/prophecy-phpunit": "^2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.5", + "phpstan/phpstan": "^1.8", "phpstan/phpstan-deprecation-rules": "^1.0" }, "scripts": { diff --git a/composer.lock b/composer.lock index 34978c3a..83b4d0ae 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": "b98d6b6c4a267adfb46af44a83eea61a", + "content-hash": "d1ca8a1a747c54f04e6e7f606d98f997", "packages": [ { "name": "asm89/stack-cors", @@ -267,23 +267,23 @@ }, { "name": "composer/semver", - "version": "3.2.6", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "83e511e247de329283478496f7a1e114c9517506" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/83e511e247de329283478496f7a1e114c9517506", - "reference": "83e511e247de329283478496f7a1e114c9517506", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", @@ -328,7 +328,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.6" + "source": "https://github.com/composer/semver/tree/3.3.2" }, "funding": [ { @@ -344,7 +344,7 @@ "type": "tidelift" } ], - "time": "2021-10-25T11:34:17+00:00" + "time": "2022-04-01T19:23:25+00:00" }, { "name": "consolidation/annotated-command", @@ -1117,16 +1117,16 @@ }, { "name": "doctrine/annotations", - "version": "1.13.2", + "version": "1.13.3", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08" + "reference": "648b0343343565c4a056bfc8392201385e8d89f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08", - "reference": "5b668aef16090008790395c02c893b1ba13f7e08", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", + "reference": "648b0343343565c4a056bfc8392201385e8d89f0", "shasum": "" }, "require": { @@ -1138,9 +1138,10 @@ "require-dev": { "doctrine/cache": "^1.11 || ^2.0", "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^0.12.20", + "phpstan/phpstan": "^1.4.10 || ^1.8.0", "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2" + "symfony/cache": "^4.4 || ^5.2", + "vimeo/psalm": "^4.10" }, "type": "library", "autoload": { @@ -1183,38 +1184,34 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.2" + "source": "https://github.com/doctrine/annotations/tree/1.13.3" }, - "time": "2021-08-05T19:00:23+00:00" + "time": "2022-07-02T10:48:51+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", + "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "^1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" @@ -1249,7 +1246,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" + "source": "https://github.com/doctrine/lexer/tree/1.2.3" }, "funding": [ { @@ -1265,20 +1262,20 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2022-02-28T11:07:21+00:00" }, { "name": "doctrine/reflection", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/reflection.git", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5" + "reference": "1034e5e71f89978b80f9c1570e7226f6c3b9b6fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/reflection/zipball/fa587178be682efe90d005e3a322590d6ebb59a5", - "reference": "fa587178be682efe90d005e3a322590d6ebb59a5", + "url": "https://api.github.com/repos/doctrine/reflection/zipball/1034e5e71f89978b80f9c1570e7226f6c3b9b6fb", + "reference": "1034e5e71f89978b80f9c1570e7226f6c3b9b6fb", "shasum": "" }, "require": { @@ -1290,18 +1287,13 @@ "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^6.0 || ^8.2.0", - "doctrine/common": "^2.10", - "phpstan/phpstan": "^0.11.0 || ^0.12.20", - "phpstan/phpstan-phpunit": "^0.11.0 || ^0.12.16", - "phpunit/phpunit": "^7.5 || ^9.1.5" + "doctrine/coding-standard": "^9", + "doctrine/common": "^3.3", + "phpstan/phpstan": "^1.4.10", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\": "lib/Doctrine/Common" @@ -1345,10 +1337,10 @@ ], "support": { "issues": "https://github.com/doctrine/reflection/issues", - "source": "https://github.com/doctrine/reflection/tree/1.2.2" + "source": "https://github.com/doctrine/reflection/tree/1.2.3" }, "abandoned": "roave/better-reflection", - "time": "2020-10-27T21:46:55+00:00" + "time": "2022-05-31T18:46:25+00:00" }, { "name": "drupal/consumer_image_styles", @@ -1447,24 +1439,24 @@ }, { "name": "drupal/core", - "version": "9.3.17", + "version": "9.4.1", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "20c4f2c5ad062295d5c40f42bc27547570513c8c" + "reference": "81489e8f0d5fdcd5d502b561f0f8cdf5ccdda614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/20c4f2c5ad062295d5c40f42bc27547570513c8c", - "reference": "20c4f2c5ad062295d5c40f42bc27547570513c8c", + "url": "https://api.github.com/repos/drupal/core/zipball/81489e8f0d5fdcd5d502b561f0f8cdf5ccdda614", + "reference": "81489e8f0d5fdcd5d502b561f0f8cdf5ccdda614", "shasum": "" }, "require": { - "asm89/stack-cors": "^1.1", - "composer/semver": "^3.0", - "doctrine/annotations": "^1.12", - "doctrine/reflection": "^1.1", - "egulias/email-validator": "^2.1.22|^3.0", + "asm89/stack-cors": "^1.3", + "composer/semver": "^3.3", + "doctrine/annotations": "^1.13", + "doctrine/reflection": "^1.2", + "egulias/email-validator": "^2.1.22|^3.2", "ext-date": "*", "ext-dom": "*", "ext-filter": "*", @@ -1478,35 +1470,36 @@ "ext-spl": "*", "ext-tokenizer": "*", "ext-xml": "*", - "guzzlehttp/guzzle": "^6.5.8", - "laminas/laminas-diactoros": "^2.1", - "laminas/laminas-feed": "^2.12", - "masterminds/html5": "^2.1", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", + "laminas/laminas-diactoros": "^2.11", + "laminas/laminas-feed": "^2.17", + "masterminds/html5": "^2.7", "pear/archive_tar": "^1.4.14", "php": ">=7.3.0", - "psr/log": "^1.0", + "psr/log": "^1.1", "stack/builder": "^1.0", - "symfony-cmf/routing": "^2.1", + "symfony-cmf/routing": "^2.3", "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/mime": "^5.4", - "symfony/polyfill-iconv": "^1.0", - "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-iconv": "^1.25", + "symfony/polyfill-php80": "^1.25", "symfony/process": "^4.4", - "symfony/psr-http-message-bridge": "^2.0", + "symfony/psr-http-message-bridge": "^2.1", "symfony/routing": "^4.4", "symfony/serializer": "^4.4", "symfony/translation": "^4.4", "symfony/validator": "^4.4", "symfony/yaml": "^4.4.19", - "twig/twig": "^2.12.0", + "twig/twig": "^2.15", "typo3/phar-stream-wrapper": "^3.1.3" }, "conflict": { - "drush/drush": "<8.1.10" + "drush/drush": "<8.1.10", + "symfony/http-foundation": "4.4.42" }, "replace": { "drupal/action": "self.version", @@ -1590,12 +1583,14 @@ "drupal/migrate_drupal_multilingual": "self.version", "drupal/migrate_drupal_ui": "self.version", "drupal/minimal": "self.version", + "drupal/mysql": "self.version", "drupal/node": "self.version", "drupal/olivero": "self.version", "drupal/options": "self.version", "drupal/page_cache": "self.version", "drupal/path": "self.version", "drupal/path_alias": "self.version", + "drupal/pgsql": "self.version", "drupal/quickedit": "self.version", "drupal/rdf": "self.version", "drupal/responsive_image": "self.version", @@ -1605,6 +1600,7 @@ "drupal/settings_tray": "self.version", "drupal/seven": "self.version", "drupal/shortcut": "self.version", + "drupal/sqlite": "self.version", "drupal/standard": "self.version", "drupal/stark": "self.version", "drupal/statistics": "self.version", @@ -1679,9 +1675,6 @@ "lib/Drupal/Core/Cache/DatabaseCacheTagsChecksum.php", "lib/Drupal/Core/Database/Connection.php", "lib/Drupal/Core/Database/Database.php", - "lib/Drupal/Core/Database/Driver/mysql/Connection.php", - "lib/Drupal/Core/Database/Driver/pgsql/Connection.php", - "lib/Drupal/Core/Database/Driver/sqlite/Connection.php", "lib/Drupal/Core/Database/Statement.php", "lib/Drupal/Core/Database/StatementInterface.php", "lib/Drupal/Core/DependencyInjection/Container.php", @@ -1698,22 +1691,22 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/9.3.17" + "source": "https://github.com/drupal/core/tree/9.4.1" }, - "time": "2022-06-21T20:57:41+00:00" + "time": "2022-06-21T20:53:48+00:00" }, { "name": "drupal/core-composer-scaffold", - "version": "9.3.17", + "version": "9.4.1", "source": { "type": "git", "url": "https://github.com/drupal/core-composer-scaffold.git", - "reference": "a9dd9def8891e1c388719474720b57d3fe929a2f" + "reference": "5f37a9e4008b34e3e4f6bb34ce0b3f7e5ec8984f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/a9dd9def8891e1c388719474720b57d3fe929a2f", - "reference": "a9dd9def8891e1c388719474720b57d3fe929a2f", + "url": "https://api.github.com/repos/drupal/core-composer-scaffold/zipball/5f37a9e4008b34e3e4f6bb34ce0b3f7e5ec8984f", + "reference": "5f37a9e4008b34e3e4f6bb34ce0b3f7e5ec8984f", "shasum": "" }, "require": { @@ -1748,22 +1741,22 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-composer-scaffold/tree/9.3.17" + "source": "https://github.com/drupal/core-composer-scaffold/tree/9.4.1" }, - "time": "2022-02-24T17:40:56+00:00" + "time": "2022-06-19T16:14:23+00:00" }, { "name": "drupal/core-project-message", - "version": "9.3.17", + "version": "9.4.1", "source": { "type": "git", "url": "https://github.com/drupal/core-project-message.git", - "reference": "69664743736977676e11f824301ea3e925a712fc" + "reference": "5dfa0b75a057caf6542be67f61e7531c737db48c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-project-message/zipball/69664743736977676e11f824301ea3e925a712fc", - "reference": "69664743736977676e11f824301ea3e925a712fc", + "url": "https://api.github.com/repos/drupal/core-project-message/zipball/5dfa0b75a057caf6542be67f61e7531c737db48c", + "reference": "5dfa0b75a057caf6542be67f61e7531c737db48c", "shasum": "" }, "require": { @@ -1789,81 +1782,81 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-project-message/tree/9.3.17" + "source": "https://github.com/drupal/core-project-message/tree/9.4.1" }, - "time": "2022-02-24T17:40:56+00:00" + "time": "2022-02-24T17:40:53+00:00" }, { "name": "drupal/core-recommended", - "version": "9.3.17", + "version": "9.4.1", "source": { "type": "git", "url": "https://github.com/drupal/core-recommended.git", - "reference": "f14b8cb930b1cfde94b37f3dfa968733e1085eb5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/f14b8cb930b1cfde94b37f3dfa968733e1085eb5", - "reference": "f14b8cb930b1cfde94b37f3dfa968733e1085eb5", - "shasum": "" - }, - "require": { - "asm89/stack-cors": "1.3.0", - "composer/semver": "3.2.6", - "doctrine/annotations": "1.13.2", - "doctrine/lexer": "1.2.1", - "doctrine/reflection": "1.2.2", - "drupal/core": "9.3.17", - "egulias/email-validator": "3.1.2", - "guzzlehttp/guzzle": "6.5.8", - "guzzlehttp/promises": "1.5.1", - "guzzlehttp/psr7": "1.9.0", - "laminas/laminas-diactoros": "2.8.0", - "laminas/laminas-escaper": "2.9.0", - "laminas/laminas-feed": "2.15.0", - "laminas/laminas-stdlib": "3.6.1", - "masterminds/html5": "2.7.5", - "pear/archive_tar": "1.4.14", - "pear/console_getopt": "v1.4.3", - "pear/pear-core-minimal": "v1.10.11", - "pear/pear_exception": "v1.0.2", - "psr/cache": "1.0.1", - "psr/container": "1.1.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-cmf/routing": "2.3.4", - "symfony/console": "v4.4.34", - "symfony/debug": "v4.4.31", - "symfony/dependency-injection": "v4.4.34", - "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/psr-http-message-bridge": "v2.1.2", - "symfony/routing": "v4.4.34", - "symfony/serializer": "v4.4.35", - "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", - "twig/twig": "v2.14.11", - "typo3/phar-stream-wrapper": "v3.1.7" + "reference": "a3ae54715ba7792fe596c2f6a73dfcef217b0577" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/a3ae54715ba7792fe596c2f6a73dfcef217b0577", + "reference": "a3ae54715ba7792fe596c2f6a73dfcef217b0577", + "shasum": "" + }, + "require": { + "asm89/stack-cors": "~1.3.0", + "composer/semver": "~3.3.2", + "doctrine/annotations": "~1.13.2", + "doctrine/lexer": "~1.2.3", + "doctrine/reflection": "~1.2.3", + "drupal/core": "9.4.1", + "egulias/email-validator": "~3.2", + "guzzlehttp/guzzle": "~6.5.8", + "guzzlehttp/promises": "~1.5.1", + "guzzlehttp/psr7": "~1.9.0", + "laminas/laminas-diactoros": "~2.11.0", + "laminas/laminas-escaper": "~2.9.0", + "laminas/laminas-feed": "~2.17.0", + "laminas/laminas-stdlib": "~3.7.1", + "masterminds/html5": "~2.7.5", + "pear/archive_tar": "~1.4.14", + "pear/console_getopt": "~v1.4.3", + "pear/pear-core-minimal": "~v1.10.11", + "pear/pear_exception": "~v1.0.2", + "psr/cache": "~1.0.1", + "psr/container": "~1.1.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-cmf/routing": "~2.3.4", + "symfony/console": "~v4.4.42", + "symfony/debug": "~v4.4.41", + "symfony/dependency-injection": "~v4.4.42", + "symfony/deprecation-contracts": "~v2.5.1", + "symfony/error-handler": "~v4.4.41", + "symfony/event-dispatcher": "~v4.4.42", + "symfony/event-dispatcher-contracts": "~v1.1.12", + "symfony/http-client-contracts": "~v2.5.1", + "symfony/http-foundation": "~v4.4.41", + "symfony/http-kernel": "~v4.4.42", + "symfony/mime": "~v5.4.9", + "symfony/polyfill-ctype": "~v1.25.0", + "symfony/polyfill-iconv": "~v1.25.0", + "symfony/polyfill-intl-idn": "~v1.25.0", + "symfony/polyfill-intl-normalizer": "~v1.25.0", + "symfony/polyfill-mbstring": "~v1.25.0", + "symfony/polyfill-php80": "~v1.25.0", + "symfony/process": "~v4.4.41", + "symfony/psr-http-message-bridge": "~v2.1.2", + "symfony/routing": "~v4.4.41", + "symfony/serializer": "~v4.4.42", + "symfony/service-contracts": "~v2.5.1", + "symfony/translation": "~v4.4.41", + "symfony/translation-contracts": "~v2.5.1", + "symfony/validator": "~v4.4.41", + "symfony/var-dumper": "~v5.4.9", + "symfony/yaml": "~v4.4.37", + "twig/twig": "~v2.15.1", + "typo3/phar-stream-wrapper": "~v3.1.7" }, "conflict": { "webflo/drupal-core-strict": "*" @@ -1873,24 +1866,24 @@ "license": [ "GPL-2.0-or-later" ], - "description": "Locked core dependencies; require this project INSTEAD OF drupal/core.", + "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.", "support": { - "source": "https://github.com/drupal/core-recommended/tree/9.3.17" + "source": "https://github.com/drupal/core-recommended/tree/9.4.1" }, - "time": "2022-06-21T20:57:41+00:00" + "time": "2022-06-21T20:53:48+00:00" }, { "name": "drupal/core-vendor-hardening", - "version": "9.3.17", + "version": "9.4.1", "source": { "type": "git", "url": "https://github.com/drupal/core-vendor-hardening.git", - "reference": "1c867b32b93200ef00840c5f153ae7750fa3ca7b" + "reference": "6e2b95d65ca2aac7350039c5826175cab5a81881" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-vendor-hardening/zipball/1c867b32b93200ef00840c5f153ae7750fa3ca7b", - "reference": "1c867b32b93200ef00840c5f153ae7750fa3ca7b", + "url": "https://api.github.com/repos/drupal/core-vendor-hardening/zipball/6e2b95d65ca2aac7350039c5826175cab5a81881", + "reference": "6e2b95d65ca2aac7350039c5826175cab5a81881", "shasum": "" }, "require": { @@ -1916,9 +1909,9 @@ "drupal" ], "support": { - "source": "https://github.com/drupal/core-vendor-hardening/tree/9.3.17" + "source": "https://github.com/drupal/core-vendor-hardening/tree/9.4.1" }, - "time": "2022-02-24T17:40:56+00:00" + "time": "2022-02-24T17:40:53+00:00" }, { "name": "drupal/entity", @@ -3075,16 +3068,16 @@ }, { "name": "egulias/email-validator", - "version": "3.1.2", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697" + "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ee0db30118f661fb166bcffbf5d82032df484697", - "reference": "ee0db30118f661fb166bcffbf5d82032df484697", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/f88dcf4b14af14a98ad96b14b2b317969eab6715", + "reference": "f88dcf4b14af14a98ad96b14b2b317969eab6715", "shasum": "" }, "require": { @@ -3131,7 +3124,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/3.1.2" + "source": "https://github.com/egulias/EmailValidator/tree/3.2.1" }, "funding": [ { @@ -3139,7 +3132,7 @@ "type": "github" } ], - "time": "2021-10-11T09:18:27+00:00" + "time": "2022-06-18T20:57:19+00:00" }, { "name": "enlightn/security-checker", @@ -3803,16 +3796,16 @@ }, { "name": "laminas/laminas-diactoros", - "version": "2.8.0", + "version": "2.11.2", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "0c26ef1d95b6d7e6e3943a243ba3dc0797227199" + "reference": "78846cbce0550ec174508a646f46fd6dee76099b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/0c26ef1d95b6d7e6e3943a243ba3dc0797227199", - "reference": "0c26ef1d95b6d7e6e3943a243ba3dc0797227199", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/78846cbce0550ec174508a646f46fd6dee76099b", + "reference": "78846cbce0550ec174508a646f46fd6dee76099b", "shasum": "" }, "require": { @@ -3898,7 +3891,7 @@ "type": "community_bridge" } ], - "time": "2021-09-22T03:54:36+00:00" + "time": "2022-06-29T14:15:02+00:00" }, { "name": "laminas/laminas-escaper", @@ -3964,16 +3957,16 @@ }, { "name": "laminas/laminas-feed", - "version": "2.15.0", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-feed.git", - "reference": "3ef837a12833c74b438d2c3780023c4244e0abae" + "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/3ef837a12833c74b438d2c3780023c4244e0abae", - "reference": "3ef837a12833c74b438d2c3780023c4244e0abae", + "url": "https://api.github.com/repos/laminas/laminas-feed/zipball/1ccb024ea615606ed1d676ba0fa3f22a398f3ac0", + "reference": "1ccb024ea615606ed1d676ba0fa3f22a398f3ac0", "shasum": "" }, "require": { @@ -4037,20 +4030,20 @@ "type": "community_bridge" } ], - "time": "2021-09-20T18:11:11+00:00" + "time": "2022-03-24T10:26:04+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.6.1", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "db581851a092246ad99e12d4fddf105184924c71" + "reference": "bcd869e2fe88d567800057c1434f2380354fe325" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/db581851a092246ad99e12d4fddf105184924c71", - "reference": "db581851a092246ad99e12d4fddf105184924c71", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/bcd869e2fe88d567800057c1434f2380354fe325", + "reference": "bcd869e2fe88d567800057c1434f2380354fe325", "shasum": "" }, "require": { @@ -4061,8 +4054,8 @@ }, "require-dev": { "laminas/laminas-coding-standard": "~2.3.0", - "phpbench/phpbench": "^0.17.1", - "phpunit/phpunit": "~9.3.7", + "phpbench/phpbench": "^1.0", + "phpunit/phpunit": "^9.3.7", "psalm/plugin-phpunit": "^0.16.0", "vimeo/psalm": "^4.7" }, @@ -4096,7 +4089,7 @@ "type": "community_bridge" } ], - "time": "2021-11-10T11:33:52+00:00" + "time": "2022-01-21T15:50:46+00:00" }, { "name": "lcobucci/clock", @@ -4456,16 +4449,16 @@ }, { "name": "league/uri", - "version": "6.6.0", + "version": "6.7.1", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "4147f19b9de3b5af6a258f35d7a0efbbf9963298" + "reference": "2d7c87a0860f3126a39f44a8a9bf2fed402dcfea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/4147f19b9de3b5af6a258f35d7a0efbbf9963298", - "reference": "4147f19b9de3b5af6a258f35d7a0efbbf9963298", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/2d7c87a0860f3126a39f44a8a9bf2fed402dcfea", + "reference": "2d7c87a0860f3126a39f44a8a9bf2fed402dcfea", "shasum": "" }, "require": { @@ -4479,6 +4472,7 @@ }, "require-dev": { "friendsofphp/php-cs-fixer": "^v3.3.2", + "nyholm/psr7": "^1.5", "php-http/psr7-integration-tests": "^1.1", "phpstan/phpstan": "^1.2.0", "phpstan/phpstan-deprecation-rules": "^1.0", @@ -4542,7 +4536,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri/issues", - "source": "https://github.com/thephpleague/uri/tree/6.6.0" + "source": "https://github.com/thephpleague/uri/tree/6.7.1" }, "funding": [ { @@ -4550,7 +4544,7 @@ "type": "github" } ], - "time": "2022-05-28T05:44:35+00:00" + "time": "2022-06-29T09:48:18+00:00" }, { "name": "league/uri-interfaces", @@ -5191,20 +5185,20 @@ }, { "name": "psr/container", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", "autoload": { @@ -5233,9 +5227,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/http-factory", @@ -5725,16 +5719,16 @@ }, { "name": "symfony/console", - "version": "v4.4.34", + "version": "v4.4.43", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0" + "reference": "8a2628d2d5639f35113dc1b833ecd91e1ed1cf46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/329b3a75cc6b16d435ba1b1a41df54a53382a3f0", - "reference": "329b3a75cc6b16d435ba1b1a41df54a53382a3f0", + "url": "https://api.github.com/repos/symfony/console/zipball/8a2628d2d5639f35113dc1b833ecd91e1ed1cf46", + "reference": "8a2628d2d5639f35113dc1b833ecd91e1ed1cf46", "shasum": "" }, "require": { @@ -5795,7 +5789,7 @@ "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" + "source": "https://github.com/symfony/console/tree/v4.4.43" }, "funding": [ { @@ -5811,20 +5805,20 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2022-06-23T12:22:25+00:00" }, { "name": "symfony/debug", - "version": "v4.4.31", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0" + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/43ede438d4cb52cd589ae5dc070e9323866ba8e0", - "reference": "43ede438d4cb52cd589ae5dc070e9323866ba8e0", + "url": "https://api.github.com/repos/symfony/debug/zipball/6637e62480b60817b9a6984154a533e8e64c6bd5", + "reference": "6637e62480b60817b9a6984154a533e8e64c6bd5", "shasum": "" }, "require": { @@ -5863,7 +5857,7 @@ "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/debug/tree/v4.4.41" }, "funding": [ { @@ -5880,20 +5874,20 @@ } ], "abandoned": "symfony/error-handler", - "time": "2021-09-24T13:30:14+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { "name": "symfony/dependency-injection", - "version": "v4.4.34", + "version": "v4.4.43", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "117d7f132ed7efbd535ec947709d49bec1b9d24b" + "reference": "8d0ae6d87ceea5f3a352413f9d1f71ed2234dcbd" }, "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/8d0ae6d87ceea5f3a352413f9d1f71ed2234dcbd", + "reference": "8d0ae6d87ceea5f3a352413f9d1f71ed2234dcbd", "shasum": "" }, "require": { @@ -5906,7 +5900,7 @@ "symfony/config": "<4.3|>=5.0", "symfony/finder": "<3.4", "symfony/proxy-manager-bridge": "<3.4", - "symfony/yaml": "<3.4" + "symfony/yaml": "<4.4.26" }, "provide": { "psr/container-implementation": "1.0", @@ -5915,7 +5909,7 @@ "require-dev": { "symfony/config": "^4.3", "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/yaml": "^4.4|^5.0" + "symfony/yaml": "^4.4.26|^5.0" }, "suggest": { "symfony/config": "", @@ -5950,7 +5944,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/v4.4.43" }, "funding": [ { @@ -5966,20 +5960,20 @@ "type": "tidelift" } ], - "time": "2021-11-15T14:42:25+00:00" + "time": "2022-06-22T15:01:38+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", "shasum": "" }, "require": { @@ -6017,7 +6011,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" }, "funding": [ { @@ -6033,20 +6027,20 @@ "type": "tidelift" } ], - "time": "2021-07-12T14:48:14+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.34", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "17785c374645def1e884d8ec49976c156c61db4d" + "reference": "529feb0e03133dbd5fd3707200147cc4903206da" }, "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/529feb0e03133dbd5fd3707200147cc4903206da", + "reference": "529feb0e03133dbd5fd3707200147cc4903206da", "shasum": "" }, "require": { @@ -6085,7 +6079,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/v4.4.41" }, "funding": [ { @@ -6101,20 +6095,20 @@ "type": "tidelift" } ], - "time": "2021-11-12T14:57:39+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.34", + "version": "v4.4.42", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1a024b45369c9d55d76b6b8a241bd20c9ea1cbd8" + "reference": "708e761740c16b02c86e3f0c932018a06b895d40" }, "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/708e761740c16b02c86e3f0c932018a06b895d40", + "reference": "708e761740c16b02c86e3f0c932018a06b895d40", "shasum": "" }, "require": { @@ -6169,7 +6163,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/v4.4.42" }, "funding": [ { @@ -6185,20 +6179,20 @@ "type": "tidelift" } ], - "time": "2021-11-15T14:42:25+00:00" + "time": "2022-05-05T15:33:49+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.11", + "version": "v1.1.13", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "01e9a4efac0ee33a05dfdf93b346f62e7d0e998c" + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e" }, "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/1d5cd762abaa6b2a4169d3e77610193a7157129e", + "reference": "1d5cd762abaa6b2a4169d3e77610193a7157129e", "shasum": "" }, "require": { @@ -6248,7 +6242,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.11" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v1.1.13" }, "funding": [ { @@ -6264,7 +6258,7 @@ "type": "tidelift" } ], - "time": "2021-03-23T15:25:38+00:00" + "time": "2022-01-02T09:41:36+00:00" }, { "name": "symfony/filesystem", @@ -6393,16 +6387,16 @@ }, { "name": "symfony/http-client-contracts", - "version": "v2.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ec82e57b5b714dbb69300d348bd840b345e24166" + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ec82e57b5b714dbb69300d348bd840b345e24166", - "reference": "ec82e57b5b714dbb69300d348bd840b345e24166", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", "shasum": "" }, "require": { @@ -6451,7 +6445,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" }, "funding": [ { @@ -6467,20 +6461,20 @@ "type": "tidelift" } ], - "time": "2021-11-03T09:24:47+00:00" + "time": "2022-04-12T15:48:08+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.34", + "version": "v4.4.43", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "f4cbbb6fc428588ce8373802461e7fe84e6809ab" + "reference": "4441dada27f9208e03f449d73cb9253c639e53c5" }, "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/4441dada27f9208e03f449d73cb9253c639e53c5", + "reference": "4441dada27f9208e03f449d73cb9253c639e53c5", "shasum": "" }, "require": { @@ -6519,7 +6513,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/v4.4.43" }, "funding": [ { @@ -6535,20 +6529,20 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2022-06-19T13:07:44+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.35", + "version": "v4.4.43", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "fb793f1381c34b79a43596a532a6a49bd729c9db" + "reference": "c4c33fb9203e6f166ac0f318ce34e00686702522" }, "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/c4c33fb9203e6f166ac0f318ce34e00686702522", + "reference": "c4c33fb9203e6f166ac0f318ce34e00686702522", "shasum": "" }, "require": { @@ -6623,7 +6617,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/v4.4.43" }, "funding": [ { @@ -6639,20 +6633,20 @@ "type": "tidelift" } ], - "time": "2021-11-24T08:40:10+00:00" + "time": "2022-06-26T16:51:30+00:00" }, { "name": "symfony/mime", - "version": "v5.4.0", + "version": "v5.4.10", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "d4365000217b67c01acff407573906ff91bcfb34" + "reference": "02265e1e5111c3cd7480387af25e82378b7ab9cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/d4365000217b67c01acff407573906ff91bcfb34", - "reference": "d4365000217b67c01acff407573906ff91bcfb34", + "url": "https://api.github.com/repos/symfony/mime/zipball/02265e1e5111c3cd7480387af25e82378b7ab9cc", + "reference": "02265e1e5111c3cd7480387af25e82378b7ab9cc", "shasum": "" }, "require": { @@ -6706,7 +6700,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.0" + "source": "https://github.com/symfony/mime/tree/v5.4.10" }, "funding": [ { @@ -6722,25 +6716,28 @@ "type": "tidelift" } ], - "time": "2021-11-23T10:19:22+00:00" + "time": "2022-06-09T12:22:40+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "version": "v1.25.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" }, @@ -6785,7 +6782,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" }, "funding": [ { @@ -6801,25 +6798,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.25.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" }, @@ -6865,7 +6865,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.25.0" }, "funding": [ { @@ -6881,20 +6881,20 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:27:20+00:00" + "time": "2022-01-04T09:04:05+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.23.0", + "version": "v1.25.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": { @@ -6952,7 +6952,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.25.0" }, "funding": [ { @@ -6968,11 +6968,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.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -7036,7 +7036,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.25.0" }, "funding": [ { @@ -7056,21 +7056,24 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "version": "v1.25.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" }, @@ -7116,7 +7119,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" }, "funding": [ { @@ -7132,7 +7135,7 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2021-11-30T18:21:41+00:00" }, { "name": "symfony/polyfill-php72", @@ -7291,16 +7294,16 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.23.1", + "version": "v1.25.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be" + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" }, "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/4407588e0d3f1f52efb65fbe92babe41f37fe50c", + "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", "shasum": "" }, "require": { @@ -7354,7 +7357,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" }, "funding": [ { @@ -7370,20 +7373,20 @@ "type": "tidelift" } ], - "time": "2021-07-28T13:41:28+00:00" + "time": "2022-03-04T08:16:47+00:00" }, { "name": "symfony/process", - "version": "v4.4.35", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "c2098705326addae6e6742151dfade47ac71da1b" + "reference": "9eedd60225506d56e42210a70c21bb80ca8456ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c2098705326addae6e6742151dfade47ac71da1b", - "reference": "c2098705326addae6e6742151dfade47ac71da1b", + "url": "https://api.github.com/repos/symfony/process/zipball/9eedd60225506d56e42210a70c21bb80ca8456ce", + "reference": "9eedd60225506d56e42210a70c21bb80ca8456ce", "shasum": "" }, "require": { @@ -7416,7 +7419,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/v4.4.41" }, "funding": [ { @@ -7432,7 +7435,7 @@ "type": "tidelift" } ], - "time": "2021-11-22T22:36:24+00:00" + "time": "2022-04-04T10:19:07+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -7524,16 +7527,16 @@ }, { "name": "symfony/routing", - "version": "v4.4.34", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366" + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", - "reference": "fc9dda0c8496f8ef0a89805c2eabfc43b8cef366", + "url": "https://api.github.com/repos/symfony/routing/zipball/c25e38d403c00d5ddcfc514f016f1b534abdf052", + "reference": "c25e38d403c00d5ddcfc514f016f1b534abdf052", "shasum": "" }, "require": { @@ -7593,7 +7596,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v4.4.34" + "source": "https://github.com/symfony/routing/tree/v4.4.41" }, "funding": [ { @@ -7609,20 +7612,20 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2022-04-12T15:19:55+00:00" }, { "name": "symfony/serializer", - "version": "v4.4.35", + "version": "v4.4.43", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "1b2ae02cb1b923987947e013688c51954a80b751" + "reference": "bd020a578d786952cf5d67f8140dfacc161f58a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/1b2ae02cb1b923987947e013688c51954a80b751", - "reference": "1b2ae02cb1b923987947e013688c51954a80b751", + "url": "https://api.github.com/repos/symfony/serializer/zipball/bd020a578d786952cf5d67f8140dfacc161f58a4", + "reference": "bd020a578d786952cf5d67f8140dfacc161f58a4", "shasum": "" }, "require": { @@ -7647,7 +7650,7 @@ "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-access": "^4.4.36|^5.3.13", "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" @@ -7687,7 +7690,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/v4.4.43" }, "funding": [ { @@ -7703,26 +7706,26 @@ "type": "tidelift" } ], - "time": "2021-11-24T08:12:42+00:00" + "time": "2022-06-24T10:10:05+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1" + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -7770,7 +7773,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -7786,20 +7789,20 @@ "type": "tidelift" } ], - "time": "2021-11-04T16:48:04+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/translation", - "version": "v4.4.34", + "version": "v4.4.41", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "26d330720627b234803595ecfc0191eeabc65190" + "reference": "dcb67eae126e74507e0b4f0b9ac6ef35b37c3331" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/26d330720627b234803595ecfc0191eeabc65190", - "reference": "26d330720627b234803595ecfc0191eeabc65190", + "url": "https://api.github.com/repos/symfony/translation/zipball/dcb67eae126e74507e0b4f0b9ac6ef35b37c3331", + "reference": "dcb67eae126e74507e0b4f0b9ac6ef35b37c3331", "shasum": "" }, "require": { @@ -7859,7 +7862,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v4.4.34" + "source": "https://github.com/symfony/translation/tree/v4.4.41" }, "funding": [ { @@ -7875,20 +7878,20 @@ "type": "tidelift" } ], - "time": "2021-11-04T12:23:33+00:00" + "time": "2022-04-21T07:22:34+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "d28150f0f44ce854e942b671fc2620a98aae1b1e" + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" }, "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/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", "shasum": "" }, "require": { @@ -7937,7 +7940,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" }, "funding": [ { @@ -7953,20 +7956,20 @@ "type": "tidelift" } ], - "time": "2021-08-17T14:20:01+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/validator", - "version": "v4.4.35", + "version": "v4.4.43", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "629f420d8350634fd8ed686d4472c1f10044b265" + "reference": "5ae0de59615dff1896d44bc986ad87600ea121e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/629f420d8350634fd8ed686d4472c1f10044b265", - "reference": "629f420d8350634fd8ed686d4472c1f10044b265", + "url": "https://api.github.com/repos/symfony/validator/zipball/5ae0de59615dff1896d44bc986ad87600ea121e7", + "reference": "5ae0de59615dff1896d44bc986ad87600ea121e7", "shasum": "" }, "require": { @@ -7977,7 +7980,7 @@ "symfony/translation-contracts": "^1.1|^2" }, "conflict": { - "doctrine/lexer": "<1.0.2", + "doctrine/lexer": "<1.1", "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", "symfony/dependency-injection": "<3.4", "symfony/http-kernel": "<4.4", @@ -8043,7 +8046,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/v4.4.43" }, "funding": [ { @@ -8059,20 +8062,20 @@ "type": "tidelift" } ], - "time": "2021-11-22T21:43:32+00:00" + "time": "2022-06-05T18:35:51+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.0", + "version": "v5.4.9", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "89ab66eaef230c9cd1992de2e9a1b26652b127b9" + "reference": "af52239a330fafd192c773795520dc2dd62b5657" }, "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/af52239a330fafd192c773795520dc2dd62b5657", + "reference": "af52239a330fafd192c773795520dc2dd62b5657", "shasum": "" }, "require": { @@ -8132,7 +8135,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.9" }, "funding": [ { @@ -8148,20 +8151,20 @@ "type": "tidelift" } ], - "time": "2021-11-29T15:30:56+00:00" + "time": "2022-05-21T10:24:18+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.34", + "version": "v4.4.43", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2c309e258adeb9970229042be39b360d34986fad" + "reference": "07e392f0ef78376d080d5353c081a5e5704835bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2c309e258adeb9970229042be39b360d34986fad", - "reference": "2c309e258adeb9970229042be39b360d34986fad", + "url": "https://api.github.com/repos/symfony/yaml/zipball/07e392f0ef78376d080d5353c081a5e5704835bd", + "reference": "07e392f0ef78376d080d5353c081a5e5704835bd", "shasum": "" }, "require": { @@ -8203,7 +8206,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/v4.4.43" }, "funding": [ { @@ -8219,20 +8222,20 @@ "type": "tidelift" } ], - "time": "2021-11-18T18:49:23+00:00" + "time": "2022-06-20T08:31:17+00:00" }, { "name": "twig/twig", - "version": "v2.14.11", + "version": "v2.15.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "66baa66f29ee30e487e05f1679903e36eb01d727" + "reference": "3b7cedb2f736899a7dbd0ba3d6da335a015f5cc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/66baa66f29ee30e487e05f1679903e36eb01d727", - "reference": "66baa66f29ee30e487e05f1679903e36eb01d727", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/3b7cedb2f736899a7dbd0ba3d6da335a015f5cc4", + "reference": "3b7cedb2f736899a7dbd0ba3d6da335a015f5cc4", "shasum": "" }, "require": { @@ -8248,7 +8251,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.14-dev" + "dev-master": "2.15-dev" } }, "autoload": { @@ -8287,7 +8290,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v2.14.11" + "source": "https://github.com/twigphp/Twig/tree/v2.15.1" }, "funding": [ { @@ -8299,7 +8302,7 @@ "type": "tidelift" } ], - "time": "2022-02-04T06:57:25+00:00" + "time": "2022-05-17T05:46:24+00:00" }, { "name": "typo3/phar-stream-wrapper", @@ -8783,16 +8786,16 @@ }, { "name": "composer/composer", - "version": "2.2.14", + "version": "2.2.15", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "8c7a2d200bb0e66d6fafeff2f9c9a27188e52842" + "reference": "509dcbd4f8d459e0ef2ef223a231b8c31bceed78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/8c7a2d200bb0e66d6fafeff2f9c9a27188e52842", - "reference": "8c7a2d200bb0e66d6fafeff2f9c9a27188e52842", + "url": "https://api.github.com/repos/composer/composer/zipball/509dcbd4f8d459e0ef2ef223a231b8c31bceed78", + "reference": "509dcbd4f8d459e0ef2ef223a231b8c31bceed78", "shasum": "" }, "require": { @@ -8862,7 +8865,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.2.14" + "source": "https://github.com/composer/composer/tree/2.2.15" }, "funding": [ { @@ -8878,7 +8881,7 @@ "type": "tidelift" } ], - "time": "2022-06-06T14:32:50+00:00" + "time": "2022-07-01T10:01:26+00:00" }, { "name": "composer/metadata-minifier", @@ -10000,22 +10003,22 @@ }, { "name": "drupal/core-dev", - "version": "9.3.17", + "version": "9.4.1", "source": { "type": "git", "url": "https://github.com/drupal/core-dev.git", - "reference": "d093ec9dd1106069fd01535235dd5797662a61cb" + "reference": "72ddd684df05fc22e97d42ddba5fb6c5ee9f9b29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-dev/zipball/d093ec9dd1106069fd01535235dd5797662a61cb", - "reference": "d093ec9dd1106069fd01535235dd5797662a61cb", + "url": "https://api.github.com/repos/drupal/core-dev/zipball/72ddd684df05fc22e97d42ddba5fb6c5ee9f9b29", + "reference": "72ddd684df05fc22e97d42ddba5fb6c5ee9f9b29", "shasum": "" }, "require": { "behat/mink": "^1.8", "behat/mink-selenium2-driver": "^1.4", - "composer/composer": "^2.0.2", + "composer/composer": "^2.2.12", "drupal/coder": "^8.3.10", "easyrdf/easyrdf": "^0.9 || ^1.0", "friends-of-behat/mink-browserkit-driver": "^1.4", @@ -10044,9 +10047,9 @@ ], "description": "require-dev dependencies from drupal/drupal; use in addition to drupal/core-recommended to run tests from drupal/core.", "support": { - "source": "https://github.com/drupal/core-dev/tree/9.3.17" + "source": "https://github.com/drupal/core-dev/tree/9.4.1" }, - "time": "2021-11-30T05:41:29+00:00" + "time": "2022-04-14T00:37:13+00:00" }, { "name": "drupal/devel", @@ -11730,16 +11733,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.7.15", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "cd0202ea1b1fc6d1bbe156c6e2e18a03e0ff160a" + "reference": "b7648d4ee9321665acaf112e49da9fd93df8fbd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/cd0202ea1b1fc6d1bbe156c6e2e18a03e0ff160a", - "reference": "cd0202ea1b1fc6d1bbe156c6e2e18a03e0ff160a", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b7648d4ee9321665acaf112e49da9fd93df8fbd5", + "reference": "b7648d4ee9321665acaf112e49da9fd93df8fbd5", "shasum": "" }, "require": { @@ -11765,7 +11768,7 @@ "description": "PHPStan - PHP Static Analysis Tool", "support": { "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.7.15" + "source": "https://github.com/phpstan/phpstan/tree/1.8.0" }, "funding": [ { @@ -11785,7 +11788,7 @@ "type": "tidelift" } ], - "time": "2022-06-20T08:29:01+00:00" + "time": "2022-06-29T08:53:31+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", diff --git a/composer.patches.json b/composer.patches.json index c34b5324..effa177f 100644 --- a/composer.patches.json +++ b/composer.patches.json @@ -1,15 +1,15 @@ { "patches": { "drupal/core": { - "Issue #1356276: Introduce base profiles (Scheduled Drupal 9.4.0)": "patches/drupal/D93x-1356276-675.patch", - "Issue #2924549: Invoke hook after a site install is complete (Scheduled Drupal 9.4.0)": "patches/drupal/D91x-2924549-38.patch", - "Issue #3181946: ReplicaKillSwitch unnecessarily starts a session on each request (Scheduled Drupal 9.4.0)": "patches/drupal/D94x-3181946-23.patch", - "Issue #3098935: JSON:API can't handle exceptions thrown during authentication (Scheduled Drupal 9.4.0)": "patches/drupal/D94x-3098935-16.patch", + "Issue #1356276: Introduce base profiles (Scheduled Drupal 9.5.0)": "patches/drupal/D94x-1356276-686.patch", + "Issue #2924549: Invoke hook after a site install is complete (Scheduled Drupal 9.5.0)": "patches/drupal/D91x-2924549-38.patch", + "Issue #3181946: ReplicaKillSwitch unnecessarily starts a session on each request (Scheduled Drupal 9.5.0)": "patches/drupal/D94x-3181946-23.patch", + "Issue #3098935: JSON:API can't handle exceptions thrown during authentication (Scheduled Drupal 9.5.0)": "patches/drupal/D94x-3098935-16.patch", "Custom: Change file upload route for jsonapi extras": "patches/drupal/custom-change-file-upload-route-for-jsonapi-extras.patch", "Custom: Modify upload user avatar access check": "patches/drupal/custom-modify-upload-user-avatar-access-check.patch", "Custom: Jsonapi Upload route is recognized as jsonapi request": "patches/drupal/custom-file-upload-route-is-jsonapi-request.patch", "Custom: Hide meta drupal IDs in JSON:API response": "patches/drupal/custom-hide-meta-drupal-ids-jsonapi.patch", - "Issue #3050383: PageCache getCacheId doesnt compare cid of the following subrequests in subrequest queue calls": "patches/drupal/page-cache-id-doesnt-compare-cid-subrequests.patch" + "Custom Issue #3050383: PageCache getCacheId doesnt compare cid of the following subrequests in subrequest queue calls": "patches/drupal/page-cache-id-doesnt-compare-cid-subrequests.patch" }, "drupal/jsonapi_include": { "Issue #3131167: Infinite recursion for nested include": "patches/jsonapi_include/JAI8x14-3131167-6.patch", diff --git a/patches/drupal/D93x-1356276-675.patch b/patches/drupal/D94x-1356276-686.patch similarity index 93% rename from patches/drupal/D93x-1356276-675.patch rename to patches/drupal/D94x-1356276-686.patch index ea65105b..3537bf75 100644 --- a/patches/drupal/D93x-1356276-675.patch +++ b/patches/drupal/D94x-1356276-686.patch @@ -1,8 +1,8 @@ diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc -index 5a5f92339b..dede4b9f7b 100644 +index 4375abdebd..f2a1b6853a 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc -@@ -464,6 +464,12 @@ function install_begin_request($class_loader, &$install_state) { +@@ -465,6 +465,12 @@ function install_begin_request($class_loader, &$install_state) { if (isset($install_state['profile_info']['distribution']['install']['theme'])) { $install_state['theme'] = $install_state['profile_info']['distribution']['install']['theme']; } @@ -13,10 +13,10 @@ index 5a5f92339b..dede4b9f7b 100644 + }, $profiles); + $listing->setProfileDirectories($profile_directories); } - + // Before having installed the system module and being able to do a module -@@ -847,18 +853,22 @@ function install_tasks($install_state) { - +@@ -848,18 +854,22 @@ function install_tasks($install_state) { + // Now add any tasks defined by the installation profile. if (!empty($install_state['parameters']['profile'])) { - // Load the profile install file, because it is not always loaded when @@ -50,8 +50,8 @@ index 5a5f92339b..dede4b9f7b 100644 } } } -@@ -876,11 +886,13 @@ function install_tasks($install_state) { - +@@ -877,11 +887,13 @@ function install_tasks($install_state) { + // Allow the installation profile to modify the full list of tasks. if (!empty($install_state['parameters']['profile'])) { - $profile = $install_state['parameters']['profile']; @@ -69,7 +69,7 @@ index 5a5f92339b..dede4b9f7b 100644 } } } -@@ -1264,7 +1276,9 @@ function install_select_profile(&$install_state) { +@@ -1266,7 +1278,9 @@ function install_select_profile(&$install_state) { * - For interactive installations via request query parameters. * - For non-interactive installations via install_drupal() settings. * - One of the available profiles is a distribution. If multiple profiles are @@ -80,7 +80,7 @@ index 5a5f92339b..dede4b9f7b 100644 * - Only one visible profile is available. * * @param array $install_state -@@ -1289,12 +1303,9 @@ function _install_select_profile(&$install_state) { +@@ -1291,12 +1305,9 @@ function _install_select_profile(&$install_state) { return $profile; } } @@ -96,7 +96,7 @@ index 5a5f92339b..dede4b9f7b 100644 } // Get all visible (not hidden) profiles. $visible_profiles = array_filter($install_state['profiles'], function ($profile) { -@@ -1522,7 +1533,9 @@ function _install_get_version_info($version) { +@@ -1524,7 +1535,9 @@ function _install_get_version_info($version) { */ function install_load_profile(&$install_state) { $profile = $install_state['parameters']['profile']; @@ -105,12 +105,12 @@ index 5a5f92339b..dede4b9f7b 100644 + $install_state['profiles'][$profile_id]->load(); + } $install_state['profile_info'] = install_profile_info($profile, $install_state['parameters']['langcode'] ?? 'en'); - + $sync_directory = Settings::get('config_sync_directory'); -@@ -1656,6 +1669,10 @@ function install_install_profile(&$install_state) { - +@@ -1658,6 +1671,10 @@ function install_install_profile(&$install_state) { + \Drupal::service('module_installer')->install([$install_state['parameters']['profile']], FALSE); - + + // Install all the profiles. + $profiles = \Drupal::service('extension.list.profile')->getAncestors(); + \Drupal::service('module_installer')->install(array_keys($profiles), FALSE); @@ -119,18 +119,18 @@ index 5a5f92339b..dede4b9f7b 100644 // @see _drupal_maintenance_theme() \Drupal::theme()->resetActiveTheme(); diff --git a/core/includes/install.inc b/core/includes/install.inc -index dcb7ffa691..aaedfb415c 100644 +index adc4a787e3..1a4fb5bbe5 100644 --- a/core/includes/install.inc +++ b/core/includes/install.inc -@@ -532,7 +532,6 @@ function _drupal_rewrite_settings_dump_one(\stdClass $variable, $prefix = '', $s +@@ -533,7 +533,6 @@ function _drupal_rewrite_settings_dump_one(\stdClass $variable, $prefix = '', $s * The list of modules to install. */ function drupal_verify_profile($install_state) { - $profile = $install_state['parameters']['profile']; $info = $install_state['profile_info']; - + // Get the list of available modules for the selected installation profile. -@@ -541,10 +540,11 @@ function drupal_verify_profile($install_state) { +@@ -542,10 +541,11 @@ function drupal_verify_profile($install_state) { foreach ($listing->scan('module') as $present_module) { $present_modules[] = $present_module->getName(); } @@ -143,10 +143,10 @@ index dcb7ffa691..aaedfb415c 100644 + foreach ($listing->scan('profile') as $present_profile) { + $present_modules[] = $present_profile->getName(); + } - + // Verify that all of the profile's required modules are present. $missing_modules = array_diff($info['install'], $present_modules); -@@ -1076,6 +1076,9 @@ function drupal_check_module($module) { +@@ -1087,6 +1087,9 @@ function drupal_check_module($module) { * Drupal's default installer theme. * - finish_url: A destination to visit after the installation of the * distribution is finished @@ -156,21 +156,44 @@ index dcb7ffa691..aaedfb415c 100644 * * Note that this function does an expensive file system scan to get info file * information for dependencies. If you only need information from the info -@@ -1115,8 +1118,8 @@ function install_profile_info($profile, $langcode = 'en') { - 'config_install_path' => NULL, - ]; +@@ -1114,22 +1117,9 @@ function install_profile_info($profile, $langcode = 'en') { + static $cache = []; + + if (!isset($cache[$profile][$langcode])) { +- // Set defaults for module info. +- $defaults = [ +- 'dependencies' => [], +- 'install' => [], +- 'themes' => ['stark'], +- 'description' => '', +- 'version' => NULL, +- 'hidden' => FALSE, +- 'php' => \Drupal::MINIMUM_PHP, +- 'config_install_path' => NULL, +- ]; $profile_path = \Drupal::service('extension.list.profile')->getPath($profile); -- $info = \Drupal::service('info_parser')->parse("$profile_path/$profile.info.yml"); +- /** @var \Drupal\Core\Extension\InfoParserInterface $parser */ +- $parser = \Drupal::service('info_parser'); +- $info = $parser->parse("$profile_path/$profile.info.yml"); - $info += $defaults; + $info = \Drupal::service('extension.list.profile')->getExtensionInfo($profile); + $ancestors = \Drupal::service('extension.list.profile')->getAncestors($profile); - + $dependency_name_function = function ($dependency) { return Dependency::createFromString($dependency)->getName(); -@@ -1137,6 +1140,9 @@ function install_profile_info($profile, $langcode = 'en') { +@@ -1140,6 +1130,8 @@ function install_profile_info($profile, $langcode = 'en') { + // Convert install key in [project:module] format. + $info['install'] = array_map($dependency_name_function, $info['install']); + ++ /** @var \Drupal\Core\Extension\InfoParserInterface $parser */ ++ $parser = \Drupal::service('info_parser'); + // Get a list of core's required modules. + $required = []; + $listing = new ExtensionDiscovery(\Drupal::root()); +@@ -1157,6 +1149,9 @@ function install_profile_info($profile, $langcode = 'en') { // remove any duplicates. $info['install'] = array_unique(array_merge($info['install'], $required, $info['dependencies'], $locale)); - + + // Remove the base profiles from the install list. + $info['install'] = array_diff($info['install'], array_keys($ancestors)); + @@ -182,7 +205,7 @@ index 107ca8a071..4e4c14a94b 100644 --- a/core/lib/Drupal/Core/Config/ConfigInstaller.php +++ b/core/lib/Drupal/Core/Config/ConfigInstaller.php @@ -4,6 +4,7 @@ - + use Drupal\Component\Utility\Crypt; use Drupal\Core\Config\Entity\ConfigDependencyManager; +use Drupal\Core\Extension\ProfileExtensionList; @@ -192,7 +215,7 @@ index 107ca8a071..4e4c14a94b 100644 @@ -52,6 +53,13 @@ class ConfigInstaller implements ConfigInstallerInterface { */ protected $sourceStorage; - + + /** + * The profile list. + * @@ -223,7 +246,7 @@ index 107ca8a071..4e4c14a94b 100644 @trigger_error('Calling ConfigInstaller::__construct() without the $extension_path_resolver argument is deprecated in drupal:9.3.0 and is removed from drupal:10.0.0. See https://www.drupal.org/node/2940438', E_USER_DEPRECATED); $extension_path_resolver = \Drupal::service('extension.path.resolver'); @@ -532,7 +543,8 @@ public function checkConfigurationToInstall($type, $name) { - + // Install profiles can not have config clashes. Configuration that // has the same name as a module's configuration will be used instead. - if ($name != $this->drupalGetProfile()) { @@ -238,10 +261,10 @@ index 1006013f5f..6aae5ef046 100644 +++ b/core/lib/Drupal/Core/Config/ExtensionInstallStorage.php @@ -3,6 +3,7 @@ namespace Drupal\Core\Config; - + use Drupal\Core\Extension\ExtensionDiscovery; +use Drupal\Core\Extension\ProfileExtensionList; - + /** * Storage to access configuration and schema in enabled extensions. @@ -50,9 +51,11 @@ class ExtensionInstallStorage extends InstallStorage { @@ -264,7 +287,7 @@ index 1006013f5f..6aae5ef046 100644 $this->folders = []; - $this->folders += $this->getCoreNames(); + $this->folders = $this->getCoreNames() + $this->folders; - + $extensions = $this->configStorage->read('core.extension'); // @todo Remove this scan as part of https://www.drupal.org/node/2186491 $listing = new ExtensionDiscovery(\Drupal::root()); @@ -303,7 +326,7 @@ index 1006013f5f..6aae5ef046 100644 - $this->folders += $this->getComponentNames($theme_list); + $this->folders = $this->getComponentNames($theme_list) + $this->folders; } - + if ($this->includeProfile) { - // The install profile can override module default configuration. We do - // this by replacing the config file path from the module/theme with the @@ -331,17 +354,17 @@ index a21388b3cb..01f25285b4 100644 --- a/core/lib/Drupal/Core/Config/InstallStorage.php +++ b/core/lib/Drupal/Core/Config/InstallStorage.php @@ -4,6 +4,7 @@ - + use Drupal\Core\Extension\ExtensionDiscovery; use Drupal\Core\Extension\Extension; +use Drupal\Core\Extension\ProfileExtensionList; - + /** * Storage used by the Drupal installer. @@ -47,6 +48,13 @@ class InstallStorage extends FileStorage { */ protected $directory; - + + /** + * The profile list, used to find additional folders to scan for config. + * @@ -366,7 +389,7 @@ index a21388b3cb..01f25285b4 100644 + $this->profileList = $profile_list ?: \Drupal::service('extension.list.profile'); + } } - + /** @@ -150,7 +163,9 @@ public function listAll($prefix = '') { protected function getAllFolders() { @@ -396,7 +419,7 @@ index a21388b3cb..01f25285b4 100644 return $this->folders; } diff --git a/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php -index 99b933754d..c2dd38d769 100644 +index 0547a14d3a..fdc3f9fb71 100644 --- a/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php +++ b/core/lib/Drupal/Core/EventSubscriber/ConfigImportSubscriber.php @@ -7,6 +7,7 @@ @@ -404,13 +427,13 @@ index 99b933754d..c2dd38d769 100644 use Drupal\Core\Config\ConfigImportValidateEventSubscriberBase; use Drupal\Core\Config\ConfigNameException; +use Drupal\Core\Extension\Extension; + use Drupal\Core\Extension\ConfigImportModuleUninstallValidatorInterface; use Drupal\Core\Extension\ModuleExtensionList; - use Drupal\Core\Extension\ThemeHandlerInterface; - use Drupal\Core\Installer\InstallerKernel; -@@ -119,12 +120,18 @@ protected function validateModules(ConfigImporter $config_importer) { + use Drupal\Core\Extension\ModuleUninstallValidatorInterface; +@@ -138,12 +139,18 @@ protected function validateModules(ConfigImporter $config_importer) { $config_importer->logError($this->t('Unable to install the %module module since it does not exist.', ['%module' => $module])); } - + + // Get a list of parent profiles and the main profile. + /** @var \Drupal\Core\Extension\Extension[] $profiles */ + $profiles = \Drupal::service('extension.list.profile')->getAncestors(); @@ -427,7 +450,7 @@ index 99b933754d..c2dd38d769 100644 $missing_dependencies[] = $module_data[$required_module]->info['name']; } } -@@ -144,18 +151,44 @@ protected function validateModules(ConfigImporter $config_importer) { +@@ -163,10 +170,15 @@ protected function validateModules(ConfigImporter $config_importer) { $uninstalls = $config_importer->getExtensionChangelist('module', 'uninstall'); foreach ($uninstalls as $module) { foreach (array_keys($module_data[$module]->required_by) as $dependent_module) { @@ -446,8 +469,11 @@ index 99b933754d..c2dd38d769 100644 + } } } + // Ensure that modules can be uninstalled. +@@ -181,10 +193,31 @@ protected function validateModules(ConfigImporter $config_importer) { + } } - + - // Ensure that the install profile is not being uninstalled. - if (in_array($install_profile, $uninstalls, TRUE)) { - $profile_name = $module_data[$install_profile]->info['name']; @@ -479,15 +505,15 @@ index 99b933754d..c2dd38d769 100644 + } } } - + diff --git a/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php b/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php -index 266886ba95..3874e08b87 100644 +index 76d6f1947b..f5938fd3df 100644 --- a/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php +++ b/core/lib/Drupal/Core/Extension/ExtensionDiscovery.php @@ -91,6 +91,15 @@ class ExtensionDiscovery { */ protected $sitePath; - + + /** + * The profile list. + * @@ -524,7 +550,7 @@ index 266886ba95..3874e08b87 100644 + $this->profileList = \Drupal::service('extension.list.profile'); + } } - + /** @@ -229,7 +250,19 @@ public function scan($type, $include_tests = NULL) { public function setProfileDirectoriesFromSettings() { @@ -548,7 +574,7 @@ index 266886ba95..3874e08b87 100644 return $this; } diff --git a/core/lib/Drupal/Core/Extension/ModuleExtensionList.php b/core/lib/Drupal/Core/Extension/ModuleExtensionList.php -index 5aed60c0b0..efc482d905 100644 +index 6337cd0894..affdf7f506 100644 --- a/core/lib/Drupal/Core/Extension/ModuleExtensionList.php +++ b/core/lib/Drupal/Core/Extension/ModuleExtensionList.php @@ -42,7 +42,7 @@ class ModuleExtensionList extends ExtensionList { @@ -559,7 +585,7 @@ index 5aed60c0b0..efc482d905 100644 + * @var \Drupal\Core\Extension\ProfileExtensionList */ protected $profileList; - + @@ -63,14 +63,14 @@ class ModuleExtensionList extends ExtensionList { * The state. * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory @@ -575,19 +601,20 @@ index 5aed60c0b0..efc482d905 100644 - public function __construct($root, $type, CacheBackendInterface $cache, InfoParserInterface $info_parser, ModuleHandlerInterface $module_handler, StateInterface $state, ConfigFactoryInterface $config_factory, ExtensionList $profile_list, $install_profile, array $container_modules_info = []) { + public function __construct($root, $type, CacheBackendInterface $cache, InfoParserInterface $info_parser, ModuleHandlerInterface $module_handler, StateInterface $state, ConfigFactoryInterface $config_factory, ProfileExtensionList $profile_list, $install_profile, array $container_modules_info = []) { parent::__construct($root, $type, $cache, $info_parser, $module_handler, $state, $install_profile); - + $this->configFactory = $config_factory; -@@ -107,8 +107,7 @@ protected function getExtensionDiscovery() { +@@ -106,9 +106,7 @@ protected function getExtensionDiscovery() { + */ protected function getProfileDirectories(ExtensionDiscovery $discovery) { $discovery->setProfileDirectories([]); - $all_profiles = $discovery->scan('profile'); +- $all_profiles = $discovery->scan('profile'); - $active_profile = $all_profiles[$this->installProfile]; - $profiles = array_intersect_key($all_profiles, $this->configFactory->get('core.extension')->get('module') ?: [$active_profile->getName() => 0]); + $profiles = $this->profileList->getAncestors($this->installProfile); - + $profile_directories = array_map(function (Extension $profile) { return $profile->getPath(); -@@ -136,13 +135,9 @@ protected function getActiveProfile() { +@@ -136,13 +134,9 @@ protected function getActiveProfile() { */ protected function doScanExtensions() { $extensions = parent::doScanExtensions(); @@ -601,24 +628,24 @@ index 5aed60c0b0..efc482d905 100644 + // Merge in the install profile and any profile ancestors. + $profiles = $this->profileList->getAncestors($this->installProfile); + $extensions = array_merge($extensions, $profiles); - + return $extensions; } diff --git a/core/lib/Drupal/Core/Extension/ModuleInstaller.php b/core/lib/Drupal/Core/Extension/ModuleInstaller.php -index 21970253e9..6640e0044e 100644 +index 909f0eb6c4..27d79a6978 100644 --- a/core/lib/Drupal/Core/Extension/ModuleInstaller.php +++ b/core/lib/Drupal/Core/Extension/ModuleInstaller.php -@@ -421,7 +421,7 @@ public function uninstall(array $module_list, $uninstall_dependents = TRUE) { +@@ -416,7 +416,7 @@ public function uninstall(array $module_list, $uninstall_dependents = TRUE) { return FALSE; } - + - // Skip already uninstalled modules. + // Skip already uninstalled modules and dependencies of profiles. if (isset($installed_modules[$dependent]) && !isset($module_list[$dependent])) { $module_list[$dependent] = $dependent; } diff --git a/core/lib/Drupal/Core/Extension/ProfileExtensionList.php b/core/lib/Drupal/Core/Extension/ProfileExtensionList.php -index 5ef9c451fd..5f139a00ed 100644 +index 5ef9c451fd..426c92a654 100644 --- a/core/lib/Drupal/Core/Extension/ProfileExtensionList.php +++ b/core/lib/Drupal/Core/Extension/ProfileExtensionList.php @@ -23,13 +23,172 @@ class ProfileExtensionList extends ExtensionList { @@ -629,7 +656,7 @@ index 5ef9c451fd..5f139a00ed 100644 + 'hidden' => FALSE, + 'base profile' => '', ]; - + + /** + * {@inheritdoc} + */ @@ -706,7 +733,7 @@ index 5ef9c451fd..5f139a00ed 100644 + } + + // Remove any distributions which are extended by another one. -+ foreach ($distributions as $profile_name => $profile) { ++ foreach ($distributions as $profile) { + if (!empty($profile->info['base profile'])) { + $base_profile = $profile->info['base profile']; + unset($distributions[$base_profile]); @@ -793,7 +820,7 @@ index 5ef9c451fd..5f139a00ed 100644 - return [$this->installProfile]; + return array_keys($this->getAncestors()); } - + } diff --git a/core/lib/Drupal/Core/Installer/InstallerProfileExtensionList.php b/core/lib/Drupal/Core/Installer/InstallerProfileExtensionList.php new file mode 100644 @@ -864,13 +891,13 @@ index a35905b587..82923801a0 100644 --- a/core/lib/Drupal/Core/Installer/NormalInstallerServiceProvider.php +++ b/core/lib/Drupal/Core/Installer/NormalInstallerServiceProvider.php @@ -53,6 +53,7 @@ public function register(ContainerBuilder $container) { - + // Use performance-optimized extension lists. $container->getDefinition('extension.list.module')->setClass(InstallerModuleExtensionList::class); + $container->getDefinition('extension.list.profile')->setClass(InstallerProfileExtensionList::class); $container->getDefinition('extension.list.theme')->setClass(InstallerThemeExtensionList::class); $container->getDefinition('extension.list.theme_engine')->setClass(InstallerThemeEngineExtensionList::class); - + diff --git a/core/modules/config/tests/config_test/src/TestInstallStorage.php b/core/modules/config/tests/config_test/src/TestInstallStorage.php index e3c4918df4..6d140815b7 100644 --- a/core/modules/config/tests/config_test/src/TestInstallStorage.php @@ -891,10 +918,10 @@ index e3c4918df4..6d140815b7 100644 } diff --git a/core/modules/config/tests/src/Functional/ConfigImportBaseInstallProfileTest.php b/core/modules/config/tests/src/Functional/ConfigImportBaseInstallProfileTest.php new file mode 100644 -index 0000000000..583c31153b +index 0000000000..d1fb659c06 --- /dev/null +++ b/core/modules/config/tests/src/Functional/ConfigImportBaseInstallProfileTest.php -@@ -0,0 +1,96 @@ +@@ -0,0 +1,100 @@ +webUser = $this->drupalCreateUser(['synchronize configuration']); @@ -945,17 +972,19 @@ index 0000000000..583c31153b + unset($core['module']['testing']); + $sync->write('core.extension', $core); + -+ $this->drupalPostForm('admin/config/development/configuration', [], t('Import all')); -+ $this->assertText('The configuration cannot be imported because it failed validation for the following reasons:'); -+ $this->assertText('Unable to uninstall the Testing profile since it is a parent of another installed profile.'); ++ $this->drupalGet('admin/config/development/configuration'); ++ $this->submitForm([], 'Import all'); ++ $this->assertSession()->pageTextContains('The configuration cannot be imported because it failed validation for the following reasons:'); ++ $this->assertSession()->pageTextContains('Unable to uninstall the Testing profile since it is a parent of another installed profile.'); + + // Uninstall dependencies of parent profile. + $core['module']['testing'] = 0; + unset($core['module']['dynamic_page_cache']); + $sync->write('core.extension', $core); + $sync->deleteAll('dynamic_page_cache.'); -+ $this->drupalPostForm('admin/config/development/configuration', [], t('Import all')); -+ $this->assertText('The configuration was imported successfully.'); ++ $this->drupalGet('admin/config/development/configuration'); ++ $this->submitForm([], 'Import all'); ++ $this->assertSession()->pageTextContains('The configuration was imported successfully.'); + $this->rebuildContainer(); + $this->assertFalse(\Drupal::moduleHandler()->moduleExists('dynamic_page_cache'), 'The dynamic_page_cache module has been uninstalled.'); + } @@ -975,24 +1004,26 @@ index 0000000000..583c31153b + unset($core['module']['testing_inherited']); + $sync->write('core.extension', $core); + -+ $this->drupalPostForm('admin/config/development/configuration', [], t('Import all')); -+ $this->assertText('The configuration cannot be imported because it failed validation for the following reasons:'); -+ $this->assertText('Unable to uninstall the Testing Inherited profile since it is the main install profile.'); ++ $this->drupalGet('admin/config/development/configuration'); ++ $this->submitForm([], 'Import all'); ++ $this->assertSession()->pageTextContains('The configuration cannot be imported because it failed validation for the following reasons:'); ++ $this->assertSession()->pageTextContains('Unable to uninstall the Testing Inherited profile since it is the main install profile.'); + + // Uninstall dependencies of main profile. + $core['module']['testing_inherited'] = 0; + unset($core['module']['syslog']); + $sync->write('core.extension', $core); + $sync->deleteAll('syslog.'); -+ $this->drupalPostForm('admin/config/development/configuration', [], t('Import all')); -+ $this->assertText('The configuration was imported successfully.'); ++ $this->drupalGet('admin/config/development/configuration'); ++ $this->submitForm([], 'Import all'); ++ $this->assertSession()->pageTextContains('The configuration was imported successfully.'); + $this->rebuildContainer(); + $this->assertFalse(\Drupal::moduleHandler()->moduleExists('syslog'), 'The syslog module has been uninstalled.'); + } + +} diff --git a/core/modules/config/tests/src/Functional/ConfigImportInstallProfileTest.php b/core/modules/config/tests/src/Functional/ConfigImportInstallProfileTest.php -index 9766979d4e..b870aeed33 100644 +index cadd96ad32..644ad7f902 100644 --- a/core/modules/config/tests/src/Functional/ConfigImportInstallProfileTest.php +++ b/core/modules/config/tests/src/Functional/ConfigImportInstallProfileTest.php @@ -62,7 +62,7 @@ public function testInstallProfileValidation() { @@ -1001,30 +1032,30 @@ index 9766979d4e..b870aeed33 100644 $this->assertSession()->pageTextContains('The configuration cannot be imported because it failed validation for the following reasons:'); - $this->assertSession()->pageTextContains('Unable to uninstall the Testing config import profile since it is the install profile.'); + $this->assertSession()->pageTextContains('Unable to uninstall the Testing config import profile since it is the main install profile.'); - + // Uninstall dependencies of testing_config_import. $core['module']['testing_config_import'] = 0; diff --git a/core/modules/system/src/Form/ModulesUninstallForm.php b/core/modules/system/src/Form/ModulesUninstallForm.php -index 0719511e8e..0e4f80f503 100644 +index 82c014c230..e8bbec424d 100644 --- a/core/modules/system/src/Form/ModulesUninstallForm.php +++ b/core/modules/system/src/Form/ModulesUninstallForm.php -@@ -143,10 +143,15 @@ public function buildForm(array $form, FormStateInterface $form_state) { +@@ -146,10 +146,15 @@ public function buildForm(array $form, FormStateInterface $form_state) { return $form; } - + + $profiles = \Drupal::service('extension.list.profile')->getAncestors(); + // Sort all modules by their name. uasort($uninstallable, [ModuleExtensionList::class, 'sortByName']); $validation_reasons = $this->moduleInstaller->validateUninstall(array_keys($uninstallable)); - + + // Remove any profiles from the list. + $uninstallable = array_diff_key($uninstallable, $profiles); + $form['uninstall'] = ['#tree' => TRUE]; foreach ($uninstallable as $module_key => $module) { $name = $module->info['name'] ?: $module->getName(); -@@ -167,7 +172,8 @@ public function buildForm(array $form, FormStateInterface $form_state) { +@@ -185,7 +190,8 @@ public function buildForm(array $form, FormStateInterface $form_state) { $form['uninstall'][$module->getName()]['#disabled'] = TRUE; } // All modules which depend on this one must be uninstalled first, before @@ -1311,11 +1342,11 @@ index 0000000000..e14705d581 + +} diff --git a/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php b/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php -index 14a51290b2..d14233b8b5 100644 +index 63d2169754..f73d00b4f9 100644 --- a/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php +++ b/core/tests/Drupal/KernelTests/Core/Config/ConfigImporterTest.php -@@ -732,7 +732,7 @@ public function testInstallProfileMisMatch() { - $error_log = $this->configImporter->getErrors(); +@@ -735,7 +735,7 @@ public function testInstallProfileMisMatch() { + $error_log = $config_importer->getErrors(); // Install profiles can not be changed. Note that KernelTestBase currently // does not use an install profile. This situation should be impossible - // to get in but site's can removed the install profile setting from @@ -1325,7 +1356,7 @@ index 14a51290b2..d14233b8b5 100644 } diff --git a/core/tests/Drupal/KernelTests/Core/Extension/ProfileExtensionListTest.php b/core/tests/Drupal/KernelTests/Core/Extension/ProfileExtensionListTest.php new file mode 100644 -index 0000000000..0c8faa21c4 +index 0000000000..1d7674533a --- /dev/null +++ b/core/tests/Drupal/KernelTests/Core/Extension/ProfileExtensionListTest.php @@ -0,0 +1,145 @@ @@ -1416,7 +1447,7 @@ index 0000000000..0c8faa21c4 + */ + public function testSelectDistribution() { + $profile_list = new TestProfileExtensionList( -+ $this->container->get('app.root'), ++ $this->container->getParameter('app.root'), + 'profile', + $this->container->get('cache.default'), + $this->container->get('info_parser'), @@ -1474,4 +1505,3 @@ index 0000000000..0c8faa21c4 + } + +} - diff --git a/web/.htaccess b/web/.htaccess index 285cb298..fbce6b58 100644 --- a/web/.htaccess +++ b/web/.htaccess @@ -32,6 +32,11 @@ AddEncoding gzip svgz php_value assert.active 0 +# PHP 8, Apache 1 and 2. + + php_value assert.active 0 + + # Requires mod_expires to be enabled. # Enable expirations. diff --git a/web/.htaccess.orig b/web/.htaccess.orig new file mode 100644 index 00000000..4d19147c --- /dev/null +++ b/web/.htaccess.orig @@ -0,0 +1,187 @@ +# +# Apache/PHP/Drupal settings: +# + +# Protect files and directories from prying eyes. + + + Require all denied + + + Order allow,deny + + + +# Don't show directory listings for URLs which map to a directory. +Options -Indexes + +# Set the default handler. +DirectoryIndex index.php index.html index.htm + +# Add correct encoding for SVGZ. +AddType image/svg+xml svg svgz +AddEncoding gzip svgz + +# Most of the following PHP settings cannot be changed at runtime. See +# sites/default/default.settings.php and +# Drupal\Core\DrupalKernel::bootEnvironment() for settings that can be +# changed at runtime. + +# PHP 7, Apache 1 and 2. + + php_value assert.active 0 + + +# PHP 8, Apache 1 and 2. + + php_value assert.active 0 + + +# Requires mod_expires to be enabled. + + # Enable expirations. + ExpiresActive On + + # Cache all files for 2 weeks after access (A). + ExpiresDefault A1209600 + + + # Do not allow PHP scripts to be cached unless they explicitly send cache + # headers themselves. Otherwise all scripts would have to overwrite the + # headers set by mod_expires if they want another caching behavior. This may + # fail if an error occurs early in the bootstrap process, and it may cause + # problems if a non-Drupal PHP file is installed in a subdirectory. + ExpiresActive Off + + + +# Set a fallback resource if mod_rewrite is not enabled. This allows Drupal to +# work without clean URLs. This requires Apache version >= 2.2.16. If Drupal is +# not accessed by the top level URL (i.e.: http://example.com/drupal/ instead of +# http://example.com/), the path to index.php will need to be adjusted. + + FallbackResource /index.php + + +# Various rewrite rules. + + RewriteEngine on + + # Set "protossl" to "s" if we were accessed via https://. This is used later + # if you enable "www." stripping or enforcement, in order to ensure that + # you don't bounce between http and https. + RewriteRule ^ - [E=protossl] + RewriteCond %{HTTPS} on + RewriteRule ^ - [E=protossl:s] + + # Make sure Authorization HTTP header is available to PHP + # even when running as CGI or FastCGI. + RewriteRule ^ - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Block access to "hidden" directories whose names begin with a period. This + # includes directories used by version control systems such as Subversion or + # Git to store control files. Files whose names begin with a period, as well + # as the control files used by CVS, are protected by the FilesMatch directive + # above. + # + # NOTE: This only works when mod_rewrite is loaded. Without mod_rewrite, it is + # not possible to block access to entire directories from .htaccess because + # is not allowed here. + # + # If you do not have mod_rewrite installed, you should remove these + # directories from your webroot or otherwise protect them from being + # downloaded. + RewriteRule "/\.|^\.(?!well-known/)" - [F] + + # If your site can be accessed both with and without the 'www.' prefix, you + # can use one of the following settings to redirect users to your preferred + # URL, either WITH or WITHOUT the 'www.' prefix. Choose ONLY one option: + # + # To redirect all users to access the site WITH the 'www.' prefix, + # (http://example.com/foo will be redirected to http://www.example.com/foo) + # uncomment the following: + # RewriteCond %{HTTP_HOST} . + # RewriteCond %{HTTP_HOST} !^www\. [NC] + # RewriteRule ^ http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + # + # To redirect all users to access the site WITHOUT the 'www.' prefix, + # (http://www.example.com/foo will be redirected to http://example.com/foo) + # uncomment the following: + # RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] + # RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301] + + # Modify the RewriteBase if you are using Drupal in a subdirectory or in a + # VirtualDocumentRoot and the rewrite rules are not working properly. + # For example if your site is at http://example.com/drupal uncomment and + # modify the following line: + # RewriteBase /drupal + # + # If your site is running in a VirtualDocumentRoot at http://example.com/, + # uncomment the following line: + # RewriteBase / + + # Redirect common PHP files to their new locations. + RewriteCond %{REQUEST_URI} ^(.*)?/(install\.php) [OR] + RewriteCond %{REQUEST_URI} ^(.*)?/(rebuild\.php) + RewriteCond %{REQUEST_URI} !core + RewriteRule ^ %1/core/%2 [L,QSA,R=301] + + # Rewrite install.php during installation to see if mod_rewrite is working + RewriteRule ^core/install\.php core/install.php?rewrite=ok [QSA,L] + + # Pass all requests not referring directly to files in the filesystem to + # index.php. + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} !=/favicon.ico + RewriteRule ^ index.php [L] + + # For security reasons, deny access to other PHP files on public sites. + # Note: The following URI conditions are not anchored at the start (^), + # because Drupal may be located in a subdirectory. To further improve + # security, you can replace '!/' with '!^/'. + # Allow access to PHP files in /core (like authorize.php or install.php): + RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$ + # Allow access to test-specific PHP files: + RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?\.php + # Allow access to Statistics module's custom front controller. + # Copy and adapt this rule to directly execute PHP files in contributed or + # custom modules or to run another PHP application in the same directory. + RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics\.php$ + # Deny access to any other PHP files that do not match the rules above. + # Specifically, disallow autoload.php from being served directly. + RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F] + + # Rules to correctly serve gzip compressed CSS and JS files. + # Requires both mod_rewrite and mod_headers to be enabled. + + # Serve gzip compressed CSS files if they exist and the client accepts gzip. + RewriteCond %{HTTP:Accept-encoding} gzip + RewriteCond %{REQUEST_FILENAME}\.gz -s + RewriteRule ^(.*)\.css $1\.css\.gz [QSA] + + # Serve gzip compressed JS files if they exist and the client accepts gzip. + RewriteCond %{HTTP:Accept-encoding} gzip + RewriteCond %{REQUEST_FILENAME}\.gz -s + RewriteRule ^(.*)\.js $1\.js\.gz [QSA] + + # Serve correct content types, and prevent double compression. + RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1] + RewriteRule \.js\.gz$ - [T=text/javascript,E=no-gzip:1,E=no-brotli:1] + + + # Serve correct encoding type. + Header set Content-Encoding gzip + # Force proxies to cache gzipped & non-gzipped css/js files separately. + Header append Vary Accept-Encoding + + + + +# Various header fixes. + + # Disable content sniffing, since it's an attack vector. + Header always set X-Content-Type-Options nosniff + # Disable Proxy header, since it's an attack vector. + RequestHeader unset Proxy +