diff --git a/.github/workflows/run-cypress.yml b/.github/workflows/run-cypress.yml index ad7d47d54a..e65fd16b87 100644 --- a/.github/workflows/run-cypress.yml +++ b/.github/workflows/run-cypress.yml @@ -16,9 +16,9 @@ jobs: timeout-minutes: 30 strategy: matrix: - php: [ php82 ] + php: [ php85 ] env: - PROD_PHP: php82 + PROD_PHP: php85 DOCKER_COMPOSE: docker compose -f docker-compose.yml -f docker-compose-${{matrix.php}}.yml steps: - name: Checkout diff --git a/.github/workflows/test-integration.yml b/.github/workflows/test-integration.yml index e75cb18f2c..1f4c12ce35 100644 --- a/.github/workflows/test-integration.yml +++ b/.github/workflows/test-integration.yml @@ -15,9 +15,9 @@ jobs: timeout-minutes: 30 strategy: matrix: - php: [ php82 ] + php: [ php85 ] env: - PROD_PHP: php82 + PROD_PHP: php85 DOCKER_COMPOSE: docker compose -f docker-compose.yml -f docker-compose-${{matrix.php}}.yml steps: - name: Checkout diff --git a/composer.json b/composer.json index ced0a2f812..af59253522 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ "source": "https://github.com/OpenConext/OpenConext-engineblock" }, "require": { - "php": "^8.2", + "php": "^8.5", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", @@ -58,6 +58,7 @@ "behat/behat": "^3.26", "behat/mink": "^1.12", "behat/mink-browserkit-driver": "^2.2", + "cweagans/composer-patches": "^1.7", "dmore/behat-chrome-extension": "^1.4", "dmore/chrome-mink-driver": "2.9.3", "friends-of-behat/mink-extension": "^2.7.5", @@ -129,16 +130,23 @@ "config": { "optimize-autoloader": true, "platform": { - "php": "8.2" + "php": "8.5" }, "sort-packages": true, "allow-plugins": { + "cweagans/composer-patches": true, "dealerdirect/phpcodesniffer-composer-installer": true, "endroid/installer": false, "symfony/flex": true } }, "extra": { + "composer-exit-on-patch-failure": true, + "patches": { + "phrity/websocket": { + "PHP 8.5: fix implicit nullable param in ConnectionException": "patches/phrity-websocket-php85-nullable.patch" + } + }, "symfony": { "allow-contrib": false, "require": "7.4.*" diff --git a/composer.lock b/composer.lock index a0b1b8abcf..d74315d823 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": "f6010857a879802cd455d14a4c376463", + "content-hash": "98445f62c6961ef991c489da0786347a", "packages": [ { "name": "beberlei/assert", @@ -294,16 +294,16 @@ }, { "name": "doctrine/dbal", - "version": "4.4.2", + "version": "4.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "476f7f0fa6ea4aa5364926db7fabdf6049075722" + "reference": "61e730f1658814821a85f2402c945f3883407dec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/476f7f0fa6ea4aa5364926db7fabdf6049075722", - "reference": "476f7f0fa6ea4aa5364926db7fabdf6049075722", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/61e730f1658814821a85f2402c945f3883407dec", + "reference": "61e730f1658814821a85f2402c945f3883407dec", "shasum": "" }, "require": { @@ -380,7 +380,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.4.2" + "source": "https://github.com/doctrine/dbal/tree/4.4.3" }, "funding": [ { @@ -396,7 +396,7 @@ "type": "tidelift" } ], - "time": "2026-02-26T12:12:19+00:00" + "time": "2026-03-20T08:52:12+00:00" }, { "name": "doctrine/deprecations", @@ -1388,21 +1388,21 @@ }, { "name": "endroid/installer", - "version": "1.5.0", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/endroid/installer.git", - "reference": "39109e825057b2e7436123d5ad5dc8c2467a4cf6" + "reference": "32eacb1759b52c775cafa61a9da45e564d86de8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/installer/zipball/39109e825057b2e7436123d5ad5dc8c2467a4cf6", - "reference": "39109e825057b2e7436123d5ad5dc8c2467a4cf6", + "url": "https://api.github.com/repos/endroid/installer/zipball/32eacb1759b52c775cafa61a9da45e564d86de8a", + "reference": "32eacb1759b52c775cafa61a9da45e564d86de8a", "shasum": "" }, "require": { "composer-plugin-api": "^2.0", - "php": "^8.2" + "php": "^8.4" }, "require-dev": { "composer/composer": "^2.0", @@ -1436,7 +1436,7 @@ "description": "Composer plugin for installing configuration files", "support": { "issues": "https://github.com/endroid/installer/issues", - "source": "https://github.com/endroid/installer/tree/1.5.0" + "source": "https://github.com/endroid/installer/tree/1.5.2" }, "funding": [ { @@ -1444,7 +1444,7 @@ "type": "github" } ], - "time": "2024-10-20T18:31:36+00:00" + "time": "2026-02-23T06:20:05+00:00" }, { "name": "guzzlehttp/guzzle", @@ -2801,16 +2801,16 @@ }, { "name": "simplesamlphp/saml2", - "version": "v4.19.1", + "version": "v4.19.2", "source": { "type": "git", "url": "https://github.com/simplesamlphp/saml2.git", - "reference": "e928cffd4ede7f066189e05680aecb07e88aefad" + "reference": "93df4bffc052939e74ec0c1208e66cbd7eb2a1b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/e928cffd4ede7f066189e05680aecb07e88aefad", - "reference": "e928cffd4ede7f066189e05680aecb07e88aefad", + "url": "https://api.github.com/repos/simplesamlphp/saml2/zipball/93df4bffc052939e74ec0c1208e66cbd7eb2a1b2", + "reference": "93df4bffc052939e74ec0c1208e66cbd7eb2a1b2", "shasum": "" }, "require": { @@ -2819,7 +2819,7 @@ "ext-zlib": "*", "php": ">=7.1 || ^8.0", "psr/log": "~1.1 || ^2.0 || ^3.0", - "robrichards/xmlseclibs": "^3.1.4", + "robrichards/xmlseclibs": "^3.1.5", "webmozart/assert": "^1.9" }, "conflict": { @@ -2856,22 +2856,22 @@ "description": "SAML2 PHP library from SimpleSAMLphp", "support": { "issues": "https://github.com/simplesamlphp/saml2/issues", - "source": "https://github.com/simplesamlphp/saml2/tree/v4.19.1" + "source": "https://github.com/simplesamlphp/saml2/tree/v4.19.2" }, - "time": "2025-12-08T12:04:12+00:00" + "time": "2026-03-13T12:09:45+00:00" }, { "name": "symfony/asset", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "d944ae87e4697af05aadeacfc5e603c3c18ef4fb" + "reference": "d2e2f014ccd6ec9fae8dbe6336a4164346a2a856" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/d944ae87e4697af05aadeacfc5e603c3c18ef4fb", - "reference": "d944ae87e4697af05aadeacfc5e603c3c18ef4fb", + "url": "https://api.github.com/repos/symfony/asset/zipball/d2e2f014ccd6ec9fae8dbe6336a4164346a2a856", + "reference": "d2e2f014ccd6ec9fae8dbe6336a4164346a2a856", "shasum": "" }, "require": { @@ -2911,7 +2911,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v7.4.6" + "source": "https://github.com/symfony/asset/tree/v7.4.8" }, "funding": [ { @@ -2931,20 +2931,20 @@ "type": "tidelift" } ], - "time": "2026-02-09T09:33:46+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/cache", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "665522ec357540e66c294c08583b40ee576574f0" + "reference": "467464da294734b0fb17e853e5712abc8470f819" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/665522ec357540e66c294c08583b40ee576574f0", - "reference": "665522ec357540e66c294c08583b40ee576574f0", + "url": "https://api.github.com/repos/symfony/cache/zipball/467464da294734b0fb17e853e5712abc8470f819", + "reference": "467464da294734b0fb17e853e5712abc8470f819", "shasum": "" }, "require": { @@ -3015,7 +3015,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.4.7" + "source": "https://github.com/symfony/cache/tree/v7.4.8" }, "funding": [ { @@ -3035,7 +3035,7 @@ "type": "tidelift" } ], - "time": "2026-03-06T08:14:57+00:00" + "time": "2026-03-30T15:15:47+00:00" }, { "name": "symfony/cache-contracts", @@ -3115,16 +3115,16 @@ }, { "name": "symfony/clock", - "version": "v7.4.0", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "9169f24776edde469914c1e7a1442a50f7a4e110" + "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110", - "reference": "9169f24776edde469914c1e7a1442a50f7a4e110", + "url": "https://api.github.com/repos/symfony/clock/zipball/674fa3b98e21531dd040e613479f5f6fa8f32111", + "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111", "shasum": "" }, "require": { @@ -3169,7 +3169,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.4.0" + "source": "https://github.com/symfony/clock/tree/v7.4.8" }, "funding": [ { @@ -3189,20 +3189,20 @@ "type": "tidelift" } ], - "time": "2025-11-12T15:39:26+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/config", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "6c17162555bfb58957a55bb0e43e00035b6ae3d5" + "reference": "2d19dde43fa2ff720b9a40763ace7226594f503b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/6c17162555bfb58957a55bb0e43e00035b6ae3d5", - "reference": "6c17162555bfb58957a55bb0e43e00035b6ae3d5", + "url": "https://api.github.com/repos/symfony/config/zipball/2d19dde43fa2ff720b9a40763ace7226594f503b", + "reference": "2d19dde43fa2ff720b9a40763ace7226594f503b", "shasum": "" }, "require": { @@ -3248,7 +3248,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.4.7" + "source": "https://github.com/symfony/config/tree/v7.4.8" }, "funding": [ { @@ -3268,20 +3268,20 @@ "type": "tidelift" } ], - "time": "2026-03-06T10:41:14+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/console", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "e1e6770440fb9c9b0cf725f81d1361ad1835329d" + "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/e1e6770440fb9c9b0cf725f81d1361ad1835329d", - "reference": "e1e6770440fb9c9b0cf725f81d1361ad1835329d", + "url": "https://api.github.com/repos/symfony/console/zipball/1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", + "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", "shasum": "" }, "require": { @@ -3346,7 +3346,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.7" + "source": "https://github.com/symfony/console/tree/v7.4.8" }, "funding": [ { @@ -3366,20 +3366,20 @@ "type": "tidelift" } ], - "time": "2026-03-06T14:06:20+00:00" + "time": "2026-03-30T13:54:39+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "0f651e58f4917fb0e2cd261ccbfe3d71e6e0f5db" + "reference": "f7025fd7b687c240426562f86ada06a93b1e771d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/0f651e58f4917fb0e2cd261ccbfe3d71e6e0f5db", - "reference": "0f651e58f4917fb0e2cd261ccbfe3d71e6e0f5db", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f7025fd7b687c240426562f86ada06a93b1e771d", + "reference": "f7025fd7b687c240426562f86ada06a93b1e771d", "shasum": "" }, "require": { @@ -3430,7 +3430,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/v7.4.7" + "source": "https://github.com/symfony/dependency-injection/tree/v7.4.8" }, "funding": [ { @@ -3450,7 +3450,7 @@ "type": "tidelift" } ], - "time": "2026-03-03T07:48:48+00:00" + "time": "2026-03-31T06:50:29+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3521,16 +3521,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "4fc5e2dd41be3c0b6321e0373072782edeff45ed" + "reference": "3f8f805e54ecb5cbd487b1eff8837a8bbd278669" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/4fc5e2dd41be3c0b6321e0373072782edeff45ed", - "reference": "4fc5e2dd41be3c0b6321e0373072782edeff45ed", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/3f8f805e54ecb5cbd487b1eff8837a8bbd278669", + "reference": "3f8f805e54ecb5cbd487b1eff8837a8bbd278669", "shasum": "" }, "require": { @@ -3610,7 +3610,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.7" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.4.8" }, "funding": [ { @@ -3630,20 +3630,20 @@ "type": "tidelift" } ], - "time": "2026-03-05T08:16:50+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/dotenv", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "7e5529a0b02395cb4614cdf507495a4cef3115c5" + "reference": "5df79f11350166125fe754c85b87f7e13d735314" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/7e5529a0b02395cb4614cdf507495a4cef3115c5", - "reference": "7e5529a0b02395cb4614cdf507495a4cef3115c5", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/5df79f11350166125fe754c85b87f7e13d735314", + "reference": "5df79f11350166125fe754c85b87f7e13d735314", "shasum": "" }, "require": { @@ -3688,7 +3688,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.4.7" + "source": "https://github.com/symfony/dotenv/tree/v7.4.8" }, "funding": [ { @@ -3708,20 +3708,20 @@ "type": "tidelift" } ], - "time": "2026-03-03T07:48:48+00:00" + "time": "2026-03-30T12:55:43+00:00" }, { "name": "symfony/error-handler", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8" + "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8da531f364ddfee53e36092a7eebbbd0b775f6b8", - "reference": "8da531f364ddfee53e36092a7eebbbd0b775f6b8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", + "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", "shasum": "" }, "require": { @@ -3770,7 +3770,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/v7.4.4" + "source": "https://github.com/symfony/error-handler/tree/v7.4.8" }, "funding": [ { @@ -3790,20 +3790,20 @@ "type": "tidelift" } ], - "time": "2026-01-20T16:42:42+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "dc2c0eba1af673e736bb851d747d266108aea746" + "reference": "f57b899fa736fd71121168ef268f23c206083f0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/dc2c0eba1af673e736bb851d747d266108aea746", - "reference": "dc2c0eba1af673e736bb851d747d266108aea746", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f57b899fa736fd71121168ef268f23c206083f0a", + "reference": "f57b899fa736fd71121168ef268f23c206083f0a", "shasum": "" }, "require": { @@ -3855,7 +3855,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/v7.4.4" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.8" }, "funding": [ { @@ -3875,7 +3875,7 @@ "type": "tidelift" } ], - "time": "2026-01-05T11:45:34+00:00" + "time": "2026-03-30T13:54:39+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3955,16 +3955,16 @@ }, { "name": "symfony/expression-language", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667" + "reference": "87ff95687748f4af65e4d5a6e917d448ec52aa83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667", - "reference": "f3a6497eb6573e185f2ec41cd3b3f0cd68ddf667", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/87ff95687748f4af65e4d5a6e917d448ec52aa83", + "reference": "87ff95687748f4af65e4d5a6e917d448ec52aa83", "shasum": "" }, "require": { @@ -3999,7 +3999,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.4.4" + "source": "https://github.com/symfony/expression-language/tree/v7.4.8" }, "funding": [ { @@ -4019,20 +4019,20 @@ "type": "tidelift" } ], - "time": "2026-01-05T08:47:25+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/filesystem", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e" + "reference": "58b9790d12f9670b7f53a1c1738febd3108970a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3ebc794fa5315e59fd122561623c2e2e4280538e", - "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/58b9790d12f9670b7f53a1c1738febd3108970a5", + "reference": "58b9790d12f9670b7f53a1c1738febd3108970a5", "shasum": "" }, "require": { @@ -4069,7 +4069,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.4.6" + "source": "https://github.com/symfony/filesystem/tree/v7.4.8" }, "funding": [ { @@ -4089,20 +4089,20 @@ "type": "tidelift" } ], - "time": "2026-02-25T16:50:00+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/finder", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf" + "reference": "e0be088d22278583a82da281886e8c3592fbf149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8655bf1076b7a3a346cb11413ffdabff50c7ffcf", - "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf", + "url": "https://api.github.com/repos/symfony/finder/zipball/e0be088d22278583a82da281886e8c3592fbf149", + "reference": "e0be088d22278583a82da281886e8c3592fbf149", "shasum": "" }, "require": { @@ -4137,7 +4137,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.6" + "source": "https://github.com/symfony/finder/tree/v7.4.8" }, "funding": [ { @@ -4157,7 +4157,7 @@ "type": "tidelift" } ], - "time": "2026-01-29T09:40:50+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/flex", @@ -4234,16 +4234,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "c94bc78c85d76af67918404a95d44940f66a7c2f" + "reference": "180533cfbac2144349044267db31d5d3df9957cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c94bc78c85d76af67918404a95d44940f66a7c2f", - "reference": "c94bc78c85d76af67918404a95d44940f66a7c2f", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/180533cfbac2144349044267db31d5d3df9957cb", + "reference": "180533cfbac2144349044267db31d5d3df9957cb", "shasum": "" }, "require": { @@ -4368,7 +4368,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.4.7" + "source": "https://github.com/symfony/framework-bundle/tree/v7.4.8" }, "funding": [ { @@ -4388,20 +4388,20 @@ "type": "tidelift" } ], - "time": "2026-03-06T15:39:55+00:00" + "time": "2026-03-30T12:55:43+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "f94b3e7b7dafd40e666f0c9ff2084133bae41e81" + "reference": "9381209597ec66c25be154cbf2289076e64d1eab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f94b3e7b7dafd40e666f0c9ff2084133bae41e81", - "reference": "f94b3e7b7dafd40e666f0c9ff2084133bae41e81", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9381209597ec66c25be154cbf2289076e64d1eab", + "reference": "9381209597ec66c25be154cbf2289076e64d1eab", "shasum": "" }, "require": { @@ -4450,7 +4450,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.7" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.8" }, "funding": [ { @@ -4470,20 +4470,20 @@ "type": "tidelift" } ], - "time": "2026-03-06T13:15:18+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "3b3fcf386c809be990c922e10e4c620d6367cab1" + "reference": "017e76ad089bac281553389269e259e155935e1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3b3fcf386c809be990c922e10e4c620d6367cab1", - "reference": "3b3fcf386c809be990c922e10e4c620d6367cab1", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/017e76ad089bac281553389269e259e155935e1a", + "reference": "017e76ad089bac281553389269e259e155935e1a", "shasum": "" }, "require": { @@ -4569,7 +4569,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/v7.4.7" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.8" }, "funding": [ { @@ -4589,20 +4589,20 @@ "type": "tidelift" } ], - "time": "2026-03-06T16:33:18+00:00" + "time": "2026-03-31T20:57:01+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9" + "reference": "f6ea532250b476bfc1b56699b388a1bdbf168f62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/b02726f39a20bc65e30364f5c750c4ddbf1f58e9", - "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9", + "url": "https://api.github.com/repos/symfony/mailer/zipball/f6ea532250b476bfc1b56699b388a1bdbf168f62", + "reference": "f6ea532250b476bfc1b56699b388a1bdbf168f62", "shasum": "" }, "require": { @@ -4653,7 +4653,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.6" + "source": "https://github.com/symfony/mailer/tree/v7.4.8" }, "funding": [ { @@ -4673,20 +4673,20 @@ "type": "tidelift" } ], - "time": "2026-02-25T16:50:00+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/mime", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "da5ab4fde3f6c88ab06e96185b9922f48b677cd1" + "reference": "6df02f99998081032da3407a8d6c4e1dcb5d4379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/da5ab4fde3f6c88ab06e96185b9922f48b677cd1", - "reference": "da5ab4fde3f6c88ab06e96185b9922f48b677cd1", + "url": "https://api.github.com/repos/symfony/mime/zipball/6df02f99998081032da3407a8d6c4e1dcb5d4379", + "reference": "6df02f99998081032da3407a8d6c4e1dcb5d4379", "shasum": "" }, "require": { @@ -4742,7 +4742,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.7" + "source": "https://github.com/symfony/mime/tree/v7.4.8" }, "funding": [ { @@ -4762,20 +4762,20 @@ "type": "tidelift" } ], - "time": "2026-03-05T15:24:09+00:00" + "time": "2026-03-30T14:11:46+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "69e98e7e10dae3daa896ef0f20e17a3928362d88" + "reference": "b52aeb44645a9a84a1795b973cc5c77a76df0720" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/69e98e7e10dae3daa896ef0f20e17a3928362d88", - "reference": "69e98e7e10dae3daa896ef0f20e17a3928362d88", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/b52aeb44645a9a84a1795b973cc5c77a76df0720", + "reference": "b52aeb44645a9a84a1795b973cc5c77a76df0720", "shasum": "" }, "require": { @@ -4825,7 +4825,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.6" + "source": "https://github.com/symfony/monolog-bridge/tree/v7.4.8" }, "funding": [ { @@ -4845,7 +4845,7 @@ "type": "tidelift" } ], - "time": "2026-02-17T07:53:42+00:00" + "time": "2026-03-30T13:54:39+00:00" }, { "name": "symfony/monolog-bundle", @@ -4928,16 +4928,16 @@ }, { "name": "symfony/password-hasher", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "376755eb9c9857d78aedb68341ad2f46d1908b29" + "reference": "18a7d92126c95962f7efbcc9e421ba710a366847" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/376755eb9c9857d78aedb68341ad2f46d1908b29", - "reference": "376755eb9c9857d78aedb68341ad2f46d1908b29", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/18a7d92126c95962f7efbcc9e421ba710a366847", + "reference": "18a7d92126c95962f7efbcc9e421ba710a366847", "shasum": "" }, "require": { @@ -4980,7 +4980,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.4.6" + "source": "https://github.com/symfony/password-hasher/tree/v7.4.8" }, "funding": [ { @@ -5000,7 +5000,7 @@ "type": "tidelift" } ], - "time": "2026-02-11T16:03:16+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/polyfill-ctype", @@ -5581,16 +5581,16 @@ }, { "name": "symfony/property-access", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1" + "reference": "b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", - "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", + "url": "https://api.github.com/repos/symfony/property-access/zipball/b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc", + "reference": "b7dad9dae8b8a47ef7ecc76c8569e7d8c7d90cfc", "shasum": "" }, "require": { @@ -5638,7 +5638,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.4.4" + "source": "https://github.com/symfony/property-access/tree/v7.4.8" }, "funding": [ { @@ -5658,20 +5658,20 @@ "type": "tidelift" } ], - "time": "2026-01-05T08:47:25+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/property-info", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "02501d75fd834345da3ecdd8e3200ced39e370f8" + "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/02501d75fd834345da3ecdd8e3200ced39e370f8", - "reference": "02501d75fd834345da3ecdd8e3200ced39e370f8", + "url": "https://api.github.com/repos/symfony/property-info/zipball/ac5e82528b986c4f7cfccbf7764b5d2e824d6175", + "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175", "shasum": "" }, "require": { @@ -5728,7 +5728,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.7" + "source": "https://github.com/symfony/property-info/tree/v7.4.8" }, "funding": [ { @@ -5748,20 +5748,20 @@ "type": "tidelift" } ], - "time": "2026-03-04T15:53:26+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/routing", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "238d749c56b804b31a9bf3e26519d93b65a60938" + "reference": "9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/238d749c56b804b31a9bf3e26519d93b65a60938", - "reference": "238d749c56b804b31a9bf3e26519d93b65a60938", + "url": "https://api.github.com/repos/symfony/routing/zipball/9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b", + "reference": "9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b", "shasum": "" }, "require": { @@ -5813,7 +5813,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.6" + "source": "https://github.com/symfony/routing/tree/v7.4.8" }, "funding": [ { @@ -5833,20 +5833,20 @@ "type": "tidelift" } ], - "time": "2026-02-25T16:50:00+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "d79c6d9a373fe8585e85bcfca4c24b9783214263" + "reference": "6f73fdfd9ad23bf24b6f6c8d35be3ea6853d91af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/d79c6d9a373fe8585e85bcfca4c24b9783214263", - "reference": "d79c6d9a373fe8585e85bcfca4c24b9783214263", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/6f73fdfd9ad23bf24b6f6c8d35be3ea6853d91af", + "reference": "6f73fdfd9ad23bf24b6f6c8d35be3ea6853d91af", "shasum": "" }, "require": { @@ -5925,7 +5925,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v7.4.6" + "source": "https://github.com/symfony/security-bundle/tree/v7.4.8" }, "funding": [ { @@ -5945,20 +5945,20 @@ "type": "tidelift" } ], - "time": "2026-02-22T22:01:45+00:00" + "time": "2026-03-30T13:54:39+00:00" }, { "name": "symfony/security-core", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "958a70725a8d669bec6721f4cd318d209712e944" + "reference": "23e0cd6615661e33e53faf714bf6a130c2f75c25" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/958a70725a8d669bec6721f4cd318d209712e944", - "reference": "958a70725a8d669bec6721f4cd318d209712e944", + "url": "https://api.github.com/repos/symfony/security-core/zipball/23e0cd6615661e33e53faf714bf6a130c2f75c25", + "reference": "23e0cd6615661e33e53faf714bf6a130c2f75c25", "shasum": "" }, "require": { @@ -6016,7 +6016,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.4.4" + "source": "https://github.com/symfony/security-core/tree/v7.4.8" }, "funding": [ { @@ -6036,20 +6036,20 @@ "type": "tidelift" } ], - "time": "2026-01-14T09:36:49+00:00" + "time": "2026-03-31T07:00:19+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "d01adcd3141bec95e4cfd338f6b4482f1dd6a42b" + "reference": "16b3aa2f67d02fb0dbd013a8759bbe90daaa9c5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/d01adcd3141bec95e4cfd338f6b4482f1dd6a42b", - "reference": "d01adcd3141bec95e4cfd338f6b4482f1dd6a42b", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/16b3aa2f67d02fb0dbd013a8759bbe90daaa9c5d", + "reference": "16b3aa2f67d02fb0dbd013a8759bbe90daaa9c5d", "shasum": "" }, "require": { @@ -6090,7 +6090,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.4.6" + "source": "https://github.com/symfony/security-csrf/tree/v7.4.8" }, "funding": [ { @@ -6110,20 +6110,20 @@ "type": "tidelift" } ], - "time": "2026-02-11T16:03:16+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/security-http", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "52ce5ef5708900dcab9f55750cf81250a0ebba9f" + "reference": "1b07d7d472ba967fd66697067e6274084d2d1d7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/52ce5ef5708900dcab9f55750cf81250a0ebba9f", - "reference": "52ce5ef5708900dcab9f55750cf81250a0ebba9f", + "url": "https://api.github.com/repos/symfony/security-http/zipball/1b07d7d472ba967fd66697067e6274084d2d1d7c", + "reference": "1b07d7d472ba967fd66697067e6274084d2d1d7c", "shasum": "" }, "require": { @@ -6182,7 +6182,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.4.6" + "source": "https://github.com/symfony/security-http/tree/v7.4.8" }, "funding": [ { @@ -6202,7 +6202,7 @@ "type": "tidelift" } ], - "time": "2026-02-18T09:46:18+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/service-contracts", @@ -6293,16 +6293,16 @@ }, { "name": "symfony/stopwatch", - "version": "v7.4.0", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "8a24af0a2e8a872fb745047180649b8418303084" + "reference": "70a852d72fec4d51efb1f48dcd968efcaf5ccb89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8a24af0a2e8a872fb745047180649b8418303084", - "reference": "8a24af0a2e8a872fb745047180649b8418303084", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/70a852d72fec4d51efb1f48dcd968efcaf5ccb89", + "reference": "70a852d72fec4d51efb1f48dcd968efcaf5ccb89", "shasum": "" }, "require": { @@ -6335,7 +6335,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.4.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.4.8" }, "funding": [ { @@ -6355,20 +6355,20 @@ "type": "tidelift" } ], - "time": "2025-08-04T07:05:15+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/string", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "9f209231affa85aa930a5e46e6eb03381424b30b" + "reference": "114ac57257d75df748eda23dd003878080b8e688" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/9f209231affa85aa930a5e46e6eb03381424b30b", - "reference": "9f209231affa85aa930a5e46e6eb03381424b30b", + "url": "https://api.github.com/repos/symfony/string/zipball/114ac57257d75df748eda23dd003878080b8e688", + "reference": "114ac57257d75df748eda23dd003878080b8e688", "shasum": "" }, "require": { @@ -6426,7 +6426,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.6" + "source": "https://github.com/symfony/string/tree/v7.4.8" }, "funding": [ { @@ -6446,20 +6446,20 @@ "type": "tidelift" } ], - "time": "2026-02-09T09:33:46+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/translation", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "1888cf064399868af3784b9e043240f1d89d25ce" + "reference": "33600f8489485425bfcddd0d983391038d3422e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/1888cf064399868af3784b9e043240f1d89d25ce", - "reference": "1888cf064399868af3784b9e043240f1d89d25ce", + "url": "https://api.github.com/repos/symfony/translation/zipball/33600f8489485425bfcddd0d983391038d3422e7", + "reference": "33600f8489485425bfcddd0d983391038d3422e7", "shasum": "" }, "require": { @@ -6526,7 +6526,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.4.6" + "source": "https://github.com/symfony/translation/tree/v7.4.8" }, "funding": [ { @@ -6546,7 +6546,7 @@ "type": "tidelift" } ], - "time": "2026-02-17T07:53:42+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/translation-contracts", @@ -6632,16 +6632,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "c67219ca6b79a57b64e36bbb2cd8ba741286587e" + "reference": "ac43e7e59298ed1ce98c8d228b651d46e907d02c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/c67219ca6b79a57b64e36bbb2cd8ba741286587e", - "reference": "c67219ca6b79a57b64e36bbb2cd8ba741286587e", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/ac43e7e59298ed1ce98c8d228b651d46e907d02c", + "reference": "ac43e7e59298ed1ce98c8d228b651d46e907d02c", "shasum": "" }, "require": { @@ -6657,7 +6657,7 @@ "symfony/form": "<6.4.32|>7,<7.3.10|>7.4,<7.4.4|>8.0,<8.0.4", "symfony/http-foundation": "<6.4", "symfony/http-kernel": "<6.4", - "symfony/mime": "<6.4", + "symfony/mime": "<6.4.36|>7,<7.4.8|>8.0,<8.0.8", "symfony/serializer": "<6.4", "symfony/translation": "<6.4", "symfony/workflow": "<6.4" @@ -6678,7 +6678,7 @@ "symfony/http-foundation": "^7.3|^8.0", "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/intl": "^6.4|^7.0|^8.0", - "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4.36|^7.4.8|^8.0.8", "symfony/polyfill-intl-icu": "~1.0", "symfony/property-info": "^6.4|^7.0|^8.0", "symfony/routing": "^6.4|^7.0|^8.0", @@ -6723,7 +6723,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.4.7" + "source": "https://github.com/symfony/twig-bridge/tree/v7.4.8" }, "funding": [ { @@ -6743,20 +6743,20 @@ "type": "tidelift" } ], - "time": "2026-03-04T15:37:05+00:00" + "time": "2026-03-30T15:17:09+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "e8829e02ff96a391ed0703bac9e7ff0537480b6b" + "reference": "ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/e8829e02ff96a391ed0703bac9e7ff0537480b6b", - "reference": "e8829e02ff96a391ed0703bac9e7ff0537480b6b", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95", + "reference": "ba1e06d7ff1ebb1d1799b6608d925f4eaba88d95", "shasum": "" }, "require": { @@ -6813,7 +6813,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v7.4.4" + "source": "https://github.com/symfony/twig-bundle/tree/v7.4.8" }, "funding": [ { @@ -6833,20 +6833,20 @@ "type": "tidelift" } ], - "time": "2026-01-06T12:34:24+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/type-info", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "31f1e40cbf7851c7354281c90eb1b352c4cb8269" + "reference": "6bf34da885ff5143a3dfd8f1b863bb8ab95f50bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/31f1e40cbf7851c7354281c90eb1b352c4cb8269", - "reference": "31f1e40cbf7851c7354281c90eb1b352c4cb8269", + "url": "https://api.github.com/repos/symfony/type-info/zipball/6bf34da885ff5143a3dfd8f1b863bb8ab95f50bd", + "reference": "6bf34da885ff5143a3dfd8f1b863bb8ab95f50bd", "shasum": "" }, "require": { @@ -6896,7 +6896,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.4.7" + "source": "https://github.com/symfony/type-info/tree/v7.4.8" }, "funding": [ { @@ -6916,20 +6916,20 @@ "type": "tidelift" } ], - "time": "2026-03-04T12:49:16+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/validator", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "3a1a460a9f8c5e5611e15c52c4baa5a62fa3c203" + "reference": "8f73cbddae916756f319b3e195088da216f0f12f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/3a1a460a9f8c5e5611e15c52c4baa5a62fa3c203", - "reference": "3a1a460a9f8c5e5611e15c52c4baa5a62fa3c203", + "url": "https://api.github.com/repos/symfony/validator/zipball/8f73cbddae916756f319b3e195088da216f0f12f", + "reference": "8f73cbddae916756f319b3e195088da216f0f12f", "shasum": "" }, "require": { @@ -7000,7 +7000,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.4.7" + "source": "https://github.com/symfony/validator/tree/v7.4.8" }, "funding": [ { @@ -7020,20 +7020,20 @@ "type": "tidelift" } ], - "time": "2026-03-06T11:10:17+00:00" + "time": "2026-03-30T12:55:43+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291" + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/045321c440ac18347b136c63d2e9bf28a2dc0291", - "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9510c3966f749a1d1ff0059e1eabef6cc621e7fd", + "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd", "shasum": "" }, "require": { @@ -7087,7 +7087,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.6" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.8" }, "funding": [ { @@ -7107,20 +7107,20 @@ "type": "tidelift" } ], - "time": "2026-02-15T10:53:20+00:00" + "time": "2026-03-30T13:44:50+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.4.0", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "03a60f169c79a28513a78c967316fbc8bf17816f" + "reference": "398907e89a2a56fe426f7955c6fa943ec0c77225" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/03a60f169c79a28513a78c967316fbc8bf17816f", - "reference": "03a60f169c79a28513a78c967316fbc8bf17816f", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/398907e89a2a56fe426f7955c6fa943ec0c77225", + "reference": "398907e89a2a56fe426f7955c6fa943ec0c77225", "shasum": "" }, "require": { @@ -7168,7 +7168,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.4.0" + "source": "https://github.com/symfony/var-exporter/tree/v7.4.8" }, "funding": [ { @@ -7188,20 +7188,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:15:23+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/yaml", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "58751048de17bae71c5aa0d13cb19d79bca26391" + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/58751048de17bae71c5aa0d13cb19d79bca26391", - "reference": "58751048de17bae71c5aa0d13cb19d79bca26391", + "url": "https://api.github.com/repos/symfony/yaml/zipball/c58fdf7b3d6c2995368264c49e4e8b05bcff2883", + "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883", "shasum": "" }, "require": { @@ -7244,7 +7244,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.6" + "source": "https://github.com/symfony/yaml/tree/v7.4.8" }, "funding": [ { @@ -7264,20 +7264,20 @@ "type": "tidelift" } ], - "time": "2026-02-09T09:33:46+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "twig/twig", - "version": "v3.23.0", + "version": "v3.24.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9" + "reference": "a6769aefb305efef849dc25c9fd1653358c148f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", - "reference": "a64dc5d2cc7d6cafb9347f6cd802d0d06d0351c9", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/a6769aefb305efef849dc25c9fd1653358c148f0", + "reference": "a6769aefb305efef849dc25c9fd1653358c148f0", "shasum": "" }, "require": { @@ -7287,7 +7287,8 @@ "symfony/polyfill-mbstring": "^1.3" }, "require-dev": { - "phpstan/phpstan": "^2.0", + "php-cs-fixer/shim": "^3.0@stable", + "phpstan/phpstan": "^2.0@stable", "psr/container": "^1.0|^2.0", "symfony/phpunit-bridge": "^5.4.9|^6.4|^7.0" }, @@ -7331,7 +7332,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.23.0" + "source": "https://github.com/twigphp/Twig/tree/v3.24.0" }, "funding": [ { @@ -7343,7 +7344,7 @@ "type": "tidelift" } ], - "time": "2026-01-23T21:00:41+00:00" + "time": "2026-03-17T21:31:11+00:00" }, { "name": "webmozart/assert", @@ -7407,28 +7408,28 @@ "packages-dev": [ { "name": "behat/behat", - "version": "v3.29.0", + "version": "v3.30.0", "source": { "type": "git", "url": "https://github.com/Behat/Behat.git", - "reference": "51bdf81639a14645c5d2c06926f4aa37d204921b" + "reference": "be4af8c803a1ed589409a8a2eed01f9fb858e11d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Behat/zipball/51bdf81639a14645c5d2c06926f4aa37d204921b", - "reference": "51bdf81639a14645c5d2c06926f4aa37d204921b", + "url": "https://api.github.com/repos/Behat/Behat/zipball/be4af8c803a1ed589409a8a2eed01f9fb858e11d", + "reference": "be4af8c803a1ed589409a8a2eed01f9fb858e11d", "shasum": "" }, "require": { - "behat/gherkin": "^4.12.0", + "behat/gherkin": "^4.15.0", "composer-runtime-api": "^2.2", "composer/xdebug-handler": "^1.4 || ^2.0 || ^3.0", "ext-mbstring": "*", "nikic/php-parser": "^4.19.2 || ^5.2", - "php": ">=8.1 <8.6", + "php": ">=8.2 <8.6", "psr/container": "^1.0 || ^2.0", "symfony/config": "^5.4 || ^6.4 || ^7.0", - "symfony/console": "^5.4 || ^6.4 || ^7.0", + "symfony/console": "^5.4.9 || ^6.4 || ^7.0", "symfony/dependency-injection": "^5.4 || ^6.4 || ^7.0", "symfony/event-dispatcher": "^5.4 || ^6.4 || ^7.0", "symfony/translation": "^5.4 || ^6.4 || ^7.0", @@ -7437,7 +7438,7 @@ "require-dev": { "opis/json-schema": "^2.5", "php-cs-fixer/shim": "^3.89", - "phpstan/phpstan": "^2.0", + "phpstan/phpstan": "2.1.18", "phpunit/phpunit": "^9.6", "rector/rector": "2.1.7", "sebastian/diff": "^4.0", @@ -7491,7 +7492,7 @@ ], "support": { "issues": "https://github.com/Behat/Behat/issues", - "source": "https://github.com/Behat/Behat/tree/v3.29.0" + "source": "https://github.com/Behat/Behat/tree/v3.30.0" }, "funding": [ { @@ -7507,7 +7508,7 @@ "type": "github" } ], - "time": "2025-12-11T09:51:30+00:00" + "time": "2026-03-26T17:26:12+00:00" }, { "name": "behat/gherkin", @@ -7872,6 +7873,54 @@ ], "time": "2024-05-06T16:37:16+00:00" }, + { + "name": "cweagans/composer-patches", + "version": "1.7.3", + "source": { + "type": "git", + "url": "https://github.com/cweagans/composer-patches.git", + "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweagans/composer-patches/zipball/e190d4466fe2b103a55467dfa83fc2fecfcaf2db", + "reference": "e190d4466fe2b103a55467dfa83fc2fecfcaf2db", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3.0" + }, + "require-dev": { + "composer/composer": "~1.0 || ~2.0", + "phpunit/phpunit": "~4.6" + }, + "type": "composer-plugin", + "extra": { + "class": "cweagans\\Composer\\Patches" + }, + "autoload": { + "psr-4": { + "cweagans\\Composer\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Cameron Eagans", + "email": "me@cweagans.net" + } + ], + "description": "Provides a way to patch Composer packages.", + "support": { + "issues": "https://github.com/cweagans/composer-patches/issues", + "source": "https://github.com/cweagans/composer-patches/tree/1.7.3" + }, + "time": "2022-12-20T22:53:13+00:00" + }, { "name": "dealerdirect/phpcodesniffer-composer-installer", "version": "v1.2.0", @@ -8258,16 +8307,16 @@ }, { "name": "ingenerator/behat-tableassert", - "version": "v1.3.3", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/ingenerator/behat-tableassert.git", - "reference": "bfe4016ba718ce572049b9b1e4334187942ae380" + "reference": "0bcf3a446459738b0ee46cb5ff152aa32aeb6388" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ingenerator/behat-tableassert/zipball/bfe4016ba718ce572049b9b1e4334187942ae380", - "reference": "bfe4016ba718ce572049b9b1e4334187942ae380", + "url": "https://api.github.com/repos/ingenerator/behat-tableassert/zipball/0bcf3a446459738b0ee46cb5ff152aa32aeb6388", + "reference": "0bcf3a446459738b0ee46cb5ff152aa32aeb6388", "shasum": "" }, "require": { @@ -8275,8 +8324,7 @@ "ext-dom": "*", "ext-libxml": "*", "ext-simplexml": "*", - "masterminds/html5": "^2.7.5", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": ">= 8.4 < 8.6" }, "require-dev": { "behat/mink": "^1.7", @@ -8307,20 +8355,20 @@ "issues": "https://github.com/ingenerator/behat-tableassert/issues", "source": "https://github.com/ingenerator/behat-tableassert/" }, - "time": "2026-03-10T11:59:00+00:00" + "time": "2026-03-10T16:37:24+00:00" }, { "name": "league/flysystem", - "version": "3.32.0", + "version": "3.33.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "254b1595b16b22dbddaaef9ed6ca9fdac4956725" + "reference": "570b8871e0ce693764434b29154c54b434905350" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/254b1595b16b22dbddaaef9ed6ca9fdac4956725", - "reference": "254b1595b16b22dbddaaef9ed6ca9fdac4956725", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/570b8871e0ce693764434b29154c54b434905350", + "reference": "570b8871e0ce693764434b29154c54b434905350", "shasum": "" }, "require": { @@ -8388,9 +8436,9 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.32.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.33.0" }, - "time": "2026-02-25T17:01:41+00:00" + "time": "2026-03-25T07:59:30+00:00" }, { "name": "league/flysystem-local", @@ -9287,11 +9335,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.40", + "version": "2.1.46", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", - "reference": "9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/a193923fc2d6325ef4e741cf3af8c3e8f54dbf25", + "reference": "a193923fc2d6325ef4e741cf3af8c3e8f54dbf25", "shasum": "" }, "require": { @@ -9336,7 +9384,7 @@ "type": "github" } ], - "time": "2026-02-23T15:04:35+00:00" + "time": "2026-04-01T09:25:14+00:00" }, { "name": "phpunit/php-code-coverage", @@ -10025,21 +10073,21 @@ }, { "name": "rector/rector", - "version": "2.3.8", + "version": "2.3.9", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "bbd37aedd8df749916cffa2a947cfc4714d1ba2c" + "reference": "917842143fd9f5331a2adefc214b8d7143bd32c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/bbd37aedd8df749916cffa2a947cfc4714d1ba2c", - "reference": "bbd37aedd8df749916cffa2a947cfc4714d1ba2c", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/917842143fd9f5331a2adefc214b8d7143bd32c4", + "reference": "917842143fd9f5331a2adefc214b8d7143bd32c4", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.38" + "phpstan/phpstan": "^2.1.40" }, "conflict": { "rector/rector-doctrine": "*", @@ -10073,7 +10121,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.3.8" + "source": "https://github.com/rectorphp/rector/tree/2.3.9" }, "funding": [ { @@ -10081,7 +10129,7 @@ "type": "github" } ], - "time": "2026-02-22T09:45:50+00:00" + "time": "2026-03-16T09:43:55+00:00" }, { "name": "sebastian/cli-parser", @@ -11071,16 +11119,16 @@ }, { "name": "slevomat/coding-standard", - "version": "8.28.0", + "version": "8.28.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "0cd4b30cc1037eca54091c188d260d570e61770c" + "reference": "66151cfbd25b50e8becd9f809fb704f01fd4d6f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/0cd4b30cc1037eca54091c188d260d570e61770c", - "reference": "0cd4b30cc1037eca54091c188d260d570e61770c", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/66151cfbd25b50e8becd9f809fb704f01fd4d6f2", + "reference": "66151cfbd25b50e8becd9f809fb704f01fd4d6f2", "shasum": "" }, "require": { @@ -11092,7 +11140,7 @@ "require-dev": { "phing/phing": "3.0.1|3.1.2", "php-parallel-lint/php-parallel-lint": "1.4.0", - "phpstan/phpstan": "2.1.40", + "phpstan/phpstan": "2.1.42", "phpstan/phpstan-deprecation-rules": "2.0.4", "phpstan/phpstan-phpunit": "2.0.16", "phpstan/phpstan-strict-rules": "2.0.10", @@ -11120,7 +11168,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.28.0" + "source": "https://github.com/slevomat/coding-standard/tree/8.28.1" }, "funding": [ { @@ -11132,7 +11180,7 @@ "type": "tidelift" } ], - "time": "2026-02-23T21:35:24+00:00" + "time": "2026-03-22T17:22:38+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -11267,16 +11315,16 @@ }, { "name": "symfony/browser-kit", - "version": "v7.4.4", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "bed167eadaaba641f51fc842c9227aa5e251309e" + "reference": "41850d8f8ddef9a9cd7314fa9f4902cf48885521" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/bed167eadaaba641f51fc842c9227aa5e251309e", - "reference": "bed167eadaaba641f51fc842c9227aa5e251309e", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/41850d8f8ddef9a9cd7314fa9f4902cf48885521", + "reference": "41850d8f8ddef9a9cd7314fa9f4902cf48885521", "shasum": "" }, "require": { @@ -11316,7 +11364,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.4.4" + "source": "https://github.com/symfony/browser-kit/tree/v7.4.8" }, "funding": [ { @@ -11336,20 +11384,20 @@ "type": "tidelift" } ], - "time": "2026-01-13T10:40:19+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/css-selector", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "2e7c52c647b406e2107dd867db424a4dbac91864" + "reference": "b055f228a4178a1d6774909903905e3475f3eac8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/2e7c52c647b406e2107dd867db424a4dbac91864", - "reference": "2e7c52c647b406e2107dd867db424a4dbac91864", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/b055f228a4178a1d6774909903905e3475f3eac8", + "reference": "b055f228a4178a1d6774909903905e3475f3eac8", "shasum": "" }, "require": { @@ -11385,7 +11433,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.4.6" + "source": "https://github.com/symfony/css-selector/tree/v7.4.8" }, "funding": [ { @@ -11405,20 +11453,20 @@ "type": "tidelift" } ], - "time": "2026-02-17T07:53:42+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/debug-bundle", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "7affd8924ef9a7739ec53284c2fc30afeeae7124" + "reference": "3eb18c1e6cd16da2cea1f1b5162e442af4afee44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/7affd8924ef9a7739ec53284c2fc30afeeae7124", - "reference": "7affd8924ef9a7739ec53284c2fc30afeeae7124", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/3eb18c1e6cd16da2cea1f1b5162e442af4afee44", + "reference": "3eb18c1e6cd16da2cea1f1b5162e442af4afee44", "shasum": "" }, "require": { @@ -11460,7 +11508,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v7.4.7" + "source": "https://github.com/symfony/debug-bundle/tree/v7.4.8" }, "funding": [ { @@ -11480,20 +11528,20 @@ "type": "tidelift" } ], - "time": "2026-03-03T07:48:48+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/dom-crawler", - "version": "v7.4.6", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "487ba8fa43da9a8e6503fe939b45ecd96875410e" + "reference": "2918e7c2ba964defca1f5b69c6f74886529e2dc8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/487ba8fa43da9a8e6503fe939b45ecd96875410e", - "reference": "487ba8fa43da9a8e6503fe939b45ecd96875410e", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2918e7c2ba964defca1f5b69c6f74886529e2dc8", + "reference": "2918e7c2ba964defca1f5b69c6f74886529e2dc8", "shasum": "" }, "require": { @@ -11532,7 +11580,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.4.6" + "source": "https://github.com/symfony/dom-crawler/tree/v7.4.8" }, "funding": [ { @@ -11552,20 +11600,20 @@ "type": "tidelift" } ], - "time": "2026-02-17T07:53:42+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/http-client", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "1010624285470eb60e88ed10035102c75b4ea6af" + "reference": "01933e626c3de76bea1e22641e205e78f6a34342" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/1010624285470eb60e88ed10035102c75b4ea6af", - "reference": "1010624285470eb60e88ed10035102c75b4ea6af", + "url": "https://api.github.com/repos/symfony/http-client/zipball/01933e626c3de76bea1e22641e205e78f6a34342", + "reference": "01933e626c3de76bea1e22641e205e78f6a34342", "shasum": "" }, "require": { @@ -11633,7 +11681,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.4.7" + "source": "https://github.com/symfony/http-client/tree/v7.4.8" }, "funding": [ { @@ -11653,7 +11701,7 @@ "type": "tidelift" } ], - "time": "2026-03-05T11:16:58+00:00" + "time": "2026-03-30T12:55:43+00:00" }, { "name": "symfony/http-client-contracts", @@ -11735,16 +11783,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "53c5a606cb4ae19c9466a5f8ffe60f61b0c93b5f" + "reference": "140bbbe1cd1c21a084494ccddeee33f3c3381d7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/53c5a606cb4ae19c9466a5f8ffe60f61b0c93b5f", - "reference": "53c5a606cb4ae19c9466a5f8ffe60f61b0c93b5f", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/140bbbe1cd1c21a084494ccddeee33f3c3381d7d", + "reference": "140bbbe1cd1c21a084494ccddeee33f3c3381d7d", "shasum": "" }, "require": { @@ -11796,7 +11844,7 @@ "testing" ], "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.7" + "source": "https://github.com/symfony/phpunit-bridge/tree/v7.4.8" }, "funding": [ { @@ -11816,20 +11864,20 @@ "type": "tidelift" } ], - "time": "2026-03-04T13:54:41+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.4.7", + "version": "v7.4.8", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "da9e91746fc9c575be8b5ff466b7572d98e7e1ae" + "reference": "79f039096c67cc1cc3f607d2ba72af86cd27e6a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/da9e91746fc9c575be8b5ff466b7572d98e7e1ae", - "reference": "da9e91746fc9c575be8b5ff466b7572d98e7e1ae", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/79f039096c67cc1cc3f607d2ba72af86cd27e6a4", + "reference": "79f039096c67cc1cc3f607d2ba72af86cd27e6a4", "shasum": "" }, "require": { @@ -11886,7 +11934,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.7" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.4.8" }, "funding": [ { @@ -11906,7 +11954,7 @@ "type": "tidelift" } ], - "time": "2026-03-03T13:57:00+00:00" + "time": "2026-03-24T13:12:05+00:00" }, { "name": "theseer/tokenizer", @@ -11965,7 +12013,7 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8.2", + "php": "^8.5", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", @@ -11976,7 +12024,7 @@ "ext-zlib": "*" }, "platform-overrides": { - "php": "8.2" + "php": "8.5" }, "plugin-api-version": "2.9.0" } diff --git a/docker/Dockerfile.prod b/docker/Dockerfile.prod index 23f6bddadf..eb51421fb9 100644 --- a/docker/Dockerfile.prod +++ b/docker/Dockerfile.prod @@ -1,4 +1,4 @@ -FROM ghcr.io/openconext/openconext-basecontainers/php82-apache2:latest +FROM ghcr.io/openconext/openconext-basecontainers/php85-apache2:latest ARG APP_VERSION ARG GIT_SHA ARG GIT_COMMIT_TIME diff --git a/docker/ci/Dockerfile-php82 b/docker/ci/Dockerfile-php85 similarity index 71% rename from docker/ci/Dockerfile-php82 rename to docker/ci/Dockerfile-php85 index 7cddbd356b..e5841012de 100644 --- a/docker/ci/Dockerfile-php82 +++ b/docker/ci/Dockerfile-php85 @@ -1,4 +1,4 @@ -FROM ghcr.io/openconext/openconext-basecontainers/php82-apache2-node20-composer2:latest +FROM ghcr.io/openconext/openconext-basecontainers/php85-apache2-node24:latest RUN a2enmod ssl diff --git a/docker/docker-compose-php82.yml b/docker/docker-compose-php85.yml similarity index 53% rename from docker/docker-compose-php82.yml rename to docker/docker-compose-php85.yml index 8345d58e22..b3a78dc217 100644 --- a/docker/docker-compose-php82.yml +++ b/docker/docker-compose-php85.yml @@ -1,4 +1,4 @@ services: engine.dev.openconext.local: build: - dockerfile: docker/ci/Dockerfile-php82 + dockerfile: docker/ci/Dockerfile-php85 diff --git a/docker/docker-compose-tag-release.yml b/docker/docker-compose-tag-release.yml index c8c53ca6ee..4116e38936 100644 --- a/docker/docker-compose-tag-release.yml +++ b/docker/docker-compose-tag-release.yml @@ -4,7 +4,7 @@ version: "3.8" services: openconext: - image: ghcr.io/openconext/openconext-basecontainers/php72-apache2-node14-composer2:latest + image: ghcr.io/openconext/openconext-basecontainers/php85-apache2-node24:latest volumes: - ../:/home/runner/work/OpenConext-engineblock working_dir: /home/runner/work/OpenConext-engineblock diff --git a/library/EngineBlock/Application/Bootstrapper/Exception.php b/library/EngineBlock/Application/Bootstrapper/Exception.php index 1ae90ae393..caacfbe8f1 100644 --- a/library/EngineBlock/Application/Bootstrapper/Exception.php +++ b/library/EngineBlock/Application/Bootstrapper/Exception.php @@ -18,7 +18,7 @@ class EngineBlock_Application_Bootstrapper_Exception extends EngineBlock_Exception { - public function __construct($message, Exception $previous = null) + public function __construct($message, ?Exception $previous = null) { parent::__construct($message, self::CODE_ALERT, $previous); } diff --git a/library/EngineBlock/Arp/AttributeReleasePolicyEnforcer.php b/library/EngineBlock/Arp/AttributeReleasePolicyEnforcer.php index 11556f2151..11e9e00063 100644 --- a/library/EngineBlock/Arp/AttributeReleasePolicyEnforcer.php +++ b/library/EngineBlock/Arp/AttributeReleasePolicyEnforcer.php @@ -20,7 +20,7 @@ class EngineBlock_Arp_AttributeReleasePolicyEnforcer { - public function enforceArp($responseAttributes, AttributeReleasePolicy $arp = null, $showSources = false) + public function enforceArp($responseAttributes, ?AttributeReleasePolicy $arp = null, $showSources = false) { if (!$arp) { if ($showSources) { diff --git a/library/EngineBlock/Attributes/Manipulator/CustomException.php b/library/EngineBlock/Attributes/Manipulator/CustomException.php index caa00d6d79..70b74eceb9 100644 --- a/library/EngineBlock/Attributes/Manipulator/CustomException.php +++ b/library/EngineBlock/Attributes/Manipulator/CustomException.php @@ -20,12 +20,12 @@ class EngineBlock_Attributes_Manipulator_CustomException extends EngineBlock_Exc { private $_feedback = array(); - public function create($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function create($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { return new self($message, $severity, $previous); } - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Exception/AuthnContextClassRefBlacklisted.php b/library/EngineBlock/Corto/Exception/AuthnContextClassRefBlacklisted.php index 9432d44d0b..a7ba4e0bec 100644 --- a/library/EngineBlock/Corto/Exception/AuthnContextClassRefBlacklisted.php +++ b/library/EngineBlock/Corto/Exception/AuthnContextClassRefBlacklisted.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_Exception_AuthnContextClassRefBlacklisted extends EngineBlock_Exception { - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Exception/InvalidAcsLocation.php b/library/EngineBlock/Corto/Exception/InvalidAcsLocation.php index b1f7103799..651c35970a 100644 --- a/library/EngineBlock/Corto/Exception/InvalidAcsLocation.php +++ b/library/EngineBlock/Corto/Exception/InvalidAcsLocation.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_Exception_InvalidAcsLocation extends EngineBlock_Exception { - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Exception/InvalidAttributeValue.php b/library/EngineBlock/Corto/Exception/InvalidAttributeValue.php index fea0992d0f..74de00b74b 100644 --- a/library/EngineBlock/Corto/Exception/InvalidAttributeValue.php +++ b/library/EngineBlock/Corto/Exception/InvalidAttributeValue.php @@ -25,7 +25,7 @@ class EngineBlock_Corto_Exception_InvalidAttributeValue extends EngineBlock_Exce private $attributeName; private $attributeValue; - public function __construct($message, $attributeName, $attributeValue, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $attributeName, $attributeValue, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); $this->attributeName = $attributeName; diff --git a/library/EngineBlock/Corto/Exception/InvalidConnection.php b/library/EngineBlock/Corto/Exception/InvalidConnection.php index 558682da7d..b50c75912e 100644 --- a/library/EngineBlock/Corto/Exception/InvalidConnection.php +++ b/library/EngineBlock/Corto/Exception/InvalidConnection.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_Exception_InvalidConnection extends EngineBlock_Exception { - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Exception/InvalidMfaAuthnContextClassRef.php b/library/EngineBlock/Corto/Exception/InvalidMfaAuthnContextClassRef.php index 9b8ba9fd9c..238056e207 100644 --- a/library/EngineBlock/Corto/Exception/InvalidMfaAuthnContextClassRef.php +++ b/library/EngineBlock/Corto/Exception/InvalidMfaAuthnContextClassRef.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_Exception_InvalidMfaAuthnContextClassRef extends EngineBlock_Exception { - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Exception/InvalidStepupCalloutResponse.php b/library/EngineBlock/Corto/Exception/InvalidStepupCalloutResponse.php index 18692e8740..80892f9d3c 100644 --- a/library/EngineBlock/Corto/Exception/InvalidStepupCalloutResponse.php +++ b/library/EngineBlock/Corto/Exception/InvalidStepupCalloutResponse.php @@ -23,7 +23,7 @@ class EngineBlock_Corto_Exception_InvalidStepupCalloutResponse extends EngineBlo */ private $feedback; - public function __construct($message, EngineBlock_Corto_Exception_ReceivedErrorStatusCode $exception, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, EngineBlock_Corto_Exception_ReceivedErrorStatusCode $exception, $severity = self::CODE_NOTICE, ?Exception $previous = null) { $this->feedback = $exception->getFeedbackInfo(); parent::__construct($message, $severity, $previous); diff --git a/library/EngineBlock/Corto/Exception/InvalidStepupLoaLevel.php b/library/EngineBlock/Corto/Exception/InvalidStepupLoaLevel.php index f99c8fe156..7beda87f12 100644 --- a/library/EngineBlock/Corto/Exception/InvalidStepupLoaLevel.php +++ b/library/EngineBlock/Corto/Exception/InvalidStepupLoaLevel.php @@ -23,7 +23,7 @@ class EngineBlock_Corto_Exception_InvalidStepupLoaLevel extends EngineBlock_Exce */ private $feedback; - public function __construct($message, EngineBlock_Corto_Exception_ReceivedErrorStatusCode $exception, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, EngineBlock_Corto_Exception_ReceivedErrorStatusCode $exception, $severity = self::CODE_NOTICE, ?Exception $previous = null) { $this->feedback = $exception->getFeedbackInfo(); parent::__construct($message, $severity, $previous); diff --git a/library/EngineBlock/Corto/Exception/MissingRequiredFields.php b/library/EngineBlock/Corto/Exception/MissingRequiredFields.php index cf8a1eeef1..d030fdf0a0 100644 --- a/library/EngineBlock/Corto/Exception/MissingRequiredFields.php +++ b/library/EngineBlock/Corto/Exception/MissingRequiredFields.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_Exception_MissingRequiredFields extends EngineBlock_Exception { - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Exception/NoConsentProvided.php b/library/EngineBlock/Corto/Exception/NoConsentProvided.php index fd7236315b..92f4efa509 100644 --- a/library/EngineBlock/Corto/Exception/NoConsentProvided.php +++ b/library/EngineBlock/Corto/Exception/NoConsentProvided.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_Exception_NoConsentProvided extends EngineBlock_Exception { - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Exception/PEPNoAccess.php b/library/EngineBlock/Corto/Exception/PEPNoAccess.php index 8097904c2a..42f876e4ba 100644 --- a/library/EngineBlock/Corto/Exception/PEPNoAccess.php +++ b/library/EngineBlock/Corto/Exception/PEPNoAccess.php @@ -25,7 +25,7 @@ class EngineBlock_Corto_Exception_PEPNoAccess extends EngineBlock_Exception */ private $policyDecision; - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Exception/UnknownIdentityProviderSigningKey.php b/library/EngineBlock/Corto/Exception/UnknownIdentityProviderSigningKey.php index 2f3b1b62e6..23a0cc2e55 100644 --- a/library/EngineBlock/Corto/Exception/UnknownIdentityProviderSigningKey.php +++ b/library/EngineBlock/Corto/Exception/UnknownIdentityProviderSigningKey.php @@ -23,7 +23,7 @@ class EngineBlock_Corto_Exception_UnknownIdentityProviderSigningKey extends Engi */ private $entityId; - public function __construct($message, string $entityId, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, string $entityId, $severity = self::CODE_NOTICE, ?Exception $previous = null) { $this->entityId = $entityId; parent::__construct($message, $severity, $previous); diff --git a/library/EngineBlock/Corto/Exception/UserCancelledStepupCallout.php b/library/EngineBlock/Corto/Exception/UserCancelledStepupCallout.php index b7535386fa..c67b0bef33 100644 --- a/library/EngineBlock/Corto/Exception/UserCancelledStepupCallout.php +++ b/library/EngineBlock/Corto/Exception/UserCancelledStepupCallout.php @@ -23,7 +23,7 @@ class EngineBlock_Corto_Exception_UserCancelledStepupCallout extends EngineBlock */ private $feedback; - public function __construct($message, EngineBlock_Corto_Exception_ReceivedErrorStatusCode $exception, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, EngineBlock_Corto_Exception_ReceivedErrorStatusCode $exception, $severity = self::CODE_NOTICE, ?Exception $previous = null) { $this->feedback = $exception->getFeedbackInfo(); parent::__construct($message, $severity, $previous); diff --git a/library/EngineBlock/Corto/Filter/Command/Exception/PreconditionFailed.php b/library/EngineBlock/Corto/Filter/Command/Exception/PreconditionFailed.php index b699df14c0..76665806cd 100644 --- a/library/EngineBlock/Corto/Filter/Command/Exception/PreconditionFailed.php +++ b/library/EngineBlock/Corto/Filter/Command/Exception/PreconditionFailed.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_Filter_Command_Exception_PreconditionFailed extends EngineBlock_Exception { - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Module/Bindings.php b/library/EngineBlock/Corto/Module/Bindings.php index 81fee7f078..c0aaccda91 100644 --- a/library/EngineBlock/Corto/Module/Bindings.php +++ b/library/EngineBlock/Corto/Module/Bindings.php @@ -71,7 +71,7 @@ class EngineBlock_Corto_Module_Bindings extends EngineBlock_Corto_Module_Abstrac 'INTERNAL' => 'sendInternal', 'JSON-Redirect' => '_sendHTTPRedirect', 'JSON-POST' => '_sendHTTPPost', - null => '_sendHTTPRedirect' + '' => '_sendHTTPRedirect' ); /** diff --git a/library/EngineBlock/Corto/Module/Bindings/Exception.php b/library/EngineBlock/Corto/Module/Bindings/Exception.php index a63ed17eea..3cdcf4e9fd 100644 --- a/library/EngineBlock/Corto/Module/Bindings/Exception.php +++ b/library/EngineBlock/Corto/Module/Bindings/Exception.php @@ -22,7 +22,7 @@ */ class EngineBlock_Corto_Module_Bindings_Exception extends EngineBlock_Corto_ProxyServer_Exception { - public function __construct($message, $severity = self::CODE_ERROR, Exception $previous = null) + public function __construct($message, $severity = self::CODE_ERROR, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Module/Bindings/UnableToReceiveMessageException.php b/library/EngineBlock/Corto/Module/Bindings/UnableToReceiveMessageException.php index a255fbc58d..6af6eef26b 100644 --- a/library/EngineBlock/Corto/Module/Bindings/UnableToReceiveMessageException.php +++ b/library/EngineBlock/Corto/Module/Bindings/UnableToReceiveMessageException.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_Module_Bindings_UnableToReceiveMessageException extends EngineBlock_Corto_Module_Bindings_Exception { - public function __construct($message, $severity = self::CODE_ERROR, Exception $previous = null) + public function __construct($message, $severity = self::CODE_ERROR, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/Module/Services/Exception.php b/library/EngineBlock/Corto/Module/Services/Exception.php index c6c94e43b2..cf8c543ebf 100644 --- a/library/EngineBlock/Corto/Module/Services/Exception.php +++ b/library/EngineBlock/Corto/Module/Services/Exception.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_Module_Services_Exception extends EngineBlock_Corto_ProxyServer_Exception { - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Corto/XmlToArray.php b/library/EngineBlock/Corto/XmlToArray.php index fa2eb8b1cc..c2b6808c52 100644 --- a/library/EngineBlock/Corto/XmlToArray.php +++ b/library/EngineBlock/Corto/XmlToArray.php @@ -224,7 +224,6 @@ public static function xml2array($xml) ); } - xml_parser_free($parser); self::$_singulars = array_fill_keys(self::$_singulars, 1); $return = self::_xml2array($values); self::$_singulars = array_keys(self::$_singulars); diff --git a/library/EngineBlock/Corto/XmlToArray/Exception.php b/library/EngineBlock/Corto/XmlToArray/Exception.php index 5cf0d45ad4..9c8b6abe57 100644 --- a/library/EngineBlock/Corto/XmlToArray/Exception.php +++ b/library/EngineBlock/Corto/XmlToArray/Exception.php @@ -18,7 +18,7 @@ class EngineBlock_Corto_XmlToArray_Exception extends EngineBlock_Corto_ProxyServer_Exception { - public function __construct($message, $severity = self::CODE_NOTICE, Exception $previous = null) + public function __construct($message, $severity = self::CODE_NOTICE, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Database/Exception.php b/library/EngineBlock/Database/Exception.php index b1600b2e54..686f3da660 100644 --- a/library/EngineBlock/Database/Exception.php +++ b/library/EngineBlock/Database/Exception.php @@ -18,7 +18,7 @@ class EngineBlock_Database_Exception extends EngineBlock_Exception { - public function __construct($message, $severity = self::CODE_EMERGENCY, Exception $previous = null) + public function __construct($message, $severity = self::CODE_EMERGENCY, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/Exception.php b/library/EngineBlock/Exception.php index 9fc1c7b914..c975a62f4c 100644 --- a/library/EngineBlock/Exception.php +++ b/library/EngineBlock/Exception.php @@ -84,7 +84,7 @@ class EngineBlock_Exception extends Exception public $idpEntityId; public $description; - public function __construct($message, $severity = self::CODE_ERROR, Exception $previous = null) + public function __construct($message, $severity = self::CODE_ERROR, ?Exception $previous = null) { parent::__construct($message, 0, $previous); $this->_severity = $severity; diff --git a/library/EngineBlock/Saml2/Container.php b/library/EngineBlock/Saml2/Container.php index a7dfe2577c..66ece2148a 100644 --- a/library/EngineBlock/Saml2/Container.php +++ b/library/EngineBlock/Saml2/Container.php @@ -92,7 +92,7 @@ public function getTempDir(): string ); } - public function writeFile(string $filename, string $data, int $mode = null): void + public function writeFile(string $filename, string $data, ?int $mode = null): void { throw new BadMethodCallException( sprintf( diff --git a/library/EngineBlock/Saml2/NameIdResolver.php b/library/EngineBlock/Saml2/NameIdResolver.php index 0db5876bb0..c81786a7db 100644 --- a/library/EngineBlock/Saml2/NameIdResolver.php +++ b/library/EngineBlock/Saml2/NameIdResolver.php @@ -136,13 +136,15 @@ protected function _generateTransientNameId() protected function _getTransientNameIdFromSession($spId, $idpId) { + $spId = (string) $spId; + $idpId = (string) $idpId; return isset($_SESSION[$spId][$idpId]) ? $_SESSION[$spId][$idpId] : false; } protected function _storeTransientNameIdToSession($nameId, $spId, $idpId) { // store to session - $_SESSION[$spId][$idpId] = $nameId; + $_SESSION[(string) $spId][(string) $idpId] = $nameId; } protected function _getNameIdFormat( diff --git a/library/EngineBlock/SamlHelper.php b/library/EngineBlock/SamlHelper.php index e52a9b128d..e5a7483e8f 100644 --- a/library/EngineBlock/SamlHelper.php +++ b/library/EngineBlock/SamlHelper.php @@ -91,7 +91,7 @@ public static function findRequesterServiceProvider( ServiceProvider $serviceProvider, EngineBlock_Saml2_AuthnRequestAnnotationDecorator $request, MetadataRepositoryInterface $repository, - LoggerInterface $logger = null + ?LoggerInterface $logger = null ) { if (!$serviceProvider->getCoins()->isTrustedProxy()) { return null; diff --git a/library/EngineBlock/View/Exception.php b/library/EngineBlock/View/Exception.php index fa062c9ad3..adaef29139 100644 --- a/library/EngineBlock/View/Exception.php +++ b/library/EngineBlock/View/Exception.php @@ -18,7 +18,7 @@ class EngineBlock_View_Exception extends EngineBlock_Exception { - public function __construct($message, $severity = self::CODE_ERROR, Exception $previous = null) + public function __construct($message, $severity = self::CODE_ERROR, ?Exception $previous = null) { parent::__construct($message, $severity, $previous); } diff --git a/library/EngineBlock/X509/KeyPair.php b/library/EngineBlock/X509/KeyPair.php index fac766e429..5ddd92458e 100644 --- a/library/EngineBlock/X509/KeyPair.php +++ b/library/EngineBlock/X509/KeyPair.php @@ -29,8 +29,8 @@ class EngineBlock_X509_KeyPair private $private; public function __construct( - EngineBlock_X509_Certificate $certificate = null, - EngineBlock_X509_PrivateKey $private = null + ?EngineBlock_X509_Certificate $certificate = null, + ?EngineBlock_X509_PrivateKey $private = null ) { $this->certificate = $certificate; $this->private = $private; diff --git a/patches.lock.json b/patches.lock.json new file mode 100644 index 0000000000..98f8b94e3b --- /dev/null +++ b/patches.lock.json @@ -0,0 +1,17 @@ +{ + "_hash": "268a5480203a1aef594360e2c320692e61cdf751f46a3dcc4b1f9dee068a7363", + "patches": { + "phrity/websocket": [ + { + "package": "phrity/websocket", + "description": "PHP 8.5: fix implicit nullable param in ConnectionException", + "url": "patches/phrity-websocket-php85-nullable.patch", + "sha256": "2e80641229b81e1b3755ace6592c085c8632bf6e84c0d946e570603e36325201", + "depth": 1, + "extra": { + "provenance": "root" + } + } + ] + } +} diff --git a/patches/phrity-websocket-php85-nullable.patch b/patches/phrity-websocket-php85-nullable.patch new file mode 100644 index 0000000000..e5c65baf3e --- /dev/null +++ b/patches/phrity-websocket-php85-nullable.patch @@ -0,0 +1,13 @@ +--- a/lib/ConnectionException.php ++++ b/lib/ConnectionException.php +@@ -18,8 +18,8 @@ + class ConnectionException extends Exception + { + private $data; +- +- public function __construct(string $message, int $code = 0, array $data = [], Throwable $prev = null) ++ ++ public function __construct(string $message, int $code = 0, array $data = [], ?Throwable $prev = null) + { + parent::__construct($message, $code, $prev); + $this->data = $data; diff --git a/src/OpenConext/EngineBlock/Http/Exception/AccessDeniedException.php b/src/OpenConext/EngineBlock/Http/Exception/AccessDeniedException.php index 12b0502857..b86d85673c 100644 --- a/src/OpenConext/EngineBlock/Http/Exception/AccessDeniedException.php +++ b/src/OpenConext/EngineBlock/Http/Exception/AccessDeniedException.php @@ -22,7 +22,7 @@ class AccessDeniedException extends HttpException { - public function __construct($resource, $code = 0, Exception $previous = null) + public function __construct($resource, $code = 0, ?Exception $previous = null) { $message = sprintf('Access denied to resource "%s": are you properly authorized?', $resource); diff --git a/src/OpenConext/EngineBlock/Http/Exception/MalformedResponseException.php b/src/OpenConext/EngineBlock/Http/Exception/MalformedResponseException.php index 4d06184c79..5fa7102357 100644 --- a/src/OpenConext/EngineBlock/Http/Exception/MalformedResponseException.php +++ b/src/OpenConext/EngineBlock/Http/Exception/MalformedResponseException.php @@ -22,7 +22,7 @@ class MalformedResponseException extends HttpException { - public function __construct($message, Exception $previous = null) + public function __construct($message, ?Exception $previous = null) { return parent::__construct($message, 0, $previous); } diff --git a/src/OpenConext/EngineBlock/Http/Exception/RequestException.php b/src/OpenConext/EngineBlock/Http/Exception/RequestException.php index 4554a09544..1a90405cba 100644 --- a/src/OpenConext/EngineBlock/Http/Exception/RequestException.php +++ b/src/OpenConext/EngineBlock/Http/Exception/RequestException.php @@ -22,7 +22,7 @@ class RequestException extends HttpException { - public function __construct($message, Exception $previous = null) + public function __construct($message, ?Exception $previous = null) { return parent::__construct($message, 0, $previous); } diff --git a/src/OpenConext/EngineBlock/Logger/AuthenticationLogger.php b/src/OpenConext/EngineBlock/Logger/AuthenticationLogger.php index 65daba576e..3cc14ce7cd 100644 --- a/src/OpenConext/EngineBlock/Logger/AuthenticationLogger.php +++ b/src/OpenConext/EngineBlock/Logger/AuthenticationLogger.php @@ -55,7 +55,7 @@ public function logGrantedLogin( ?string $authnContextClassRef, ?string $engineSsoEndpointUsed, ?array $requestedIdPlist, - KeyId $keyId = null, + ?KeyId $keyId = null, array $logAttributes = [] ) { $proxiedServiceProviderEntityIds = array_map( diff --git a/src/OpenConext/EngineBlock/Metadata/Entity/AbstractRole.php b/src/OpenConext/EngineBlock/Metadata/Entity/AbstractRole.php index dce1406927..62723b0d3f 100644 --- a/src/OpenConext/EngineBlock/Metadata/Entity/AbstractRole.php +++ b/src/OpenConext/EngineBlock/Metadata/Entity/AbstractRole.php @@ -244,10 +244,10 @@ abstract class AbstractRole public function __construct( $entityId, Mdui $mdui, - Organization $organizationEn = null, - Organization $organizationNl = null, - Organization $organizationPt = null, - Service $singleLogoutService = null, + ?Organization $organizationEn = null, + ?Organization $organizationNl = null, + ?Organization $organizationPt = null, + ?Service $singleLogoutService = null, array $certificates = array(), array $contactPersons = array(), ?string $descriptionEn = '', diff --git a/src/OpenConext/EngineBlock/Metadata/Entity/IdentityProvider.php b/src/OpenConext/EngineBlock/Metadata/Entity/IdentityProvider.php index 504562d188..8172084538 100644 --- a/src/OpenConext/EngineBlock/Metadata/Entity/IdentityProvider.php +++ b/src/OpenConext/EngineBlock/Metadata/Entity/IdentityProvider.php @@ -113,10 +113,10 @@ class IdentityProvider extends AbstractRole public function __construct( $entityId, ?Mdui $mdui = null, - Organization $organizationEn = null, - Organization $organizationNl = null, - Organization $organizationPt = null, - Service $singleLogoutService = null, + ?Organization $organizationEn = null, + ?Organization $organizationNl = null, + ?Organization $organizationPt = null, + ?Service $singleLogoutService = null, bool $additionalLogging = false, array $certificates = array(), array $contactPersons = array(), @@ -130,7 +130,7 @@ public function __construct( string $keywordsEn = '', string $keywordsNl = '', string $keywordsPt = '', - Logo $logo = null, + ?Logo $logo = null, string $nameEn = '', string $nameNl = '', string $namePt = '', @@ -149,9 +149,9 @@ public function __construct( ?string $schacHomeOrganization = null, array $shibMdScopes = array(), array $singleSignOnServices = array(), - ConsentSettings $consentSettings = null, - StepupConnections $stepupConnections = null, - MfaEntityCollection $mfaEntities = null, + ?ConsentSettings $consentSettings = null, + ?StepupConnections $stepupConnections = null, + ?MfaEntityCollection $mfaEntities = null, array $discoveries = [], ?string $defaultRAC = null, bool $policyEnforcementDecisionRequired = false diff --git a/src/OpenConext/EngineBlock/Metadata/Entity/ServiceProvider.php b/src/OpenConext/EngineBlock/Metadata/Entity/ServiceProvider.php index f2b2dd4c16..7e80a580d8 100644 --- a/src/OpenConext/EngineBlock/Metadata/Entity/ServiceProvider.php +++ b/src/OpenConext/EngineBlock/Metadata/Entity/ServiceProvider.php @@ -102,10 +102,10 @@ class ServiceProvider extends AbstractRole public function __construct( $entityId, ?Mdui $mdui = null, - Organization $organizationEn = null, - Organization $organizationNl = null, - Organization $organizationPt = null, - Service $singleLogoutService = null, + ?Organization $organizationEn = null, + ?Organization $organizationNl = null, + ?Organization $organizationPt = null, + ?Service $singleLogoutService = null, bool $additionalLogging = false, array $certificates = array(), array $contactPersons = array(), diff --git a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/CachedDoctrineMetadataRepository.php b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/CachedDoctrineMetadataRepository.php index cc831abf83..0e0a04a5c5 100644 --- a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/CachedDoctrineMetadataRepository.php +++ b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/CachedDoctrineMetadataRepository.php @@ -169,7 +169,7 @@ public function findIdentityProviderEntityIdByMd5Hash($hash) * @param LoggerInterface|null $logger * @return null|ServiceProvider */ - public function findServiceProviderByEntityId(string $entityId, LoggerInterface $logger = null) + public function findServiceProviderByEntityId(string $entityId, ?LoggerInterface $logger = null) { return $this->invoke(__FUNCTION__, func_get_args()); } diff --git a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/DoctrineMetadataRepository.php b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/DoctrineMetadataRepository.php index e3679ed525..12c2211ca5 100644 --- a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/DoctrineMetadataRepository.php +++ b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/DoctrineMetadataRepository.php @@ -172,7 +172,7 @@ public function findIdentityProviderEntityIdByMd5Hash($hash) * @param LoggerInterface|null $logger * @return null|ServiceProvider */ - public function findServiceProviderByEntityId(string $entityId, LoggerInterface $logger = null) + public function findServiceProviderByEntityId(string $entityId, ?LoggerInterface $logger = null) { $queryBuilder = $this->spRepository->createQueryBuilder('role') ->andWhere('role.entityId = :id') diff --git a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/CompositeFilter.php b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/CompositeFilter.php index dd663c67fe..2e911d5b1d 100644 --- a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/CompositeFilter.php +++ b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/CompositeFilter.php @@ -60,7 +60,7 @@ public function filterRoles($roles) /** * {@inheritdoc} */ - public function filterRole(AbstractRole $role, LoggerInterface $logger = null) + public function filterRole(AbstractRole $role, ?LoggerInterface $logger = null) { foreach ($this->filters as $filter) { $role = $filter->filterRole($role, $logger); diff --git a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/FilterInterface.php b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/FilterInterface.php index c05e7d3847..ead17fa0a9 100644 --- a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/FilterInterface.php +++ b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/FilterInterface.php @@ -33,7 +33,7 @@ interface FilterInterface * @param LoggerInterface|null $logger * @return null|AbstractRole */ - public function filterRole(AbstractRole $role, LoggerInterface $logger = null); + public function filterRole(AbstractRole $role, ?LoggerInterface $logger = null); /** * @param string $repositoryClassName diff --git a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/RemoveDisallowedIdentityProvidersFilter.php b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/RemoveDisallowedIdentityProvidersFilter.php index 78572810bc..2586631887 100644 --- a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/RemoveDisallowedIdentityProvidersFilter.php +++ b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/RemoveDisallowedIdentityProvidersFilter.php @@ -53,7 +53,7 @@ public function __construct($serviceProviderEntityId, array $allowedIdentityProv /** * {@inheritdoc} */ - public function filterRole(AbstractRole $role, LoggerInterface $logger = null) + public function filterRole(AbstractRole $role, ?LoggerInterface $logger = null) { if (!$role instanceof IdentityProvider) { return $role; diff --git a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/RemoveOtherWorkflowStatesFilter.php b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/RemoveOtherWorkflowStatesFilter.php index 2de4605e97..f6582569ca 100644 --- a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/RemoveOtherWorkflowStatesFilter.php +++ b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/Filter/RemoveOtherWorkflowStatesFilter.php @@ -60,7 +60,7 @@ public function __construct(ServiceProvider $serviceProvider, $idpEntityId, $spE /** * {@inheritdoc} */ - public function filterRole(AbstractRole $role, LoggerInterface $logger = null) + public function filterRole(AbstractRole $role, ?LoggerInterface $logger = null) { // EngineBlock itself should always work regardless of the workflow state. if (($role instanceof ServiceProvider && $role->entityId === $this->spEntityId) || diff --git a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/InMemoryMetadataRepository.php b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/InMemoryMetadataRepository.php index 6b3a87018d..cbf03bf235 100644 --- a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/InMemoryMetadataRepository.php +++ b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/InMemoryMetadataRepository.php @@ -116,7 +116,7 @@ public function findIdentityProviderEntityIdByMd5Hash($hash) * @param LoggerInterface|null $logger * @return null|ServiceProvider */ - public function findServiceProviderByEntityId(string $entityId, LoggerInterface $logger = null) + public function findServiceProviderByEntityId(string $entityId, ?LoggerInterface $logger = null) { $roles = $this->findServiceProviders(); diff --git a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/MetadataRepositoryInterface.php b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/MetadataRepositoryInterface.php index 053c9461fc..b3d3c7699e 100644 --- a/src/OpenConext/EngineBlock/Metadata/MetadataRepository/MetadataRepositoryInterface.php +++ b/src/OpenConext/EngineBlock/Metadata/MetadataRepository/MetadataRepositoryInterface.php @@ -72,7 +72,7 @@ public function findIdentityProviderEntityIdByMd5Hash($hash); * @param LoggerInterface|null $logger * @return null|ServiceProvider */ - public function findServiceProviderByEntityId(string $entityId, LoggerInterface $logger = null); + public function findServiceProviderByEntityId(string $entityId, ?LoggerInterface $logger = null); /** * @return IdentityProvider[] diff --git a/src/OpenConext/EngineBlock/Metadata/X509/X509KeyPair.php b/src/OpenConext/EngineBlock/Metadata/X509/X509KeyPair.php index 5d53f90456..92d97e56f6 100644 --- a/src/OpenConext/EngineBlock/Metadata/X509/X509KeyPair.php +++ b/src/OpenConext/EngineBlock/Metadata/X509/X509KeyPair.php @@ -39,8 +39,8 @@ class X509KeyPair * @param X509PrivateKey $private */ public function __construct( - X509Certificate $certificate = null, - X509PrivateKey $private = null + ?X509Certificate $certificate = null, + ?X509PrivateKey $private = null ) { $this->certificate = $certificate; $this->private = $private; diff --git a/src/OpenConext/EngineBlockBundle/Controller/IdentityProviderController.php b/src/OpenConext/EngineBlockBundle/Controller/IdentityProviderController.php index 6d0f11b31d..57e10014fb 100644 --- a/src/OpenConext/EngineBlockBundle/Controller/IdentityProviderController.php +++ b/src/OpenConext/EngineBlockBundle/Controller/IdentityProviderController.php @@ -120,7 +120,7 @@ public function __construct( #[Route(path: '/authentication/idp/single-sign-on/key:{keyId}/{idpHash}', name: 'authentication_idp_sso_keyid_idphash', methods: ['GET', 'POST'])] #[Route(path: '/authentication/idp/single-sign-on/key:{keyId}', name: 'authentication_idp_sso_keyid', methods: ['GET', 'POST'])] #[Route(path: '/authentication/idp/single-sign-on/{idpHash}', name: 'authentication_idp_sso_idphash', methods: ['GET', 'POST'])] - public function singleSignOnAction(Request $request, string $keyId = null, string $idpHash = null) + public function singleSignOnAction(Request $request, ?string $keyId = null, ?string $idpHash = null) { $this->requestValidator->isValid($request); $this->bindingValidator->isValid($request); @@ -149,7 +149,7 @@ public function singleSignOnAction(Request $request, string $keyId = null, strin ] #[Route(path: '/authentication/idp/unsolicited-single-sign-on/key:{keyId}', name: 'authentication_idp_unsolicited_sso_keyid', methods: ['GET'])] #[Route(path: '/authentication/idp/unsolicited-single-sign-on/{idpHash}', name: 'authentication_idp_unsolicited_sso_idphash', methods: ['GET'])] - public function unsolicitedSingleSignOnAction(Request $request, string $keyId = null, string $idpHash = null) + public function unsolicitedSingleSignOnAction(Request $request, ?string $keyId = null, ?string $idpHash = null) { if (!$this->featureConfiguration->isEnabled('eb.feature_enable_idp_initiated_flow')) { throw new NotFoundHttpException(); diff --git a/src/OpenConext/EngineBlockBundle/Controller/MetadataController.php b/src/OpenConext/EngineBlockBundle/Controller/MetadataController.php index fe22164262..dc3531dda5 100644 --- a/src/OpenConext/EngineBlockBundle/Controller/MetadataController.php +++ b/src/OpenConext/EngineBlockBundle/Controller/MetadataController.php @@ -48,7 +48,7 @@ public function __construct( #[Route(path: '/authentication/idp/metadata', name: 'metadata_idp', methods: ['GET'])] #[Route(path: '/authentication/idp/metadata/key:{keyId}', name: 'metadata_idp_key', methods: ['GET'])] - public function idpMetadataAction(string $keyId = null): Response + public function idpMetadataAction(?string $keyId = null): Response { $metadataXml = $this->metadataService->metadataForIdp($keyId); @@ -76,7 +76,7 @@ public function spMetadataAction(string $keyId = ''): Response #[Route(path: '/authentication/proxy/idps-metadata', name: 'metadata_all_idps', methods: ['GET'])] #[Route(path: '/authentication/proxy/idps-metadata/key:{keyId}', name: 'metadata_all_idps_key', methods: ['GET'])] - public function allIdpsMetadataAction(Request $request, string $keyId = null): Response + public function allIdpsMetadataAction(Request $request, ?string $keyId = null): Response { $spEntityId = $request->query->get('sp-entity-id', null); @@ -91,7 +91,7 @@ public function allIdpsMetadataAction(Request $request, string $keyId = null): R #[Route(path: '/authentication/stepup/metadata', name: 'metadata_stepup', methods: ['GET'])] #[Route(path: '/authentication/stepup/metadata/key:{keyId}', name: 'metadata_stepup_key', methods: ['GET'])] - public function stepupMetadataAction(string $keyId = null): Response + public function stepupMetadataAction(?string $keyId = null): Response { if (empty($keyId)) { $keyId = KeyPairFactory::DEFAULT_KEY_PAIR_IDENTIFIER; @@ -112,7 +112,7 @@ public function stepupMetadataAction(string $keyId = null): Response #[Route(path: '/authentication/idp/certificate/key:{keyId}', name: 'certificate_idp_key', methods: ['GET'])] #[Route(path: '/authentication/sp/certificate', name: 'certificate_sp', methods: ['GET'])] #[Route(path: '/authentication/sp/certificate/key:{keyId}', name: 'certificate_sp_key', methods: ['GET'])] - public function signingCertificateAction(string $keyId = null): Response + public function signingCertificateAction(?string $keyId = null): Response { if (empty($keyId)) { $keyId = KeyPairFactory::DEFAULT_KEY_PAIR_IDENTIFIER; diff --git a/src/OpenConext/EngineBlockBundle/Http/Cookies/CookieFactory.php b/src/OpenConext/EngineBlockBundle/Http/Cookies/CookieFactory.php index 2e0a79717d..2842737237 100644 --- a/src/OpenConext/EngineBlockBundle/Http/Cookies/CookieFactory.php +++ b/src/OpenConext/EngineBlockBundle/Http/Cookies/CookieFactory.php @@ -64,7 +64,7 @@ final class CookieFactory * @param DateTimeImmutable|null $now * @throws \Assert\AssertionFailedException */ - public function __construct($name, $domain, $expiryInSeconds = null, $httpOnly = false, $secure = false, DateTimeImmutable $now = null) + public function __construct($name, $domain, $expiryInSeconds = null, $httpOnly = false, $secure = false, ?DateTimeImmutable $now = null) { Assertion::boolean($httpOnly); Assertion::boolean($secure); diff --git a/src/OpenConext/EngineBlockBundle/Http/Exception/ApiInternalServerErrorHttpException.php b/src/OpenConext/EngineBlockBundle/Http/Exception/ApiInternalServerErrorHttpException.php index b2978ef9a5..7504094d39 100644 --- a/src/OpenConext/EngineBlockBundle/Http/Exception/ApiInternalServerErrorHttpException.php +++ b/src/OpenConext/EngineBlockBundle/Http/Exception/ApiInternalServerErrorHttpException.php @@ -23,7 +23,7 @@ class ApiInternalServerErrorHttpException extends HttpException implements ApiHttpException { - public function __construct($message, Exception $previous = null, $code = 0) + public function __construct($message, ?Exception $previous = null, $code = 0) { parent::__construct(500, $message, $previous, [], $code); } diff --git a/src/OpenConext/EngineBlockBundle/Security/Http/EntryPoint/JsonBasicAuthenticationEntryPoint.php b/src/OpenConext/EngineBlockBundle/Security/Http/EntryPoint/JsonBasicAuthenticationEntryPoint.php index a4a337e2c8..225185d85a 100644 --- a/src/OpenConext/EngineBlockBundle/Security/Http/EntryPoint/JsonBasicAuthenticationEntryPoint.php +++ b/src/OpenConext/EngineBlockBundle/Security/Http/EntryPoint/JsonBasicAuthenticationEntryPoint.php @@ -39,7 +39,7 @@ public function __construct($realmName) /** * {@inheritdoc} */ - public function start(Request $request, AuthenticationException $authException = null): Response + public function start(Request $request, ?AuthenticationException $authException = null): Response { $authExceptionMessage = $authException ? $authException->getMessage() : ''; $error = sprintf( diff --git a/src/OpenConext/EngineBlockBundle/Twig/Extensions/Extension/Metadata.php b/src/OpenConext/EngineBlockBundle/Twig/Extensions/Extension/Metadata.php index 3dbf3a6e02..2162cb6a5c 100644 --- a/src/OpenConext/EngineBlockBundle/Twig/Extensions/Extension/Metadata.php +++ b/src/OpenConext/EngineBlockBundle/Twig/Extensions/Extension/Metadata.php @@ -58,7 +58,7 @@ public function __construct(EngineBlock_Attributes_Metadata $attributesMetadata, * @return array */ #[AsTwigFunction(name: 'sortByDisplayOrder', isSafe: ['html'])] - public function sortByDisplayOrder($attributes, array $attributeSources = null, NameID $nameId = null) + public function sortByDisplayOrder($attributes, ?array $attributeSources = null, ?NameID $nameId = null) { $sortedAttributes = $this->attributeMetadata->sortByDisplayOrder($attributes); $normalizedAttributes = $this->attributeMetadata->normalizeEptiAttributeValue($sortedAttributes); @@ -124,7 +124,7 @@ public function getAttributeName($attributeId, $preferedLocale = 'en') return $this->attributeMetadata->getName($attributeId, $preferedLocale); } - private function groupAttributesBySource($attributes, array $attributeSources = array(), NameID $nameID = null) + private function groupAttributesBySource($attributes, array $attributeSources = array(), ?NameID $nameID = null) { $groupedAttributes = array( 'idp' => array(), diff --git a/src/OpenConext/EngineBlockFunctionalTestingBundle/Features/Context/MockIdpContext.php b/src/OpenConext/EngineBlockFunctionalTestingBundle/Features/Context/MockIdpContext.php index 71fbc87684..30eab20c12 100644 --- a/src/OpenConext/EngineBlockFunctionalTestingBundle/Features/Context/MockIdpContext.php +++ b/src/OpenConext/EngineBlockFunctionalTestingBundle/Features/Context/MockIdpContext.php @@ -95,7 +95,7 @@ public function cleanUpMockIdpRegistry() * @Given /^an Identity Provider named "([^"]*)"$/ * @Given /^an Identity Provider named "([^"]*)" with discovery "([^"]*)"$/ */ - public function anIdentityProviderNamed($name, string $discoveryName = null) + public function anIdentityProviderNamed($name, ?string $discoveryName = null) { $discoveries = []; if ($discoveryName !== null) { diff --git a/src/OpenConext/EngineBlockFunctionalTestingBundle/Mock/MockTranslator.php b/src/OpenConext/EngineBlockFunctionalTestingBundle/Mock/MockTranslator.php index b958dd5e76..5945fc01b9 100644 --- a/src/OpenConext/EngineBlockFunctionalTestingBundle/Mock/MockTranslator.php +++ b/src/OpenConext/EngineBlockFunctionalTestingBundle/Mock/MockTranslator.php @@ -48,7 +48,7 @@ final class MockTranslator implements TranslatorInterface public function __construct( DataCollectorTranslator $translator, AbstractDataStore $dataStore, - string $localeDataStoreTemplate = null + ?string $localeDataStoreTemplate = null ) { $this->translator = $translator; $this->dataStore = $dataStore; @@ -56,7 +56,7 @@ public function __construct( } // Helper methods - public function setTranslation(string $key, string $value, string $locale = null): void + public function setTranslation(string $key, string $value, ?string $locale = null): void { if ($locale !== null) { $store = $this->getLocaleDataStore($locale); diff --git a/src/OpenConext/EngineBlockFunctionalTestingBundle/Saml2/Compat/Container.php b/src/OpenConext/EngineBlockFunctionalTestingBundle/Saml2/Compat/Container.php index 2f7ad66f71..3aa82a2e7c 100644 --- a/src/OpenConext/EngineBlockFunctionalTestingBundle/Saml2/Compat/Container.php +++ b/src/OpenConext/EngineBlockFunctionalTestingBundle/Saml2/Compat/Container.php @@ -182,7 +182,7 @@ public function getTempDir(): string throw new NotImplementedException(sprintf('getTempDir not implemented!')); } - public function writeFile(string $filename, string $data, int $mode = null): void + public function writeFile(string $filename, string $data, ?int $mode = null): void { throw new NotImplementedException(sprintf('writeFile not implemented!')); } diff --git a/tests/unit/OpenConext/EngineBlock/Metadata/DiscoveryTest.php b/tests/unit/OpenConext/EngineBlock/Metadata/DiscoveryTest.php index 25d7e32d3f..cd764b9a2b 100644 --- a/tests/unit/OpenConext/EngineBlock/Metadata/DiscoveryTest.php +++ b/tests/unit/OpenConext/EngineBlock/Metadata/DiscoveryTest.php @@ -31,7 +31,7 @@ public function test_successful_create(): void } #[DataProvider('localeValueArrayProvider')] - public function test_validates_localized_names(array $names, string $expectedExceptionMessage = null): void + public function test_validates_localized_names(array $names, ?string $expectedExceptionMessage = null): void { $this->expectException(InvalidDiscoveryException::class); $this->expectExceptionMessage($expectedExceptionMessage); diff --git a/theme/yarn.lock b/theme/yarn.lock index b7f14fcd5c..f0695f9049 100644 --- a/theme/yarn.lock +++ b/theme/yarn.lock @@ -795,13 +795,18 @@ keyv "^5.6.0" "@cacheable/utils@^2.4.0": - version "2.4.0" - resolved "https://registry.yarnpkg.com/@cacheable/utils/-/utils-2.4.0.tgz#923512395c037c74ed4c918e6ffa2f6b7407d472" - integrity sha512-PeMMsqjVq+bF0WBsxFBxr/WozBJiZKY0rUojuaCoIaKnEl3Ju1wfEwS+SV1DU/cSe8fqHIPiYJFif8T3MVt4cQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/@cacheable/utils/-/utils-2.4.1.tgz#614ab46e4e2adf94785d8adaadbf40873d0eb12d" + integrity sha512-eiFgzCbIneyMlLOmNG4g9xzF7Hv3Mga4LjxjcSC/ues6VYq2+gUbQI8JqNuw/ZM8tJIeIaBGpswAsqV2V7ApgA== dependencies: - hashery "^1.5.0" + hashery "^1.5.1" keyv "^5.6.0" +"@colordx/core@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@colordx/core/-/core-5.0.0.tgz#5324af97df4c63fcfaaae247003efc413445d3a2" + integrity sha512-twwxohWH8hWWh5ZJ5z6ZNn/JyMrq08K+NzxXKVGTpH+XmMPDAYYzqvszc3OPhYhqqxmfnbCSa/YHcS7pCnChmw== + "@csstools/css-calc@^3.1.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@csstools/css-calc/-/css-calc-3.1.1.tgz#78b494996dac41a02797dcca18ac3b46d25b3fd7" @@ -812,10 +817,10 @@ resolved "https://registry.yarnpkg.com/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz#e1c65dc09378b42f26a111fca7f7075fc2c26164" integrity sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w== -"@csstools/css-syntax-patches-for-csstree@^1.0.27": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.1.tgz#ce4c9a0cbe30590491fcd5c03fe6426d22ba89e4" - integrity sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w== +"@csstools/css-syntax-patches-for-csstree@^1.1.1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@csstools/css-syntax-patches-for-csstree/-/css-syntax-patches-for-csstree-1.1.2.tgz#bef07c507732a052b662302e7cb4e9fdf522af90" + integrity sha512-5GkLzz4prTIpoyeUiIu3iV6CSG3Plo7xRVOFPKI7FVEJ3mZ0A8SwK0XU3Gl7xAkiQ+mDyam+NNp875/C5y+jSA== "@csstools/css-tokenizer@^4.0.0": version "4.0.0" @@ -863,7 +868,7 @@ debug "^4.3.1" minimatch "^10.2.4" -"@eslint/config-helpers@^0.5.2": +"@eslint/config-helpers@^0.5.3": version "0.5.3" resolved "https://registry.yarnpkg.com/@eslint/config-helpers/-/config-helpers-0.5.3.tgz#721fe6bbb90d74b0c80d6ff2428e5bbcb002becb" integrity sha512-lzGN0onllOZCGroKJmRwY6QcEHxbjBw1gwB8SgRSqK8YbbtEXMvKynsXc3553ckIEBxsbMBU7oOZXKIPGZNeZw== @@ -1446,10 +1451,10 @@ base64id@2.0.0, base64id@~2.0.0: resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== -baseline-browser-mapping@^2.9.0: - version "2.10.8" - resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.8.tgz#23d1cea1a85b181c2b8660b6cfe626dc2fb15630" - integrity sha512-PCLz/LXGBsNTErbtB6i5u4eLpHeMfi93aUv5duMmj6caNu6IphS4q6UevDnL36sZQv9lrP11dbPKGMaXPwMKfQ== +baseline-browser-mapping@^2.10.12: + version "2.10.13" + resolved "https://registry.yarnpkg.com/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz#5a154cc4589193015a274e3d18319b0d76b9224e" + integrity sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw== binary-extensions@^2.0.0: version "2.3.0" @@ -1461,10 +1466,10 @@ boolbase@^1.0.0: resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== -brace-expansion@^5.0.2: - version "5.0.4" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.4.tgz#614daaecd0a688f660bbbc909a8748c3d80d4336" - integrity sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg== +brace-expansion@^5.0.5: + version "5.0.5" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-5.0.5.tgz#dcc3a37116b79f3e1b46db994ced5d570e930fdb" + integrity sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ== dependencies: balanced-match "^4.0.2" @@ -1476,31 +1481,31 @@ braces@^3.0.3, braces@~3.0.2: fill-range "^7.1.1" browserslist@^4.0.0, browserslist@^4.24.0, browserslist@^4.28.1: - version "4.28.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.1.tgz#7f534594628c53c63101079e27e40de490456a95" - integrity sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA== + version "4.28.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.28.2.tgz#f50b65362ef48974ca9f50b3680566d786b811d2" + integrity sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg== dependencies: - baseline-browser-mapping "^2.9.0" - caniuse-lite "^1.0.30001759" - electron-to-chromium "^1.5.263" - node-releases "^2.0.27" - update-browserslist-db "^1.2.0" + baseline-browser-mapping "^2.10.12" + caniuse-lite "^1.0.30001782" + electron-to-chromium "^1.5.328" + node-releases "^2.0.36" + update-browserslist-db "^1.2.3" buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== -cacheable@^2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/cacheable/-/cacheable-2.3.3.tgz#abf80984137168486e3eb9b19fb7e42f22a0b1bc" - integrity sha512-iffYMX4zxKp54evOH27fm92hs+DeC1DhXmNVN8Tr94M/iZIV42dqTHSR2Ik4TOSPyOAwKr7Yu3rN9ALoLkbWyQ== +cacheable@^2.3.4: + version "2.3.4" + resolved "https://registry.yarnpkg.com/cacheable/-/cacheable-2.3.4.tgz#8d8114c01aa603d2441e4d8fd57ac6a25a585177" + integrity sha512-djgxybDbw9fL/ZWMI3+CE8ZilNxcwFkVtDc1gJ+IlOSSWkSMPQabhV/XCHTQ6pwwN6aivXPZ43omTooZiX06Ew== dependencies: "@cacheable/memory" "^2.0.8" "@cacheable/utils" "^2.4.0" hookified "^1.15.0" keyv "^5.6.0" - qified "^0.6.0" + qified "^0.9.0" callsites@^3.0.0: version "3.1.0" @@ -1517,10 +1522,10 @@ caniuse-api@^3.0.0: lodash.memoize "^4.1.2" lodash.uniq "^4.5.0" -caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001759, caniuse-lite@^1.0.30001774: - version "1.0.30001780" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001780.tgz#0e413de292808868a62ed9118822683fa120a110" - integrity sha512-llngX0E7nQci5BPJDqoZSbuZ5Bcs9F5db7EtgfwBerX9XGtkkiO4NwfDDIRzHTTwcYC8vC7bmeUEPGrKlR/TkQ== +caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001774, caniuse-lite@^1.0.30001782: + version "1.0.30001784" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz#bdf9733a0813ccfb5ab4d02f2127e62ee4c6b718" + integrity sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw== chokidar@^3.3.0: version "3.6.0" @@ -1639,7 +1644,7 @@ cors@~2.8.5: object-assign "^4" vary "^1" -cosmiconfig@^9.0.0: +cosmiconfig@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.1.tgz#df110631a8547b5d1a98915271986f06e3011379" integrity sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ== @@ -1679,7 +1684,7 @@ css-select@^5.1.0: domutils "^3.0.1" nth-check "^2.0.1" -css-tree@^3.0.1, css-tree@^3.1.0: +css-tree@^3.0.1, css-tree@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.2.1.tgz#86cac7011561272b30e6b1e042ba6ce047aa7518" integrity sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA== @@ -1705,16 +1710,16 @@ cssesc@^3.0.0: resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== -cssnano-preset-default@^7.0.11: - version "7.0.11" - resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-7.0.11.tgz#ea81661d0e8fe59b752560cca4a9f2fac763e92c" - integrity sha512-waWlAMuCakP7//UCY+JPrQS1z0OSLeOXk2sKWJximKWGupVxre50bzPlvpbUwZIDylhf/ptf0Pk+Yf7C+hoa3g== +cssnano-preset-default@^7.0.12: + version "7.0.12" + resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-7.0.12.tgz#21e29fed4a8697952485995ffeeec20ff58945a4" + integrity sha512-B3Eoouzw/sl2zANI0AL9KbacummJTCww+fkHaDBMZad/xuVx8bUduPLly6hKVQAlrmvYkS1jB1CVQEKm3gn0AA== dependencies: browserslist "^4.28.1" css-declaration-sorter "^7.2.0" cssnano-utils "^5.0.1" postcss-calc "^10.1.1" - postcss-colormin "^7.0.6" + postcss-colormin "^7.0.7" postcss-convert-values "^7.0.9" postcss-discard-comments "^7.0.6" postcss-discard-duplicates "^7.0.2" @@ -1723,7 +1728,7 @@ cssnano-preset-default@^7.0.11: postcss-merge-longhand "^7.0.5" postcss-merge-rules "^7.0.8" postcss-minify-font-values "^7.0.1" - postcss-minify-gradients "^7.0.1" + postcss-minify-gradients "^7.0.2" postcss-minify-params "^7.0.6" postcss-minify-selectors "^7.0.6" postcss-normalize-charset "^7.0.1" @@ -1747,11 +1752,11 @@ cssnano-utils@^5.0.1: integrity sha512-ZIP71eQgG9JwjVZsTPSqhc6GHgEr53uJ7tK5///VfyWj6Xp2DBmixWHqJgPno+PqATzn48pL42ww9x5SSGmhZg== cssnano@^7.1.1: - version "7.1.3" - resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-7.1.3.tgz#2a542bb8d62b6bee9e23e455ba2e507fd102f611" - integrity sha512-mLFHQAzyapMVFLiJIn7Ef4C2UCEvtlTlbyILR6B5ZsUAV3D/Pa761R5uC1YPhyBkRd3eqaDm2ncaNrD7R4mTRg== + version "7.1.4" + resolved "https://registry.yarnpkg.com/cssnano/-/cssnano-7.1.4.tgz#0aa5bb3b481df024ecafd41c4388c06240bb31ec" + integrity sha512-T9PNS7y+5Nc9Qmu9mRONqfxG1RVY7Vuvky0XN6MZ+9hqplesTEwnj9r0ROtVuSwUVfaDhVlavuzWIVLUgm4hkQ== dependencies: - cssnano-preset-default "^7.0.11" + cssnano-preset-default "^7.0.12" lilconfig "^3.1.3" csso@^5.0.5: @@ -1813,10 +1818,10 @@ domutils@^3.0.1: domelementtype "^2.3.0" domhandler "^5.0.3" -electron-to-chromium@^1.5.263: - version "1.5.313" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.313.tgz#193e9ae2c2ab6915acb41e833068381e4ef0b3e4" - integrity sha512-QBMrTWEf00GXZmJyx2lbYD45jpI3TUFnNIzJ5BBc8piGUDwMPa1GV6HJWTZVvY/eiN3fSopl7NRbgGp9sZ9LTA== +electron-to-chromium@^1.5.328: + version "1.5.330" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.330.tgz#0efe031938fc8fc82126162a7bd466ba7e24cd38" + integrity sha512-jFNydB5kFtYUobh4IkWUnXeyDbjf/r9gcUEXe1xcrcUxIGfTdzPXA+ld6zBRbwvgIGVzDll/LTIiDztEtckSnA== emoji-regex@^8.0.0: version "8.0.0" @@ -1918,14 +1923,14 @@ eslint-visitor-keys@^5.0.1: integrity sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA== eslint@^10.0.3: - version "10.0.3" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.0.3.tgz#360a7de7f2706eb8a32caa17ca983f0089efe694" - integrity sha512-COV33RzXZkqhG9P2rZCFl9ZmJ7WL+gQSCRzE7RhkbclbQPtLAWReL7ysA0Sh4c8Im2U9ynybdR56PV0XcKvqaQ== + version "10.1.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-10.1.0.tgz#9ca98e654e642ab2e1af6d1e9d8613857ac341b4" + integrity sha512-S9jlY/ELKEUwwQnqWDO+f+m6sercqOPSqXM5Go94l7DOmxHVDgmSFGWEzeE/gwgTAr0W103BWt0QLe/7mabIvA== dependencies: "@eslint-community/eslint-utils" "^4.8.0" "@eslint-community/regexpp" "^4.12.2" "@eslint/config-array" "^0.23.3" - "@eslint/config-helpers" "^0.5.2" + "@eslint/config-helpers" "^0.5.3" "@eslint/core" "^1.1.1" "@eslint/plugin-kit" "^0.6.1" "@humanfs/node" "^0.16.6" @@ -1938,7 +1943,7 @@ eslint@^10.0.3: escape-string-regexp "^4.0.0" eslint-scope "^9.1.2" eslint-visitor-keys "^5.0.1" - espree "^11.1.1" + espree "^11.2.0" esquery "^1.7.0" esutils "^2.0.2" fast-deep-equal "^3.1.3" @@ -1953,7 +1958,7 @@ eslint@^10.0.3: natural-compare "^1.4.0" optionator "^0.9.3" -espree@^11.1.1: +espree@^11.2.0: version "11.2.0" resolved "https://registry.yarnpkg.com/espree/-/espree-11.2.0.tgz#01d5e47dc332aaba3059008362454a8cc34ccaa5" integrity sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw== @@ -2106,12 +2111,12 @@ flat-cache@^4.0.0: keyv "^4.5.4" flat-cache@^6.1.20: - version "6.1.20" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-6.1.20.tgz#9db7bf5278c4ca29c92492dcb0c6a52a7017ff83" - integrity sha512-AhHYqwvN62NVLp4lObVXGVluiABTHapoB57EyegZVmazN+hhGhLTn3uZbOofoTw4DSDvVCadzzyChXhOAvy8uQ== + version "6.1.22" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-6.1.22.tgz#e9f31d567179bb5f0f2fc011e6f89af2cc94f918" + integrity sha512-N2dnzVJIphnNsjHcrxGW7DePckJ6haPrSFqpsBUhHYgwtKGVq4JrBGielEGD2fCVnsGm1zlBVZ8wGhkyuetgug== dependencies: - cacheable "^2.3.2" - flatted "^3.3.3" + cacheable "^2.3.4" + flatted "^3.4.2" hookified "^1.15.0" flat@^5.0.2: @@ -2119,7 +2124,7 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatted@^3.2.9, flatted@^3.3.3: +flatted@^3.2.9, flatted@^3.4.2: version "3.4.2" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.4.2.tgz#f5c23c107f0f37de8dbdf24f13722b3b98d52726" integrity sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA== @@ -2212,10 +2217,10 @@ globals@^17.4.0: resolved "https://registry.yarnpkg.com/globals/-/globals-17.4.0.tgz#33d7d297ed1536b388a0e2f4bcd0ff19c8ff91b5" integrity sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw== -globby@^16.1.0: - version "16.1.1" - resolved "https://registry.yarnpkg.com/globby/-/globby-16.1.1.tgz#a26012f57b819f0491c834dbf09f89b0ce6ba104" - integrity sha512-dW7vl+yiAJSp6aCekaVnVJxurRv7DCOLyXqEG3RYMYUg7AuJ2jCqPkZTA8ooqC2vtnkaMcV5WfFBMuEnTu1OQg== +globby@^16.1.1: + version "16.2.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-16.2.0.tgz#6ab1351fbac1d9b9e47ed423814c2ad41af308ea" + integrity sha512-QrJia2qDf5BB/V6HYlDTs0I0lBahyjLzpGQg3KT7FnCdTonAyPy2RtY802m2k4ALx6Dp752f82WsOczEVr3l6Q== dependencies: "@sindresorhus/merge-streams" "^4.0.0" fast-glob "^3.3.3" @@ -2251,12 +2256,12 @@ has-flag@^5.0.1: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-5.0.1.tgz#5483db2ae02a472d1d0691462fc587d1843cd940" integrity sha512-CsNUt5x9LUdx6hnk/E2SZLsDyvfqANZSUq4+D3D8RzDJ2M+HDTIkF60ibS1vHaK55vzgiZw1bEPFG9yH7l33wA== -hashery@^1.4.0, hashery@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/hashery/-/hashery-1.5.0.tgz#f28a8068b8d08f5a40afd2a5515e4a1c8b84444a" - integrity sha512-nhQ6ExaOIqti2FDWoEMWARUqIKyjr2VcZzXShrI+A3zpeiuPWzx6iPftt44LhP74E5sW36B75N6VHbvRtpvO6Q== +hashery@^1.4.0, hashery@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/hashery/-/hashery-1.5.1.tgz#4ba82ad54911ac617467870845d57a9fe508a400" + integrity sha512-iZyKG96/JwPz1N55vj2Ie2vXbhu440zfUfJvSwEqEbeLluk7NnapfGqa7LH0mOsnDxTF85Mx8/dyR6HfqcbmbQ== dependencies: - hookified "^1.14.0" + hookified "^1.15.0" hasown@^2.0.2: version "2.0.2" @@ -2265,11 +2270,16 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" -hookified@^1.14.0, hookified@^1.15.0, hookified@^1.15.1: +hookified@^1.15.0, hookified@^1.15.1: version "1.15.1" resolved "https://registry.yarnpkg.com/hookified/-/hookified-1.15.1.tgz#b1fafeaa5489cdc29cb85546a8f837ed4ffbbcb6" integrity sha512-MvG/clsADq1GPM2KGo2nyfaWVyn9naPiXrqIe4jYjXNZQt238kWyOGrsyc/DmRAQ+Re6yeo6yX/yoNCG5KAEVg== +hookified@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/hookified/-/hookified-2.1.1.tgz#50e21c700e447d5c30e4ff8574e8ff28cbd641f0" + integrity sha512-AHb76R16GB5EsPBE2J7Ko5kiEyXwviB9P5SMrAKcuAu4vJPZttViAbj9+tZeaQE5zjDme+1vcHP78Yj/WoAveA== + html-tags@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/html-tags/-/html-tags-5.1.0.tgz#ec7214b57b3e50e2a4cec39414454338a94291f8" @@ -2574,7 +2584,7 @@ mdn-data@2.27.1: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.27.1.tgz#e37b9c50880b75366c4d40ac63d9bbcacdb61f0e" integrity sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ== -meow@^14.0.0: +meow@^14.1.0: version "14.1.0" resolved "https://registry.yarnpkg.com/meow/-/meow-14.1.0.tgz#3cd2d16ad534829ab12fcb5010fc2fdb89facd31" integrity sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw== @@ -2610,11 +2620,11 @@ mime-types@^2.1.27, mime-types@~2.1.34: mime-db "1.52.0" minimatch@^10.2.2, minimatch@^10.2.4: - version "10.2.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.4.tgz#465b3accbd0218b8281f5301e27cedc697f96fde" - integrity sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg== + version "10.2.5" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.2.5.tgz#bd48687a0be38ed2961399105600f832095861d1" + integrity sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg== dependencies: - brace-expansion "^5.0.2" + brace-expansion "^5.0.5" minimist@^1.2.5: version "1.2.8" @@ -2656,7 +2666,7 @@ node-addon-api@^7.0.0: resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== -node-releases@^2.0.27: +node-releases@^2.0.36: version "2.0.36" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.36.tgz#99fd6552aaeda9e17c4713b57a63964a2e325e9d" integrity sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA== @@ -2793,14 +2803,14 @@ picocolors@^1.0.0, picocolors@^1.1.1: integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + version "2.3.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.2.tgz#5a942915e26b372dc0f0e6753149a16e6b1c5601" + integrity sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA== picomatch@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" - integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + version "4.0.4" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.4.tgz#fd6f5e00a143086e074dffe4c924b8fb293b0589" + integrity sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A== pify@^2.3.0: version "2.3.0" @@ -2846,14 +2856,14 @@ postcss-cli@^11.0.1: tinyglobby "^0.2.12" yargs "^17.0.0" -postcss-colormin@^7.0.6: - version "7.0.6" - resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-7.0.6.tgz#8f1bcfaa6f4959a872824f3b5bd4e1278bf35e45" - integrity sha512-oXM2mdx6IBTRm39797QguYzVEWzbdlFiMNfq88fCCN1Wepw3CYmJ/1/Ifa/KjWo+j5ZURDl2NTldLJIw51IeNQ== +postcss-colormin@^7.0.7: + version "7.0.7" + resolved "https://registry.yarnpkg.com/postcss-colormin/-/postcss-colormin-7.0.7.tgz#63b42eb2a9cfc092b96b1b758db66dc35a2a3f19" + integrity sha512-sBQ628lSj3VQpDquQel8Pen5mmjFPsO4pH9lDLaHB1AVkMRHtkl0pRB5DCWznc9upWsxint/kV+AveSj7W1tew== dependencies: + "@colordx/core" "^5.0.0" browserslist "^4.28.1" caniuse-api "^3.0.0" - colord "^2.9.3" postcss-value-parser "^4.2.0" postcss-convert-values@^7.0.9: @@ -2919,12 +2929,12 @@ postcss-minify-font-values@^7.0.1: dependencies: postcss-value-parser "^4.2.0" -postcss-minify-gradients@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-7.0.1.tgz#933cb642dd00df397237c17194f37dcbe4cad739" - integrity sha512-X9JjaysZJwlqNkJbUDgOclyG3jZEpAMOfof6PUZjPnPrePnPG62pS17CjdM32uT1Uq1jFvNSff9l7kNbmMSL2A== +postcss-minify-gradients@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/postcss-minify-gradients/-/postcss-minify-gradients-7.0.2.tgz#7937c8dcbd847f6cfd5b16938500587af8882fea" + integrity sha512-fVY3AB8Um7SJR5usHqTY2Ngf9qh8IRN+FFzrBP0ONJy6yYXsP7xyjK2BvSAIrpgs1cST+H91V0TXi3diHLYJtw== dependencies: - colord "^2.9.3" + "@colordx/core" "^5.0.0" cssnano-utils "^5.0.1" postcss-value-parser "^4.2.0" @@ -3084,7 +3094,7 @@ postcss-value-parser@^4.2.0: resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== -postcss@^8.2.14, postcss@^8.4.32, postcss@^8.5.6: +postcss@^8.2.14, postcss@^8.4.32, postcss@^8.5.8: version "8.5.8" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.8.tgz#6230ecc8fb02e7a0f6982e53990937857e13f399" integrity sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg== @@ -3108,12 +3118,12 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -qified@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/qified/-/qified-0.6.0.tgz#a9c33f51fa37d03003065638bb7dff45d7a81297" - integrity sha512-tsSGN1x3h569ZSU1u6diwhltLyfUWDp3YbFHedapTmpBl0B3P6U3+Qptg7xu+v+1io1EwhdPyyRHYbEw0KN2FA== +qified@^0.9.0: + version "0.9.1" + resolved "https://registry.yarnpkg.com/qified/-/qified-0.9.1.tgz#7d3fc03abf293bac97525f9b046a09cf7cbf5385" + integrity sha512-n7mar4T0xQ+39dE2vGTAlbxUEpndwPANH0kDef1/MYsB8Bba9wshkybIRx74qgcvKQPEWErf9AqAdYjhzY2Ilg== dependencies: - hookified "^1.14.0" + hookified "^2.1.1" queue-microtask@^1.2.2: version "1.2.3" @@ -3363,7 +3373,7 @@ string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.1" -string-width@^8.1.1: +string-width@^8.2.0: version "8.2.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-8.2.0.tgz#bdb6a9bd6d7800db635adae96cdb0443fec56c42" integrity sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw== @@ -3399,47 +3409,46 @@ stylelint-config-recommended@^18.0.0: integrity sha512-mxgT2XY6YZ3HWWe3Di8umG6aBmWmHTblTgu/f10rqFXnyWxjKWwNdjSWkgkwCtxIKnqjSJzvFmPT5yabVIRxZg== stylelint@^17.4.0: - version "17.4.0" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-17.4.0.tgz#f8beba358d0cb93508de4efdcd28bf06f5010e38" - integrity sha512-3kQ2/cHv3Zt8OBg+h2B8XCx9evEABQIrv4hh3uXahGz/ZEHrTR80zxBiK2NfXNaSoyBzxO1pjsz1Vhdzwn5XSw== + version "17.6.0" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-17.6.0.tgz#029731f853f407699ef49713b1a7b550cc458012" + integrity sha512-tokrsMIVAR9vAQ/q3UVEr7S0dGXCi7zkCezPRnS2kqPUulvUh5Vgfwngrk4EoAoW7wnrThqTdnTFN5Ra7CaxIg== dependencies: "@csstools/css-calc" "^3.1.1" "@csstools/css-parser-algorithms" "^4.0.0" - "@csstools/css-syntax-patches-for-csstree" "^1.0.27" + "@csstools/css-syntax-patches-for-csstree" "^1.1.1" "@csstools/css-tokenizer" "^4.0.0" "@csstools/media-query-list-parser" "^5.0.0" "@csstools/selector-resolve-nested" "^4.0.0" "@csstools/selector-specificity" "^6.0.0" colord "^2.9.3" - cosmiconfig "^9.0.0" + cosmiconfig "^9.0.1" css-functions-list "^3.3.3" - css-tree "^3.1.0" + css-tree "^3.2.1" debug "^4.4.3" fast-glob "^3.3.3" fastest-levenshtein "^1.0.16" file-entry-cache "^11.1.2" global-modules "^2.0.0" - globby "^16.1.0" + globby "^16.1.1" globjoin "^0.1.4" html-tags "^5.1.0" ignore "^7.0.5" import-meta-resolve "^4.2.0" - imurmurhash "^0.1.4" is-plain-object "^5.0.0" mathml-tag-names "^4.0.0" - meow "^14.0.0" + meow "^14.1.0" micromatch "^4.0.8" normalize-path "^3.0.0" picocolors "^1.1.1" - postcss "^8.5.6" + postcss "^8.5.8" postcss-safe-parser "^7.0.1" postcss-selector-parser "^7.1.1" postcss-value-parser "^4.2.0" - string-width "^8.1.1" + string-width "^8.2.0" supports-hyperlinks "^4.4.0" svg-tags "^1.0.0" table "^6.9.0" - write-file-atomic "^7.0.0" + write-file-atomic "^7.0.1" supports-color@^10.2.2: version "10.2.2" @@ -3496,9 +3505,9 @@ table@^6.9.0: strip-ansi "^6.0.1" tapable@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6" - integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg== + version "2.3.2" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.3.2.tgz#86755feabad08d82a26b891db044808c6ad00f15" + integrity sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA== terser-webpack-plugin@^5.3.17, terser-webpack-plugin@^5.4.0: version "5.4.0" @@ -3592,7 +3601,7 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -update-browserslist-db@^1.2.0: +update-browserslist-db@^1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz#64d76db58713136acbeb4c49114366cc6cc2e80d" integrity sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w== @@ -3722,7 +3731,7 @@ wrap-ansi@^7.0.0: string-width "^4.1.0" strip-ansi "^6.0.0" -write-file-atomic@^7.0.0: +write-file-atomic@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-7.0.1.tgz#0e2a450ab5aa306bcfcd3aed61833b10cc4fb885" integrity sha512-OTIk8iR8/aCRWBqvxrzxR0hgxWpnYBblY1S5hDWBQfk/VFmJwzmJgQFN3WsoUKHISv2eAwe+PpbUzyL1CKTLXg== @@ -3745,9 +3754,9 @@ yallist@^3.0.2: integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== yaml@^2.4.2: - version "2.8.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.2.tgz#5694f25eca0ce9c3e7a9d9e00ce0ddabbd9e35c5" - integrity sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A== + version "2.8.3" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.8.3.tgz#a0d6bd2efb3dd03c59370223701834e60409bd7d" + integrity sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg== yargs-parser@^21.1.1: version "21.1.1"