diff --git a/app/Access/Controllers/OidcController.php b/app/Access/Controllers/OidcController.php index 055d4c1403f..654ed692880 100644 --- a/app/Access/Controllers/OidcController.php +++ b/app/Access/Controllers/OidcController.php @@ -9,11 +9,9 @@ class OidcController extends Controller { - protected OidcService $oidcService; - - public function __construct(OidcService $oidcService) - { - $this->oidcService = $oidcService; + public function __construct( + protected OidcService $oidcService + ) { $this->middleware('guard:oidc'); } @@ -30,7 +28,7 @@ public function login() return redirect('/login'); } - session()->flash('oidc_state', $loginDetails['state']); + session()->put('oidc_state', time() . ':' . $loginDetails['state']); return redirect($loginDetails['url']); } @@ -41,10 +39,16 @@ public function login() */ public function callback(Request $request) { - $storedState = session()->pull('oidc_state'); $responseState = $request->query('state'); + $splitState = explode(':', session()->pull('oidc_state', ':'), 2); + if (count($splitState) !== 2) { + $splitState = [null, null]; + } + + [$storedStateTime, $storedState] = $splitState; + $threeMinutesAgo = time() - 3 * 60; - if ($storedState !== $responseState) { + if (!$storedState || $storedState !== $responseState || intval($storedStateTime) < $threeMinutesAgo) { $this->showErrorNotification(trans('errors.oidc_fail_authed', ['system' => config('oidc.name')])); return redirect('/login'); @@ -62,7 +66,7 @@ public function callback(Request $request) } /** - * Log the user out then start the OIDC RP-initiated logout process. + * Log the user out, then start the OIDC RP-initiated logout process. */ public function logout() { diff --git a/app/Activity/Models/Comment.php b/app/Activity/Models/Comment.php index 4d6c7fa41c6..0f8e5d785a1 100644 --- a/app/Activity/Models/Comment.php +++ b/app/Activity/Models/Comment.php @@ -41,7 +41,19 @@ class Comment extends Model implements Loggable, OwnableInterface */ public function entity(): MorphTo { - return $this->morphTo('commentable'); + // We specifically define null here to avoid the different name (commentable) + // being used by Laravel eager loading instead of the method name, which it was doing + // in some scenarios like when deserialized when going through the queue system. + // So we instead specify the type and id column names to use. + // Related to: + // https://github.com/laravel/framework/pull/24815 + // https://github.com/laravel/framework/issues/27342 + // https://github.com/laravel/framework/issues/47953 + // (and probably more) + + // Ultimately, we could just align the method name to 'commentable' but that would be a potential + // breaking change and not really worthwhile in a patch due to the risk of creating extra problems. + return $this->morphTo(null, 'commentable_type', 'commentable_id'); } /** diff --git a/app/Activity/Notifications/Handlers/BaseNotificationHandler.php b/app/Activity/Notifications/Handlers/BaseNotificationHandler.php index bc6f2e22fc0..efa46b0d6ff 100644 --- a/app/Activity/Notifications/Handlers/BaseNotificationHandler.php +++ b/app/Activity/Notifications/Handlers/BaseNotificationHandler.php @@ -20,6 +20,7 @@ protected function sendNotificationToUserIds(string $notification, array $userId { $users = User::query()->whereIn('id', array_unique($userIds))->get(); + /** @var User $user */ foreach ($users as $user) { // Prevent sending to the user that initiated the activity if ($user->id === $initiator->id) { diff --git a/app/Http/Middleware/StartSessionExtended.php b/app/Http/Middleware/StartSessionExtended.php index 26cd250ac34..8c5c7cf18b9 100644 --- a/app/Http/Middleware/StartSessionExtended.php +++ b/app/Http/Middleware/StartSessionExtended.php @@ -14,7 +14,10 @@ class StartSessionExtended extends Middleware { protected static array $pathPrefixesExcludedFromHistory = [ - 'uploads/images/' + 'uploads/images/', + 'dist/', + 'manifest.json', + 'opensearch.xml', ]; /** diff --git a/composer.json b/composer.json index ab33e87a46c..7e7412976d6 100644 --- a/composer.json +++ b/composer.json @@ -29,7 +29,7 @@ "league/flysystem-aws-s3-v3": "^3.0", "league/html-to-markdown": "^5.0.0", "league/oauth2-client": "^2.6", - "onelogin/php-saml": "^4.0", + "onelogin/php-saml": "^4.3.1", "phpseclib/phpseclib": "^3.0", "pragmarx/google2fa": "^8.0", "predis/predis": "^3.2", diff --git a/composer.lock b/composer.lock index 881521a43d8..98f2d460634 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": "506bcb9f80a5fd736b79c8e138efafa0", + "content-hash": "9f946fb1755acd72dcc63d0c3af637e9", "packages": [ { "name": "aws/aws-crt-php", @@ -62,16 +62,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.362.1", + "version": "3.366.4", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "f29a49b74d5ee771f13432e16d58651de91f7e79" + "reference": "1861cc8eede21cdaab0732fd44f43f19ddf1effd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/f29a49b74d5ee771f13432e16d58651de91f7e79", - "reference": "f29a49b74d5ee771f13432e16d58651de91f7e79", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1861cc8eede21cdaab0732fd44f43f19ddf1effd", + "reference": "1861cc8eede21cdaab0732fd44f43f19ddf1effd", "shasum": "" }, "require": { @@ -84,7 +84,8 @@ "guzzlehttp/psr7": "^2.4.5", "mtdowling/jmespath.php": "^2.8.0", "php": ">=8.1", - "psr/http-message": "^1.0 || ^2.0" + "psr/http-message": "^1.0 || ^2.0", + "symfony/filesystem": "^v6.4.3 || ^v7.1.0 || ^v8.0.0" }, "require-dev": { "andrewsville/php-token-reflection": "^1.4", @@ -95,13 +96,11 @@ "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", - "ext-pcntl": "*", "ext-sockets": "*", - "phpunit/phpunit": "^5.6.3 || ^8.5 || ^9.5", + "phpunit/phpunit": "^9.6", "psr/cache": "^2.0 || ^3.0", "psr/simple-cache": "^2.0 || ^3.0", "sebastian/comparator": "^1.2.3 || ^4.0 || ^5.0", - "symfony/filesystem": "^v6.4.0 || ^v7.1.0", "yoast/phpunit-polyfills": "^2.0" }, "suggest": { @@ -109,6 +108,7 @@ "doctrine/cache": "To use the DoctrineCacheAdapter", "ext-curl": "To send requests using cURL", "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-pcntl": "To use client-side monitoring", "ext-sockets": "To use client-side monitoring" }, "type": "library", @@ -153,9 +153,9 @@ "support": { "forum": "https://github.com/aws/aws-sdk-php/discussions", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.362.1" + "source": "https://github.com/aws/aws-sdk-php/tree/3.366.4" }, - "time": "2025-11-20T19:10:40+00:00" + "time": "2025-12-09T19:21:22+00:00" }, { "name": "bacon/bacon-qr-code", @@ -214,16 +214,16 @@ }, { "name": "brick/math", - "version": "0.14.0", + "version": "0.14.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2" + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", - "reference": "113a8ee2656b882d4c3164fa31aa6e12cbb7aaa2", + "url": "https://api.github.com/repos/brick/math/zipball/f05858549e5f9d7bb45875a75583240a38a281d0", + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0", "shasum": "" }, "require": { @@ -262,7 +262,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.0" + "source": "https://github.com/brick/math/tree/0.14.1" }, "funding": [ { @@ -270,7 +270,7 @@ "type": "github" } ], - "time": "2025-08-29T12:40:03+00:00" + "time": "2025-11-24T14:40:29+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -984,31 +984,31 @@ }, { "name": "fruitcake/php-cors", - "version": "v1.3.0", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/fruitcake/php-cors.git", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b" + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b", - "reference": "3d158f36e7875e2f040f37bc0573956240a5a38b", + "url": "https://api.github.com/repos/fruitcake/php-cors/zipball/38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", + "reference": "38aaa6c3fd4c157ffe2a4d10aa8b9b16ba8de379", "shasum": "" }, "require": { - "php": "^7.4|^8.0", - "symfony/http-foundation": "^4.4|^5.4|^6|^7" + "php": "^8.1", + "symfony/http-foundation": "^5.4|^6.4|^7.3|^8" }, "require-dev": { - "phpstan/phpstan": "^1.4", + "phpstan/phpstan": "^2", "phpunit/phpunit": "^9", - "squizlabs/php_codesniffer": "^3.5" + "squizlabs/php_codesniffer": "^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.3-dev" } }, "autoload": { @@ -1039,7 +1039,7 @@ ], "support": { "issues": "https://github.com/fruitcake/php-cors/issues", - "source": "https://github.com/fruitcake/php-cors/tree/v1.3.0" + "source": "https://github.com/fruitcake/php-cors/tree/v1.4.0" }, "funding": [ { @@ -1051,7 +1051,7 @@ "type": "github" } ], - "time": "2023-10-12T05:21:21+00:00" + "time": "2025-12-03T09:33:47+00:00" }, { "name": "graham-campbell/result-type", @@ -1596,16 +1596,16 @@ }, { "name": "intervention/image", - "version": "3.11.4", + "version": "3.11.5", "source": { "type": "git", "url": "https://github.com/Intervention/image.git", - "reference": "8c49eb21a6d2572532d1bc425964264f3e496846" + "reference": "76e96d3809d53dd8d597005634a733d4b2f6c2c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Intervention/image/zipball/8c49eb21a6d2572532d1bc425964264f3e496846", - "reference": "8c49eb21a6d2572532d1bc425964264f3e496846", + "url": "https://api.github.com/repos/Intervention/image/zipball/76e96d3809d53dd8d597005634a733d4b2f6c2c3", + "reference": "76e96d3809d53dd8d597005634a733d4b2f6c2c3", "shasum": "" }, "require": { @@ -1637,11 +1637,11 @@ { "name": "Oliver Vogel", "email": "oliver@intervention.io", - "homepage": "https://intervention.io/" + "homepage": "https://intervention.io" } ], - "description": "PHP image manipulation", - "homepage": "https://image.intervention.io/", + "description": "PHP Image Processing", + "homepage": "https://image.intervention.io", "keywords": [ "gd", "image", @@ -1652,7 +1652,7 @@ ], "support": { "issues": "https://github.com/Intervention/image/issues", - "source": "https://github.com/Intervention/image/tree/3.11.4" + "source": "https://github.com/Intervention/image/tree/3.11.5" }, "funding": [ { @@ -1668,7 +1668,7 @@ "type": "ko_fi" } ], - "time": "2025-07-30T13:13:19+00:00" + "time": "2025-11-29T11:18:34+00:00" }, { "name": "knplabs/knp-snappy", @@ -1739,16 +1739,16 @@ }, { "name": "laravel/framework", - "version": "v12.39.0", + "version": "v12.42.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "1a6176129ef28eaf42b6b4a6250025120c3d8dac" + "reference": "509b33095564c5165366d81bbaa0afaac28abe75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/1a6176129ef28eaf42b6b4a6250025120c3d8dac", - "reference": "1a6176129ef28eaf42b6b4a6250025120c3d8dac", + "url": "https://api.github.com/repos/laravel/framework/zipball/509b33095564c5165366d81bbaa0afaac28abe75", + "reference": "509b33095564c5165366d81bbaa0afaac28abe75", "shasum": "" }, "require": { @@ -1836,6 +1836,7 @@ "illuminate/process": "self.version", "illuminate/queue": "self.version", "illuminate/redis": "self.version", + "illuminate/reflection": "self.version", "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", @@ -1860,7 +1861,7 @@ "league/flysystem-sftp-v3": "^3.25.1", "mockery/mockery": "^1.6.10", "opis/json-schema": "^2.4.1", - "orchestra/testbench-core": "^10.7.0", + "orchestra/testbench-core": "^10.8.1", "pda/pheanstalk": "^5.0.6|^7.0.0", "php-http/discovery": "^1.15", "phpstan/phpstan": "^2.0", @@ -1922,6 +1923,7 @@ "src/Illuminate/Filesystem/functions.php", "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Log/functions.php", + "src/Illuminate/Reflection/helpers.php", "src/Illuminate/Support/functions.php", "src/Illuminate/Support/helpers.php" ], @@ -1930,7 +1932,8 @@ "Illuminate\\Support\\": [ "src/Illuminate/Macroable/", "src/Illuminate/Collections/", - "src/Illuminate/Conditionable/" + "src/Illuminate/Conditionable/", + "src/Illuminate/Reflection/" ] } }, @@ -1954,20 +1957,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-11-18T15:16:10+00:00" + "time": "2025-12-09T15:51:23+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.7", + "version": "v0.3.8", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "a1891d362714bc40c8d23b0b1d7090f022ea27cc" + "reference": "096748cdfb81988f60090bbb839ce3205ace0d35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/a1891d362714bc40c8d23b0b1d7090f022ea27cc", - "reference": "a1891d362714bc40c8d23b0b1d7090f022ea27cc", + "url": "https://api.github.com/repos/laravel/prompts/zipball/096748cdfb81988f60090bbb839ce3205ace0d35", + "reference": "096748cdfb81988f60090bbb839ce3205ace0d35", "shasum": "" }, "require": { @@ -1983,7 +1986,7 @@ "require-dev": { "illuminate/collections": "^10.0|^11.0|^12.0", "mockery/mockery": "^1.5", - "pestphp/pest": "^2.3|^3.4", + "pestphp/pest": "^2.3|^3.4|^4.0", "phpstan/phpstan": "^1.12.28", "phpstan/phpstan-mockery": "^1.1.3" }, @@ -2011,22 +2014,22 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.7" + "source": "https://github.com/laravel/prompts/tree/v0.3.8" }, - "time": "2025-09-19T13:47:56+00:00" + "time": "2025-11-21T20:52:52+00:00" }, { "name": "laravel/serializable-closure", - "version": "v2.0.6", + "version": "v2.0.7", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "038ce42edee619599a1debb7e81d7b3759492819" + "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/038ce42edee619599a1debb7e81d7b3759492819", - "reference": "038ce42edee619599a1debb7e81d7b3759492819", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/cb291e4c998ac50637c7eeb58189c14f5de5b9dd", + "reference": "cb291e4c998ac50637c7eeb58189c14f5de5b9dd", "shasum": "" }, "require": { @@ -2035,7 +2038,7 @@ "require-dev": { "illuminate/support": "^10.0|^11.0|^12.0", "nesbot/carbon": "^2.67|^3.0", - "pestphp/pest": "^2.36|^3.0", + "pestphp/pest": "^2.36|^3.0|^4.0", "phpstan/phpstan": "^2.0", "symfony/var-dumper": "^6.2.0|^7.0.0" }, @@ -2074,20 +2077,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2025-10-09T13:42:30+00:00" + "time": "2025-11-21T20:52:36+00:00" }, { "name": "laravel/socialite", - "version": "v5.23.1", + "version": "v5.24.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "83d7523c97c1101d288126948947891319eef800" + "reference": "1d19358c28e8951dde6e36603b89d8f09e6cfbfd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/83d7523c97c1101d288126948947891319eef800", - "reference": "83d7523c97c1101d288126948947891319eef800", + "url": "https://api.github.com/repos/laravel/socialite/zipball/1d19358c28e8951dde6e36603b89d8f09e6cfbfd", + "reference": "1d19358c28e8951dde6e36603b89d8f09e6cfbfd", "shasum": "" }, "require": { @@ -2103,9 +2106,9 @@ }, "require-dev": { "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0|^8.0|^9.0|^10.0", + "orchestra/testbench": "^4.18|^5.20|^6.47|^7.55|^8.36|^9.15|^10.8", "phpstan/phpstan": "^1.12.23", - "phpunit/phpunit": "^8.0|^9.3|^10.4|^11.5" + "phpunit/phpunit": "^8.0|^9.3|^10.4|^11.5|^12.0" }, "type": "library", "extra": { @@ -2146,20 +2149,20 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2025-10-27T15:36:41+00:00" + "time": "2025-12-09T15:37:06+00:00" }, { "name": "laravel/tinker", - "version": "v2.10.1", + "version": "v2.10.2", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3" + "reference": "3bcb5f62d6f837e0f093a601e26badafb127bd4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/22177cc71807d38f2810c6204d8f7183d88a57d3", - "reference": "22177cc71807d38f2810c6204d8f7183d88a57d3", + "url": "https://api.github.com/repos/laravel/tinker/zipball/3bcb5f62d6f837e0f093a601e26badafb127bd4c", + "reference": "3bcb5f62d6f837e0f093a601e26badafb127bd4c", "shasum": "" }, "require": { @@ -2210,22 +2213,22 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.10.1" + "source": "https://github.com/laravel/tinker/tree/v2.10.2" }, - "time": "2025-01-27T14:24:01+00:00" + "time": "2025-11-20T16:29:12+00:00" }, { "name": "league/commonmark", - "version": "2.7.1", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "10732241927d3971d28e7ea7b5712721fa2296ca" + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/10732241927d3971d28e7ea7b5712721fa2296ca", - "reference": "10732241927d3971d28e7ea7b5712721fa2296ca", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", "shasum": "" }, "require": { @@ -2262,7 +2265,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.8-dev" + "dev-main": "2.9-dev" } }, "autoload": { @@ -2319,7 +2322,7 @@ "type": "tidelift" } ], - "time": "2025-07-20T12:47:49+00:00" + "time": "2025-11-26T21:48:24+00:00" }, { "name": "league/config", @@ -2813,22 +2816,22 @@ }, { "name": "league/oauth2-client", - "version": "2.8.1", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "9df2924ca644736c835fc60466a3a60390d334f9" + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/9df2924ca644736c835fc60466a3a60390d334f9", - "reference": "9df2924ca644736c835fc60466a3a60390d334f9", + "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/26e8c5da4f3d78cede7021e09b1330a0fc093d5e", + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", - "php": "^7.1 || >=8.0.0 <8.5.0" + "php": "^7.1 || >=8.0.0 <8.6.0" }, "require-dev": { "mockery/mockery": "^1.3.5", @@ -2872,26 +2875,26 @@ ], "support": { "issues": "https://github.com/thephpleague/oauth2-client/issues", - "source": "https://github.com/thephpleague/oauth2-client/tree/2.8.1" + "source": "https://github.com/thephpleague/oauth2-client/tree/2.9.0" }, - "time": "2025-02-26T04:37:30+00:00" + "time": "2025-11-25T22:17:17+00:00" }, { "name": "league/uri", - "version": "7.6.0", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "f625804987a0a9112d954f9209d91fec52182344" + "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/f625804987a0a9112d954f9209d91fec52182344", - "reference": "f625804987a0a9112d954f9209d91fec52182344", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/8d587cddee53490f9b82bf203d3a9aa7ea4f9807", + "reference": "8d587cddee53490f9b82bf203d3a9aa7ea4f9807", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.6", + "league/uri-interfaces": "^7.7", "php": "^8.1", "psr/http-factory": "^1" }, @@ -2964,7 +2967,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.6.0" + "source": "https://github.com/thephpleague/uri/tree/7.7.0" }, "funding": [ { @@ -2972,20 +2975,20 @@ "type": "github" } ], - "time": "2025-11-18T12:17:23+00:00" + "time": "2025-12-07T16:02:06+00:00" }, { "name": "league/uri-interfaces", - "version": "7.6.0", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368" + "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/ccbfb51c0445298e7e0b7f4481b942f589665368", - "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/62ccc1a0435e1c54e10ee6022df28d6c04c2946c", + "reference": "62ccc1a0435e1c54e10ee6022df28d6c04c2946c", "shasum": "" }, "require": { @@ -3048,7 +3051,7 @@ "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.6.0" + "source": "https://github.com/thephpleague/uri-interfaces/tree/7.7.0" }, "funding": [ { @@ -3056,7 +3059,7 @@ "type": "github" } ], - "time": "2025-11-18T12:17:23+00:00" + "time": "2025-12-07T16:03:21+00:00" }, { "name": "masterminds/html5", @@ -3296,16 +3299,16 @@ }, { "name": "nesbot/carbon", - "version": "3.10.3", + "version": "3.11.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f" + "reference": "bdb375400dcd162624531666db4799b36b64e4a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", - "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/bdb375400dcd162624531666db4799b36b64e4a1", + "reference": "bdb375400dcd162624531666db4799b36b64e4a1", "shasum": "" }, "require": { @@ -3313,9 +3316,9 @@ "ext-json": "*", "php": "^8.1", "psr/clock": "^1.0", - "symfony/clock": "^6.3.12 || ^7.0", + "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0" + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0" }, "provide": { "psr/clock-implementation": "1.0" @@ -3397,7 +3400,7 @@ "type": "tidelift" } ], - "time": "2025-09-06T13:39:36+00:00" + "time": "2025-12-02T21:04:28+00:00" }, { "name": "nette/schema", @@ -3466,20 +3469,20 @@ }, { "name": "nette/utils", - "version": "v4.0.8", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede" + "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/c930ca4e3cf4f17dcfb03037703679d2396d2ede", - "reference": "c930ca4e3cf4f17dcfb03037703679d2396d2ede", + "url": "https://api.github.com/repos/nette/utils/zipball/fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", + "reference": "fa1f0b8261ed150447979eb22e373b7b7ad5a8e0", "shasum": "" }, "require": { - "php": "8.0 - 8.5" + "php": "8.2 - 8.5" }, "conflict": { "nette/finder": "<3", @@ -3502,7 +3505,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -3549,22 +3552,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.8" + "source": "https://github.com/nette/utils/tree/v4.1.0" }, - "time": "2025-08-06T21:43:34+00:00" + "time": "2025-12-01T17:49:23+00:00" }, { "name": "nikic/php-parser", - "version": "v5.6.2", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "3a454ca033b9e06b63282ce19562e892747449bb" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb", - "reference": "3a454ca033b9e06b63282ce19562e892747449bb", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -3607,9 +3610,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2025-10-21T19:32:17+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "nunomaduro/termwind", @@ -3700,21 +3703,21 @@ }, { "name": "onelogin/php-saml", - "version": "4.3.0", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/SAML-Toolkits/php-saml.git", - "reference": "bf5efce9f2df5d489d05e78c27003a0fc8bc50f0" + "reference": "b009f160e4ac11f49366a45e0d45706b48429353" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SAML-Toolkits/php-saml/zipball/bf5efce9f2df5d489d05e78c27003a0fc8bc50f0", - "reference": "bf5efce9f2df5d489d05e78c27003a0fc8bc50f0", + "url": "https://api.github.com/repos/SAML-Toolkits/php-saml/zipball/b009f160e4ac11f49366a45e0d45706b48429353", + "reference": "b009f160e4ac11f49366a45e0d45706b48429353", "shasum": "" }, "require": { "php": ">=7.3", - "robrichards/xmlseclibs": "^3.1" + "robrichards/xmlseclibs": ">=3.1.4" }, "require-dev": { "pdepend/pdepend": "^2.8.0", @@ -3760,7 +3763,7 @@ "type": "github" } ], - "time": "2025-05-25T14:28:00+00:00" + "time": "2025-12-09T10:50:49+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -4120,16 +4123,16 @@ }, { "name": "predis/predis", - "version": "v3.2.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/predis/predis.git", - "reference": "9e9deec4dfd3ebf65d32eb368f498c646ba2ecd8" + "reference": "153097374b39a2f737fe700ebcd725642526cdec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/predis/predis/zipball/9e9deec4dfd3ebf65d32eb368f498c646ba2ecd8", - "reference": "9e9deec4dfd3ebf65d32eb368f498c646ba2ecd8", + "url": "https://api.github.com/repos/predis/predis/zipball/153097374b39a2f737fe700ebcd725642526cdec", + "reference": "153097374b39a2f737fe700ebcd725642526cdec", "shasum": "" }, "require": { @@ -4171,7 +4174,7 @@ ], "support": { "issues": "https://github.com/predis/predis/issues", - "source": "https://github.com/predis/predis/tree/v3.2.0" + "source": "https://github.com/predis/predis/tree/v3.3.0" }, "funding": [ { @@ -4179,7 +4182,7 @@ "type": "github" } ], - "time": "2025-08-06T06:41:24+00:00" + "time": "2025-11-24T17:48:50+00:00" }, { "name": "psr/clock", @@ -4595,16 +4598,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.14", + "version": "v0.12.16", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "95c29b3756a23855a30566b745d218bee690bef2" + "reference": "ee6d5028be4774f56c6c2c85ec4e6bc9acfe6b67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/95c29b3756a23855a30566b745d218bee690bef2", - "reference": "95c29b3756a23855a30566b745d218bee690bef2", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ee6d5028be4774f56c6c2c85ec4e6bc9acfe6b67", + "reference": "ee6d5028be4774f56c6c2c85ec4e6bc9acfe6b67", "shasum": "" }, "require": { @@ -4612,8 +4615,8 @@ "ext-tokenizer": "*", "nikic/php-parser": "^5.0 || ^4.0", "php": "^8.0 || ^7.4", - "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + "symfony/console": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^8.0 || ^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" @@ -4668,9 +4671,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.14" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.16" }, - "time": "2025-10-27T17:15:31+00:00" + "time": "2025-12-07T03:39:01+00:00" }, { "name": "ralouphie/getallheaders", @@ -4872,16 +4875,16 @@ }, { "name": "robrichards/xmlseclibs", - "version": "3.1.3", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/robrichards/xmlseclibs.git", - "reference": "2bdfd742624d739dfadbd415f00181b4a77aaf07" + "reference": "bc87389224c6de95802b505e5265b0ec2c5bcdbd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/2bdfd742624d739dfadbd415f00181b4a77aaf07", - "reference": "2bdfd742624d739dfadbd415f00181b4a77aaf07", + "url": "https://api.github.com/repos/robrichards/xmlseclibs/zipball/bc87389224c6de95802b505e5265b0ec2c5bcdbd", + "reference": "bc87389224c6de95802b505e5265b0ec2c5bcdbd", "shasum": "" }, "require": { @@ -4908,9 +4911,9 @@ ], "support": { "issues": "https://github.com/robrichards/xmlseclibs/issues", - "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.3" + "source": "https://github.com/robrichards/xmlseclibs/tree/3.1.4" }, - "time": "2024-11-20T21:13:56+00:00" + "time": "2025-12-08T11:57:53+00:00" }, { "name": "sabberworm/php-css-parser", @@ -5348,16 +5351,16 @@ }, { "name": "symfony/clock", - "version": "v7.3.0", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "url": "https://api.github.com/repos/symfony/clock/zipball/9169f24776edde469914c1e7a1442a50f7a4e110", + "reference": "9169f24776edde469914c1e7a1442a50f7a4e110", "shasum": "" }, "require": { @@ -5402,7 +5405,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.3.0" + "source": "https://github.com/symfony/clock/tree/v7.4.0" }, "funding": [ { @@ -5413,25 +5416,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-11-12T15:39:26+00:00" }, { "name": "symfony/console", - "version": "v7.3.6", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a" + "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", - "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a", + "url": "https://api.github.com/repos/symfony/console/zipball/6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", + "reference": "6d9f0fbf2ec2e9785880096e3abd0ca0c88b506e", "shasum": "" }, "require": { @@ -5439,7 +5446,7 @@ "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" + "symfony/string": "^7.2|^8.0" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -5453,16 +5460,16 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/lock": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5496,7 +5503,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.6" + "source": "https://github.com/symfony/console/tree/v7.4.1" }, "funding": [ { @@ -5516,20 +5523,20 @@ "type": "tidelift" } ], - "time": "2025-11-04T01:21:42+00:00" + "time": "2025-12-05T15:23:39+00:00" }, { "name": "symfony/css-selector", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "84321188c4754e64273b46b406081ad9b18e8614" + "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/84321188c4754e64273b46b406081ad9b18e8614", - "reference": "84321188c4754e64273b46b406081ad9b18e8614", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/ab862f478513e7ca2fe9ec117a6f01a8da6e1135", + "reference": "ab862f478513e7ca2fe9ec117a6f01a8da6e1135", "shasum": "" }, "require": { @@ -5565,7 +5572,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.3.6" + "source": "https://github.com/symfony/css-selector/tree/v7.4.0" }, "funding": [ { @@ -5585,7 +5592,7 @@ "type": "tidelift" } ], - "time": "2025-10-29T17:24:25+00:00" + "time": "2025-10-30T13:39:42+00:00" }, { "name": "symfony/deprecation-contracts", @@ -5656,32 +5663,33 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "bbe40bfab84323d99dab491b716ff142410a92a8" + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/bbe40bfab84323d99dab491b716ff142410a92a8", - "reference": "bbe40bfab84323d99dab491b716ff142410a92a8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/48be2b0653594eea32dcef130cca1c811dcf25c2", + "reference": "48be2b0653594eea32dcef130cca1c811dcf25c2", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/polyfill-php85": "^1.32", + "symfony/var-dumper": "^6.4|^7.0|^8.0" }, "conflict": { "symfony/deprecation-contracts": "<2.5", "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4|^7.0|^8.0", "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ @@ -5713,7 +5721,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.3.6" + "source": "https://github.com/symfony/error-handler/tree/v7.4.0" }, "funding": [ { @@ -5733,20 +5741,20 @@ "type": "tidelift" } ], - "time": "2025-10-31T19:12:50+00:00" + "time": "2025-11-05T14:29:59+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.3", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191" + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b7dc69e71de420ac04bc9ab830cf3ffebba48191", - "reference": "b7dc69e71de420ac04bc9ab830cf3ffebba48191", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9dddcddff1ef974ad87b3708e4b442dc38b2261d", + "reference": "9dddcddff1ef974ad87b3708e4b442dc38b2261d", "shasum": "" }, "require": { @@ -5763,13 +5771,14 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5797,7 +5806,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.3.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.0" }, "funding": [ { @@ -5817,7 +5826,7 @@ "type": "tidelift" } ], - "time": "2025-08-13T11:49:31+00:00" + "time": "2025-10-28T09:38:46+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -5895,25 +5904,95 @@ ], "time": "2024-09-25T14:21:43+00:00" }, + { + "name": "symfony/filesystem", + "version": "v7.4.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "d551b38811096d0be9c4691d406991b47c0c630a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a", + "reference": "d551b38811096d0be9c4691d406991b47c0c630a", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.4.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-11-27T13:27:24+00:00" + }, { "name": "symfony/finder", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "9f696d2f1e340484b4683f7853b273abff94421f" + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/9f696d2f1e340484b4683f7853b273abff94421f", - "reference": "9f696d2f1e340484b4683f7853b273abff94421f", + "url": "https://api.github.com/repos/symfony/finder/zipball/340b9ed7320570f319028a2cbec46d40535e94bd", + "reference": "340b9ed7320570f319028a2cbec46d40535e94bd", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -5941,7 +6020,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.5" + "source": "https://github.com/symfony/finder/tree/v7.4.0" }, "funding": [ { @@ -5961,27 +6040,26 @@ "type": "tidelift" } ], - "time": "2025-10-15T18:45:57+00:00" + "time": "2025-11-05T05:42:40+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.3.7", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4" + "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/db488a62f98f7a81d5746f05eea63a74e55bb7c4", - "reference": "db488a62f98f7a81d5746f05eea63a74e55bb7c4", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/bd1af1e425811d6f077db240c3a588bdb405cd27", + "reference": "bd1af1e425811d6f077db240c3a588bdb405cd27", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "^1.1" }, "conflict": { "doctrine/dbal": "<3.6", @@ -5990,13 +6068,13 @@ "require-dev": { "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4.12|^7.1.5", - "symfony/clock": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0" + "symfony/cache": "^6.4.12|^7.1.5|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/rate-limiter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6024,7 +6102,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.3.7" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.1" }, "funding": [ { @@ -6044,29 +6122,29 @@ "type": "tidelift" } ], - "time": "2025-11-08T16:41:12+00:00" + "time": "2025-12-07T11:13:10+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.7", + "version": "v7.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce" + "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/10b8e9b748ea95fa4539c208e2487c435d3c87ce", - "reference": "10b8e9b748ea95fa4539c208e2487c435d3c87ce", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f6e6f0a5fa8763f75a504b930163785fb6dd055f", + "reference": "f6e6f0a5fa8763f75a504b930163785fb6dd055f", "shasum": "" }, "require": { "php": ">=8.2", "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^7.3", - "symfony/http-foundation": "^7.3", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/event-dispatcher": "^7.3|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -6076,6 +6154,7 @@ "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", "symfony/doctrine-bridge": "<6.4", + "symfony/flex": "<2.10", "symfony/form": "<6.4", "symfony/http-client": "<6.4", "symfony/http-client-contracts": "<2.5", @@ -6093,27 +6172,27 @@ }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0|^8.0", + "symfony/clock": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/css-selector": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/dom-crawler": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^7.1", - "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^7.1", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^7.1|^8.0", + "symfony/routing": "^6.4|^7.0|^8.0", + "symfony/serializer": "^7.1|^8.0", + "symfony/stopwatch": "^6.4|^7.0|^8.0", + "symfony/translation": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "type": "library", @@ -6142,7 +6221,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.3.7" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.2" }, "funding": [ { @@ -6162,20 +6241,20 @@ "type": "tidelift" } ], - "time": "2025-11-12T11:38:40+00:00" + "time": "2025-12-08T07:43:37+00:00" }, { "name": "symfony/mailer", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba" + "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/fd497c45ba9c10c37864e19466b090dcb60a50ba", - "reference": "fd497c45ba9c10c37864e19466b090dcb60a50ba", + "url": "https://api.github.com/repos/symfony/mailer/zipball/a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", + "reference": "a3d9eea8cfa467ece41f0f54ba28185d74bd53fd", "shasum": "" }, "require": { @@ -6183,8 +6262,8 @@ "php": ">=8.2", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^7.2", + "symfony/event-dispatcher": "^6.4|^7.0|^8.0", + "symfony/mime": "^7.2|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -6195,10 +6274,10 @@ "symfony/twig-bridge": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/twig-bridge": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -6226,7 +6305,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.3.5" + "source": "https://github.com/symfony/mailer/tree/v7.4.0" }, "funding": [ { @@ -6246,24 +6325,25 @@ "type": "tidelift" } ], - "time": "2025-10-24T14:27:20+00:00" + "time": "2025-11-21T15:26:00+00:00" }, { "name": "symfony/mime", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35" + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/b1b828f69cbaf887fa835a091869e55df91d0e35", - "reference": "b1b828f69cbaf887fa835a091869e55df91d0e35", + "url": "https://api.github.com/repos/symfony/mime/zipball/bdb02729471be5d047a3ac4a69068748f1a6be7a", + "reference": "bdb02729471be5d047a3ac4a69068748f1a6be7a", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -6278,11 +6358,11 @@ "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", + "symfony/serializer": "^6.4.3|^7.0.3|^8.0" }, "type": "library", "autoload": { @@ -6314,7 +6394,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.3.4" + "source": "https://github.com/symfony/mime/tree/v7.4.0" }, "funding": [ { @@ -6334,7 +6414,7 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:38:17+00:00" + "time": "2025-11-16T10:14:42+00:00" }, { "name": "symfony/polyfill-ctype", @@ -7167,16 +7247,16 @@ }, { "name": "symfony/process", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b" + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b", - "reference": "f24f8f316367b30810810d4eb30c543d7003ff3b", + "url": "https://api.github.com/repos/symfony/process/zipball/7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", + "reference": "7ca8dc2d0dcf4882658313aba8be5d9fd01026c8", "shasum": "" }, "require": { @@ -7208,7 +7288,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.4" + "source": "https://github.com/symfony/process/tree/v7.4.0" }, "funding": [ { @@ -7228,20 +7308,20 @@ "type": "tidelift" } ], - "time": "2025-09-11T10:12:26+00:00" + "time": "2025-10-16T11:21:06+00:00" }, { "name": "symfony/routing", - "version": "v7.3.6", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091" + "reference": "4720254cb2644a0b876233d258a32bf017330db7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/c97abe725f2a1a858deca629a6488c8fc20c3091", - "reference": "c97abe725f2a1a858deca629a6488c8fc20c3091", + "url": "https://api.github.com/repos/symfony/routing/zipball/4720254cb2644a0b876233d258a32bf017330db7", + "reference": "4720254cb2644a0b876233d258a32bf017330db7", "shasum": "" }, "require": { @@ -7255,11 +7335,11 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/expression-language": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7293,7 +7373,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.6" + "source": "https://github.com/symfony/routing/tree/v7.4.0" }, "funding": [ { @@ -7313,7 +7393,7 @@ "type": "tidelift" } ], - "time": "2025-11-05T07:57:47+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/service-contracts", @@ -7404,22 +7484,23 @@ }, { "name": "symfony/string", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f96476035142921000338bad71e5247fbc138872" + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872", - "reference": "f96476035142921000338bad71e5247fbc138872", + "url": "https://api.github.com/repos/symfony/string/zipball/d50e862cb0a0e0886f73ca1f31b865efbb795003", + "reference": "d50e862cb0a0e0886f73ca1f31b865efbb795003", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-grapheme": "~1.33", "symfony/polyfill-intl-normalizer": "~1.0", "symfony/polyfill-mbstring": "~1.0" }, @@ -7427,11 +7508,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.1|^8.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7470,7 +7551,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.4" + "source": "https://github.com/symfony/string/tree/v7.4.0" }, "funding": [ { @@ -7490,27 +7571,27 @@ "type": "tidelift" } ], - "time": "2025-09-11T14:36:48+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/translation", - "version": "v7.3.4", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174" + "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174", + "url": "https://api.github.com/repos/symfony/translation/zipball/2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", + "reference": "2d01ca0da3f092f91eeedb46f24aa30d2fca8f68", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" + "symfony/translation-contracts": "^2.5.3|^3.3" }, "conflict": { "nikic/php-parser": "<5.0", @@ -7529,17 +7610,17 @@ "require-dev": { "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/intl": "^6.4|^7.0|^8.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^6.4|^7.0", + "symfony/routing": "^6.4|^7.0|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7570,7 +7651,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.4" + "source": "https://github.com/symfony/translation/tree/v7.4.0" }, "funding": [ { @@ -7590,7 +7671,7 @@ "type": "tidelift" } ], - "time": "2025-09-07T11:39:36+00:00" + "time": "2025-11-27T13:27:24+00:00" }, { "name": "symfony/translation-contracts", @@ -7676,16 +7757,16 @@ }, { "name": "symfony/uid", - "version": "v7.3.1", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" + "reference": "2498e9f81b7baa206f44de583f2f48350b90142c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", - "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", + "url": "https://api.github.com/repos/symfony/uid/zipball/2498e9f81b7baa206f44de583f2f48350b90142c", + "reference": "2498e9f81b7baa206f44de583f2f48350b90142c", "shasum": "" }, "require": { @@ -7693,7 +7774,7 @@ "symfony/polyfill-uuid": "^1.15" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -7730,7 +7811,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.3.1" + "source": "https://github.com/symfony/uid/tree/v7.4.0" }, "funding": [ { @@ -7741,25 +7822,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "time": "2025-09-25T11:02:55+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.5", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d" + "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/476c4ae17f43a9a36650c69879dcf5b1e6ae724d", - "reference": "476c4ae17f43a9a36650c69879dcf5b1e6ae724d", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/41fd6c4ae28c38b294b42af6db61446594a0dece", + "reference": "41fd6c4ae28c38b294b42af6db61446594a0dece", "shasum": "" }, "require": { @@ -7771,10 +7856,10 @@ "symfony/console": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", "twig/twig": "^3.12" }, "bin": [ @@ -7813,7 +7898,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.5" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.0" }, "funding": [ { @@ -7833,7 +7918,7 @@ "type": "tidelift" } ], - "time": "2025-09-27T09:00:46+00:00" + "time": "2025-10-27T20:36:44+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -8804,11 +8889,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.32", + "version": "2.1.33", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e126cad1e30a99b137b8ed75a85a676450ebb227", - "reference": "e126cad1e30a99b137b8ed75a85a676450ebb227", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", + "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", "shasum": "" }, "require": { @@ -8853,7 +8938,7 @@ "type": "github" } ], - "time": "2025-11-11T15:18:17+00:00" + "time": "2025-12-05T10:24:31+00:00" }, { "name": "phpunit/php-code-coverage", @@ -9192,16 +9277,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.44", + "version": "11.5.46", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c346885c95423eda3f65d85a194aaa24873cda82" + "reference": "75dfe79a2aa30085b7132bb84377c24062193f33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c346885c95423eda3f65d85a194aaa24873cda82", - "reference": "c346885c95423eda3f65d85a194aaa24873cda82", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/75dfe79a2aa30085b7132bb84377c24062193f33", + "reference": "75dfe79a2aa30085b7132bb84377c24062193f33", "shasum": "" }, "require": { @@ -9273,7 +9358,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.44" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.46" }, "funding": [ { @@ -9297,7 +9382,7 @@ "type": "tidelift" } ], - "time": "2025-11-13T07:17:35+00:00" + "time": "2025-12-06T08:01:15+00:00" }, { "name": "sebastian/cli-parser", @@ -10462,26 +10547,27 @@ }, { "name": "symfony/dom-crawler", - "version": "v7.3.3", + "version": "v7.4.1", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba" + "reference": "0c5e8f20c74c78172a8ee72b125909b505033597" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/efa076ea0eeff504383ff0dcf827ea5ce15690ba", - "reference": "efa076ea0eeff504383ff0dcf827ea5ce15690ba", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0c5e8f20c74c78172a8ee72b125909b505033597", + "reference": "0c5e8f20c74c78172a8ee72b125909b505033597", "shasum": "" }, "require": { "masterminds/html5": "^2.6", "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "symfony/css-selector": "^6.4|^7.0" + "symfony/css-selector": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -10509,7 +10595,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.3.3" + "source": "https://github.com/symfony/dom-crawler/tree/v7.4.1" }, "funding": [ { @@ -10529,7 +10615,7 @@ "type": "tidelift" } ], - "time": "2025-08-06T20:13:54+00:00" + "time": "2025-12-06T15:47:47+00:00" }, { "name": "theseer/tokenizer", diff --git a/dev/licensing/js-library-licenses.txt b/dev/licensing/js-library-licenses.txt index b5fa446a468..95acfa6af78 100644 --- a/dev/licensing/js-library-licenses.txt +++ b/dev/licensing/js-library-licenses.txt @@ -1,16 +1,3 @@ -abab -License: BSD-3-Clause -License File: node_modules/abab/LICENSE.md -Source: git+https://github.com/jsdom/abab.git -Link: https://github.com/jsdom/abab#readme ------------ -acorn-globals -License: MIT -License File: node_modules/acorn-globals/LICENSE -Copyright: Copyright (c) 2014 Forbes Lindesay -Source: https://github.com/ForbesLindesay/acorn-globals.git -Link: https://github.com/ForbesLindesay/acorn-globals.git ------------ acorn-jsx License: MIT License File: node_modules/acorn-jsx/LICENSE @@ -34,8 +21,10 @@ Link: https://github.com/acornjs/acorn ----------- agent-base License: MIT -Source: git://github.com/TooTallNate/node-agent-base.git -Link: git://github.com/TooTallNate/node-agent-base.git +License File: node_modules/agent-base/LICENSE +Copyright: Copyright (c) 2013 Nathan Rajlich <******@***********.***> +Source: https://github.com/TooTallNate/proxy-agents.git +Link: https://github.com/TooTallNate/proxy-agents.git ----------- ajv License: MIT @@ -54,7 +43,7 @@ Link: sindresorhus/ansi-escapes ansi-regex License: MIT License File: node_modules/ansi-regex/license -Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com) +Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com) Source: chalk/ansi-regex Link: chalk/ansi-regex ----------- @@ -134,20 +123,6 @@ Copyright: Copyright (c) 2016 EduardoRFS Source: git+https://github.com/ljharb/async-function.git Link: https://github.com/ljharb/async-function#readme ----------- -async -License: MIT -License File: node_modules/async/LICENSE -Copyright: Copyright (c) 2010-2018 Caolan McMahon -Source: https://github.com/caolan/async.git -Link: https://caolan.github.io/async/ ------------ -asynckit -License: MIT -License File: node_modules/asynckit/LICENSE -Copyright: Copyright (c) 2016 Alex Indigo -Source: git+https://github.com/alexindigo/asynckit.git -Link: https://github.com/alexindigo/asynckit#readme ------------ available-typed-arrays License: MIT License File: node_modules/available-typed-arrays/LICENSE @@ -318,7 +293,7 @@ ci-info License: MIT License File: node_modules/ci-info/LICENSE Copyright: Copyright (c) 2016 Thomas Watson Steen -Source: https://github.com/watson/ci-info.git +Source: github:watson/ci-info Link: https://github.com/watson/ci-info ----------- cjs-module-lexer @@ -369,13 +344,6 @@ License File: node_modules/color-name/LICENSE Source: git@github.com:colorjs/color-name.git Link: https://github.com/colorjs/color-name ----------- -combined-stream -License: MIT -License File: node_modules/combined-stream/License -Copyright: Copyright (c) 2011 Debuggable Limited <*****@**********.***> -Source: git://github.com/felixge/node-combined-stream.git -Link: https://github.com/felixge/node-combined-stream ------------ concat-map License: MIT License File: node_modules/concat-map/LICENSE @@ -390,13 +358,6 @@ All rights reserved. Source: git://github.com/thlorenz/convert-source-map.git Link: https://github.com/thlorenz/convert-source-map ----------- -create-jest -License: MIT -License File: node_modules/create-jest/LICENSE -Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. -Source: https://github.com/jestjs/jest.git -Link: https://github.com/jestjs/jest.git ------------ create-require License: MIT License File: node_modules/create-require/LICENSE @@ -418,13 +379,6 @@ Copyright: Copyright (c) 2018 Made With MOXY Lda <*****@****.******> Source: git@github.com:moxystudio/node-cross-spawn.git Link: https://github.com/moxystudio/node-cross-spawn ----------- -cssom -License: MIT -License File: node_modules/cssom/LICENSE.txt -Copyright: Copyright (c) Nikita Vasilyev -Source: NV/CSSOM -Link: NV/CSSOM ------------ cssstyle License: MIT License File: node_modules/cssstyle/LICENSE @@ -515,13 +469,6 @@ Copyright: Copyright (C) 2015 Jordan Harband Source: git://github.com/ljharb/define-properties.git Link: git://github.com/ljharb/define-properties.git ----------- -delayed-stream -License: MIT -License File: node_modules/delayed-stream/License -Copyright: Copyright (c) 2011 Debuggable Limited <*****@**********.***> -Source: git://github.com/felixge/node-delayed-stream.git -Link: https://github.com/felixge/node-delayed-stream ------------ detect-libc License: Apache-2.0 License File: node_modules/detect-libc/LICENSE @@ -535,13 +482,6 @@ Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.co Source: sindresorhus/detect-newline Link: sindresorhus/detect-newline ----------- -diff-sequences -License: MIT -License File: node_modules/diff-sequences/LICENSE -Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. -Source: https://github.com/jestjs/jest.git -Link: https://github.com/jestjs/jest.git ------------ diff License: BSD-3-Clause License File: node_modules/diff/LICENSE @@ -555,12 +495,6 @@ License File: node_modules/doctrine/LICENSE Source: eslint/doctrine Link: https://github.com/eslint/doctrine ----------- -domexception -License: MIT -License File: node_modules/domexception/LICENSE.txt -Source: jsdom/domexception -Link: jsdom/domexception ------------ dunder-proto License: MIT License File: node_modules/dunder-proto/LICENSE @@ -568,11 +502,10 @@ Copyright: Copyright (c) 2024 ECMAScript Shims Source: git+https://github.com/es-shims/dunder-proto.git Link: https://github.com/es-shims/dunder-proto#readme ----------- -ejs -License: Apache-2.0 -License File: node_modules/ejs/LICENSE -Source: git://github.com/mde/ejs.git -Link: https://github.com/mde/ejs +eastasianwidth +License: MIT +Source: git://github.com/komagata/eastasianwidth.git +Link: git://github.com/komagata/eastasianwidth.git ----------- electron-to-chromium License: ISC @@ -679,13 +612,6 @@ Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindres Source: sindresorhus/escape-string-regexp Link: sindresorhus/escape-string-regexp ----------- -escodegen -License: BSD-2-Clause -License File: node_modules/escodegen/LICENSE.BSD -Copyright: Copyright (C) 2012 Yusuke Suzuki (twitter: @Constellation) and other contributors. -Source: http://github.com/estools/escodegen.git -Link: http://github.com/estools/escodegen ------------ eslint-import-resolver-node License: MIT License File: node_modules/eslint-import-resolver-node/LICENSE @@ -772,9 +698,10 @@ Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindres Source: sindresorhus/execa Link: sindresorhus/execa ----------- -exit -Source: git://github.com/cowboy/node-exit.git -Link: https://github.com/cowboy/node-exit +exit-x +License: MIT +Source: git://github.com/gruntjs/node-exit-x.git +Link: https://github.com/gruntjs/node-exit-x ----------- expect License: MIT @@ -817,11 +744,6 @@ Copyright: Copyright (c) Roy Riojas & Jared Wray Source: jaredwray/file-entry-cache Link: jaredwray/file-entry-cache ----------- -filelist -License: Apache-2.0 -Source: git://github.com/mde/filelist.git -Link: https://github.com/mde/filelist ------------ fill-range License: MIT License File: node_modules/fill-range/LICENSE @@ -857,12 +779,12 @@ Copyright: Copyright (c) 2012 Raynos. Source: https://github.com/Raynos/for-each.git Link: https://github.com/Raynos/for-each ----------- -form-data -License: MIT -License File: node_modules/form-data/License -Copyright: Copyright (c) 2012 Felix Geisendörfer (*****@**********.***) and contributors -Source: git://github.com/form-data/form-data.git -Link: git://github.com/form-data/form-data.git +foreground-child +License: ISC +License File: node_modules/foreground-child/LICENSE +Copyright: Copyright (c) 2015-2023 Isaac Z. Schlueter and Contributors +Source: git+https://github.com/tapjs/foreground-child.git +Link: git+https://github.com/tapjs/foreground-child.git ----------- fs.realpath License: ISC @@ -951,7 +873,7 @@ Link: gulpjs/glob-parent glob License: ISC License File: node_modules/glob/LICENSE -Copyright: Copyright (c) Isaac Z. Schlueter and Contributors +Copyright: Copyright (c) 2009-2023 Isaac Z. Schlueter and Contributors Source: git://github.com/isaacs/node-glob.git Link: git://github.com/isaacs/node-glob.git ----------- @@ -983,6 +905,13 @@ Copyright: Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contri Source: https://github.com/isaacs/node-graceful-fs Link: https://github.com/isaacs/node-graceful-fs ----------- +handlebars +License: MIT +License File: node_modules/handlebars/LICENSE +Copyright: Copyright (C) 2011-2019 by Yehuda Katz +Source: https://github.com/handlebars-lang/handlebars.js.git +Link: https://www.handlebarsjs.com/ +----------- has-bigints License: MIT License File: node_modules/has-bigints/LICENSE @@ -1054,13 +983,17 @@ Link: https://github.com/WebReflection/html-escaper ----------- http-proxy-agent License: MIT -Source: git://github.com/TooTallNate/node-http-proxy-agent.git -Link: git://github.com/TooTallNate/node-http-proxy-agent.git +License File: node_modules/http-proxy-agent/LICENSE +Copyright: Copyright (c) 2013 Nathan Rajlich <******@***********.***> +Source: https://github.com/TooTallNate/proxy-agents.git +Link: https://github.com/TooTallNate/proxy-agents.git ----------- https-proxy-agent License: MIT -Source: git://github.com/TooTallNate/node-https-proxy-agent.git -Link: git://github.com/TooTallNate/node-https-proxy-agent.git +License File: node_modules/https-proxy-agent/LICENSE +Copyright: Copyright (c) 2013 Nathan Rajlich <******@***********.***> +Source: https://github.com/TooTallNate/proxy-agents.git +Link: https://github.com/TooTallNate/proxy-agents.git ----------- human-signals License: Apache-2.0 @@ -1398,10 +1331,11 @@ Copyright: Copyright 2012-2015 Yahoo! Inc. Source: git+ssh://git@github.com/istanbuljs/istanbuljs.git Link: https://istanbul.js.org/ ----------- -jake -License: Apache-2.0 -Source: git://github.com/jakejs/jake.git -Link: git://github.com/jakejs/jake.git +jackspeak +License: BlueOak-1.0.0 +License File: node_modules/jackspeak/LICENSE.md +Source: git+https://github.com/isaacs/jackspeak.git +Link: git+https://github.com/isaacs/jackspeak.git ----------- jest-changed-files License: MIT @@ -1466,13 +1400,6 @@ Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. Source: https://github.com/jestjs/jest.git Link: https://github.com/jestjs/jest.git ----------- -jest-get-type -License: MIT -License File: node_modules/jest-get-type/LICENSE -Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. -Source: https://github.com/jestjs/jest.git -Link: https://github.com/jestjs/jest.git ------------ jest-haste-map License: MIT License File: node_modules/jest-haste-map/LICENSE @@ -1608,8 +1535,8 @@ jsdom License: MIT License File: node_modules/jsdom/LICENSE.txt Copyright: Copyright (c) 2010 Elijah Insua -Source: jsdom/jsdom -Link: jsdom/jsdom +Source: git+https://github.com/jsdom/jsdom.git +Link: git+https://github.com/jsdom/jsdom.git ----------- jsesc License: MIT @@ -1664,13 +1591,6 @@ License: MIT Source: git+https://github.com/jaredwray/keyv.git Link: https://github.com/jaredwray/keyv ----------- -kleur -License: MIT -License File: node_modules/kleur/license -Copyright: Copyright (c) Luke Edwards <****.*********@*****.***> (lukeed.com) -Source: lukeed/kleur -Link: lukeed/kleur ------------ leven License: MIT License File: node_modules/leven/license @@ -1827,22 +1747,6 @@ Copyright: Copyright (c) 2014-present, Jon Schlinkert. Source: micromatch/micromatch Link: https://github.com/micromatch/micromatch ----------- -mime-db -License: MIT -License File: node_modules/mime-db/LICENSE -Copyright: Copyright (c) 2014 Jonathan Ong <**@***********.***> -Copyright (c) 2015-2022 Douglas Christopher Wilson <****@*************.***> -Source: jshttp/mime-db -Link: jshttp/mime-db ------------ -mime-types -License: MIT -License File: node_modules/mime-types/LICENSE -Copyright: Copyright (c) 2014 Jonathan Ong <**@***********.***> -Copyright (c) 2015 Douglas Christopher Wilson <****@*************.***> -Source: jshttp/mime-types -Link: jshttp/mime-types ------------ mimic-fn License: MIT License File: node_modules/mimic-fn/license @@ -1863,6 +1767,13 @@ License File: node_modules/minimist/LICENSE Source: git://github.com/minimistjs/minimist.git Link: https://github.com/minimistjs/minimist ----------- +minipass +License: ISC +License File: node_modules/minipass/LICENSE +Copyright: Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors +Source: https://github.com/isaacs/minipass +Link: https://github.com/isaacs/minipass +----------- ms License: MIT License File: node_modules/ms/license.md @@ -1870,11 +1781,26 @@ Copyright: Copyright (c) 2020 Vercel, Inc. Source: vercel/ms Link: vercel/ms ----------- +napi-postinstall +License: MIT +License File: node_modules/napi-postinstall/LICENSE +Copyright: Copyright (c) 2021-present UnTS +Source: git+https://github.com/un-ts/napi-postinstall.git +Link: git+https://github.com/un-ts/napi-postinstall.git +----------- natural-compare License: MIT Source: git://github.com/litejs/natural-compare-lite.git Link: git://github.com/litejs/natural-compare-lite.git ----------- +neo-async +License: MIT +License File: node_modules/neo-async/LICENSE +Copyright: Copyright (c) 2014-2018 Suguru Motegi +Based on Async.js, Copyright Caolan McMahon +Source: git@github.com:suguru03/neo-async.git +Link: https://github.com/suguru03/neo-async +----------- nice-try License: MIT License File: node_modules/nice-try/LICENSE @@ -2038,6 +1964,12 @@ Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.co Source: sindresorhus/p-try Link: sindresorhus/p-try ----------- +package-json-from-dist +License: BlueOak-1.0.0 +License File: node_modules/package-json-from-dist/LICENSE.md +Source: git+https://github.com/isaacs/package-json-from-dist.git +Link: git+https://github.com/isaacs/package-json-from-dist.git +----------- parent-module License: MIT License File: node_modules/parent-module/license @@ -2087,6 +2019,12 @@ Copyright: Copyright (c) 2015 Javier Blanco Source: https://github.com/jbgutierrez/path-parse.git Link: https://github.com/jbgutierrez/path-parse#readme ----------- +path-scurry +License: BlueOak-1.0.0 +License File: node_modules/path-scurry/LICENSE.md +Source: git+https://github.com/isaacs/path-scurry +Link: git+https://github.com/isaacs/path-scurry +----------- path-type License: MIT License File: node_modules/path-type/license @@ -2157,20 +2095,6 @@ Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. Source: https://github.com/jestjs/jest.git Link: https://github.com/jestjs/jest.git ----------- -prompts -License: MIT -License File: node_modules/prompts/license -Copyright: Copyright (c) 2018 Terkel Gjervig Nielsen -Source: terkelg/prompts -Link: terkelg/prompts ------------ -psl -License: MIT -License File: node_modules/psl/LICENSE -Copyright: Copyright (c) 2017 Lupo Montero ***********@*****.*** -Source: git@github.com:lupomontero/psl.git -Link: git@github.com:lupomontero/psl.git ------------ punycode.js License: MIT License File: node_modules/punycode.js/LICENSE-MIT.txt @@ -2190,13 +2114,6 @@ Copyright: Copyright (c) 2018 Nicolas DUBIEN Source: git+https://github.com/dubzzz/pure-rand.git Link: https://github.com/dubzzz/pure-rand#readme ----------- -querystringify -License: MIT -License File: node_modules/querystringify/LICENSE -Copyright: Copyright (c) 2015 Unshift.io, Arnout Kazemier, the Contributors. -Source: https://github.com/unshiftio/querystringify -Link: https://github.com/unshiftio/querystringify ------------ react-is License: MIT License File: node_modules/react-is/LICENSE @@ -2246,13 +2163,6 @@ Copyright: Copyright (c) 2016, Contributors Source: git+ssh://git@github.com/yargs/require-main-filename.git Link: https://github.com/yargs/require-main-filename#readme ----------- -requires-port -License: MIT -License File: node_modules/requires-port/LICENSE -Copyright: Copyright (c) 2015 Unshift.io, Arnout Kazemier, the Contributors. -Source: https://github.com/unshiftio/requires-port -Link: https://github.com/unshiftio/requires-port ------------ resolve-cwd License: MIT License File: node_modules/resolve-cwd/license @@ -2267,13 +2177,6 @@ Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.co Source: sindresorhus/resolve-from Link: sindresorhus/resolve-from ----------- -resolve.exports -License: MIT -License File: node_modules/resolve.exports/license -Copyright: Copyright (c) Luke Edwards <****.*********@*****.***> (lukeed.com) -Source: lukeed/resolve.exports -Link: lukeed/resolve.exports ------------ resolve License: MIT License File: node_modules/resolve/LICENSE @@ -2281,6 +2184,13 @@ Copyright: Copyright (c) 2012 James Halliday Source: git://github.com/browserify/resolve.git Link: git://github.com/browserify/resolve.git ----------- +rrweb-cssom +License: MIT +License File: node_modules/rrweb-cssom/LICENSE.txt +Copyright: Copyright (c) Nikita Vasilyev +Source: rrweb-io/CSSOM +Link: rrweb-io/CSSOM +----------- safe-array-concat License: MIT License File: node_modules/safe-array-concat/LICENSE @@ -2412,13 +2322,6 @@ Copyright: Copyright (c) 2015, Contributors Source: https://github.com/tapjs/signal-exit.git Link: https://github.com/tapjs/signal-exit ----------- -sisteransi -License: MIT -License File: node_modules/sisteransi/license -Copyright: Copyright (c) 2018 Terkel Gjervig Nielsen -Source: https://github.com/terkelg/sisteransi -Link: https://github.com/terkelg/sisteransi ------------ slash License: MIT License File: node_modules/slash/license @@ -2516,6 +2419,13 @@ Link: sindresorhus/string-length ----------- string-width License: MIT +License File: node_modules/string-width-cjs/license +Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com) +Source: sindresorhus/string-width +Link: sindresorhus/string-width +----------- +string-width +License: MIT License File: node_modules/string-width/license Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com) Source: sindresorhus/string-width @@ -2551,11 +2461,18 @@ Link: git://github.com/es-shims/String.prototype.trimStart.git ----------- strip-ansi License: MIT -License File: node_modules/strip-ansi/license +License File: node_modules/strip-ansi-cjs/license Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com) Source: chalk/strip-ansi Link: chalk/strip-ansi ----------- +strip-ansi +License: MIT +License File: node_modules/strip-ansi/license +Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com) +Source: chalk/strip-ansi +Link: chalk/strip-ansi +----------- strip-bom License: MIT License File: node_modules/strip-bom/license @@ -2605,6 +2522,13 @@ Copyright: Copyright (c) 2015 Joris van der Wel Source: https://github.com/jsdom/js-symbol-tree.git Link: https://github.com/jsdom/js-symbol-tree#symbol-tree ----------- +synckit +License: MIT +License File: node_modules/synckit/LICENSE +Copyright: Copyright (c) 2021 UnTS +Source: https://github.com/un-ts/synckit.git +Link: https://github.com/un-ts/synckit.git +----------- test-exclude License: ISC License File: node_modules/test-exclude/LICENSE.txt @@ -2612,6 +2536,20 @@ Copyright: Copyright (c) 2016, Contributors Source: git+https://github.com/istanbuljs/test-exclude.git Link: https://istanbul.js.org/ ----------- +tldts-core +License: MIT +License File: node_modules/tldts-core/LICENSE +Copyright: Copyright (c) 2017 Thomas Parisot, 2018 Rémi Berson +Source: git+ssh://git@github.com/remusao/tldts.git +Link: https://github.com/remusao/tldts#readme +----------- +tldts +License: MIT +License File: node_modules/tldts/LICENSE +Copyright: Copyright (c) 2017 Thomas Parisot, 2018 Rémi Berson +Source: git+ssh://git@github.com/remusao/tldts.git +Link: https://github.com/remusao/tldts#readme +----------- tmpl License: BSD-3-Clause License File: node_modules/tmpl/license @@ -2722,6 +2660,13 @@ License File: node_modules/uc.micro/LICENSE.txt Source: markdown-it/uc.micro Link: markdown-it/uc.micro ----------- +uglify-js +License: BSD-2-Clause +License File: node_modules/uglify-js/LICENSE +Copyright: Copyright 2012-2024 (c) Mihai Bazon <*****.*****@*****.***> +Source: mishoo/UglifyJS +Link: mishoo/UglifyJS +----------- unbox-primitive License: MIT License File: node_modules/unbox-primitive/LICENSE @@ -2736,12 +2681,10 @@ Copyright: Copyright (c) Matteo Collina and Undici contributors Source: git+https://github.com/nodejs/undici.git Link: https://undici.nodejs.org ----------- -universalify +unrs-resolver License: MIT -License File: node_modules/universalify/LICENSE -Copyright: Copyright (c) 2017, Ryan Zimmerman <*******@*******.***> -Source: git+https://github.com/RyanZim/universalify.git -Link: https://github.com/RyanZim/universalify#readme +Source: git+https://github.com/unrs/unrs-resolver.git +Link: https://github.com/unrs/unrs-resolver#readme ----------- update-browserslist-db License: MIT @@ -2757,13 +2700,6 @@ Copyright: Copyright 2011 Gary Court. All rights reserved. Source: http://github.com/garycourt/uri-js Link: https://github.com/garycourt/uri-js ----------- -url-parse -License: MIT -License File: node_modules/url-parse/LICENSE -Copyright: Copyright (c) 2015 Unshift.io, Arnout Kazemier, the Contributors. -Source: https://github.com/unshiftio/url-parse.git -Link: https://github.com/unshiftio/url-parse.git ------------ v8-compile-cache-lib License: MIT License File: node_modules/v8-compile-cache-lib/LICENSE @@ -2880,6 +2816,19 @@ Copyright: Copyright (c) 2014-2016, Jon Schlinkert Source: jonschlinkert/word-wrap Link: https://github.com/jonschlinkert/word-wrap ----------- +wordwrap +License: MIT +License File: node_modules/wordwrap/LICENSE +Source: git://github.com/substack/node-wordwrap.git +Link: git://github.com/substack/node-wordwrap.git +----------- +wrap-ansi +License: MIT +License File: node_modules/wrap-ansi-cjs/license +Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com) +Source: chalk/wrap-ansi +Link: chalk/wrap-ansi +----------- wrap-ansi License: MIT License File: node_modules/wrap-ansi/license @@ -2971,6 +2920,31 @@ License File: node_modules/@ampproject/remapping/LICENSE Source: git+https://github.com/ampproject/remapping.git Link: git+https://github.com/ampproject/remapping.git ----------- +@asamuzakjp/css-color +License: MIT +License File: node_modules/@asamuzakjp/css-color/LICENSE +Copyright: Copyright (c) 2024 asamuzaK (Kazz) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +Source: git+https://github.com/asamuzaK/cssColor.git +Link: https://github.com/asamuzaK/cssColor#readme +----------- @babel/code-frame License: MIT License File: node_modules/@babel/code-frame/LICENSE @@ -3335,6 +3309,40 @@ Copyright: Copyright (c) 2014 Evan Wallace Source: https://github.com/cspotcode/node-source-map-support Link: https://github.com/cspotcode/node-source-map-support ----------- +@csstools/color-helpers +License: MIT-0 +License File: node_modules/@csstools/color-helpers/LICENSE.md +Source: git+https://github.com/csstools/postcss-plugins.git +Link: https://github.com/csstools/postcss-plugins/tree/main/packages/color-helpers#readme +----------- +@csstools/css-calc +License: MIT +License File: node_modules/@csstools/css-calc/LICENSE.md +Copyright: Copyright 2022 Romain Menke, Antonio Laguna <*******@******.**> +Source: git+https://github.com/csstools/postcss-plugins.git +Link: https://github.com/csstools/postcss-plugins/tree/main/packages/css-calc#readme +----------- +@csstools/css-color-parser +License: MIT +License File: node_modules/@csstools/css-color-parser/LICENSE.md +Copyright: Copyright 2022 Romain Menke, Antonio Laguna <*******@******.**> +Source: git+https://github.com/csstools/postcss-plugins.git +Link: https://github.com/csstools/postcss-plugins/tree/main/packages/css-color-parser#readme +----------- +@csstools/css-parser-algorithms +License: MIT +License File: node_modules/@csstools/css-parser-algorithms/LICENSE.md +Copyright: Copyright 2022 Romain Menke, Antonio Laguna <*******@******.**> +Source: git+https://github.com/csstools/postcss-plugins.git +Link: https://github.com/csstools/postcss-plugins/tree/main/packages/css-parser-algorithms#readme +----------- +@csstools/css-tokenizer +License: MIT +License File: node_modules/@csstools/css-tokenizer/LICENSE.md +Copyright: Copyright 2022 Romain Menke, Antonio Laguna <*******@******.**> +Source: git+https://github.com/csstools/postcss-plugins.git +Link: https://github.com/csstools/postcss-plugins/tree/main/packages/css-tokenizer#readme +----------- @esbuild/linux-x64 License: MIT Source: git+https://github.com/evanw/esbuild.git @@ -3420,6 +3428,13 @@ License File: node_modules/@humanwhocodes/retry/LICENSE Source: git+https://github.com/humanwhocodes/retry.git Link: git+https://github.com/humanwhocodes/retry.git ----------- +@isaacs/cliui +License: ISC +License File: node_modules/@isaacs/cliui/LICENSE.txt +Copyright: Copyright (c) 2015, Contributors +Source: yargs/cliui +Link: yargs/cliui +----------- @istanbuljs/load-nyc-config License: ISC License File: node_modules/@istanbuljs/load-nyc-config/LICENSE @@ -3448,6 +3463,20 @@ Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. Source: https://github.com/jestjs/jest.git Link: https://jestjs.io/ ----------- +@jest/diff-sequences +License: MIT +License File: node_modules/@jest/diff-sequences/LICENSE +Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. +Source: https://github.com/jestjs/jest.git +Link: https://github.com/jestjs/jest.git +----------- +@jest/environment-jsdom-abstract +License: MIT +License File: node_modules/@jest/environment-jsdom-abstract/LICENSE +Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. +Source: https://github.com/jestjs/jest.git +Link: https://github.com/jestjs/jest.git +----------- @jest/environment License: MIT License File: node_modules/@jest/environment/LICENSE @@ -3476,6 +3505,13 @@ Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. Source: https://github.com/jestjs/jest.git Link: https://github.com/jestjs/jest.git ----------- +@jest/get-type +License: MIT +License File: node_modules/@jest/get-type/LICENSE +Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. +Source: https://github.com/jestjs/jest.git +Link: https://github.com/jestjs/jest.git +----------- @jest/globals License: MIT License File: node_modules/@jest/globals/LICENSE @@ -3483,6 +3519,13 @@ Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. Source: https://github.com/jestjs/jest.git Link: https://github.com/jestjs/jest.git ----------- +@jest/pattern +License: MIT +License File: node_modules/@jest/pattern/LICENSE +Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. +Source: https://github.com/jestjs/jest.git +Link: https://github.com/jestjs/jest.git +----------- @jest/reporters License: MIT License File: node_modules/@jest/reporters/LICENSE @@ -3497,6 +3540,13 @@ Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. Source: https://github.com/jestjs/jest.git Link: https://github.com/jestjs/jest.git ----------- +@jest/snapshot-utils +License: MIT +License File: node_modules/@jest/snapshot-utils/LICENSE +Copyright: Copyright (c) Meta Platforms, Inc. and affiliates. +Source: https://github.com/jestjs/jest.git +Link: https://github.com/jestjs/jest.git +----------- @jest/source-map License: MIT License File: node_modules/@jest/source-map/LICENSE @@ -3665,6 +3715,17 @@ Copyright: Copyright (c) 2017-present Devon Govett Source: https://github.com/parcel-bundler/watcher.git Link: https://github.com/parcel-bundler/watcher.git ----------- +@pkgjs/parseargs +License: MIT +License File: node_modules/@pkgjs/parseargs/LICENSE +Source: git@github.com:pkgjs/parseargs.git +Link: https://github.com/pkgjs/parseargs#readme +----------- +@pkgr/core +License: MIT +Source: git+https://github.com/un-ts/pkgr.git +Link: https://github.com/un-ts/pkgr/blob/master/packages/core +----------- @rtsao/scc License: MIT License File: node_modules/@rtsao/scc/LICENSE @@ -3690,7 +3751,7 @@ Link: https://github.com/sinonjs/commons#readme License: BSD-3-Clause License File: node_modules/@sinonjs/fake-timers/LICENSE Copyright: Copyright (c) 2010-2014, Christian Johansen, *********@*********.**. All rights reserved. -Source: https://github.com/sinonjs/fake-timers.git +Source: git+https://github.com/sinonjs/fake-timers.git Link: https://github.com/sinonjs/fake-timers ----------- @ssddanbrown/codemirror-lang-smarty @@ -3703,13 +3764,6 @@ License: MIT License File: node_modules/@ssddanbrown/codemirror-lang-twig/LICENSE Copyright: Copyright (C) 2023 by Dan Brown, Marijn Haverbeke and others ----------- -@tootallnate/once -License: MIT -License File: node_modules/@tootallnate/once/LICENSE -Copyright: Copyright (c) 2020 Nathan Rajlich -Source: git://github.com/TooTallNate/once.git -Link: git://github.com/TooTallNate/once.git ------------ @tsconfig/node10 License: MIT License File: node_modules/@tsconfig/node10/LICENSE @@ -3773,13 +3827,6 @@ Copyright: Copyright (c) Microsoft Corporation. Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree ----------- -@types/graceful-fs -License: MIT -License File: node_modules/@types/graceful-fs/LICENSE -Copyright: Copyright (c) Microsoft Corporation. -Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git -Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/graceful-fs ------------ @types/istanbul-lib-coverage License: MIT License File: node_modules/@types/istanbul-lib-coverage/LICENSE @@ -3889,3 +3936,20 @@ License File: node_modules/@types/yargs/LICENSE Copyright: Copyright (c) Microsoft Corporation. Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/yargs +----------- +@ungap/structured-clone +License: ISC +License File: node_modules/@ungap/structured-clone/LICENSE +Copyright: Copyright (c) 2021, Andrea Giammarchi, @WebReflection +Source: git+https://github.com/ungap/structured-clone.git +Link: https://github.com/ungap/structured-clone#readme +----------- +@unrs/resolver-binding-linux-x64-gnu +License: MIT +Source: git+https://github.com/unrs/unrs-resolver.git +Link: https://github.com/unrs/unrs-resolver#readme +----------- +@unrs/resolver-binding-linux-x64-musl +License: MIT +Source: git+https://github.com/unrs/unrs-resolver.git +Link: https://github.com/unrs/unrs-resolver#readme diff --git a/dev/licensing/php-library-licenses.txt b/dev/licensing/php-library-licenses.txt index 276f3923062..d178e92434d 100644 --- a/dev/licensing/php-library-licenses.txt +++ b/dev/licensing/php-library-licenses.txt @@ -176,7 +176,7 @@ License: MIT License File: vendor/intervention/image/LICENSE Copyright: Copyright (c) 2013-present Oliver Vogel Source: https://github.com/Intervention/image.git -Link: https://image.intervention.io/ +Link: https://image.intervention.io ----------- knplabs/knp-snappy License: MIT @@ -592,6 +592,13 @@ Copyright: Copyright (c) 2018-present Fabien Potencier Source: https://github.com/symfony/event-dispatcher-contracts.git Link: https://symfony.com ----------- +symfony/filesystem +License: MIT +License File: vendor/symfony/filesystem/LICENSE +Copyright: Copyright (c) 2004-present Fabien Potencier +Source: https://github.com/symfony/filesystem.git +Link: https://symfony.com +----------- symfony/finder License: MIT License File: vendor/symfony/finder/LICENSE diff --git a/tests/Api/ApiDocsTest.php b/tests/Api/ApiDocsTest.php index a1603e0ef82..bdf753e87f7 100644 --- a/tests/Api/ApiDocsTest.php +++ b/tests/Api/ApiDocsTest.php @@ -22,7 +22,7 @@ public function test_docs_page_returns_view_with_docs_content() $resp->assertStatus(200); $resp->assertSee(url('/api/docs.json')); $resp->assertSee('Show a JSON view of the API docs data.'); - $resp->assertHeader('Content-Type', 'text/html; charset=UTF-8'); + $resp->assertHeader('Content-Type', 'text/html; charset=utf-8'); } public function test_docs_json_endpoint_returns_json() diff --git a/tests/Auth/OidcTest.php b/tests/Auth/OidcTest.php index a0db1c2ba00..710e5375785 100644 --- a/tests/Auth/OidcTest.php +++ b/tests/Auth/OidcTest.php @@ -138,7 +138,7 @@ public function test_login_success_flow() { // Start auth $this->post('/oidc/login'); - $state = session()->get('oidc_state'); + $state = explode(':', session()->get('oidc_state'), 2)[1]; $transactions = $this->mockHttpClient([$this->getMockAuthorizationResponse([ 'email' => 'benny@example.com', @@ -190,6 +190,35 @@ public function test_callback_fails_if_no_state_present_or_matching() $this->assertSessionError('Login using SingleSignOn-Testing failed, system did not provide successful authorization'); } + public function test_callback_works_even_if_other_request_made_by_session() + { + $this->mockHttpClient([$this->getMockAuthorizationResponse([ + 'email' => 'benny@example.com', + 'sub' => 'benny1010101', + ])]); + + $this->post('/oidc/login'); + $state = explode(':', session()->get('oidc_state'), 2)[1]; + + $this->get('/'); + + $resp = $this->get("/oidc/callback?code=SplxlOBeZQQYbYS6WxSbIA&state={$state}"); + $resp->assertRedirect('/'); + } + + public function test_callback_fails_if_state_timestamp_is_too_old() + { + $this->post('/oidc/login'); + $state = explode(':', session()->get('oidc_state'), 2)[1]; + session()->put('oidc_state', (time() - 60 * 4) . ':' . $state); + + $this->get('/'); + + $resp = $this->get("/oidc/callback?code=SplxlOBeZQQYbYS6WxSbIA&state={$state}"); + $resp->assertRedirect('/login'); + $this->assertSessionError('Login using SingleSignOn-Testing failed, system did not provide successful authorization'); + } + public function test_dump_user_details_option_outputs_as_expected() { config()->set('oidc.dump_user_details', true); @@ -797,7 +826,7 @@ public function test_pkce_used_on_authorize_and_access() { // Start auth $resp = $this->post('/oidc/login'); - $state = session()->get('oidc_state'); + $state = explode(':', session()->get('oidc_state'), 2)[1]; $pkceCode = session()->get('oidc_pkce_code'); $this->assertGreaterThan(30, strlen($pkceCode)); @@ -825,7 +854,7 @@ public function test_userinfo_endpoint_used_if_missing_claims_in_id_token() { config()->set('oidc.display_name_claims', 'first_name|last_name'); $this->post('/oidc/login'); - $state = session()->get('oidc_state'); + $state = explode(':', session()->get('oidc_state'), 2)[1]; $client = $this->mockHttpClient([ $this->getMockAuthorizationResponse(['name' => null]), @@ -973,7 +1002,7 @@ public function test_userinfo_endpoint_not_called_if_empty_groups_array_provided ]); $this->post('/oidc/login'); - $state = session()->get('oidc_state'); + $state = explode(':', session()->get('oidc_state'), 2)[1]; $client = $this->mockHttpClient([$this->getMockAuthorizationResponse([ 'groups' => [], ])]); @@ -999,7 +1028,7 @@ protected function withAutodiscovery(): void protected function runLogin($claimOverrides = [], $additionalHttpResponses = []): TestResponse { $this->post('/oidc/login'); - $state = session()->get('oidc_state'); + $state = explode(':', session()->get('oidc_state'), 2)[1] ?? ''; $this->mockHttpClient([$this->getMockAuthorizationResponse($claimOverrides), ...$additionalHttpResponses]); return $this->get('/oidc/callback?code=SplxlOBeZQQYbYS6WxSbIA&state=' . $state); diff --git a/tests/Auth/Saml2Test.php b/tests/Auth/Saml2Test.php index 3de6238edc8..6a3063bcf51 100644 --- a/tests/Auth/Saml2Test.php +++ b/tests/Auth/Saml2Test.php @@ -36,7 +36,7 @@ protected function setUp(): void public function test_metadata_endpoint_displays_xml_as_expected() { $req = $this->get('/saml2/metadata'); - $req->assertHeader('Content-Type', 'text/xml; charset=UTF-8'); + $req->assertHeader('Content-Type', 'text/xml; charset=utf-8'); $req->assertSee('md:EntityDescriptor'); $req->assertSee(url('/saml2/acs')); } @@ -51,7 +51,7 @@ public function test_metadata_endpoint_loads_when_autoloading_with_bad_url_set() $req = $this->get('/saml2/metadata'); $req->assertOk(); - $req->assertHeader('Content-Type', 'text/xml; charset=UTF-8'); + $req->assertHeader('Content-Type', 'text/xml; charset=utf-8'); $req->assertSee('md:EntityDescriptor'); } diff --git a/tests/SessionTest.php b/tests/SessionTest.php new file mode 100644 index 00000000000..3a1300722ff --- /dev/null +++ b/tests/SessionTest.php @@ -0,0 +1,53 @@ +set('filesystems.images', 'local_secure'); + $this->asEditor(); + $page = $this->entities->page(); + $result = $this->files->uploadGalleryImageToPage($this, $page); + $expectedPath = storage_path($result['path']); + $this->assertFileExists($expectedPath); + + $this->get('/books'); + $this->assertEquals(url('/books'), session()->previousUrl()); + + $resp = $this->get($result['path']); + $resp->assertOk(); + $resp->assertHeader('Content-Type', 'image/png'); + + $this->assertEquals(url('/books'), session()->previousUrl()); + + if (file_exists($expectedPath)) { + unlink($expectedPath); + } + } + + public function test_pwa_manifest_is_not_tracked_in_session_history() + { + $this->asEditor()->get('/books'); + $this->get('/manifest.json'); + + $this->assertEquals(url('/books'), session()->previousUrl()); + } + + public function test_dist_dir_access_is_not_tracked_in_session_history() + { + $this->asEditor()->get('/books'); + $this->get('/dist/sub/hello.txt'); + + $this->assertEquals(url('/books'), session()->previousUrl()); + } + + public function test_opensearch_is_not_tracked_in_session_history() + { + $this->asEditor()->get('/books'); + $this->get('/opensearch.xml'); + + $this->assertEquals(url('/books'), session()->previousUrl()); + } +} diff --git a/tests/ThemeTest.php b/tests/ThemeTest.php index 4dff384186c..841ff78caf0 100644 --- a/tests/ThemeTest.php +++ b/tests/ThemeTest.php @@ -478,7 +478,7 @@ public function test_public_folder_contents_accessible_via_route() $resp = $this->asAdmin()->get("/theme/{$themeFolderName}/file.txt"); $resp->assertStreamedContent($text); - $resp->assertHeader('Content-Type', 'text/plain; charset=UTF-8'); + $resp->assertHeader('Content-Type', 'text/plain; charset=utf-8'); $resp->assertHeader('Cache-Control', 'max-age=86400, private'); $resp = $this->asAdmin()->get("/theme/{$themeFolderName}/image.png"); @@ -487,7 +487,7 @@ public function test_public_folder_contents_accessible_via_route() $resp = $this->asAdmin()->get("/theme/{$themeFolderName}/file.css"); $resp->assertStreamedContent($css); - $resp->assertHeader('Content-Type', 'text/css; charset=UTF-8'); + $resp->assertHeader('Content-Type', 'text/css; charset=utf-8'); $resp->assertHeader('Cache-Control', 'max-age=86400, private'); }); } diff --git a/tests/Uploads/AttachmentTest.php b/tests/Uploads/AttachmentTest.php index 2eaf21d9c6f..b443ca9f117 100644 --- a/tests/Uploads/AttachmentTest.php +++ b/tests/Uploads/AttachmentTest.php @@ -323,7 +323,7 @@ public function test_file_access_with_open_query_param_provides_inline_response_ $attachmentGet = $this->get($attachment->getUrl(true)); // http-foundation/Response does some 'fixing' of responses to add charsets to text responses. - $attachmentGet->assertHeader('Content-Type', 'text/plain; charset=UTF-8'); + $attachmentGet->assertHeader('Content-Type', 'text/plain; charset=utf-8'); $attachmentGet->assertHeader('Content-Disposition', 'inline; filename="upload_test_file.txt"'); $attachmentGet->assertHeader('X-Content-Type-Options', 'nosniff'); @@ -339,7 +339,7 @@ public function test_html_file_access_with_open_forces_plain_content_type() $attachmentGet = $this->get($attachment->getUrl(true)); // http-foundation/Response does some 'fixing' of responses to add charsets to text responses. - $attachmentGet->assertHeader('Content-Type', 'text/plain; charset=UTF-8'); + $attachmentGet->assertHeader('Content-Type', 'text/plain; charset=utf-8'); $attachmentGet->assertHeader('Content-Disposition', 'inline; filename="test_file.html"'); $this->files->deleteAllAttachmentFiles(); diff --git a/tests/Uploads/ImageTest.php b/tests/Uploads/ImageTest.php index f36be87023d..2aad158c966 100644 --- a/tests/Uploads/ImageTest.php +++ b/tests/Uploads/ImageTest.php @@ -429,29 +429,6 @@ public function test_system_images_remain_public_with_local_secure() } } - public function test_secure_images_not_tracked_in_session_history() - { - config()->set('filesystems.images', 'local_secure'); - $this->asEditor(); - $page = $this->entities->page(); - $result = $this->files->uploadGalleryImageToPage($this, $page); - $expectedPath = storage_path($result['path']); - $this->assertFileExists($expectedPath); - - $this->get('/books'); - $this->assertEquals(url('/books'), session()->previousUrl()); - - $resp = $this->get($result['path']); - $resp->assertOk(); - $resp->assertHeader('Content-Type', 'image/png'); - - $this->assertEquals(url('/books'), session()->previousUrl()); - - if (file_exists($expectedPath)) { - unlink($expectedPath); - } - } - public function test_system_images_remain_public_with_local_secure_restricted() { config()->set('filesystems.images', 'local_secure_restricted');