From 9683fd3466bd3d0c81bc3e479afbd39bb000ec79 Mon Sep 17 00:00:00 2001
From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Date: Fri, 2 Oct 2026 23:17:14 +0200
Subject: [PATCH 01/19] chore(deps): restore composer version ranges
---
composer.json | 118 +++++++++++++++++++++++++-------------------------
composer.lock | 2 +-
2 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/composer.json b/composer.json
index d00dd4c476..be3cf23911 100644
--- a/composer.json
+++ b/composer.json
@@ -12,67 +12,67 @@
],
"require": {
"php": "^8.4",
- "danharrin/livewire-rate-limiting": "2.2.1",
- "doctrine/dbal": "4.4.4",
- "firebase/php-jwt": "7.1.0",
- "guzzlehttp/guzzle": "7.15.3",
- "laravel/fortify": "1.37.3",
- "laravel/framework": "12.69.3",
- "laravel/horizon": "5.48.2",
- "laravel/mcp": "1.0.1",
- "laravel/pail": "1.2.7",
- "laravel/prompts": "0.3.22",
- "laravel/reverb": "1.11.1",
- "laravel/sanctum": "4.3.3",
- "laravel/socialite": "5.29.0",
- "laravel/tinker": "2.11.1",
- "laravel/ui": "4.6.3",
- "lcobucci/jwt": "5.6.0",
- "league/flysystem-aws-s3-v3": "3.35.2",
- "league/flysystem-sftp-v3": "3.33.0",
- "livewire/livewire": "3.8.7",
- "log1x/laravel-webfonts": "2.0.1",
- "lorisleiva/laravel-actions": "2.10.2",
- "nubs/random-name-generator": "2.2.0",
- "phpseclib/phpseclib": "3.0.57",
- "pion/laravel-chunk-upload": "1.6.3",
- "poliander/cron": "3.3.1",
- "purplepixie/phpdns": "2.3.6",
- "pusher/pusher-php-server": "7.3.0",
- "resend/resend-laravel": "1.5.0",
- "sentry/sentry-laravel": "4.27.0",
- "socialiteproviders/authentik": "5.3.0",
- "socialiteproviders/clerk": "5.1.0",
- "socialiteproviders/discord": "4.2.0",
- "socialiteproviders/google": "4.1.0",
- "socialiteproviders/infomaniak": "4.0.0",
- "socialiteproviders/microsoft-azure": "5.2.0",
- "socialiteproviders/zitadel": "4.2.0",
- "spatie/laravel-activitylog": "4.12.3",
- "spatie/laravel-data": "4.23.0",
- "spatie/laravel-markdown": "2.8.0",
- "spatie/laravel-schemaless-attributes": "2.6.0",
- "spatie/url": "2.4.0",
- "stevebauman/purify": "6.3.2",
- "stripe/stripe-php": "16.6.0",
- "symfony/yaml": "7.4.15",
- "visus/cuid2": "6.0.0",
- "yosymfony/toml": "1.0.4",
- "zircote/swagger-php": "5.8.3"
+ "danharrin/livewire-rate-limiting": "^2.2.1",
+ "doctrine/dbal": "^4.4.4",
+ "firebase/php-jwt": "^7.1.0",
+ "guzzlehttp/guzzle": "^7.15.3",
+ "laravel/fortify": "^1.37.3",
+ "laravel/framework": "^12.69.3",
+ "laravel/horizon": "^5.48.2",
+ "laravel/mcp": "^1.0.1",
+ "laravel/pail": "^1.2.7",
+ "laravel/prompts": "^0.3.22",
+ "laravel/reverb": "^1.11.1",
+ "laravel/sanctum": "^4.3.3",
+ "laravel/socialite": "^5.29.0",
+ "laravel/tinker": "^2.11.1",
+ "laravel/ui": "^4.6.3",
+ "lcobucci/jwt": "^5.6.0",
+ "league/flysystem-aws-s3-v3": "^3.35.2",
+ "league/flysystem-sftp-v3": "^3.33.0",
+ "livewire/livewire": "^3.8.7",
+ "log1x/laravel-webfonts": "^2.0.1",
+ "lorisleiva/laravel-actions": "^2.10.2",
+ "nubs/random-name-generator": "^2.2.0",
+ "phpseclib/phpseclib": "^3.0.57",
+ "pion/laravel-chunk-upload": "^1.6.3",
+ "poliander/cron": "^3.3.1",
+ "purplepixie/phpdns": "^2.3.6",
+ "pusher/pusher-php-server": "^7.3.0",
+ "resend/resend-laravel": "^1.5.0",
+ "sentry/sentry-laravel": "^4.27.0",
+ "socialiteproviders/authentik": "^5.3.0",
+ "socialiteproviders/clerk": "^5.1.0",
+ "socialiteproviders/discord": "^4.2.0",
+ "socialiteproviders/google": "^4.1.0",
+ "socialiteproviders/infomaniak": "^4.0.0",
+ "socialiteproviders/microsoft-azure": "^5.2.0",
+ "socialiteproviders/zitadel": "^4.2.0",
+ "spatie/laravel-activitylog": "^4.12.3",
+ "spatie/laravel-data": "^4.23.0",
+ "spatie/laravel-markdown": "^2.8.0",
+ "spatie/laravel-schemaless-attributes": "^2.6.0",
+ "spatie/url": "^2.4.0",
+ "stevebauman/purify": "^6.3.2",
+ "stripe/stripe-php": "^16.6.0",
+ "symfony/yaml": "^7.4.15",
+ "visus/cuid2": "^6.0.0",
+ "yosymfony/toml": "^1.0.4",
+ "zircote/swagger-php": "^5.8.3"
},
"require-dev": {
- "driftingly/rector-laravel": "2.5.0",
- "fakerphp/faker": "1.24.1",
- "laravel/boost": "2.10.0",
- "laravel/pint": "1.30.4",
- "mockery/mockery": "1.6.12",
- "nunomaduro/collision": "8.9.5",
- "pestphp/pest": "4.7.8",
- "pestphp/pest-plugin-browser": "4.3.1",
- "phpstan/phpstan": "2.2.8",
- "rector/rector": "2.6.1",
- "serversideup/spin": "3.3.0",
- "symfony/http-client": "7.4.16"
+ "driftingly/rector-laravel": "^2.5.0",
+ "fakerphp/faker": "^1.24.1",
+ "laravel/boost": "^2.10.0",
+ "laravel/pint": "^1.30.4",
+ "mockery/mockery": "^1.6.12",
+ "nunomaduro/collision": "^8.9.5",
+ "pestphp/pest": "^4.7.8",
+ "pestphp/pest-plugin-browser": "^4.3.1",
+ "phpstan/phpstan": "^2.2.8",
+ "rector/rector": "^2.6.1",
+ "serversideup/spin": "^3.3.0",
+ "symfony/http-client": "^7.4.16"
},
"minimum-stability": "stable",
"prefer-stable": true,
diff --git a/composer.lock b/composer.lock
index 37c9d9e856..fb749ec09c 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": "e67d127267c946e452e424751c69ebbd",
+ "content-hash": "c63a0eb3eba5796a90b73f27268f8288",
"packages": [
{
"name": "aws/aws-crt-php",
From 0c7d9af196af8f7f3aac6175a5dea6db750e4ec4 Mon Sep 17 00:00:00 2001
From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Date: Fri, 2 Oct 2026 23:45:57 +0200
Subject: [PATCH 02/19] chore(deps): add Laravel Vet
---
composer.json | 4 +-
composer.lock | 78 +++-
vet.json | 979 ++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 1059 insertions(+), 2 deletions(-)
create mode 100644 vet.json
diff --git a/composer.json b/composer.json
index be3cf23911..1a30a22542 100644
--- a/composer.json
+++ b/composer.json
@@ -65,6 +65,7 @@
"fakerphp/faker": "^1.24.1",
"laravel/boost": "^2.10.0",
"laravel/pint": "^1.30.4",
+ "laravel/vet": "^0.2.1",
"mockery/mockery": "^1.6.12",
"nunomaduro/collision": "^8.9.5",
"pestphp/pest": "^4.7.8",
@@ -94,7 +95,8 @@
"config": {
"allow-plugins": {
"pestphp/pest-plugin": true,
- "php-http/discovery": true
+ "php-http/discovery": true,
+ "laravel/vet": true
},
"optimize-autoloader": true,
"preferred-install": "dist",
diff --git a/composer.lock b/composer.lock
index fb749ec09c..4445433131 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": "c63a0eb3eba5796a90b73f27268f8288",
+ "content-hash": "657807c3680ec0ee72d6d70446605d39",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -14659,6 +14659,82 @@
},
"time": "2026-07-18T17:53:15+00:00"
},
+ {
+ "name": "laravel/vet",
+ "version": "v0.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laravel/vet.git",
+ "reference": "7b10fd2beecf9f386c92731729c9f33a152b213b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laravel/vet/zipball/7b10fd2beecf9f386c92731729c9f33a152b213b",
+ "reference": "7b10fd2beecf9f386c92731729c9f33a152b213b",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^2.0",
+ "ext-dom": "*",
+ "ext-mbstring": "*",
+ "ext-openssl": "*",
+ "ext-phar": "*",
+ "ext-tokenizer": "*",
+ "ext-zip": "*",
+ "php": "^8.4"
+ },
+ "require-dev": {
+ "guzzlehttp/guzzle": "^7.15.5|^8.0",
+ "laravel-zero/foundation": "^13.25",
+ "laravel-zero/framework": "^13.0",
+ "laravel/pint": "^1.32.1",
+ "mockery/mockery": "^1.6.15",
+ "pestphp/pest": "^5.2.1",
+ "pestphp/pest-plugin-phpstan": "^5.2.1",
+ "pestphp/pest-plugin-rector": "^5.0.4",
+ "phpstan/phpstan": "^2.2.16",
+ "rector/rector": "^2.6.7"
+ },
+ "bin": [
+ "builds/vet"
+ ],
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Laravel\\Vet\\Composer\\Plugin"
+ },
+ "autoload": {
+ "psr-4": {
+ "App\\": "app/",
+ "Laravel\\Vet\\Composer\\": "src/Composer/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nuno Maduro",
+ "email": "enunomaduro@gmail.com"
+ }
+ ],
+ "description": "A dependency audit trust file for PHP.",
+ "keywords": [
+ "Audit",
+ "cli",
+ "composer",
+ "console",
+ "dev",
+ "php",
+ "security",
+ "supply chain"
+ ],
+ "support": {
+ "issues": "https://github.com/laravel/vet/issues",
+ "source": "https://github.com/laravel/vet/tree/v0.2.1"
+ },
+ "time": "2026-09-27T14:39:48+00:00"
+ },
{
"name": "league/uri-components",
"version": "7.8.1",
diff --git a/vet.json b/vet.json
new file mode 100644
index 0000000000..67f492a011
--- /dev/null
+++ b/vet.json
@@ -0,0 +1,979 @@
+{
+ "require": {
+ "aws/aws-crt-php": {
+ "version": "v1.2.7",
+ "hash": "tree-v2:be22a57eb742622a1ffba6ca86d121622eb74e75f927a8494532d5d4803badce"
+ },
+ "aws/aws-sdk-php": {
+ "version": "3.391.1",
+ "hash": "tree-v2:16aee08fbba9a6ffece4681341f8028ac3caba5a79b39d3b5555e0a57ec71f50"
+ },
+ "bacon/bacon-qr-code": {
+ "version": "v3.1.1",
+ "hash": "tree-v2:12897f0a1a47ba843a8c4dfa9cd986bc3d7455929b42b7005d030fdd778dc72a"
+ },
+ "brick/math": {
+ "version": "0.14.8",
+ "hash": "tree-v2:79827d9b803e1ecdc82b596e792180dd785719f5d865f59a42aabbe61d85d4fb"
+ },
+ "carbonphp/carbon-doctrine-types": {
+ "version": "3.2.0",
+ "hash": "tree-v2:ad33848c07e8c0d58a0f9011341684a226db43f96f7fc21c6cb99b9c66720f0f"
+ },
+ "clue/redis-protocol": {
+ "version": "v0.3.2",
+ "hash": "tree-v2:8e03c9d35ac2bf5be5ceab4f331d9c122d99273da4f7c428d1c02ceb897ab68a"
+ },
+ "clue/redis-react": {
+ "version": "v2.8.0",
+ "hash": "tree-v2:919b5f4e495641eb54043ec944915a2a83b269412e2acc85a18eadacc96ee1b8"
+ },
+ "danharrin/livewire-rate-limiting": {
+ "version": "v2.2.1",
+ "hash": "tree-v2:3bc003901f11d83845615a2b83b6f0e52f14d132cfe21fd39c78f5f81ec85bb4"
+ },
+ "dasprid/enum": {
+ "version": "1.0.7",
+ "hash": "tree-v2:82016cbedde18f90fb0d3314cfcce52943053eca20269166154b6bc2d79e7940"
+ },
+ "dflydev/dot-access-data": {
+ "version": "v3.0.3",
+ "hash": "tree-v2:05d15a85340adeabba2a95b5280336f0df3a544fcd89be9b2053e410212960b5"
+ },
+ "doctrine/dbal": {
+ "version": "4.4.4",
+ "hash": "tree-v2:c4d9ed2d117d1fb270dd92ad1f626477c87c427969b59527d023c71ab37cae14"
+ },
+ "doctrine/deprecations": {
+ "version": "1.1.6",
+ "hash": "tree-v2:8abdb22c79e82b9ea4884ab18dbaa595bb5315736231fa9e310b9d70a3ab0815"
+ },
+ "doctrine/inflector": {
+ "version": "2.1.0",
+ "hash": "tree-v2:220a8be0ed1b4c0fe4cb53530cec8bcbad2db49962deef2f9f5de47327d7855e"
+ },
+ "doctrine/lexer": {
+ "version": "3.0.2",
+ "hash": "tree-v2:7dabe75f6855468becf3d5a9c0ed9fdbf96f66af9776261cd2fdbeb4079f93e2"
+ },
+ "dragonmantank/cron-expression": {
+ "version": "v3.6.0",
+ "hash": "tree-v2:de03874981dc12b8d6108e201130ed10c174926aad4e4fc0cf4362a1e6f83cb7"
+ },
+ "egulias/email-validator": {
+ "version": "4.0.4",
+ "hash": "tree-v2:7621e009898aea85dfa2ad91d25a3441db9ef5bf90a1b55e9b8396b3a43830f9"
+ },
+ "evenement/evenement": {
+ "version": "v3.0.2",
+ "hash": "tree-v2:5bf08ea1a28ca2559ae1b79a9e99cb3bfd5c33cf13a4b8ce7cc943461473e4e3"
+ },
+ "ezyang/htmlpurifier": {
+ "version": "v4.19.0",
+ "hash": "tree-v2:d3c22c4953b78400b870df5de8b38b239728c661f4ad0bd011a1343525e5eed4"
+ },
+ "firebase/php-jwt": {
+ "version": "v7.1.0",
+ "hash": "tree-v2:fb9b281e0f88b9a10a2daf91a1323182371b3b5a2c5eb8919027e8c86f3d27af"
+ },
+ "fruitcake/php-cors": {
+ "version": "v1.4.0",
+ "hash": "tree-v2:843a0fd0c0519e1e8e46ce45b613feb881065e0a5687b359660900b7be3d0094"
+ },
+ "graham-campbell/result-type": {
+ "version": "v1.1.4",
+ "hash": "tree-v2:20ce4b1cffb859a4b85bec52529ec4a633574f184a5f335b82d904c27cd98c33"
+ },
+ "guzzlehttp/guzzle": {
+ "version": "7.15.3",
+ "hash": "tree-v2:e8515d60ce62d49290f05b65cc3250b8526836b3ee61bca6b12e4f45388d9bb0"
+ },
+ "guzzlehttp/promises": {
+ "version": "2.5.2",
+ "hash": "tree-v2:dc061818ecce047b05af603eca27ff84d7c93e0b05b87efd83ba67e0c241e695"
+ },
+ "guzzlehttp/psr7": {
+ "version": "2.13.1",
+ "hash": "tree-v2:7607132af9efdbe31c5a6d8b92d4cac549bb4e4141caec6b0d917e813c201a19"
+ },
+ "guzzlehttp/uri-template": {
+ "version": "v1.0.10",
+ "hash": "tree-v2:3228d9ad243f43c65a8e250acf8b82cd2454442483d388821ee4227933cb333a"
+ },
+ "jean85/pretty-package-versions": {
+ "version": "2.1.1",
+ "hash": "tree-v2:5cc304e8a530449d8c745eaec902384554d1740d4e083032d5f9ce3ac1cf25e3"
+ },
+ "laravel/fortify": {
+ "version": "v1.37.3",
+ "hash": "tree-v2:41b517f26837c05ae8cc9b4edd0530ca83ffe79c008ddbdd5752c4232987c7fe"
+ },
+ "laravel/framework": {
+ "version": "v12.69.3",
+ "hash": "tree-v2:406d3fd2a8e434af41c60567dc3e57830cac780dab9753e854c4ccdaab71f3a7"
+ },
+ "laravel/horizon": {
+ "version": "v5.48.2",
+ "hash": "tree-v2:5173777c8b58d8f7dc185a8252ed5c8d4f922aa818d89c571448d053bdbb3fd8"
+ },
+ "laravel/mcp": {
+ "version": "v1.0.1",
+ "hash": "tree-v2:9c474c4e3f7a9e35fd7d2ec2ffb24e02ac5d185328243fda4ff9cba7903dac70"
+ },
+ "laravel/pail": {
+ "version": "v1.2.7",
+ "hash": "tree-v2:6ffc8a88f56b9b5082de7e1d3c620a64fa6224f3d2ccd94c23b7b73ec903929b"
+ },
+ "laravel/passkeys": {
+ "version": "v0.2.1",
+ "hash": "tree-v2:788db1215e7e8c6cb282ee115d4b7570a7f30eb763a53b40417df4b7c5a4981c"
+ },
+ "laravel/prompts": {
+ "version": "v0.3.22",
+ "hash": "tree-v2:6e9c301dd528b44952cf87472ee49cd9f9a2c1aac7bb26d7d105ca779fdbdad8"
+ },
+ "laravel/reverb": {
+ "version": "v1.11.1",
+ "hash": "tree-v2:cc912bc1cad0332eb928da40f3bce89d47ead68e4455ad6f450e0fddf7dd6aa9"
+ },
+ "laravel/sanctum": {
+ "version": "v4.3.3",
+ "hash": "tree-v2:63830d35780274f01c5f4999126781fb3de75408055c7ec4aac8bdf2d432c314"
+ },
+ "laravel/sentinel": {
+ "version": "v1.1.0",
+ "hash": "tree-v2:2893786cf018af94219a831c0e4056110487dd448a8dd32f80c936760a180115"
+ },
+ "laravel/serializable-closure": {
+ "version": "v2.0.15",
+ "hash": "tree-v2:cf3dc1978786badf5de9edfb49e9e4faf44353726823fe35657ee6176539da76"
+ },
+ "laravel/socialite": {
+ "version": "v5.29.0",
+ "hash": "tree-v2:28926a0133c2b3594903c7a65b5401b5a5660ad59d5db3ff0e2a74807e7a5594"
+ },
+ "laravel/tinker": {
+ "version": "v2.11.1",
+ "hash": "tree-v2:dbf0a4e6982ec1eb10731c20edaca53829317d294b9a61432b3832a0ef5270fe"
+ },
+ "laravel/ui": {
+ "version": "v4.6.3",
+ "hash": "tree-v2:cdc10049a3e3b3eefa2a8f8da8afa60c1052b33d96338c7c802481aea0d3896c"
+ },
+ "lcobucci/jwt": {
+ "version": "5.6.0",
+ "hash": "tree-v2:7374370ed18d7728465afcdcdbede894a4916ff0aea1fac63d2ae85859f74d66"
+ },
+ "league/commonmark": {
+ "version": "2.10.3",
+ "hash": "tree-v2:ee619e9faf2cbab26a72cb89c809211c91e772fecf8c1a3cbc5e98f8a1233db2"
+ },
+ "league/config": {
+ "version": "v1.2.0",
+ "hash": "tree-v2:b454eb2bd1b250346c7d0af0e5b3caaeafa1b21468bca4ff4601a6a7bd91baae"
+ },
+ "league/flysystem": {
+ "version": "3.36.0",
+ "hash": "tree-v2:420e48fea76c143b41f4a8c1516031dc09ebb7e6367321af317e0a48fa998320"
+ },
+ "league/flysystem-aws-s3-v3": {
+ "version": "3.35.2",
+ "hash": "tree-v2:c8e152eed6be05d58efb91340a8625509bf8e37e96dd5494a2fa0e5efcdfd473"
+ },
+ "league/flysystem-local": {
+ "version": "3.35.3",
+ "hash": "tree-v2:7dba7c9670489313d3604b6a2801a152cf455b5e0d428bf721efda7ea37a5000"
+ },
+ "league/flysystem-sftp-v3": {
+ "version": "3.33.0",
+ "hash": "tree-v2:08f6d0810972764546da057809b3f896fccb0aaf78cf373ae4ca7c2a3b2e7c5d"
+ },
+ "league/mime-type-detection": {
+ "version": "1.17.0",
+ "hash": "tree-v2:1726a64b700472e12c6e5917132914a632350a91b90816cc3c5940ddea1f92d7"
+ },
+ "league/oauth1-client": {
+ "version": "v1.11.0",
+ "hash": "tree-v2:677e7814fa6d106ecb790969760478ea4be3196f57c2d1221d52bd65b0d0314c"
+ },
+ "league/uri": {
+ "version": "7.8.1",
+ "hash": "tree-v2:4397d51a8c4e6080a42f161000bf9db6e73840654aff3cc445f27b405c36ab5c"
+ },
+ "league/uri-interfaces": {
+ "version": "7.8.1",
+ "hash": "tree-v2:227c217ed67b9cd48cc589867bf18379e95858e068724b8fbef94713311b024e"
+ },
+ "livewire/livewire": {
+ "version": "v3.8.7",
+ "hash": "tree-v2:03751c8d0ff86c69cd31d12d03108a2b51de4e0814112f52fa0430b373048287"
+ },
+ "log1x/laravel-webfonts": {
+ "version": "v2.0.1",
+ "hash": "tree-v2:c192111c594d02411d0fbf9dab0837775b56a044c85dd30351d20a9779929872"
+ },
+ "lorisleiva/laravel-actions": {
+ "version": "v2.10.2",
+ "hash": "tree-v2:29d4ccab64e49c12ef9a474d85db12c65efaebb1af8a3d2ecf6ec947cff6eda4"
+ },
+ "lorisleiva/lody": {
+ "version": "v0.7.0",
+ "hash": "tree-v2:2c14f50081e55efb773357853964f9afbecb8ffc9743f9388f0d8d56ec20a06a"
+ },
+ "monolog/monolog": {
+ "version": "3.10.0",
+ "hash": "tree-v2:e248df59c4227ff9e0639a9a9c181c11d5a2f1b006cff723c410ac8384f5221e"
+ },
+ "mtdowling/jmespath.php": {
+ "version": "2.9.2",
+ "hash": "tree-v2:c87e5d6482253928932f38ada2184333cccc8be28081642f4f1b41dc66734822"
+ },
+ "nesbot/carbon": {
+ "version": "3.13.2",
+ "hash": "tree-v2:234c5d4f300a255952cd9c20d906a8d8103826a9dadcc63b17073d922dfdab1a"
+ },
+ "nette/schema": {
+ "version": "v1.3.6",
+ "hash": "tree-v2:502542dfdcfa7c69b22954a883a7605ef7c0d399a15df5fa09aaf695d437b358"
+ },
+ "nette/utils": {
+ "version": "v4.1.5",
+ "hash": "tree-v2:98a3f1d758153bf83c6da5b98625cb4b1ad1105369e07cb24ea29f60eff0ab63"
+ },
+ "nikic/php-parser": {
+ "version": "v5.8.0",
+ "hash": "tree-v2:90ddc66bf11d350b722c1773acd27c8dd2fa1e49aef3a97fded688f19fdde528"
+ },
+ "nubs/random-name-generator": {
+ "version": "v2.2.0",
+ "hash": "tree-v2:a743094ff0ff78ddb63ec8664039da2cf81e089dc5f6c16b17520811e2e9cb84"
+ },
+ "nunomaduro/termwind": {
+ "version": "v2.4.0",
+ "hash": "tree-v2:19bb7af2b1ec2c1a8187fca9af3615fe7ba53c12948053951f9175a1a03a0e48"
+ },
+ "nyholm/psr7": {
+ "version": "1.8.2",
+ "hash": "tree-v2:13ffe5426fb64cceca6901fa1055a0688ec899fa490c81c1a63132b2d25d7ce4"
+ },
+ "paragonie/constant_time_encoding": {
+ "version": "v3.1.3",
+ "hash": "tree-v2:49dd6b293347e87932021f7c295f914e69623eafd76080a2799b14139a1a51e8"
+ },
+ "paragonie/random_compat": {
+ "version": "v9.99.100",
+ "hash": "tree-v2:3f247d4e9da196031d5ee2754558e7dc17e8d63d7506320fa384d0432c5450d1"
+ },
+ "phpdocumentor/reflection-common": {
+ "version": "2.2.0",
+ "hash": "tree-v2:4d02e6474b2c5b0a756adbb6d10bc568fff06a6d51ad8bb23162d2719dd08119"
+ },
+ "phpdocumentor/reflection-docblock": {
+ "version": "6.0.3",
+ "hash": "tree-v2:d4455a70c012b399cab192e5b46fc8609741b8c54d1d8d2ca241b51011f602e1"
+ },
+ "phpdocumentor/type-resolver": {
+ "version": "2.0.0",
+ "hash": "tree-v2:dbbcdc69a18db06efa73b7c12d48bf3918cb1a8fb2e062d4eb726cff61ce2264"
+ },
+ "phpoption/phpoption": {
+ "version": "1.9.5",
+ "hash": "tree-v2:b62416f10065930c8d9360481686b69cc63f37eb585dba067bc05da794b0047f"
+ },
+ "phpseclib/phpseclib": {
+ "version": "3.0.57",
+ "hash": "tree-v2:55fd680d70046da18276ca8b09dd3f45507a955c8963f01b2b65e1d576241790"
+ },
+ "phpstan/phpdoc-parser": {
+ "version": "2.3.3",
+ "hash": "tree-v2:03f1a0e3c46d438463837789e469ee322c8bc9418615ea8145692cc9159df65b"
+ },
+ "pion/laravel-chunk-upload": {
+ "version": "v1.6.3",
+ "hash": "tree-v2:d443106f44dc4dc50a46446d4f18b2bbb95fc771e2e28f637e0a41ae53ac61cb"
+ },
+ "poliander/cron": {
+ "version": "3.3.1",
+ "hash": "tree-v2:828c1437d249186e1dc7c8070b14b520c78460ede432120f647ce63187f89c02"
+ },
+ "pragmarx/google2fa": {
+ "version": "v9.0.0",
+ "hash": "tree-v2:6661a83fede3ef801435599f5358318363e7a13a6a4447d9abd38b10ce49605f"
+ },
+ "psr/cache": {
+ "version": "3.0.0",
+ "hash": "tree-v2:ac46f271c3134fa0193f61ed54dab6b7cf822030f0b249f8c54f51a1803c867d"
+ },
+ "psr/clock": {
+ "version": "1.0.0",
+ "hash": "tree-v2:2a7e0fd2ce370b76b21dafdf64121892c972ca91f4bed220b3505db4ec870674"
+ },
+ "psr/container": {
+ "version": "2.0.2",
+ "hash": "tree-v2:e5aaa33e7ad4cc518518e652f7435918c83ef034fa359b53731e10501eb6d682"
+ },
+ "psr/event-dispatcher": {
+ "version": "1.0.0",
+ "hash": "tree-v2:091c7ba644dd4b46f4ca5a1e99e696b646f8a2a87821a8ca36e3328aba6fa182"
+ },
+ "psr/http-client": {
+ "version": "1.0.3",
+ "hash": "tree-v2:50063ed6dde84d09a63437f58a953b8aa0fdd3fcab44d5d8688a89fc48130f07"
+ },
+ "psr/http-factory": {
+ "version": "1.1.0",
+ "hash": "tree-v2:dde23cb9ba5cc39c10acd8ade52be90b01927cc77ba64e3a7db3abe7c98f40ec"
+ },
+ "psr/http-message": {
+ "version": "2.0",
+ "hash": "tree-v2:a9575ef4779a21eb0d3f04a1e2f0f008e67785cc86d750046a13455f9266ff41"
+ },
+ "psr/log": {
+ "version": "3.0.2",
+ "hash": "tree-v2:0f88d9371ba05c1791394f2e0a56979e1e17258f9bea9519ffc51f11c85b7844"
+ },
+ "psr/simple-cache": {
+ "version": "3.0.0",
+ "hash": "tree-v2:1854aa6d2cd53968d44c1fddcde547872925142ee6a5dea8d183b3a9e9551b7c"
+ },
+ "psy/psysh": {
+ "version": "v0.12.24",
+ "hash": "tree-v2:c518e85e74d1aef81854220186172a87c7e1553652d35eff97655015389e5404"
+ },
+ "purplepixie/phpdns": {
+ "version": "2.3.6",
+ "hash": "tree-v2:3e2c11aebd52bf1faa28737c6871f0bb311ee09d5936e572f1b8dd9b43c77817"
+ },
+ "pusher/pusher-php-server": {
+ "version": "7.3.0",
+ "hash": "tree-v2:c7713b62c33d0f6504f5226e33be144a1255125ec013abfe5ee06fa619c4a340"
+ },
+ "ralouphie/getallheaders": {
+ "version": "3.0.3",
+ "hash": "tree-v2:db666a4e690725b904b5de22a95b230e08ba09f45559a03b32ffb933b0abb75f"
+ },
+ "ramsey/collection": {
+ "version": "2.1.1",
+ "hash": "tree-v2:ad16df2a5b3611348dc88ba0a921d27b7e074406ff667ca547c6a3579734972c"
+ },
+ "ramsey/uuid": {
+ "version": "4.9.3",
+ "hash": "tree-v2:5683dc29fce0bf6588b8074e4f5d5c1987401c061bb8e412ae7efff27c24c5ad"
+ },
+ "ratchet/rfc6455": {
+ "version": "v0.4.1",
+ "hash": "tree-v2:f8ab0e11b00c48fdfa9849073c663a21708c640f4f6a054fdf330c0e66b7c32c"
+ },
+ "react/cache": {
+ "version": "v1.2.0",
+ "hash": "tree-v2:303d5bc29045a7370e96e9760540265fe0df3639cfb03a0914a09e3b71d85cea"
+ },
+ "react/dns": {
+ "version": "v1.14.0",
+ "hash": "tree-v2:59869424ef3faf16394bfd6957d3d42cdff87f7234ef1190b4028c56dfc8dc89"
+ },
+ "react/event-loop": {
+ "version": "v1.6.0",
+ "hash": "tree-v2:0b4ee3a9e74158fc9a291bc3e44f74ded61bd2ecf5752f53b04936bb86890e96"
+ },
+ "react/promise": {
+ "version": "v3.3.0",
+ "hash": "tree-v2:dea9b667d543e827b3640262c29c5c2348ee7535045fbb5ea9fd05b65526e8c4"
+ },
+ "react/promise-timer": {
+ "version": "v1.11.0",
+ "hash": "tree-v2:40aacf5a4884e1c2a1c8f51e5db11daaea6486b8c92439eeaedaf8d54589b1bf"
+ },
+ "react/socket": {
+ "version": "v1.17.0",
+ "hash": "tree-v2:4809bfe68cb0b7634391369c426e336355c696862bce27bf3314411293d7a493"
+ },
+ "react/stream": {
+ "version": "v1.4.0",
+ "hash": "tree-v2:24cd9a269d6eef586865cd4525abfa3068f55e7c634a0d938071300df371fbb1"
+ },
+ "resend/resend-laravel": {
+ "version": "v1.5.0",
+ "hash": "tree-v2:0d8595f92df4e111c5093d4d8ce45b51a21e19a63ad3cd5f11898d613a3778b6"
+ },
+ "resend/resend-php": {
+ "version": "v1.16.0",
+ "hash": "tree-v2:41aee3a1e56f0c323e4c11b2204958d7e24716a4f6ba33a82a279fabdadbc698"
+ },
+ "sentry/sentry": {
+ "version": "4.30.0",
+ "hash": "tree-v2:559b1c23b5422ac70204d32280cb016bf79476201b395c10454dc13c4755ba95"
+ },
+ "sentry/sentry-laravel": {
+ "version": "4.27.0",
+ "hash": "tree-v2:5303ae7449f08c6ad252d2fbbea504d8123279b3a72a32c478fbab234289be25"
+ },
+ "socialiteproviders/authentik": {
+ "version": "5.3.0",
+ "hash": "tree-v2:b87546ceea927533581ec65ffa7f49bbc8eba19f53d3e86d276b0e266b447818"
+ },
+ "socialiteproviders/clerk": {
+ "version": "5.1.0",
+ "hash": "tree-v2:dbbdb491ea001863c8aeab896e105552c4aef5635299cc59078bcd334f8c1264"
+ },
+ "socialiteproviders/discord": {
+ "version": "4.2.0",
+ "hash": "tree-v2:b9643f1b280a1e4c705d6a0a60b450d241f83f6c07a958b79cc05ae5f2a8586e"
+ },
+ "socialiteproviders/google": {
+ "version": "4.1.0",
+ "hash": "tree-v2:4f1286cbb3220ba557ed26e44f7341b6993cc9eb8afe3d1122be309f4a7200f4"
+ },
+ "socialiteproviders/infomaniak": {
+ "version": "4.0.0",
+ "hash": "tree-v2:646fdffaaa711fb0698a2ec1647056f8c9cc23a9d4e170ea6ab62d44044993ca"
+ },
+ "socialiteproviders/manager": {
+ "version": "4.9.2",
+ "hash": "tree-v2:d800f550bccc1d0ff067c7a97615aa5ed91fc854d0535b7e8667ee4d0954b59c"
+ },
+ "socialiteproviders/microsoft-azure": {
+ "version": "5.2.0",
+ "hash": "tree-v2:3a0a2a1617d91d6aa2cff6e476c0c471738ed8a3aff12259ad7a9908aafdc248"
+ },
+ "socialiteproviders/zitadel": {
+ "version": "4.2.0",
+ "hash": "tree-v2:00f5f3c0138d49e42364152d590e5dc74a0284ce3bb55a954efd87c5bc72989e"
+ },
+ "spatie/commonmark-shiki-highlighter": {
+ "version": "2.5.2",
+ "hash": "tree-v2:da985acdbdd912496897c3edd71e2f2547fd896059164dd5a36b628e3241fad5"
+ },
+ "spatie/laravel-activitylog": {
+ "version": "4.12.3",
+ "hash": "tree-v2:471e238146b28116bfb231b2a2cacc1dc9a0228a08e0076b8a74da389cc175e9"
+ },
+ "spatie/laravel-data": {
+ "version": "4.23.0",
+ "hash": "tree-v2:6391465cf6c5a21d901a30b4df29c3039e5e0accb6b41a0c3c71bb4f2b3deb67"
+ },
+ "spatie/laravel-markdown": {
+ "version": "2.8.0",
+ "hash": "tree-v2:35ba0757f6a53e91cdbb12000f797cca394fb4d0694d84e274c65cc94ecc6170"
+ },
+ "spatie/laravel-package-tools": {
+ "version": "1.93.1",
+ "hash": "tree-v2:872b831650427458a405c2c8335c05a6ce31ab58206a1c90c08e22df643fc282"
+ },
+ "spatie/laravel-schemaless-attributes": {
+ "version": "2.6.0",
+ "hash": "tree-v2:aceb5a7bfb0f178a24b4cb744bef3d9d467400b05687ed53c8bbb5aba7137168"
+ },
+ "spatie/macroable": {
+ "version": "2.1.0",
+ "hash": "tree-v2:344a2e65018d7b2fe15a2e2a6fed2bebbcf859094233dca388c40df8261104d4"
+ },
+ "spatie/php-structure-discoverer": {
+ "version": "2.4.4",
+ "hash": "tree-v2:1aa3de6b429a12a5a58af48f8e9721d349df02ace12561b8430ca769f866b468"
+ },
+ "spatie/shiki-php": {
+ "version": "2.4.0",
+ "hash": "tree-v2:5f980c9f51efcf49a892464c70a40b2256cad3da2299ddb6f7f1ae6f51bb1bea"
+ },
+ "spatie/url": {
+ "version": "2.4.0",
+ "hash": "tree-v2:ccfbd1e8a695b968ba0e8b70663c8313ee60235ec562c27e51d1e7ec20ca5881"
+ },
+ "spomky-labs/cbor-php": {
+ "version": "3.3.0",
+ "hash": "tree-v2:8185dd56a52fda8afe3ea92b333809a94a1635cc94b9a80afd03d0f5e895bacf"
+ },
+ "spomky-labs/pki-framework": {
+ "version": "1.6.0",
+ "hash": "tree-v2:be0c59ec13eae7e346bbcec4a0821a75016fb809f18df0357b19d9555edb7f80"
+ },
+ "stevebauman/purify": {
+ "version": "v6.3.2",
+ "hash": "tree-v2:c1a25d80b65af346fede09a960d4f643bc21cad4ec0bef81dc6741807d3d268c"
+ },
+ "stripe/stripe-php": {
+ "version": "v16.6.0",
+ "hash": "tree-v2:aa959d41f9c5b2142865352c3180308abb91a79c051c11b2a63f05d5255aa34d"
+ },
+ "symfony/clock": {
+ "version": "v8.1.0",
+ "hash": "tree-v2:7888f31d60c29c4f777204510e9a60a557c98a4e480efe5d9eb13dd617bf21f1"
+ },
+ "symfony/console": {
+ "version": "v7.4.16",
+ "hash": "tree-v2:6bcaeda34b1df22209a4ea023cf74641d865fdb255fa909e94e956dc7a261303"
+ },
+ "symfony/css-selector": {
+ "version": "v8.1.0",
+ "hash": "tree-v2:e9e6a6af09fd94bc3bb7e23963502feb3981befc9898be01576ffc704a4e9698"
+ },
+ "symfony/deprecation-contracts": {
+ "version": "v3.7.1",
+ "hash": "tree-v2:5833e98c5092cd02ed429ffd459b82b158f20393ef0b0ec2e06b2833d7efe838"
+ },
+ "symfony/error-handler": {
+ "version": "v7.4.15",
+ "hash": "tree-v2:8496cdd8c3c237648e8c48f092f7f0a90d33a996852c44021a0b724344c9d92b"
+ },
+ "symfony/event-dispatcher": {
+ "version": "v8.1.5",
+ "hash": "tree-v2:44ed3dd86aee506338f18bd5293ebfd1e23ead8659903a8bc020cd1a263dba0a"
+ },
+ "symfony/event-dispatcher-contracts": {
+ "version": "v3.7.1",
+ "hash": "tree-v2:0ac7e6b0bd6da93975ac9b3ec9f41aa596e9c1c6217813797d1e8bb64be89139"
+ },
+ "symfony/filesystem": {
+ "version": "v8.1.2",
+ "hash": "tree-v2:4b713fff4a6a0f61e0b226bab639f355c11dd4a548fa108df08660c0e5055cdb"
+ },
+ "symfony/finder": {
+ "version": "v7.4.14",
+ "hash": "tree-v2:eacf156b53cc64a5af416a2d40ed666c4a33727b5fed3d230578e5f0240ed4e1"
+ },
+ "symfony/http-foundation": {
+ "version": "v7.4.16",
+ "hash": "tree-v2:a913c017875712cfbe74b767d16f32aa838606f6c5a714265922c12f82f2778d"
+ },
+ "symfony/http-kernel": {
+ "version": "v7.4.16",
+ "hash": "tree-v2:9471b2f370a93fff534e818b17fb270471fec8648636860fe3dcd343f27f0ba6"
+ },
+ "symfony/mailer": {
+ "version": "v7.4.19",
+ "hash": "tree-v2:a5b4eeb63c3601d56b876f7c331a2f5c8282fe5ad0cfcaca72af7db25ad823e5"
+ },
+ "symfony/mime": {
+ "version": "v7.4.19",
+ "hash": "tree-v2:1e8a3ebeaabd6609d46b43ca7d92e2229ad4d7733292181792788556be171a54"
+ },
+ "symfony/options-resolver": {
+ "version": "v8.1.0",
+ "hash": "tree-v2:460463358ebcddeefa642be1bbdef7cae975b10da77c231d109fb4d720275f44"
+ },
+ "symfony/polyfill-ctype": {
+ "version": "v1.37.0",
+ "hash": "tree-v2:8a05c9979125b75411bed1356ebf16439972fafc4cca1ff6baa717db25e3dfca"
+ },
+ "symfony/polyfill-intl-grapheme": {
+ "version": "v1.41.0",
+ "hash": "tree-v2:eb79b6c358896580faee98f60707746489d3575e1641e46c3e6f76ffebf959b1"
+ },
+ "symfony/polyfill-intl-idn": {
+ "version": "v1.42.0",
+ "hash": "tree-v2:5908ed2ff682cbff50af4623e96bdf4368a0f9dd8e1ac67f00fad0a6b4a0524c"
+ },
+ "symfony/polyfill-intl-normalizer": {
+ "version": "v1.42.0",
+ "hash": "tree-v2:a6da84cf96f8c7adc795ab75d322190007835218c206238bd74d4f05036e568d"
+ },
+ "symfony/polyfill-mbstring": {
+ "version": "v1.38.2",
+ "hash": "tree-v2:a9c8cb96ff984032b9ba2c4ad692eba9376cfe8ad9aa95b238bd3edfde57d9b9"
+ },
+ "symfony/polyfill-php80": {
+ "version": "v1.37.0",
+ "hash": "tree-v2:db9811052bb9f7cd15e09bd54128f33f64516627d90efa9747b8cb0862188aa8"
+ },
+ "symfony/polyfill-php83": {
+ "version": "v1.41.0",
+ "hash": "tree-v2:fada0d369c196d6f1f04166f5d4efc01f4c8c2fccbe96f2bb8a4c2d0ec90d44d"
+ },
+ "symfony/polyfill-php84": {
+ "version": "v1.38.1",
+ "hash": "tree-v2:6503d40681cfabb0497999505304d6e13215f353cdb3f4f351c1a7ec80ed0799"
+ },
+ "symfony/polyfill-php85": {
+ "version": "v1.41.0",
+ "hash": "tree-v2:6d47992b5698e9021fef2975870ed346c85aeb53d33bbd83f703179b0ff665b3"
+ },
+ "symfony/polyfill-uuid": {
+ "version": "v1.37.0",
+ "hash": "tree-v2:3672d6e03712b8d283e49b2c863affd8db644d152d41b733ec4f0ac2c8f02ff2"
+ },
+ "symfony/process": {
+ "version": "v7.4.13",
+ "hash": "tree-v2:7fa664d757a0fdf27dc8dfd65c746dab18d968e1c682f8839caa95e3952840ad"
+ },
+ "symfony/property-access": {
+ "version": "v8.1.4",
+ "hash": "tree-v2:5f465a4a0eb7e2e8fbe080af2bf95e4c4d3fd4fe272bdf98efc63ed5c0794073"
+ },
+ "symfony/property-info": {
+ "version": "v8.1.4",
+ "hash": "tree-v2:17a0d521ae39e683928b84eef8a9d05e753e798c46e62e412b0bad0f8c165cd3"
+ },
+ "symfony/psr-http-message-bridge": {
+ "version": "v8.1.0",
+ "hash": "tree-v2:5436ca31402054df5b2f0112afa655297032380d0db45baa946bad4253a8a324"
+ },
+ "symfony/routing": {
+ "version": "v7.4.15",
+ "hash": "tree-v2:1eec74fab090e7db3ebebb7889e672f4c58bbd369e04019318f612e5c40924fe"
+ },
+ "symfony/serializer": {
+ "version": "v8.1.4",
+ "hash": "tree-v2:149659705c501cec2697f2c75bd4bd962a3dca4aef20cb62a210ce127f68755f"
+ },
+ "symfony/service-contracts": {
+ "version": "v3.7.3",
+ "hash": "tree-v2:87421779a4d0f4aae910ba4a77c7a04bfd6d385d86190a96ec8276ec1ba48987"
+ },
+ "symfony/string": {
+ "version": "v8.1.2",
+ "hash": "tree-v2:6c3dbd245e870cd78bdd16b764534dff6ddf4c1e0391fd491116cf3a2c1d5ea7"
+ },
+ "symfony/translation": {
+ "version": "v8.1.4",
+ "hash": "tree-v2:0cd6421dce1427357556e4e4bd0f77d71d59e15e878a5bbfd687e0a6e4911d87"
+ },
+ "symfony/translation-contracts": {
+ "version": "v3.7.1",
+ "hash": "tree-v2:74a8e3a8f0580af687b411de0e087911c348807f6e59858632fbffabeb7bf9a9"
+ },
+ "symfony/type-info": {
+ "version": "v8.1.0",
+ "hash": "tree-v2:f71c1d1d8a9605c340252d2c7fc5e4a5feee46edd89e40b9988a037fa544fc65"
+ },
+ "symfony/uid": {
+ "version": "v7.4.9",
+ "hash": "tree-v2:0ab2c9a4659cc4f1715a62c49074f741474d06544445e56baa87d922b71aacc9"
+ },
+ "symfony/var-dumper": {
+ "version": "v7.4.15",
+ "hash": "tree-v2:c8b18ce6dcad1d629dccc76b6c4820edb4fe7c61eeeb744ca3d31de45a85087e"
+ },
+ "symfony/yaml": {
+ "version": "v7.4.15",
+ "hash": "tree-v2:9b3804edae9da1565a6e299ede6fd0b079d650fb0d782859242f4d66d341e07d"
+ },
+ "tijsverkoyen/css-to-inline-styles": {
+ "version": "v2.4.0",
+ "hash": "tree-v2:ac5b86c6dee0dc8f5c5f7f98d250d378d8c65dde04156022650e4776734f7fcb"
+ },
+ "visus/cuid2": {
+ "version": "6.0.0",
+ "hash": "tree-v2:e96d37d3b83f67809d1ea0fb7f4e33f9879d7aeb2dc5b4fa2135b84177e651c9"
+ },
+ "vlucas/phpdotenv": {
+ "version": "v5.6.4",
+ "hash": "tree-v2:2ca7accffdf5b12d4958d2ae3f336361834c50c21c70a2be3532cc286b5f019f"
+ },
+ "voku/portable-ascii": {
+ "version": "2.1.1",
+ "hash": "tree-v2:6c1b22272d89eb3d85366cc99a0375535b76a897616d9d79bbfddc8bcded66c6"
+ },
+ "web-auth/cose-lib": {
+ "version": "4.6.0",
+ "hash": "tree-v2:58dff943fe79fabffa06d2ad63f9eae90ec2ca5b39078d757260875d7ef99d66"
+ },
+ "web-auth/webauthn-lib": {
+ "version": "5.3.5",
+ "hash": "tree-v2:4843b192ff2f3ad73d9464fc8b55127d23a4b7862b04a0b575391115d89580f9"
+ },
+ "webmozart/assert": {
+ "version": "2.4.1",
+ "hash": "tree-v2:7376c95163e3fc61ad793a2342e94ff787b01739b28ecce59d5acd1ce8cc691b"
+ },
+ "yosymfony/parser-utils": {
+ "version": "v2.0.0",
+ "hash": "tree-v2:96588dacd406278c80997538f85fade4a9d6819d5a5a295253a15bad7bf3f7d7"
+ },
+ "yosymfony/toml": {
+ "version": "v1.0.4",
+ "hash": "tree-v2:06d6d20af34021a04bb906b2f8b28a82dc986db7e17234bbae7074b1235e7119"
+ },
+ "zircote/swagger-php": {
+ "version": "5.8.3",
+ "hash": "tree-v2:82ab08143346378ab92441f4372cb4ff75439fc9164d53dc79e155d03d12d5a8"
+ }
+ },
+ "require-dev": {
+ "amphp/amp": {
+ "version": "v3.1.3",
+ "hash": "tree-v2:d3497306739d19b5afaaba19043930ea8eef2470ccd5592f03129fa374f172d7"
+ },
+ "amphp/byte-stream": {
+ "version": "v2.1.2",
+ "hash": "tree-v2:76f032d87c398e38a37a7aa8ae50496885edf16cee70178be260eefc17ada6d2"
+ },
+ "amphp/cache": {
+ "version": "v2.0.1",
+ "hash": "tree-v2:d7d30faedc5d9aaadb6cd48d296f2bcc202f5b9e9251cb749c07196398da42de"
+ },
+ "amphp/dns": {
+ "version": "v2.4.0",
+ "hash": "tree-v2:d28e15bcd691a79054c254023a536ac3c7de9524afd32e8ca1e967ed01cf4dc5"
+ },
+ "amphp/hpack": {
+ "version": "v3.2.2",
+ "hash": "tree-v2:224439b904b3e3837e611183925e51859b7cbb85f80143871def0d16484578b7"
+ },
+ "amphp/http": {
+ "version": "v2.1.2",
+ "hash": "tree-v2:0c7b6dcb02552516528fc98a6ba8e92908caa010b5eb8e4471f1f12f1c9f3d0e"
+ },
+ "amphp/http-client": {
+ "version": "v5.3.6",
+ "hash": "tree-v2:5d4dd74df9cdc7b087b295b67a7c00172d8c9d2099ea5599613c9f5579c52819"
+ },
+ "amphp/http-server": {
+ "version": "v3.4.6",
+ "hash": "tree-v2:9a3424c8f2833ed3f24488f9252991502e945c79c0b0e8485ca48b4132387538"
+ },
+ "amphp/parser": {
+ "version": "v1.1.1",
+ "hash": "tree-v2:323c0ca63bcacc384f97693e57a1b4d4d25e31075633c87dbf9bb52aefdaf074"
+ },
+ "amphp/pipeline": {
+ "version": "v1.2.7",
+ "hash": "tree-v2:91f9d66bbf42eb4dbf2984ea7d8ee6fe9931db442487fde46313a3f840334957"
+ },
+ "amphp/process": {
+ "version": "v2.1.0",
+ "hash": "tree-v2:9f2b957f18f84012aa2db032780bca4bdc0468c6b55fe8112fa609430c7bc021"
+ },
+ "amphp/serialization": {
+ "version": "v1.1.0",
+ "hash": "tree-v2:a4cd50472d471a9d10fcafdb712cb3efc112bb2e643814529bb6195d43acdce4"
+ },
+ "amphp/socket": {
+ "version": "v2.4.0",
+ "hash": "tree-v2:57eb1b91472ba757cd5ab821c4468b1472b1c4a9e5d5bb57d931efbe5a5a3899"
+ },
+ "amphp/sync": {
+ "version": "v2.3.0",
+ "hash": "tree-v2:481be54c4d2517271fa742d678abfa01fc7d6d9e4ce1c5df59ccc184b51a4fa1"
+ },
+ "amphp/websocket": {
+ "version": "v2.0.4",
+ "hash": "tree-v2:2cccf30e15de80faebf3e958db38aaabea0619a65e2162c6d26b0970d0bb17db"
+ },
+ "amphp/websocket-client": {
+ "version": "v2.0.2",
+ "hash": "tree-v2:8ec4699d0c0c88cb401db507d2bc24438050f961bb7efceea2cae31b36c53483"
+ },
+ "brianium/paratest": {
+ "version": "v7.20.0",
+ "hash": "tree-v2:075f8b7e73532ba3689126db0f91288a199bcba5f2743bc17a9bf37d53e030c1"
+ },
+ "composer/pcre": {
+ "version": "3.4.0",
+ "hash": "tree-v2:ed02f4e2009261111a40bc3f96d602af9d3d2b069df5578bcd5ca8641e55d583"
+ },
+ "composer/semver": {
+ "version": "3.5.0",
+ "hash": "tree-v2:248e81e763c49385d13df21a723d156777290b327a2cd119201d4052e26fcb38"
+ },
+ "composer/xdebug-handler": {
+ "version": "3.0.5",
+ "hash": "tree-v2:780bdd65290fbfc62bbe8de682feb4eff689bf57ac9598bd42dc83f60e734adf"
+ },
+ "daverandom/libdns": {
+ "version": "v2.1.0",
+ "hash": "tree-v2:a4f2d4abdf003756bf9b88bb6c55c8a70d8d214c81529273974c9ddda020fe02"
+ },
+ "driftingly/rector-laravel": {
+ "version": "2.5.0",
+ "hash": "tree-v2:8f0433e6ed4017e91c5c41632633330f34370e910335b004913709c5711fc8d4"
+ },
+ "fakerphp/faker": {
+ "version": "v1.24.1",
+ "hash": "tree-v2:b6f3d0f8ca79f98400b0df7c2a29004dbd9e3f39f39125ecfd5613e38b9ff6a3"
+ },
+ "fidry/cpu-core-counter": {
+ "version": "1.3.0",
+ "hash": "tree-v2:c33bdd2e0430e4110e6ee218701bdee1b422acb2510dd198836519b9a8fcc58d"
+ },
+ "filp/whoops": {
+ "version": "2.18.4",
+ "hash": "tree-v2:db8671d760c94524baa207edf2fc1731a493b7074eb94f8767d821712b68188c"
+ },
+ "hamcrest/hamcrest-php": {
+ "version": "v2.1.1",
+ "hash": "tree-v2:8b11d442e6982460070110b31fc532c8fe524fc757990e5a4e75f32ebc1e8852"
+ },
+ "kelunik/certificate": {
+ "version": "v1.1.3",
+ "hash": "tree-v2:760bb76fec70d2a8530c4968b49720c08824cd8eebb27dee38370d8e71ee5855"
+ },
+ "laravel/boost": {
+ "version": "v2.10.0",
+ "hash": "tree-v2:c88d4a35bf2e78d321dca9e8c342c6de41d85d06e840d0f1149d5990ac7c3a3a"
+ },
+ "laravel/pint": {
+ "version": "v1.30.4",
+ "hash": "tree-v2:012d3f194967babaf7ec78395508e0c287f5eeda5c549e8adc42740571c7c9bd"
+ },
+ "laravel/roster": {
+ "version": "v1.0.0",
+ "hash": "tree-v2:da430a9f3d9fb06a3812b0e8a116d8265a06dce1bfde4182a1de7154ba15ad67"
+ },
+ "laravel/vet": {
+ "version": "v0.2.1",
+ "hash": "tree-v2:7c555b9f7eb265649d89769aa9b07bafc809d9e52d15ecdc3a84ee1c59fa767e"
+ },
+ "league/uri-components": {
+ "version": "7.8.1",
+ "hash": "tree-v2:a2b928f6fae0e15c66f08ae84e98f7dd8547749390ca842c83014bf1f2d68777"
+ },
+ "mockery/mockery": {
+ "version": "1.6.12",
+ "hash": "tree-v2:c6cb44811fb2674feeac51789852447cc0148c22f87a4557f608cd0d3f238836"
+ },
+ "myclabs/deep-copy": {
+ "version": "1.13.4",
+ "hash": "tree-v2:7927270fd36147270b920cea3dce8149bf609959dfe7c4174a30e0141143e232"
+ },
+ "nunomaduro/collision": {
+ "version": "v8.9.5",
+ "hash": "tree-v2:937038b0d056a8bcf7697a75ce737986eccb501a325645cf05d679e7befcf39e"
+ },
+ "pestphp/pest": {
+ "version": "v4.7.8",
+ "hash": "tree-v2:36d984a67927f4dc359da32a74528232c736b60015a6e8eb194c50076fee6544"
+ },
+ "pestphp/pest-plugin": {
+ "version": "v4.0.0",
+ "hash": "tree-v2:3103a3f5c29b851523801f4168e91bf6d802ef5e65706fd83273c24c4ec95549"
+ },
+ "pestphp/pest-plugin-arch": {
+ "version": "v4.0.2",
+ "hash": "tree-v2:37a528a6ea7283adfb14f06e80ce4dd3884a2917cc372b204c221f206b3bfe98"
+ },
+ "pestphp/pest-plugin-browser": {
+ "version": "v4.3.1",
+ "hash": "tree-v2:a9294251c3d572bcfa8ef508c2e1c88bc100fb248b01a4cd0be088b7677d0494"
+ },
+ "pestphp/pest-plugin-mutate": {
+ "version": "v4.0.1",
+ "hash": "tree-v2:90dc0a102fcecaf0314015c17c0e98e3f2e5151247da5809a174a731e8b2db89"
+ },
+ "pestphp/pest-plugin-profanity": {
+ "version": "v4.2.1",
+ "hash": "tree-v2:88b1581205235488496300f5ee233b42b122f5a5668bb2d95f8169c180121cd9"
+ },
+ "phar-io/manifest": {
+ "version": "2.0.4",
+ "hash": "tree-v2:7b98d0ed9886b77df04a08280884b27c7169ba845a24c626ca7abea0d3afc1f7"
+ },
+ "phar-io/version": {
+ "version": "3.2.1",
+ "hash": "tree-v2:0409e2019377650177c2b10da803617abc85e49d5b02b8697d450c007eab42b4"
+ },
+ "phpstan/phpstan": {
+ "version": "2.2.8",
+ "hash": "tree-v2:11220d859d5bd2348fd5077163b60446b371076d43567e50fa7c8d392a1beffd"
+ },
+ "phpunit/php-code-coverage": {
+ "version": "12.5.7",
+ "hash": "tree-v2:5cf24f83c21b6d8fce23e7ad853f77f0807e76f4c84d4f7ffb9053a167df16ca"
+ },
+ "phpunit/php-file-iterator": {
+ "version": "6.0.1",
+ "hash": "tree-v2:54536e94dfbd738ec39954f8f2bc3774caa1a1b12a439cafe42011cac2ee0569"
+ },
+ "phpunit/php-invoker": {
+ "version": "6.0.0",
+ "hash": "tree-v2:6d8f648edbdac676ca9bee9c2fe97c82d6251aaf62f156c3a36c86736b812e23"
+ },
+ "phpunit/php-text-template": {
+ "version": "5.0.0",
+ "hash": "tree-v2:4470e41670dd466f1af97fb08a0705d5e31c1d09f6f09ece2404cbd7ae6a709b"
+ },
+ "phpunit/php-timer": {
+ "version": "8.0.0",
+ "hash": "tree-v2:f35fccbffc23c168f18029a433791f4dd85daa7009e53987b66f08bdbf3d4353"
+ },
+ "phpunit/phpunit": {
+ "version": "12.5.33",
+ "hash": "tree-v2:fe7d4ec3e4840290cee07c39535422b61bb31ebd2afde15a39a78373a0cd2c64"
+ },
+ "rector/rector": {
+ "version": "2.6.1",
+ "hash": "tree-v2:2a4a264d7df24292e129c0d39cdc6a09f70dbf9393ad9868b8741e5eb429e716"
+ },
+ "revolt/event-loop": {
+ "version": "v1.0.9",
+ "hash": "tree-v2:0ce99bc9177402510544459689f3c8f2abae7466e27abf1eefb7da8888bc0198"
+ },
+ "sebastian/cli-parser": {
+ "version": "4.2.1",
+ "hash": "tree-v2:fc44fc3e0a4b1fd529963948acebc3a3370f7b55aa8e9969c96953477b41886e"
+ },
+ "sebastian/comparator": {
+ "version": "7.1.8",
+ "hash": "tree-v2:10f9243c8a5287b8ad9e7ed4651717391adaf923891a95d75b589fa2229f5386"
+ },
+ "sebastian/complexity": {
+ "version": "5.0.0",
+ "hash": "tree-v2:f0d6eb200ba389679d875eb854ffc9d6c55884d1e5b5bdcd2e58cb27d505c362"
+ },
+ "sebastian/diff": {
+ "version": "7.0.0",
+ "hash": "tree-v2:c72b3660535ae84aa1fa0cf9f328ee07fa30fb779724ee10462908121ec2d8ac"
+ },
+ "sebastian/environment": {
+ "version": "8.1.2",
+ "hash": "tree-v2:f6e34bc8513b7d4b3c319a99bd457c406b3ef4968db30b33c07346a6c0d46c06"
+ },
+ "sebastian/exporter": {
+ "version": "7.0.3",
+ "hash": "tree-v2:14c6a001c221469a25b6bb02ab8b7684b7e64ed98379ec6e7673853d7ee3c0a4"
+ },
+ "sebastian/global-state": {
+ "version": "8.0.3",
+ "hash": "tree-v2:61b9dda526628a2c6b44092338d4363c3b682f4290e71b9bffed49e70327f10c"
+ },
+ "sebastian/lines-of-code": {
+ "version": "4.0.1",
+ "hash": "tree-v2:10204087c002cc8387fd29d84327bec5b68cd528a854234fb79f0e29b6f12cde"
+ },
+ "sebastian/object-enumerator": {
+ "version": "7.0.0",
+ "hash": "tree-v2:7e0147f70c38947d32d81b0a88607da16c0b067ba9c357febe9779639e55d69f"
+ },
+ "sebastian/object-reflector": {
+ "version": "5.0.0",
+ "hash": "tree-v2:dc02c4b2cc26efffc26b74e5bc0e489a4ac3ce831fff0f06c939fef5b8285fc3"
+ },
+ "sebastian/recursion-context": {
+ "version": "7.0.1",
+ "hash": "tree-v2:c2713c083e6e14599b6a68f986d969692458ff45a1aedf5a6bd994699c6cc72d"
+ },
+ "sebastian/type": {
+ "version": "6.0.4",
+ "hash": "tree-v2:c18e590b1fad7140ccc8dc16086635356728f15f0eb1abfb4d3d79b243947a35"
+ },
+ "sebastian/version": {
+ "version": "6.0.0",
+ "hash": "tree-v2:b900b2263d6a49e35e6c9adf9d477f927d769f6a019ae4532a6867b44506f456"
+ },
+ "serversideup/spin": {
+ "version": "v3.3.0",
+ "hash": "tree-v2:bba2bd0cc9b72ae27db7fb4cded0b8b9959fe39d2528f733e4d6f12264f9e279"
+ },
+ "staabm/side-effects-detector": {
+ "version": "1.0.5",
+ "hash": "tree-v2:26d964435c381c94abd5dbadf497d7888b5a811f0693b66aa7976a3d01c545ba"
+ },
+ "symfony/http-client": {
+ "version": "v7.4.16",
+ "hash": "tree-v2:d316de62dd4763550b258ab71fd021a58c42743e8e9f2e79d0f54f944fedbb6b"
+ },
+ "symfony/http-client-contracts": {
+ "version": "v3.7.1",
+ "hash": "tree-v2:6b3703eade4cde3e59fae53198d32bd786fb63786980c71b2049b29afbc971f0"
+ },
+ "ta-tikoma/phpunit-architecture-test": {
+ "version": "0.8.7",
+ "hash": "tree-v2:068328d7bed81666d79d94c08e5b634b6c2f1499e8ebadf1068b4d7f19545243"
+ },
+ "theseer/tokenizer": {
+ "version": "2.0.1",
+ "hash": "tree-v2:41aaedd9e64befbc0fecc9ff7ea3ea811daa1088ea055614faa0aeef41f8744f"
+ }
+ },
+ "minimum-release-age": 3
+}
From a30b0ee721c28557dc604930f0f1476f55091df4 Mon Sep 17 00:00:00 2001
From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Date: Fri, 2 Oct 2026 23:45:58 +0200
Subject: [PATCH 03/19] chore(deps): update composer dependencies
---
composer.json | 50 +-
composer.lock | 1370 ++++++++++++++++++++++++++++---------------------
vet.json | 348 +++++++------
3 files changed, 999 insertions(+), 769 deletions(-)
diff --git a/composer.json b/composer.json
index 1a30a22542..222e4ed045 100644
--- a/composer.json
+++ b/composer.json
@@ -12,41 +12,41 @@
],
"require": {
"php": "^8.4",
- "danharrin/livewire-rate-limiting": "^2.2.1",
- "doctrine/dbal": "^4.4.4",
- "firebase/php-jwt": "^7.1.0",
- "guzzlehttp/guzzle": "^7.15.3",
- "laravel/fortify": "^1.37.3",
+ "danharrin/livewire-rate-limiting": "^2.3.0",
+ "doctrine/dbal": "^4.5.0",
+ "firebase/php-jwt": "^7.2.1",
+ "guzzlehttp/guzzle": "^7.15.5",
+ "laravel/fortify": "^1.40.0",
"laravel/framework": "^12.69.3",
- "laravel/horizon": "^5.48.2",
+ "laravel/horizon": "^5.50.0",
"laravel/mcp": "^1.0.1",
"laravel/pail": "^1.2.7",
- "laravel/prompts": "^0.3.22",
- "laravel/reverb": "^1.11.1",
+ "laravel/prompts": "^0.3.24",
+ "laravel/reverb": "^1.12.0",
"laravel/sanctum": "^4.3.3",
- "laravel/socialite": "^5.29.0",
+ "laravel/socialite": "^5.30.0",
"laravel/tinker": "^2.11.1",
"laravel/ui": "^4.6.3",
"lcobucci/jwt": "^5.6.0",
- "league/flysystem-aws-s3-v3": "^3.35.2",
- "league/flysystem-sftp-v3": "^3.33.0",
- "livewire/livewire": "^3.8.7",
+ "league/flysystem-aws-s3-v3": "^3.35.3",
+ "league/flysystem-sftp-v3": "^3.36.0",
+ "livewire/livewire": "^3.8.10",
"log1x/laravel-webfonts": "^2.0.1",
- "lorisleiva/laravel-actions": "^2.10.2",
+ "lorisleiva/laravel-actions": "^2.12.0",
"nubs/random-name-generator": "^2.2.0",
"phpseclib/phpseclib": "^3.0.57",
"pion/laravel-chunk-upload": "^1.6.3",
"poliander/cron": "^3.3.1",
- "purplepixie/phpdns": "^2.3.6",
+ "purplepixie/phpdns": "^2.4.0",
"pusher/pusher-php-server": "^7.3.0",
- "resend/resend-laravel": "^1.5.0",
- "sentry/sentry-laravel": "^4.27.0",
+ "resend/resend-laravel": "^1.6.0",
+ "sentry/sentry-laravel": "^4.28.0",
"socialiteproviders/authentik": "^5.3.0",
"socialiteproviders/clerk": "^5.1.0",
"socialiteproviders/discord": "^4.2.0",
"socialiteproviders/google": "^4.1.0",
"socialiteproviders/infomaniak": "^4.0.0",
- "socialiteproviders/microsoft-azure": "^5.2.0",
+ "socialiteproviders/microsoft-azure": "^5.2.1",
"socialiteproviders/zitadel": "^4.2.0",
"spatie/laravel-activitylog": "^4.12.3",
"spatie/laravel-data": "^4.23.0",
@@ -55,25 +55,25 @@
"spatie/url": "^2.4.0",
"stevebauman/purify": "^6.3.2",
"stripe/stripe-php": "^16.6.0",
- "symfony/yaml": "^7.4.15",
+ "symfony/yaml": "^7.4.20",
"visus/cuid2": "^6.0.0",
"yosymfony/toml": "^1.0.4",
"zircote/swagger-php": "^5.8.3"
},
"require-dev": {
- "driftingly/rector-laravel": "^2.5.0",
+ "driftingly/rector-laravel": "^2.6.2",
"fakerphp/faker": "^1.24.1",
"laravel/boost": "^2.10.0",
- "laravel/pint": "^1.30.4",
+ "laravel/pint": "^1.32.1",
"laravel/vet": "^0.2.1",
- "mockery/mockery": "^1.6.12",
+ "mockery/mockery": "^1.6.15",
"nunomaduro/collision": "^8.9.5",
"pestphp/pest": "^4.7.8",
"pestphp/pest-plugin-browser": "^4.3.1",
- "phpstan/phpstan": "^2.2.8",
- "rector/rector": "^2.6.1",
- "serversideup/spin": "^3.3.0",
- "symfony/http-client": "^7.4.16"
+ "phpstan/phpstan": "^2.2.16",
+ "rector/rector": "^2.6.7",
+ "serversideup/spin": "^3.5.2",
+ "symfony/http-client": "^7.4.20"
},
"minimum-stability": "stable",
"prefer-stable": true,
diff --git a/composer.lock b/composer.lock
index 4445433131..7df96507d0 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": "657807c3680ec0ee72d6d70446605d39",
+ "content-hash": "6aa67566da21c08f267067cdbad6d18b",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -62,16 +62,16 @@
},
{
"name": "aws/aws-sdk-php",
- "version": "3.391.1",
+ "version": "3.398.4",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "90920ce5518aa864e04da0224bb0ba0ee9e31d7f"
+ "reference": "1dc5a7813aa23b65de0bfb6239b93387971f7143"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/90920ce5518aa864e04da0224bb0ba0ee9e31d7f",
- "reference": "90920ce5518aa864e04da0224bb0ba0ee9e31d7f",
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/1dc5a7813aa23b65de0bfb6239b93387971f7143",
+ "reference": "1dc5a7813aa23b65de0bfb6239b93387971f7143",
"shasum": ""
},
"require": {
@@ -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.391.1"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.398.4"
},
- "time": "2026-08-07T20:18:18+00:00"
+ "time": "2026-09-30T18:20:49+00:00"
},
{
"name": "bacon/bacon-qr-code",
@@ -274,16 +274,16 @@
},
{
"name": "carbonphp/carbon-doctrine-types",
- "version": "3.2.0",
+ "version": "3.2.1",
"source": {
"type": "git",
"url": "https://github.com/CarbonPHP/carbon-doctrine-types.git",
- "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d"
+ "reference": "5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
- "reference": "18ba5ddfec8976260ead6e866180bd5d2f71aa1d",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc",
+ "reference": "5fa5eacafd9ef47c8c6ab9143fc901ba0194d3dc",
"shasum": ""
},
"require": {
@@ -298,6 +298,11 @@
"phpunit/phpunit": "^10.3"
},
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Carbon\\Doctrine\\": "src/Carbon/Doctrine/"
@@ -323,7 +328,7 @@
],
"support": {
"issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues",
- "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.0"
+ "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/3.2.1"
},
"funding": [
{
@@ -339,7 +344,7 @@
"type": "tidelift"
}
],
- "time": "2024-02-09T16:56:22+00:00"
+ "time": "2026-09-06T14:11:38+00:00"
},
{
"name": "clue/redis-protocol",
@@ -473,16 +478,16 @@
},
{
"name": "danharrin/livewire-rate-limiting",
- "version": "v2.2.1",
+ "version": "v2.3.0",
"source": {
"type": "git",
"url": "https://github.com/danharrin/livewire-rate-limiting.git",
- "reference": "69436717dc70e30f80d7f8fd02504c22992a9ad5"
+ "reference": "46c4ceaf7997c713c79afe7c507a39649f6c9d6f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/69436717dc70e30f80d7f8fd02504c22992a9ad5",
- "reference": "69436717dc70e30f80d7f8fd02504c22992a9ad5",
+ "url": "https://api.github.com/repos/danharrin/livewire-rate-limiting/zipball/46c4ceaf7997c713c79afe7c507a39649f6c9d6f",
+ "reference": "46c4ceaf7997c713c79afe7c507a39649f6c9d6f",
"shasum": ""
},
"require": {
@@ -523,7 +528,7 @@
"type": "github"
}
],
- "time": "2026-08-06T08:41:51+00:00"
+ "time": "2026-09-18T07:38:01+00:00"
},
{
"name": "dasprid/enum",
@@ -652,16 +657,16 @@
},
{
"name": "doctrine/dbal",
- "version": "4.4.4",
+ "version": "4.5.0",
"source": {
"type": "git",
"url": "https://github.com/doctrine/dbal.git",
- "reference": "fb9e0ffe15e1590e24dc61c0c0a23f9a33ee42ce"
+ "reference": "c435cd7ea33e17d2a89288caf994cf3d4549b879"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/dbal/zipball/fb9e0ffe15e1590e24dc61c0c0a23f9a33ee42ce",
- "reference": "fb9e0ffe15e1590e24dc61c0c0a23f9a33ee42ce",
+ "url": "https://api.github.com/repos/doctrine/dbal/zipball/c435cd7ea33e17d2a89288caf994cf3d4549b879",
+ "reference": "c435cd7ea33e17d2a89288caf994cf3d4549b879",
"shasum": ""
},
"require": {
@@ -677,9 +682,9 @@
"phpstan/phpstan": "2.1.30",
"phpstan/phpstan-phpunit": "2.0.7",
"phpstan/phpstan-strict-rules": "^2",
- "phpunit/phpunit": "11.5.50",
- "slevomat/coding-standard": "8.27.1",
- "squizlabs/php_codesniffer": "4.0.1",
+ "phpunit/phpunit": "11.5.56",
+ "slevomat/coding-standard": "8.31.1",
+ "squizlabs/php_codesniffer": "4.0.4",
"symfony/cache": "^6.3.8|^7.0|^8.0",
"symfony/console": "^5.4|^6.3|^7.0|^8.0"
},
@@ -738,7 +743,7 @@
],
"support": {
"issues": "https://github.com/doctrine/dbal/issues",
- "source": "https://github.com/doctrine/dbal/tree/4.4.4"
+ "source": "https://github.com/doctrine/dbal/tree/4.5.0"
},
"funding": [
{
@@ -754,7 +759,7 @@
"type": "tidelift"
}
],
- "time": "2026-07-21T14:34:40+00:00"
+ "time": "2026-09-24T16:11:26+00:00"
},
{
"name": "doctrine/deprecations",
@@ -1149,16 +1154,16 @@
},
{
"name": "ezyang/htmlpurifier",
- "version": "v4.19.0",
+ "version": "v4.19.1",
"source": {
"type": "git",
"url": "https://github.com/ezyang/htmlpurifier.git",
- "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf"
+ "reference": "5e0539132d934f936fbae2c88b55d58f9438623f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/b287d2a16aceffbf6e0295559b39662612b77fcf",
- "reference": "b287d2a16aceffbf6e0295559b39662612b77fcf",
+ "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/5e0539132d934f936fbae2c88b55d58f9438623f",
+ "reference": "5e0539132d934f936fbae2c88b55d58f9438623f",
"shasum": ""
},
"require": {
@@ -1204,32 +1209,32 @@
],
"support": {
"issues": "https://github.com/ezyang/htmlpurifier/issues",
- "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.0"
+ "source": "https://github.com/ezyang/htmlpurifier/tree/v4.19.1"
},
- "time": "2025-10-17T16:34:55+00:00"
+ "time": "2026-09-15T15:42:51+00:00"
},
{
"name": "firebase/php-jwt",
- "version": "v7.1.0",
+ "version": "v7.2.1",
"source": {
"type": "git",
"url": "https://github.com/googleapis/php-jwt.git",
- "reference": "b374a5d1a4f1f67fadc2165cdb284645945e2fc0"
+ "reference": "0501f5729b9e2448516674aff07c7d1727869b8e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/b374a5d1a4f1f67fadc2165cdb284645945e2fc0",
- "reference": "b374a5d1a4f1f67fadc2165cdb284645945e2fc0",
+ "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/0501f5729b9e2448516674aff07c7d1727869b8e",
+ "reference": "0501f5729b9e2448516674aff07c7d1727869b8e",
"shasum": ""
},
"require": {
"php": "^8.0"
},
"require-dev": {
- "guzzlehttp/guzzle": "^7.4",
+ "guzzlehttp/guzzle": "^7.4||^8.0",
"phpfastcache/phpfastcache": "^9.2",
"phpseclib/phpseclib": "~3.0",
- "phpspec/prophecy-phpunit": "^2.0",
+ "phpspec/prophecy-phpunit": "^2.2",
"phpunit/phpunit": "^9.5",
"psr/cache": "^2.0||^3.0",
"psr/http-client": "^1.0",
@@ -1241,6 +1246,14 @@
"phpseclib/phpseclib": "Support PS256 (RSASSA-PSS) signatures"
},
"type": "library",
+ "extra": {
+ "component": {
+ "id": "jwt",
+ "path": "Jwt",
+ "entry": "README.md",
+ "target": "googleapis/php-jwt.git"
+ }
+ },
"autoload": {
"psr-4": {
"Firebase\\JWT\\": "src"
@@ -1270,9 +1283,9 @@
],
"support": {
"issues": "https://github.com/googleapis/php-jwt/issues",
- "source": "https://github.com/googleapis/php-jwt/tree/v7.1.0"
+ "source": "https://github.com/googleapis/php-jwt/tree/v7.2.1"
},
- "time": "2026-06-11T17:54:14+00:00"
+ "time": "2026-09-28T17:51:46+00:00"
},
{
"name": "fruitcake/php-cors",
@@ -1347,24 +1360,24 @@
},
{
"name": "graham-campbell/result-type",
- "version": "v1.1.4",
+ "version": "v1.2.0",
"source": {
"type": "git",
"url": "https://github.com/GrahamCampbell/Result-Type.git",
- "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b"
+ "reference": "adccca3324eece92ca35463648c12b9e6293c05b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b",
- "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b",
+ "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/adccca3324eece92ca35463648c12b9e6293c05b",
+ "reference": "adccca3324eece92ca35463648c12b9e6293c05b",
"shasum": ""
},
"require": {
"php": "^7.2.5 || ^8.0",
- "phpoption/phpoption": "^1.9.5"
+ "phpoption/phpoption": "^1.10"
},
"require-dev": {
- "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7"
+ "phpunit/phpunit": "^8.5.52 || ^9.6.34 || ^10.5.63 || ^11.5.55 || ^12.5.14"
},
"type": "library",
"autoload": {
@@ -1393,7 +1406,7 @@
],
"support": {
"issues": "https://github.com/GrahamCampbell/Result-Type/issues",
- "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4"
+ "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.2.0"
},
"funding": [
{
@@ -1405,26 +1418,26 @@
"type": "tidelift"
}
],
- "time": "2025-12-27T19:43:20+00:00"
+ "time": "2026-08-24T09:06:52+00:00"
},
{
"name": "guzzlehttp/guzzle",
- "version": "7.15.3",
+ "version": "7.15.5",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
- "reference": "ae311b8f045ea93ce7b1c9cdb7cec06c53f944bc"
+ "reference": "ee80339fd9177ba44c49cdb653ff02a4d1106b9a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ae311b8f045ea93ce7b1c9cdb7cec06c53f944bc",
- "reference": "ae311b8f045ea93ce7b1c9cdb7cec06c53f944bc",
+ "url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee80339fd9177ba44c49cdb653ff02a4d1106b9a",
+ "reference": "ee80339fd9177ba44c49cdb653ff02a4d1106b9a",
"shasum": ""
},
"require": {
"ext-json": "*",
- "guzzlehttp/promises": "^2.5.2",
- "guzzlehttp/psr7": "^2.13",
+ "guzzlehttp/promises": "^2.5.3",
+ "guzzlehttp/psr7": "^2.13.1",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.5 || ^3.0",
@@ -1517,7 +1530,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
- "source": "https://github.com/guzzle/guzzle/tree/7.15.3"
+ "source": "https://github.com/guzzle/guzzle/tree/7.15.5"
},
"funding": [
{
@@ -1533,20 +1546,20 @@
"type": "tidelift"
}
],
- "time": "2026-08-05T19:48:21+00:00"
+ "time": "2026-08-24T09:21:06+00:00"
},
{
"name": "guzzlehttp/promises",
- "version": "2.5.2",
+ "version": "2.5.3",
"source": {
"type": "git",
"url": "https://github.com/guzzle/promises.git",
- "reference": "2823687acff28b2dbe67b2508a6b300e2c3fa4ce"
+ "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/promises/zipball/2823687acff28b2dbe67b2508a6b300e2c3fa4ce",
- "reference": "2823687acff28b2dbe67b2508a6b300e2c3fa4ce",
+ "url": "https://api.github.com/repos/guzzle/promises/zipball/cde49999552d185d64715fe9c1f77a2aadd2f9f1",
+ "reference": "cde49999552d185d64715fe9c1f77a2aadd2f9f1",
"shasum": ""
},
"require": {
@@ -1601,7 +1614,7 @@
],
"support": {
"issues": "https://github.com/guzzle/promises/issues",
- "source": "https://github.com/guzzle/promises/tree/2.5.2"
+ "source": "https://github.com/guzzle/promises/tree/2.5.3"
},
"funding": [
{
@@ -1617,7 +1630,7 @@
"type": "tidelift"
}
],
- "time": "2026-08-05T19:30:54+00:00"
+ "time": "2026-08-24T09:11:28+00:00"
},
{
"name": "guzzlehttp/psr7",
@@ -1740,16 +1753,16 @@
},
{
"name": "guzzlehttp/uri-template",
- "version": "v1.0.10",
+ "version": "v1.0.11",
"source": {
"type": "git",
"url": "https://github.com/guzzle/uri-template.git",
- "reference": "f6c24c21f42b990e9a58912b332d0874df6ba839"
+ "reference": "d0058dccf4299d70c3d9da3378b8908b32780368"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/guzzle/uri-template/zipball/f6c24c21f42b990e9a58912b332d0874df6ba839",
- "reference": "f6c24c21f42b990e9a58912b332d0874df6ba839",
+ "url": "https://api.github.com/repos/guzzle/uri-template/zipball/d0058dccf4299d70c3d9da3378b8908b32780368",
+ "reference": "d0058dccf4299d70c3d9da3378b8908b32780368",
"shasum": ""
},
"require": {
@@ -1806,7 +1819,7 @@
],
"support": {
"issues": "https://github.com/guzzle/uri-template/issues",
- "source": "https://github.com/guzzle/uri-template/tree/v1.0.10"
+ "source": "https://github.com/guzzle/uri-template/tree/v1.0.11"
},
"funding": [
{
@@ -1822,7 +1835,7 @@
"type": "tidelift"
}
],
- "time": "2026-07-17T13:53:03+00:00"
+ "time": "2026-08-24T09:15:32+00:00"
},
{
"name": "jean85/pretty-package-versions",
@@ -1886,16 +1899,16 @@
},
{
"name": "laravel/fortify",
- "version": "v1.37.3",
+ "version": "v1.40.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/fortify.git",
- "reference": "66b9503330e7c18b3edebb9c3b4087037826573b"
+ "reference": "fe0fce8814660317df0684f2c7be3b573def67d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/fortify/zipball/66b9503330e7c18b3edebb9c3b4087037826573b",
- "reference": "66b9503330e7c18b3edebb9c3b4087037826573b",
+ "url": "https://api.github.com/repos/laravel/fortify/zipball/fe0fce8814660317df0684f2c7be3b573def67d3",
+ "reference": "fe0fce8814660317df0684f2c7be3b573def67d3",
"shasum": ""
},
"require": {
@@ -1909,7 +1922,7 @@
},
"require-dev": {
"orchestra/testbench": "^9.15|^10.8|^11.0",
- "phpstan/phpstan": "^1.10"
+ "phpstan/phpstan": "^2.2.6"
},
"type": "library",
"extra": {
@@ -1946,7 +1959,7 @@
"issues": "https://github.com/laravel/fortify/issues",
"source": "https://github.com/laravel/fortify"
},
- "time": "2026-06-29T16:22:02+00:00"
+ "time": "2026-09-10T11:52:08+00:00"
},
{
"name": "laravel/framework",
@@ -2172,16 +2185,16 @@
},
{
"name": "laravel/horizon",
- "version": "v5.48.2",
+ "version": "v5.50.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/horizon.git",
- "reference": "2ebe3cb25ab6461b53a4e3ef42e167edeafe7932"
+ "reference": "009177cc3d0829c839c8ab573dd17d158fc0b71e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/horizon/zipball/2ebe3cb25ab6461b53a4e3ef42e167edeafe7932",
- "reference": "2ebe3cb25ab6461b53a4e3ef42e167edeafe7932",
+ "url": "https://api.github.com/repos/laravel/horizon/zipball/009177cc3d0829c839c8ab573dd17d158fc0b71e",
+ "reference": "009177cc3d0829c839c8ab573dd17d158fc0b71e",
"shasum": ""
},
"require": {
@@ -2246,9 +2259,9 @@
],
"support": {
"issues": "https://github.com/laravel/horizon/issues",
- "source": "https://github.com/laravel/horizon/tree/v5.48.2"
+ "source": "https://github.com/laravel/horizon/tree/v5.50.0"
},
- "time": "2026-07-27T13:13:49+00:00"
+ "time": "2026-09-15T13:59:54+00:00"
},
{
"name": "laravel/mcp",
@@ -2474,16 +2487,16 @@
},
{
"name": "laravel/prompts",
- "version": "v0.3.22",
+ "version": "v0.3.24",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
- "reference": "02b89b39e8972a998db4d5d4ad4719239dd4aee4"
+ "reference": "5d3cdef29e93ca3b62b1871359db3078cd99908b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/prompts/zipball/02b89b39e8972a998db4d5d4ad4719239dd4aee4",
- "reference": "02b89b39e8972a998db4d5d4ad4719239dd4aee4",
+ "url": "https://api.github.com/repos/laravel/prompts/zipball/5d3cdef29e93ca3b62b1871359db3078cd99908b",
+ "reference": "5d3cdef29e93ca3b62b1871359db3078cd99908b",
"shasum": ""
},
"require": {
@@ -2527,22 +2540,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.22"
+ "source": "https://github.com/laravel/prompts/tree/v0.3.24"
},
- "time": "2026-08-04T14:50:50+00:00"
+ "time": "2026-08-20T12:55:36+00:00"
},
{
"name": "laravel/reverb",
- "version": "v1.11.1",
+ "version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/reverb.git",
- "reference": "52ce5fd88cd1d7eacfdcf6b91cea4704cc546f27"
+ "reference": "e233471f53641a447d3b7a2150446d47a0e8c043"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/reverb/zipball/52ce5fd88cd1d7eacfdcf6b91cea4704cc546f27",
- "reference": "52ce5fd88cd1d7eacfdcf6b91cea4704cc546f27",
+ "url": "https://api.github.com/repos/laravel/reverb/zipball/e233471f53641a447d3b7a2150446d47a0e8c043",
+ "reference": "e233471f53641a447d3b7a2150446d47a0e8c043",
"shasum": ""
},
"require": {
@@ -2562,6 +2575,7 @@
"symfony/http-foundation": "^6.3|^7.0|^8.0"
},
"require-dev": {
+ "jasonmccreary/double": "~0.10",
"orchestra/testbench": "^8.36|^9.15|^10.8|^11.0",
"pestphp/pest": "^2.0|^3.0|^4.0",
"phpstan/phpstan": "^1.10",
@@ -2605,10 +2619,9 @@
"websocket"
],
"support": {
- "issues": "https://github.com/laravel/reverb/issues",
- "source": "https://github.com/laravel/reverb/tree/v1.11.1"
+ "source": "https://github.com/laravel/reverb/tree/v1.12.0"
},
- "time": "2026-08-06T14:48:58+00:00"
+ "time": "2026-09-22T14:25:47+00:00"
},
{
"name": "laravel/sanctum",
@@ -2731,16 +2744,16 @@
},
{
"name": "laravel/serializable-closure",
- "version": "v2.0.15",
+ "version": "v2.1.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/serializable-closure.git",
- "reference": "dccd8bcb851bb03fcc005df650b708b57cc52661"
+ "reference": "2d5869a838bbcf37e0d8b0568fc41914e81374b5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/dccd8bcb851bb03fcc005df650b708b57cc52661",
- "reference": "dccd8bcb851bb03fcc005df650b708b57cc52661",
+ "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/2d5869a838bbcf37e0d8b0568fc41914e81374b5",
+ "reference": "2d5869a838bbcf37e0d8b0568fc41914e81374b5",
"shasum": ""
},
"require": {
@@ -2788,20 +2801,20 @@
"issues": "https://github.com/laravel/serializable-closure/issues",
"source": "https://github.com/laravel/serializable-closure"
},
- "time": "2026-07-21T16:49:22+00:00"
+ "time": "2026-09-22T14:32:34+00:00"
},
{
"name": "laravel/socialite",
- "version": "v5.29.0",
+ "version": "v5.30.0",
"source": {
"type": "git",
"url": "https://github.com/laravel/socialite.git",
- "reference": "cd343a5841f02292af119ee607edc71300c9ae4f"
+ "reference": "caf714f55d51ab0d914b40033d8b0f489d6219cc"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/socialite/zipball/cd343a5841f02292af119ee607edc71300c9ae4f",
- "reference": "cd343a5841f02292af119ee607edc71300c9ae4f",
+ "url": "https://api.github.com/repos/laravel/socialite/zipball/caf714f55d51ab0d914b40033d8b0f489d6219cc",
+ "reference": "caf714f55d51ab0d914b40033d8b0f489d6219cc",
"shasum": ""
},
"require": {
@@ -2860,7 +2873,7 @@
"issues": "https://github.com/laravel/socialite/issues",
"source": "https://github.com/laravel/socialite"
},
- "time": "2026-07-01T13:50:23+00:00"
+ "time": "2026-08-13T23:01:33+00:00"
},
{
"name": "laravel/tinker",
@@ -3338,16 +3351,16 @@
},
{
"name": "league/flysystem-aws-s3-v3",
- "version": "3.35.2",
+ "version": "3.35.3",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git",
- "reference": "8475ef9adfc6498b85469e2abec6fe3118cd08c4"
+ "reference": "b03780cb97585ee7e48977f40ed599b33b751634"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/8475ef9adfc6498b85469e2abec6fe3118cd08c4",
- "reference": "8475ef9adfc6498b85469e2abec6fe3118cd08c4",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/b03780cb97585ee7e48977f40ed599b33b751634",
+ "reference": "b03780cb97585ee7e48977f40ed599b33b751634",
"shasum": ""
},
"require": {
@@ -3387,9 +3400,9 @@
"storage"
],
"support": {
- "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.35.2"
+ "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.35.3"
},
- "time": "2026-07-01T23:25:49+00:00"
+ "time": "2026-08-08T16:19:23+00:00"
},
{
"name": "league/flysystem-local",
@@ -3442,16 +3455,16 @@
},
{
"name": "league/flysystem-sftp-v3",
- "version": "3.33.0",
+ "version": "3.36.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/flysystem-sftp-v3.git",
- "reference": "34ff5ef0f841add92e2b902c1005f72135b03646"
+ "reference": "5004b451cedd3bc4fdf84fcd427b858ec1b66a02"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/flysystem-sftp-v3/zipball/34ff5ef0f841add92e2b902c1005f72135b03646",
- "reference": "34ff5ef0f841add92e2b902c1005f72135b03646",
+ "url": "https://api.github.com/repos/thephpleague/flysystem-sftp-v3/zipball/5004b451cedd3bc4fdf84fcd427b858ec1b66a02",
+ "reference": "5004b451cedd3bc4fdf84fcd427b858ec1b66a02",
"shasum": ""
},
"require": {
@@ -3485,9 +3498,9 @@
"sftp"
],
"support": {
- "source": "https://github.com/thephpleague/flysystem-sftp-v3/tree/3.33.0"
+ "source": "https://github.com/thephpleague/flysystem-sftp-v3/tree/3.36.0"
},
- "time": "2026-03-20T13:22:31+00:00"
+ "time": "2026-09-02T07:49:56+00:00"
},
{
"name": "league/mime-type-detection",
@@ -3547,23 +3560,23 @@
},
{
"name": "league/oauth1-client",
- "version": "v1.11.0",
+ "version": "v1.12.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/oauth1-client.git",
- "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055"
+ "reference": "aa8fe766f772f9233d6c06f9ef003fd8129e408d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/f9c94b088837eb1aae1ad7c4f23eb65cc6993055",
- "reference": "f9c94b088837eb1aae1ad7c4f23eb65cc6993055",
+ "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/aa8fe766f772f9233d6c06f9ef003fd8129e408d",
+ "reference": "aa8fe766f772f9233d6c06f9ef003fd8129e408d",
"shasum": ""
},
"require": {
"ext-json": "*",
"ext-openssl": "*",
- "guzzlehttp/guzzle": "^6.0|^7.0",
- "guzzlehttp/psr7": "^1.7|^2.0",
+ "guzzlehttp/guzzle": "^6.5.8||^7.8.2||^8.0",
+ "guzzlehttp/psr7": "^1.9.1||^2.6.3||^3.0",
"php": ">=7.1||>=8.0"
},
"require-dev": {
@@ -3617,9 +3630,9 @@
],
"support": {
"issues": "https://github.com/thephpleague/oauth1-client/issues",
- "source": "https://github.com/thephpleague/oauth1-client/tree/v1.11.0"
+ "source": "https://github.com/thephpleague/oauth1-client/tree/v1.12.0"
},
- "time": "2024-12-10T19:59:05+00:00"
+ "time": "2026-09-19T05:12:51+00:00"
},
{
"name": "league/uri",
@@ -3805,16 +3818,16 @@
},
{
"name": "livewire/livewire",
- "version": "v3.8.7",
+ "version": "v3.8.10",
"source": {
"type": "git",
"url": "https://github.com/livewire/livewire.git",
- "reference": "ff019f8f6f48b7a2315922e45a70ad8fd75d1934"
+ "reference": "3adc7ff5d0898876f9848ab155310a296c717c1b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/livewire/livewire/zipball/ff019f8f6f48b7a2315922e45a70ad8fd75d1934",
- "reference": "ff019f8f6f48b7a2315922e45a70ad8fd75d1934",
+ "url": "https://api.github.com/repos/livewire/livewire/zipball/3adc7ff5d0898876f9848ab155310a296c717c1b",
+ "reference": "3adc7ff5d0898876f9848ab155310a296c717c1b",
"shasum": ""
},
"require": {
@@ -3869,7 +3882,7 @@
"description": "A front-end framework for Laravel.",
"support": {
"issues": "https://github.com/livewire/livewire/issues",
- "source": "https://github.com/livewire/livewire/tree/v3.8.7"
+ "source": "https://github.com/livewire/livewire/tree/v3.8.10"
},
"funding": [
{
@@ -3877,7 +3890,7 @@
"type": "github"
}
],
- "time": "2026-08-31T15:40:46+00:00"
+ "time": "2026-09-28T18:12:47+00:00"
},
{
"name": "log1x/laravel-webfonts",
@@ -3943,16 +3956,16 @@
},
{
"name": "lorisleiva/laravel-actions",
- "version": "v2.10.2",
+ "version": "v2.12.0",
"source": {
"type": "git",
"url": "https://github.com/lorisleiva/laravel-actions.git",
- "reference": "40da1bbd3cf115f4e885c197b91777d596c9317a"
+ "reference": "8d58b11d4fbca08fbcdb87243a4607bb3ae1db8d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/lorisleiva/laravel-actions/zipball/40da1bbd3cf115f4e885c197b91777d596c9317a",
- "reference": "40da1bbd3cf115f4e885c197b91777d596c9317a",
+ "url": "https://api.github.com/repos/lorisleiva/laravel-actions/zipball/8d58b11d4fbca08fbcdb87243a4607bb3ae1db8d",
+ "reference": "8d58b11d4fbca08fbcdb87243a4607bb3ae1db8d",
"shasum": ""
},
"require": {
@@ -3961,8 +3974,13 @@
"php": "^8.2"
},
"require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "larastan/larastan": "^3.0",
"orchestra/testbench": "^9.0|^10.0|^11.0",
"pestphp/pest": "^3.0|^4.0",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan": "^2.1",
+ "phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^11.5|^12.0"
},
"type": "library",
@@ -3974,6 +3992,11 @@
"providers": [
"Lorisleiva\\Actions\\ActionServiceProvider"
]
+ },
+ "phpstan": {
+ "includes": [
+ "extension.neon"
+ ]
}
},
"autoload": {
@@ -4007,7 +4030,7 @@
],
"support": {
"issues": "https://github.com/lorisleiva/laravel-actions/issues",
- "source": "https://github.com/lorisleiva/laravel-actions/tree/v2.10.2"
+ "source": "https://github.com/lorisleiva/laravel-actions/tree/v2.12.0"
},
"funding": [
{
@@ -4015,20 +4038,20 @@
"type": "github"
}
],
- "time": "2026-07-26T11:03:26+00:00"
+ "time": "2026-08-25T14:17:11+00:00"
},
{
"name": "lorisleiva/lody",
- "version": "v0.7.0",
+ "version": "v0.7.1",
"source": {
"type": "git",
"url": "https://github.com/lorisleiva/lody.git",
- "reference": "82ecb6faa55fb20109e6959f42f0f652cd77674b"
+ "reference": "018d3d384872d4b28f5194dae5fd05894db7fabe"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/lorisleiva/lody/zipball/82ecb6faa55fb20109e6959f42f0f652cd77674b",
- "reference": "82ecb6faa55fb20109e6959f42f0f652cd77674b",
+ "url": "https://api.github.com/repos/lorisleiva/lody/zipball/018d3d384872d4b28f5194dae5fd05894db7fabe",
+ "reference": "018d3d384872d4b28f5194dae5fd05894db7fabe",
"shasum": ""
},
"require": {
@@ -4079,7 +4102,7 @@
],
"support": {
"issues": "https://github.com/lorisleiva/lody/issues",
- "source": "https://github.com/lorisleiva/lody/tree/v0.7.0"
+ "source": "https://github.com/lorisleiva/lody/tree/v0.7.1"
},
"funding": [
{
@@ -4087,20 +4110,20 @@
"type": "github"
}
],
- "time": "2026-03-18T12:49:31+00:00"
+ "time": "2026-09-01T11:53:49+00:00"
},
{
"name": "monolog/monolog",
- "version": "3.10.0",
+ "version": "3.12.1",
"source": {
"type": "git",
"url": "https://github.com/Seldaek/monolog.git",
- "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0"
+ "reference": "d7059e4c691d05ea1222b5124bed0f961be46e15"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0",
- "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d7059e4c691d05ea1222b5124bed0f961be46e15",
+ "reference": "d7059e4c691d05ea1222b5124bed0f961be46e15",
"shasum": ""
},
"require": {
@@ -4126,6 +4149,7 @@
"phpstan/phpstan-strict-rules": "^2",
"phpunit/phpunit": "^10.5.17 || ^11.0.7",
"predis/predis": "^1.1 || ^2",
+ "psr/clock": "^1.0",
"rollbar/rollbar": "^4.0",
"ruflin/elastica": "^7 || ^8",
"symfony/mailer": "^5.4 || ^6",
@@ -4144,6 +4168,7 @@
"graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
"mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)",
"php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "psr/clock": "Required to pass a clock to the Logger and control the timestamp of log records",
"rollbar/rollbar": "Allow sending log messages to Rollbar",
"ruflin/elastica": "Allow sending log messages to an Elastic Search server"
},
@@ -4178,7 +4203,7 @@
],
"support": {
"issues": "https://github.com/Seldaek/monolog/issues",
- "source": "https://github.com/Seldaek/monolog/tree/3.10.0"
+ "source": "https://github.com/Seldaek/monolog/tree/3.12.1"
},
"funding": [
{
@@ -4190,7 +4215,7 @@
"type": "tidelift"
}
],
- "time": "2026-01-02T08:56:05+00:00"
+ "time": "2026-09-29T19:21:12+00:00"
},
{
"name": "mtdowling/jmespath.php",
@@ -4260,16 +4285,16 @@
},
{
"name": "nesbot/carbon",
- "version": "3.13.2",
+ "version": "3.14.1",
"source": {
"type": "git",
"url": "https://github.com/CarbonPHP/carbon.git",
- "reference": "a1c54919f5fff9800cd03c32bd01defd5a4061cb"
+ "reference": "34e9109535165bf1d7ff17a610492372ae73a896"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/a1c54919f5fff9800cd03c32bd01defd5a4061cb",
- "reference": "a1c54919f5fff9800cd03c32bd01defd5a4061cb",
+ "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/34e9109535165bf1d7ff17a610492372ae73a896",
+ "reference": "34e9109535165bf1d7ff17a610492372ae73a896",
"shasum": ""
},
"require": {
@@ -4361,7 +4386,7 @@
"type": "tidelift"
}
],
- "time": "2026-08-08T11:40:35+00:00"
+ "time": "2026-09-27T12:07:26+00:00"
},
{
"name": "nette/schema",
@@ -4523,16 +4548,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v5.8.0",
+ "version": "v5.9.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f"
+ "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/044a6a392ff8ad0d61f14370a5fbbd0a0107152f",
- "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9e33da9553fe7786f0962b35f4e4ecf01be89def",
+ "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def",
"shasum": ""
},
"require": {
@@ -4574,9 +4599,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.8.0"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.9.0"
},
- "time": "2026-07-04T14:30:18+00:00"
+ "time": "2026-09-13T18:51:52+00:00"
},
{
"name": "nubs/random-name-generator",
@@ -4917,20 +4942,25 @@
},
{
"name": "phpdocumentor/reflection-common",
- "version": "2.2.0",
+ "version": "2.2.1",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionCommon.git",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
- "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/ee15a5a2022c8383906b225055e9496a6a5e6e3b",
+ "reference": "ee15a5a2022c8383906b225055e9496a6a5e6e3b",
"shasum": ""
},
"require": {
- "php": "^7.2 || ^8.0"
+ "php": "^7.4 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.8",
+ "phpunit/phpunit": "^9.5",
+ "vimeo/psalm": "^4.25"
},
"type": "library",
"extra": {
@@ -4954,7 +4984,7 @@
}
],
"description": "Common reflection classes used by phpdocumentor to reflect the code structure",
- "homepage": "http://www.phpdoc.org",
+ "homepage": "https://www.phpdoc.org",
"keywords": [
"FQSEN",
"phpDocumentor",
@@ -4964,9 +4994,9 @@
],
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
- "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.2.1"
},
- "time": "2020-06-27T09:03:43+00:00"
+ "time": "2025-11-10T21:21:55+00:00"
},
{
"name": "phpdocumentor/reflection-docblock",
@@ -5035,16 +5065,16 @@
},
{
"name": "phpdocumentor/type-resolver",
- "version": "2.0.0",
+ "version": "2.1.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9"
+ "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/327a05bbee54120d4786a0dc67aad30226ad4cf9",
- "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dbe2133bb23e2e33a6834f4ed417f24a1b167769",
+ "reference": "dbe2133bb23e2e33a6834f4ed417f24a1b167769",
"shasum": ""
},
"require": {
@@ -5087,22 +5117,22 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.0.0"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.1.0"
},
- "time": "2026-01-06T21:53:42+00:00"
+ "time": "2026-09-27T19:32:54+00:00"
},
{
"name": "phpoption/phpoption",
- "version": "1.9.5",
+ "version": "1.10.0",
"source": {
"type": "git",
"url": "https://github.com/schmittjoh/php-option.git",
- "reference": "75365b91986c2405cf5e1e012c5595cd487a98be"
+ "reference": "67b192b6a42ec03944b972d6e633ddec78ad2c6d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be",
- "reference": "75365b91986c2405cf5e1e012c5595cd487a98be",
+ "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/67b192b6a42ec03944b972d6e633ddec78ad2c6d",
+ "reference": "67b192b6a42ec03944b972d6e633ddec78ad2c6d",
"shasum": ""
},
"require": {
@@ -5110,7 +5140,7 @@
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.8.2",
- "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34"
+ "phpunit/phpunit": "^8.5.54 || ^9.6.36 || ^10.5.64 || ^11.5.56 || ^12.5.33"
},
"type": "library",
"extra": {
@@ -5152,7 +5182,7 @@
],
"support": {
"issues": "https://github.com/schmittjoh/php-option/issues",
- "source": "https://github.com/schmittjoh/php-option/tree/1.9.5"
+ "source": "https://github.com/schmittjoh/php-option/tree/1.10.0"
},
"funding": [
{
@@ -5164,7 +5194,7 @@
"type": "tidelift"
}
],
- "time": "2025-12-27T19:41:33+00:00"
+ "time": "2026-08-24T00:54:40+00:00"
},
{
"name": "phpseclib/phpseclib",
@@ -5278,16 +5308,16 @@
},
{
"name": "phpstan/phpdoc-parser",
- "version": "2.3.3",
+ "version": "2.3.6",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "fb19eedd2bb67ff8cf7a5502ad329e701d6398a3"
+ "reference": "1427af4647235b4a73b13940b1f1258d3584f36e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fb19eedd2bb67ff8cf7a5502ad329e701d6398a3",
- "reference": "fb19eedd2bb67ff8cf7a5502ad329e701d6398a3",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1427af4647235b4a73b13940b1f1258d3584f36e",
+ "reference": "1427af4647235b4a73b13940b1f1258d3584f36e",
"shasum": ""
},
"require": {
@@ -5319,9 +5349,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.3"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.6"
},
- "time": "2026-07-08T07:01:06+00:00"
+ "time": "2026-09-27T20:07:45+00:00"
},
{
"name": "pion/laravel-chunk-upload",
@@ -5438,16 +5468,16 @@
},
{
"name": "pragmarx/google2fa",
- "version": "v9.0.0",
+ "version": "v9.1.0",
"source": {
"type": "git",
"url": "https://github.com/antonioribeiro/google2fa.git",
- "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf"
+ "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/e6bc62dd6ae83acc475f57912e27466019a1f2cf",
- "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf",
+ "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/f00bc788c555adfb6765c437ff3538e59cd88af1",
+ "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1",
"shasum": ""
},
"require": {
@@ -5455,8 +5485,11 @@
"php": "^7.1|^8.0"
},
"require-dev": {
- "phpstan/phpstan": "^1.9",
- "phpunit/phpunit": "^7.5.15|^8.5|^9.0"
+ "phpstan/phpstan": "^1.0|^2.0",
+ "phpstan/phpstan-phpunit": "^1.0|^2.0",
+ "phpunit/phpunit": "~9|~10|~11|~12|~13",
+ "psalm/plugin-phpunit": "^0.19|^0.20",
+ "vimeo/psalm": "^5.26|^6.13"
},
"type": "library",
"autoload": {
@@ -5479,14 +5512,23 @@
"keywords": [
"2fa",
"Authentication",
+ "MFA",
"Two Factor Authentication",
- "google2fa"
+ "google-authenticator",
+ "google2fa",
+ "hotp",
+ "otp",
+ "rfc4226",
+ "rfc6238",
+ "totp"
],
"support": {
+ "docs": "https://github.com/antonioribeiro/google2fa#readme",
"issues": "https://github.com/antonioribeiro/google2fa/issues",
- "source": "https://github.com/antonioribeiro/google2fa/tree/v9.0.0"
+ "security": "https://github.com/antonioribeiro/google2fa/security/policy",
+ "source": "https://github.com/antonioribeiro/google2fa"
},
- "time": "2025-09-19T22:51:08+00:00"
+ "time": "2026-08-15T13:22:01+00:00"
},
{
"name": "psr/cache",
@@ -6030,16 +6072,16 @@
},
{
"name": "purplepixie/phpdns",
- "version": "2.3.6",
+ "version": "2.4.0",
"source": {
"type": "git",
"url": "https://github.com/purplepixie/phpdns.git",
- "reference": "59e064513849adb426b416fef0717178a0a68a2d"
+ "reference": "51c838f6fd46a237d2ffa6fc12ecff6391ebcb20"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/purplepixie/phpdns/zipball/59e064513849adb426b416fef0717178a0a68a2d",
- "reference": "59e064513849adb426b416fef0717178a0a68a2d",
+ "url": "https://api.github.com/repos/purplepixie/phpdns/zipball/51c838f6fd46a237d2ffa6fc12ecff6391ebcb20",
+ "reference": "51c838f6fd46a237d2ffa6fc12ecff6391ebcb20",
"shasum": ""
},
"require": {
@@ -6072,9 +6114,9 @@
"description": "PHP DNS Direct Query Module",
"support": {
"issues": "https://github.com/purplepixie/phpdns/issues",
- "source": "https://github.com/purplepixie/phpdns/tree/2.3.6"
+ "source": "https://github.com/purplepixie/phpdns/tree/2.4.0"
},
- "time": "2025-11-03T12:17:11+00:00"
+ "time": "2026-09-06T10:05:57+00:00"
},
{
"name": "pusher/pusher-php-server",
@@ -6261,20 +6303,20 @@
},
{
"name": "ramsey/uuid",
- "version": "4.9.3",
+ "version": "4.9.4",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "1df15849d00943a67d677dc9cfd80795f038c9f8"
+ "reference": "75d73f48d02797c2c285a7e9f348fadc0102ffe2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/1df15849d00943a67d677dc9cfd80795f038c9f8",
- "reference": "1df15849d00943a67d677dc9cfd80795f038c9f8",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/75d73f48d02797c2c285a7e9f348fadc0102ffe2",
+ "reference": "75d73f48d02797c2c285a7e9f348fadc0102ffe2",
"shasum": ""
},
"require": {
- "brick/math": ">=0.8.16 <=0.18",
+ "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14 || ^0.15 || ^0.16 || ^0.17 || ^0.18 || ^0.19 || ^0.20 || ^1.0",
"php": "^8.0",
"ramsey/collection": "^1.2 || ^2.0"
},
@@ -6333,9 +6375,9 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.9.3"
+ "source": "https://github.com/ramsey/uuid/tree/4.9.4"
},
- "time": "2026-06-18T03:57:49+00:00"
+ "time": "2026-09-16T11:39:30+00:00"
},
{
"name": "ratchet/rfc6455",
@@ -6928,16 +6970,16 @@
},
{
"name": "resend/resend-laravel",
- "version": "v1.5.0",
+ "version": "v1.6.0",
"source": {
"type": "git",
"url": "https://github.com/resend/resend-laravel.git",
- "reference": "3f67df5b6f61353b09d7f849e6c81df8cdbc079f"
+ "reference": "56d09b18c8850396a36a7f81e3d98365fe51bc6b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/resend/resend-laravel/zipball/3f67df5b6f61353b09d7f849e6c81df8cdbc079f",
- "reference": "3f67df5b6f61353b09d7f849e6c81df8cdbc079f",
+ "url": "https://api.github.com/repos/resend/resend-laravel/zipball/56d09b18c8850396a36a7f81e3d98365fe51bc6b",
+ "reference": "56d09b18c8850396a36a7f81e3d98365fe51bc6b",
"shasum": ""
},
"require": {
@@ -6991,9 +7033,9 @@
],
"support": {
"issues": "https://github.com/resend/resend-laravel/issues",
- "source": "https://github.com/resend/resend-laravel/tree/v1.5.0"
+ "source": "https://github.com/resend/resend-laravel/tree/v1.6.0"
},
- "time": "2026-09-17T20:41:15+00:00"
+ "time": "2026-09-29T18:05:25+00:00"
},
{
"name": "resend/resend-php",
@@ -7056,16 +7098,16 @@
},
{
"name": "sentry/sentry",
- "version": "4.30.0",
+ "version": "4.32.0",
"source": {
"type": "git",
"url": "https://github.com/getsentry/sentry-php.git",
- "reference": "95a26e7c946651cacd69d1ded95a8190f952a3ae"
+ "reference": "c345642bdc0b678965a35ab61fc6323808eb3d2c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/95a26e7c946651cacd69d1ded95a8190f952a3ae",
- "reference": "95a26e7c946651cacd69d1ded95a8190f952a3ae",
+ "url": "https://api.github.com/repos/getsentry/sentry-php/zipball/c345642bdc0b678965a35ab61fc6323808eb3d2c",
+ "reference": "c345642bdc0b678965a35ab61fc6323808eb3d2c",
"shasum": ""
},
"require": {
@@ -7136,7 +7178,7 @@
],
"support": {
"issues": "https://github.com/getsentry/sentry-php/issues",
- "source": "https://github.com/getsentry/sentry-php/tree/4.30.0"
+ "source": "https://github.com/getsentry/sentry-php/tree/4.32.0"
},
"funding": [
{
@@ -7148,27 +7190,27 @@
"type": "custom"
}
],
- "time": "2026-08-05T14:54:26+00:00"
+ "time": "2026-09-24T13:32:44+00:00"
},
{
"name": "sentry/sentry-laravel",
- "version": "4.27.0",
+ "version": "4.28.0",
"source": {
"type": "git",
"url": "https://github.com/getsentry/sentry-laravel.git",
- "reference": "caa0ff39805a2eb8c70c4535a1443d7421c5a5b8"
+ "reference": "34bf18fbf99b884a9bfbb46957d0178d2d0b988e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/caa0ff39805a2eb8c70c4535a1443d7421c5a5b8",
- "reference": "caa0ff39805a2eb8c70c4535a1443d7421c5a5b8",
+ "url": "https://api.github.com/repos/getsentry/sentry-laravel/zipball/34bf18fbf99b884a9bfbb46957d0178d2d0b988e",
+ "reference": "34bf18fbf99b884a9bfbb46957d0178d2d0b988e",
"shasum": ""
},
"require": {
"illuminate/support": "^6.0 | ^7.0 | ^8.0 | ^9.0 | ^10.0 | ^11.0 | ^12.0 | ^13.0",
"nyholm/psr7": "^1.0",
"php": "^7.2 | ^8.0",
- "sentry/sentry": "^4.28.0",
+ "sentry/sentry": "^4.31.0",
"symfony/psr-http-message-bridge": "^1.0 | ^2.0 | ^6.0 | ^7.0 | ^8.0"
},
"require-dev": {
@@ -7228,7 +7270,7 @@
],
"support": {
"issues": "https://github.com/getsentry/sentry-laravel/issues",
- "source": "https://github.com/getsentry/sentry-laravel/tree/4.27.0"
+ "source": "https://github.com/getsentry/sentry-laravel/tree/4.28.0"
},
"funding": [
{
@@ -7240,7 +7282,7 @@
"type": "custom"
}
],
- "time": "2026-07-15T14:47:03+00:00"
+ "time": "2026-09-23T14:29:19+00:00"
},
{
"name": "socialiteproviders/authentik",
@@ -7486,26 +7528,26 @@
},
{
"name": "socialiteproviders/manager",
- "version": "4.9.2",
+ "version": "4.10.0",
"source": {
"type": "git",
"url": "https://github.com/SocialiteProviders/Manager.git",
- "reference": "35372dc62787e61e91cfec73f45fd5d5ae0f8891"
+ "reference": "65ad770276875682e246e5435566146bf0baebf2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/35372dc62787e61e91cfec73f45fd5d5ae0f8891",
- "reference": "35372dc62787e61e91cfec73f45fd5d5ae0f8891",
+ "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/65ad770276875682e246e5435566146bf0baebf2",
+ "reference": "65ad770276875682e246e5435566146bf0baebf2",
"shasum": ""
},
"require": {
- "illuminate/support": "^11.0 || ^12.0 || ^13.0",
- "laravel/socialite": "^5.5",
- "php": "^8.2"
+ "illuminate/support": "^12.0 || ^13.0",
+ "laravel/socialite": "^5.29",
+ "php": "^8.3"
},
"require-dev": {
- "mockery/mockery": "^1.2",
- "phpunit/phpunit": "^9.0"
+ "mockery/mockery": "^1.6",
+ "phpunit/phpunit": "^12.5"
},
"type": "library",
"extra": {
@@ -7556,24 +7598,23 @@
"issues": "https://github.com/socialiteproviders/manager/issues",
"source": "https://github.com/socialiteproviders/manager"
},
- "time": "2026-03-18T22:13:24+00:00"
+ "time": "2026-08-16T00:16:22+00:00"
},
{
"name": "socialiteproviders/microsoft-azure",
- "version": "5.2.0",
+ "version": "5.2.1",
"source": {
"type": "git",
"url": "https://github.com/SocialiteProviders/Microsoft-Azure.git",
- "reference": "453d62c9d7e3b3b76e94c913fb46e68a33347b16"
+ "reference": "d70ea3c60b09cc113a14350761a0618815bfa11c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/SocialiteProviders/Microsoft-Azure/zipball/453d62c9d7e3b3b76e94c913fb46e68a33347b16",
- "reference": "453d62c9d7e3b3b76e94c913fb46e68a33347b16",
+ "url": "https://api.github.com/repos/SocialiteProviders/Microsoft-Azure/zipball/d70ea3c60b09cc113a14350761a0618815bfa11c",
+ "reference": "d70ea3c60b09cc113a14350761a0618815bfa11c",
"shasum": ""
},
"require": {
- "ext-json": "*",
"php": "^8.0",
"socialiteproviders/manager": "^4.4"
},
@@ -7607,7 +7648,7 @@
"issues": "https://github.com/socialiteproviders/providers/issues",
"source": "https://github.com/socialiteproviders/providers"
},
- "time": "2024-03-15T03:02:10+00:00"
+ "time": "2026-08-23T02:40:58+00:00"
},
{
"name": "socialiteproviders/zitadel",
@@ -7972,16 +8013,16 @@
},
{
"name": "spatie/laravel-package-tools",
- "version": "1.93.1",
+ "version": "1.93.3",
"source": {
"type": "git",
"url": "https://github.com/spatie/laravel-package-tools.git",
- "reference": "d5552849801f2642aea710557463234b59ef65eb"
+ "reference": "7aeef26bd8d4909bec744dbf47aee7d1395588c1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/d5552849801f2642aea710557463234b59ef65eb",
- "reference": "d5552849801f2642aea710557463234b59ef65eb",
+ "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/7aeef26bd8d4909bec744dbf47aee7d1395588c1",
+ "reference": "7aeef26bd8d4909bec744dbf47aee7d1395588c1",
"shasum": ""
},
"require": {
@@ -8021,7 +8062,7 @@
],
"support": {
"issues": "https://github.com/spatie/laravel-package-tools/issues",
- "source": "https://github.com/spatie/laravel-package-tools/tree/1.93.1"
+ "source": "https://github.com/spatie/laravel-package-tools/tree/1.93.3"
},
"funding": [
{
@@ -8029,7 +8070,7 @@
"type": "github"
}
],
- "time": "2026-05-19T14:06:37+00:00"
+ "time": "2026-09-28T07:16:50+00:00"
},
{
"name": "spatie/laravel-schemaless-attributes",
@@ -8366,22 +8407,23 @@
},
{
"name": "spomky-labs/cbor-php",
- "version": "3.3.0",
+ "version": "3.4.2",
"source": {
"type": "git",
"url": "https://github.com/Spomky-Labs/cbor-php.git",
- "reference": "013d13da69cf28b1ae501887daceccc850ca1c76"
+ "reference": "8f5ea00a07ad529d20886505cdbeb2b9ac7bb2d6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/013d13da69cf28b1ae501887daceccc850ca1c76",
- "reference": "013d13da69cf28b1ae501887daceccc850ca1c76",
+ "url": "https://api.github.com/repos/Spomky-Labs/cbor-php/zipball/8f5ea00a07ad529d20886505cdbeb2b9ac7bb2d6",
+ "reference": "8f5ea00a07ad529d20886505cdbeb2b9ac7bb2d6",
"shasum": ""
},
"require": {
- "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18",
+ "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18|^0.19|^0.20|^1.0",
"ext-mbstring": "*",
- "php": ">=8.0"
+ "php": ">=8.0",
+ "symfony/polyfill-php81": "^1.32"
},
"require-dev": {
"ext-json": "*",
@@ -8390,8 +8432,8 @@
"symfony/var-dumper": "^6.4|^7.1|^8.0"
},
"suggest": {
- "ext-bcmath": "GMP or BCMath extensions will drastically improve the library performance. BCMath extension needed to handle the Big Float and Decimal Fraction Tags",
- "ext-gmp": "GMP or BCMath extensions will drastically improve the library performance"
+ "ext-bcmath": "Improves the library performance when ext-gmp is missing, and is required to handle the Big Float and Decimal Fraction Tags (4 and 5)",
+ "ext-gmp": "Strongly recommended when decoding untrusted input: without it, converting the byte string of a Big Number Tag (2 and 3) is quadratic in its length. Also improves the library performance overall"
},
"type": "library",
"autoload": {
@@ -8421,7 +8463,7 @@
],
"support": {
"issues": "https://github.com/Spomky-Labs/cbor-php/issues",
- "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.3.0"
+ "source": "https://github.com/Spomky-Labs/cbor-php/tree/3.4.2"
},
"funding": [
{
@@ -8433,24 +8475,24 @@
"type": "patreon"
}
],
- "time": "2026-07-15T18:56:27+00:00"
+ "time": "2026-09-15T06:55:29+00:00"
},
{
"name": "spomky-labs/pki-framework",
- "version": "1.6.0",
+ "version": "1.6.3",
"source": {
"type": "git",
"url": "https://github.com/Spomky-Labs/pki-framework.git",
- "reference": "80778a25426288acd2e3a7cde2def41a3d59cddf"
+ "reference": "792e909d4e387adffe3c4f404451c7d57a3d2022"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/80778a25426288acd2e3a7cde2def41a3d59cddf",
- "reference": "80778a25426288acd2e3a7cde2def41a3d59cddf",
+ "url": "https://api.github.com/repos/Spomky-Labs/pki-framework/zipball/792e909d4e387adffe3c4f404451c7d57a3d2022",
+ "reference": "792e909d4e387adffe3c4f404451c7d57a3d2022",
"shasum": ""
},
"require": {
- "brick/math": "^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18|^0.19",
+ "brick/math": "^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18|^0.19|^0.20|^1.0",
"ext-mbstring": "*",
"php": ">=8.1"
},
@@ -8475,7 +8517,8 @@
"suggest": {
"ext-bcmath": "For better performance (or GMP)",
"ext-gmp": "For better performance (or BCMath)",
- "ext-openssl": "For OpenSSL based cyphering"
+ "ext-openssl": "For OpenSSL based cyphering",
+ "ext-sodium": "To verify Ed25519 signatures where the OpenSSL extension has no EdDSA"
},
"type": "library",
"autoload": {
@@ -8530,7 +8573,7 @@
],
"support": {
"issues": "https://github.com/Spomky-Labs/pki-framework/issues",
- "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.6.0"
+ "source": "https://github.com/Spomky-Labs/pki-framework/tree/1.6.3"
},
"funding": [
{
@@ -8542,7 +8585,7 @@
"type": "patreon"
}
],
- "time": "2026-08-06T16:21:11+00:00"
+ "time": "2026-09-12T19:02:49+00:00"
},
{
"name": "stevebauman/purify",
@@ -8748,16 +8791,16 @@
},
{
"name": "symfony/console",
- "version": "v7.4.16",
+ "version": "v7.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "f4c69c9aed03abf933b294257d618bdd9b30a06d"
+ "reference": "d7bca2fe05241dc7732d0c8b6d551b879f5d0a7d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/f4c69c9aed03abf933b294257d618bdd9b30a06d",
- "reference": "f4c69c9aed03abf933b294257d618bdd9b30a06d",
+ "url": "https://api.github.com/repos/symfony/console/zipball/d7bca2fe05241dc7732d0c8b6d551b879f5d0a7d",
+ "reference": "d7bca2fe05241dc7732d0c8b6d551b879f5d0a7d",
"shasum": ""
},
"require": {
@@ -8822,7 +8865,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.4.16"
+ "source": "https://github.com/symfony/console/tree/v7.4.20"
},
"funding": [
{
@@ -8842,20 +8885,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-31T12:37:14+00:00"
+ "time": "2026-09-18T15:55:00+00:00"
},
{
"name": "symfony/css-selector",
- "version": "v8.1.0",
+ "version": "v8.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "dc0e2be45c9b5588c82414f02ac574b4b986abcd"
+ "reference": "08e2905152a39cf3fd1745d83f8c483e258887d9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/dc0e2be45c9b5588c82414f02ac574b4b986abcd",
- "reference": "dc0e2be45c9b5588c82414f02ac574b4b986abcd",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/08e2905152a39cf3fd1745d83f8c483e258887d9",
+ "reference": "08e2905152a39cf3fd1745d83f8c483e258887d9",
"shasum": ""
},
"require": {
@@ -8891,7 +8934,7 @@
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v8.1.0"
+ "source": "https://github.com/symfony/css-selector/tree/v8.1.6"
},
"funding": [
{
@@ -8911,7 +8954,7 @@
"type": "tidelift"
}
],
- "time": "2026-05-29T05:06:50+00:00"
+ "time": "2026-08-23T10:06:25+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -8986,16 +9029,16 @@
},
{
"name": "symfony/error-handler",
- "version": "v7.4.15",
+ "version": "v7.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/error-handler.git",
- "reference": "d49f6a19f326db41ae7103bdc38e3eb35a791261"
+ "reference": "82239fe00f7cdc9f17c4166fff4ebdc22bd26ec0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/error-handler/zipball/d49f6a19f326db41ae7103bdc38e3eb35a791261",
- "reference": "d49f6a19f326db41ae7103bdc38e3eb35a791261",
+ "url": "https://api.github.com/repos/symfony/error-handler/zipball/82239fe00f7cdc9f17c4166fff4ebdc22bd26ec0",
+ "reference": "82239fe00f7cdc9f17c4166fff4ebdc22bd26ec0",
"shasum": ""
},
"require": {
@@ -9044,7 +9087,7 @@
"description": "Provides tools to manage errors and ease debugging PHP code",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/error-handler/tree/v7.4.15"
+ "source": "https://github.com/symfony/error-handler/tree/v7.4.20"
},
"funding": [
{
@@ -9064,7 +9107,7 @@
"type": "tidelift"
}
],
- "time": "2026-07-21T15:13:06+00:00"
+ "time": "2026-09-22T18:56:40+00:00"
},
{
"name": "symfony/event-dispatcher",
@@ -9234,16 +9277,16 @@
},
{
"name": "symfony/filesystem",
- "version": "v8.1.2",
+ "version": "v8.1.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "17856b7a222664a26a5ea1cb06ee0721c2438217"
+ "reference": "7599ebb855fede59413ddb7f15198d67bfcae7ba"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/17856b7a222664a26a5ea1cb06ee0721c2438217",
- "reference": "17856b7a222664a26a5ea1cb06ee0721c2438217",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/7599ebb855fede59413ddb7f15198d67bfcae7ba",
+ "reference": "7599ebb855fede59413ddb7f15198d67bfcae7ba",
"shasum": ""
},
"require": {
@@ -9281,7 +9324,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v8.1.2"
+ "source": "https://github.com/symfony/filesystem/tree/v8.1.6"
},
"funding": [
{
@@ -9301,20 +9344,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-22T15:42:13+00:00"
+ "time": "2026-08-23T10:06:25+00:00"
},
{
"name": "symfony/finder",
- "version": "v7.4.14",
+ "version": "v7.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/finder.git",
- "reference": "13b38720174286f55d1761152b575a8d1436fc25"
+ "reference": "2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/finder/zipball/13b38720174286f55d1761152b575a8d1436fc25",
- "reference": "13b38720174286f55d1761152b575a8d1436fc25",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e",
+ "reference": "2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e",
"shasum": ""
},
"require": {
@@ -9349,7 +9392,7 @@
"description": "Finds files and directories via an intuitive fluent interface",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/finder/tree/v7.4.14"
+ "source": "https://github.com/symfony/finder/tree/v7.4.20"
},
"funding": [
{
@@ -9369,20 +9412,20 @@
"type": "tidelift"
}
],
- "time": "2026-06-27T08:31:18+00:00"
+ "time": "2026-09-26T06:31:10+00:00"
},
{
"name": "symfony/http-foundation",
- "version": "v7.4.16",
+ "version": "v7.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-foundation.git",
- "reference": "b676451bb638e99a7d34d8a2be90406822e301eb"
+ "reference": "9d0761c0da6bd5b801b401666834901a9a1ffc33"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b676451bb638e99a7d34d8a2be90406822e301eb",
- "reference": "b676451bb638e99a7d34d8a2be90406822e301eb",
+ "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9d0761c0da6bd5b801b401666834901a9a1ffc33",
+ "reference": "9d0761c0da6bd5b801b401666834901a9a1ffc33",
"shasum": ""
},
"require": {
@@ -9431,7 +9474,7 @@
"description": "Defines an object-oriented layer for the HTTP specification",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-foundation/tree/v7.4.16"
+ "source": "https://github.com/symfony/http-foundation/tree/v7.4.20"
},
"funding": [
{
@@ -9451,20 +9494,20 @@
"type": "tidelift"
}
],
- "time": "2026-08-07T11:50:27+00:00"
+ "time": "2026-09-24T07:12:44+00:00"
},
{
"name": "symfony/http-kernel",
- "version": "v7.4.16",
+ "version": "v7.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-kernel.git",
- "reference": "f5e728670fa2218ae8be8ea91f2b44b7d6e5304c"
+ "reference": "392784b5d7b959b8d872542a2530c50c540a788f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f5e728670fa2218ae8be8ea91f2b44b7d6e5304c",
- "reference": "f5e728670fa2218ae8be8ea91f2b44b7d6e5304c",
+ "url": "https://api.github.com/repos/symfony/http-kernel/zipball/392784b5d7b959b8d872542a2530c50c540a788f",
+ "reference": "392784b5d7b959b8d872542a2530c50c540a788f",
"shasum": ""
},
"require": {
@@ -9550,7 +9593,7 @@
"description": "Provides a structured process for converting a Request into a Response",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/http-kernel/tree/v7.4.16"
+ "source": "https://github.com/symfony/http-kernel/tree/v7.4.20"
},
"funding": [
{
@@ -9570,7 +9613,7 @@
"type": "tidelift"
}
],
- "time": "2026-08-07T18:00:13+00:00"
+ "time": "2026-09-29T14:05:16+00:00"
},
{
"name": "symfony/mailer",
@@ -9901,16 +9944,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.41.0",
+ "version": "v1.43.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "bb899c1db0aa8127dc3afe8cda4a67eb24915f8d"
+ "reference": "5cac8f4db97208823aa353f59a01faad2da52c75"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/bb899c1db0aa8127dc3afe8cda4a67eb24915f8d",
- "reference": "bb899c1db0aa8127dc3afe8cda4a67eb24915f8d",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5cac8f4db97208823aa353f59a01faad2da52c75",
+ "reference": "5cac8f4db97208823aa353f59a01faad2da52c75",
"shasum": ""
},
"require": {
@@ -9959,7 +10002,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.41.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.43.0"
},
"funding": [
{
@@ -9979,20 +10022,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-28T08:25:59+00:00"
+ "time": "2026-09-25T15:46:47+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
- "version": "v1.42.0",
+ "version": "v1.43.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
- "reference": "51b5ff5ba85452b31ec6f55490b08148612339d9"
+ "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/51b5ff5ba85452b31ec6f55490b08148612339d9",
- "reference": "51b5ff5ba85452b31ec6f55490b08148612339d9",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/533d68cf99c8f8ee2e8893c59ed59192e92cfd74",
+ "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74",
"shasum": ""
},
"require": {
@@ -10046,7 +10089,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.42.0"
+ "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.43.0"
},
"funding": [
{
@@ -10066,20 +10109,20 @@
"type": "tidelift"
}
],
- "time": "2026-08-24T10:51:20+00:00"
+ "time": "2026-09-23T14:40:04+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.42.0",
+ "version": "v1.43.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
- "reference": "aa20edea75bd9c48cfecc8360922e5a6e5c44502"
+ "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/aa20edea75bd9c48cfecc8360922e5a6e5c44502",
- "reference": "aa20edea75bd9c48cfecc8360922e5a6e5c44502",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/ebd57ccc7edb93d632e184efbe7693d2517bab3b",
+ "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b",
"shasum": ""
},
"require": {
@@ -10131,7 +10174,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.42.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.43.0"
},
"funding": [
{
@@ -10151,20 +10194,20 @@
"type": "tidelift"
}
],
- "time": "2026-08-07T06:33:24+00:00"
+ "time": "2026-09-23T22:02:09+00:00"
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.38.2",
+ "version": "v1.43.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6"
+ "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
- "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/4d5d331bf731e0aedbc6b2f5e61135b7b7996a72",
+ "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72",
"shasum": ""
},
"require": {
@@ -10216,7 +10259,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.43.0"
},
"funding": [
{
@@ -10236,20 +10279,20 @@
"type": "tidelift"
}
],
- "time": "2026-05-27T06:59:30+00:00"
+ "time": "2026-09-24T15:19:04+00:00"
},
{
"name": "symfony/polyfill-php80",
- "version": "v1.37.0",
+ "version": "v1.43.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411"
+ "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
- "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74",
+ "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74",
"shasum": ""
},
"require": {
@@ -10300,7 +10343,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0"
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.43.0"
},
"funding": [
{
@@ -10320,20 +10363,100 @@
"type": "tidelift"
}
],
- "time": "2026-04-10T16:19:22+00:00"
+ "time": "2026-09-25T15:50:05+00:00"
},
{
- "name": "symfony/polyfill-php83",
- "version": "v1.41.0",
+ "name": "symfony/polyfill-php81",
+ "version": "v1.38.1",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php83.git",
- "reference": "5ea99087fb99c273a9b9236ed4c31e78b16103c6"
+ "url": "https://github.com/symfony/polyfill-php81.git",
+ "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/5ea99087fb99c273a9b9236ed4c31e78b16103c6",
- "reference": "5ea99087fb99c273a9b9236ed4c31e78b16103c6",
+ "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/6bfb9c766cacffbc8e118cb87217d08ed84e5cd7",
+ "reference": "6bfb9c766cacffbc8e118cb87217d08ed84e5cd7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2"
+ },
+ "type": "library",
+ "extra": {
+ "thanks": {
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php81\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php81/tree/v1.38.1"
+ },
+ "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": "2026-05-26T12:45:58+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php83",
+ "version": "v1.43.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php83.git",
+ "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/80ccff923a8d61f73ebe9da0aa94e25232f004ce",
+ "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce",
"shasum": ""
},
"require": {
@@ -10380,7 +10503,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php83/tree/v1.41.0"
+ "source": "https://github.com/symfony/polyfill-php83/tree/v1.43.0"
},
"funding": [
{
@@ -10400,20 +10523,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-01T12:47:55+00:00"
+ "time": "2026-09-25T15:50:05+00:00"
},
{
"name": "symfony/polyfill-php84",
- "version": "v1.38.1",
+ "version": "v1.43.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php84.git",
- "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa"
+ "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa",
- "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa",
+ "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/22c6548499cbe5c5bb072fc0c42312dff062a015",
+ "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015",
"shasum": ""
},
"require": {
@@ -10460,7 +10583,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php84/tree/v1.38.1"
+ "source": "https://github.com/symfony/polyfill-php84/tree/v1.43.0"
},
"funding": [
{
@@ -10480,20 +10603,20 @@
"type": "tidelift"
}
],
- "time": "2026-05-26T12:51:13+00:00"
+ "time": "2026-09-23T22:01:09+00:00"
},
{
"name": "symfony/polyfill-php85",
- "version": "v1.41.0",
+ "version": "v1.43.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php85.git",
- "reference": "255fab485aaa1006ed411040c42aecd7b5302d7a"
+ "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/255fab485aaa1006ed411040c42aecd7b5302d7a",
- "reference": "255fab485aaa1006ed411040c42aecd7b5302d7a",
+ "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/86a42cbcc07adc331481a5ab310a4024bfc227f6",
+ "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6",
"shasum": ""
},
"require": {
@@ -10540,7 +10663,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php85/tree/v1.41.0"
+ "source": "https://github.com/symfony/polyfill-php85/tree/v1.43.0"
},
"funding": [
{
@@ -10560,20 +10683,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-01T12:47:55+00:00"
+ "time": "2026-09-25T15:46:47+00:00"
},
{
"name": "symfony/polyfill-uuid",
- "version": "v1.37.0",
+ "version": "v1.43.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-uuid.git",
- "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94"
+ "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/26dfec253c4cf3e51b541b52ddf7e42cb0908e94",
- "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94",
+ "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/b23ff8245cc5c4479ea2be3d0132d2e6dd433993",
+ "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993",
"shasum": ""
},
"require": {
@@ -10623,7 +10746,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/polyfill-uuid/tree/v1.37.0"
+ "source": "https://github.com/symfony/polyfill-uuid/tree/v1.43.0"
},
"funding": [
{
@@ -10643,20 +10766,20 @@
"type": "tidelift"
}
],
- "time": "2026-04-10T16:19:22+00:00"
+ "time": "2026-09-24T05:20:52+00:00"
},
{
"name": "symfony/process",
- "version": "v7.4.13",
+ "version": "v7.4.19",
"source": {
"type": "git",
"url": "https://github.com/symfony/process.git",
- "reference": "f5804be144caceb570f6747519999636b664f24c"
+ "reference": "ed0ae095b86994d370d5791612e55984f15aa30e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/process/zipball/f5804be144caceb570f6747519999636b664f24c",
- "reference": "f5804be144caceb570f6747519999636b664f24c",
+ "url": "https://api.github.com/repos/symfony/process/zipball/ed0ae095b86994d370d5791612e55984f15aa30e",
+ "reference": "ed0ae095b86994d370d5791612e55984f15aa30e",
"shasum": ""
},
"require": {
@@ -10688,7 +10811,7 @@
"description": "Executes commands in sub-processes",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/process/tree/v7.4.13"
+ "source": "https://github.com/symfony/process/tree/v7.4.19"
},
"funding": [
{
@@ -10708,7 +10831,7 @@
"type": "tidelift"
}
],
- "time": "2026-05-23T16:05:06+00:00"
+ "time": "2026-09-02T12:38:34+00:00"
},
{
"name": "symfony/property-access",
@@ -10793,16 +10916,16 @@
},
{
"name": "symfony/property-info",
- "version": "v8.1.4",
+ "version": "v8.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/property-info.git",
- "reference": "d3b1ba3e69dd9fbfff3e00416d2fc60c600c599d"
+ "reference": "fe727d4888a92ac9200a2c1b8e0a995b6022afa7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/property-info/zipball/d3b1ba3e69dd9fbfff3e00416d2fc60c600c599d",
- "reference": "d3b1ba3e69dd9fbfff3e00416d2fc60c600c599d",
+ "url": "https://api.github.com/repos/symfony/property-info/zipball/fe727d4888a92ac9200a2c1b8e0a995b6022afa7",
+ "reference": "fe727d4888a92ac9200a2c1b8e0a995b6022afa7",
"shasum": ""
},
"require": {
@@ -10855,7 +10978,7 @@
"validator"
],
"support": {
- "source": "https://github.com/symfony/property-info/tree/v8.1.4"
+ "source": "https://github.com/symfony/property-info/tree/v8.1.8"
},
"funding": [
{
@@ -10875,7 +10998,7 @@
"type": "tidelift"
}
],
- "time": "2026-08-07T15:02:39+00:00"
+ "time": "2026-09-28T19:13:15+00:00"
},
{
"name": "symfony/psr-http-message-bridge",
@@ -10966,16 +11089,16 @@
},
{
"name": "symfony/routing",
- "version": "v7.4.15",
+ "version": "v7.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/routing.git",
- "reference": "80c0a93d3f8e7499f716204a1fb38ead942a7a2b"
+ "reference": "2bacb72be5eadeaf9874d5accb75bfb33d21c74b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/routing/zipball/80c0a93d3f8e7499f716204a1fb38ead942a7a2b",
- "reference": "80c0a93d3f8e7499f716204a1fb38ead942a7a2b",
+ "url": "https://api.github.com/repos/symfony/routing/zipball/2bacb72be5eadeaf9874d5accb75bfb33d21c74b",
+ "reference": "2bacb72be5eadeaf9874d5accb75bfb33d21c74b",
"shasum": ""
},
"require": {
@@ -11027,7 +11150,7 @@
"url"
],
"support": {
- "source": "https://github.com/symfony/routing/tree/v7.4.15"
+ "source": "https://github.com/symfony/routing/tree/v7.4.20"
},
"funding": [
{
@@ -11047,20 +11170,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-21T15:13:06+00:00"
+ "time": "2026-09-28T19:09:50+00:00"
},
{
"name": "symfony/serializer",
- "version": "v8.1.4",
+ "version": "v8.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/serializer.git",
- "reference": "ec3ae778e49a4cee5b937a779056fa23c3e834fb"
+ "reference": "df54c4fe859d945eb633d2c5e6a410ce535f21e4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/serializer/zipball/ec3ae778e49a4cee5b937a779056fa23c3e834fb",
- "reference": "ec3ae778e49a4cee5b937a779056fa23c3e834fb",
+ "url": "https://api.github.com/repos/symfony/serializer/zipball/df54c4fe859d945eb633d2c5e6a410ce535f21e4",
+ "reference": "df54c4fe859d945eb633d2c5e6a410ce535f21e4",
"shasum": ""
},
"require": {
@@ -11126,7 +11249,7 @@
"description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/serializer/tree/v8.1.4"
+ "source": "https://github.com/symfony/serializer/tree/v8.1.8"
},
"funding": [
{
@@ -11146,7 +11269,7 @@
"type": "tidelift"
}
],
- "time": "2026-08-06T09:53:08+00:00"
+ "time": "2026-09-28T09:40:25+00:00"
},
{
"name": "symfony/service-contracts",
@@ -11237,16 +11360,16 @@
},
{
"name": "symfony/string",
- "version": "v8.1.2",
+ "version": "v8.1.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "286a76b7255e5cc4bf0101a0bc5388ecf1c38ccc"
+ "reference": "d950140b5f56f31901e5b7a0c04ffc3a3deb943c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/286a76b7255e5cc4bf0101a0bc5388ecf1c38ccc",
- "reference": "286a76b7255e5cc4bf0101a0bc5388ecf1c38ccc",
+ "url": "https://api.github.com/repos/symfony/string/zipball/d950140b5f56f31901e5b7a0c04ffc3a3deb943c",
+ "reference": "d950140b5f56f31901e5b7a0c04ffc3a3deb943c",
"shasum": ""
},
"require": {
@@ -11303,7 +11426,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v8.1.2"
+ "source": "https://github.com/symfony/string/tree/v8.1.7"
},
"funding": [
{
@@ -11323,20 +11446,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-28T07:35:25+00:00"
+ "time": "2026-09-11T14:51:16+00:00"
},
{
"name": "symfony/translation",
- "version": "v8.1.4",
+ "version": "v8.1.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/translation.git",
- "reference": "c0955eb4aa417a110e65c8162237b8a5c7d910bf"
+ "reference": "d9e1caba0d6b6f9a26710af8a2f88d37f001215a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/translation/zipball/c0955eb4aa417a110e65c8162237b8a5c7d910bf",
- "reference": "c0955eb4aa417a110e65c8162237b8a5c7d910bf",
+ "url": "https://api.github.com/repos/symfony/translation/zipball/d9e1caba0d6b6f9a26710af8a2f88d37f001215a",
+ "reference": "d9e1caba0d6b6f9a26710af8a2f88d37f001215a",
"shasum": ""
},
"require": {
@@ -11396,7 +11519,7 @@
"description": "Provides tools to internationalize your application",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/translation/tree/v8.1.4"
+ "source": "https://github.com/symfony/translation/tree/v8.1.5"
},
"funding": [
{
@@ -11416,7 +11539,7 @@
"type": "tidelift"
}
],
- "time": "2026-07-30T12:40:56+00:00"
+ "time": "2026-08-21T17:47:34+00:00"
},
{
"name": "symfony/translation-contracts",
@@ -11502,16 +11625,16 @@
},
{
"name": "symfony/type-info",
- "version": "v8.1.0",
+ "version": "v8.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/type-info.git",
- "reference": "9f24df8a79781b9b9f030fea7dfd2f3bd1e7e7e7"
+ "reference": "18e1d891f0b8776141f281f7b6f5e67e4df9d9cd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/type-info/zipball/9f24df8a79781b9b9f030fea7dfd2f3bd1e7e7e7",
- "reference": "9f24df8a79781b9b9f030fea7dfd2f3bd1e7e7e7",
+ "url": "https://api.github.com/repos/symfony/type-info/zipball/18e1d891f0b8776141f281f7b6f5e67e4df9d9cd",
+ "reference": "18e1d891f0b8776141f281f7b6f5e67e4df9d9cd",
"shasum": ""
},
"require": {
@@ -11560,7 +11683,7 @@
"type"
],
"support": {
- "source": "https://github.com/symfony/type-info/tree/v8.1.0"
+ "source": "https://github.com/symfony/type-info/tree/v8.1.8"
},
"funding": [
{
@@ -11580,20 +11703,20 @@
"type": "tidelift"
}
],
- "time": "2026-05-29T05:06:50+00:00"
+ "time": "2026-09-28T19:13:15+00:00"
},
{
"name": "symfony/uid",
- "version": "v7.4.9",
+ "version": "v7.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/uid.git",
- "reference": "2676b524340abcfe4d6151ec698463cebafee439"
+ "reference": "a96bbdb02a04ff3b5592cee6741b03edc78b56aa"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/uid/zipball/2676b524340abcfe4d6151ec698463cebafee439",
- "reference": "2676b524340abcfe4d6151ec698463cebafee439",
+ "url": "https://api.github.com/repos/symfony/uid/zipball/a96bbdb02a04ff3b5592cee6741b03edc78b56aa",
+ "reference": "a96bbdb02a04ff3b5592cee6741b03edc78b56aa",
"shasum": ""
},
"require": {
@@ -11638,7 +11761,7 @@
"uuid"
],
"support": {
- "source": "https://github.com/symfony/uid/tree/v7.4.9"
+ "source": "https://github.com/symfony/uid/tree/v7.4.20"
},
"funding": [
{
@@ -11658,20 +11781,20 @@
"type": "tidelift"
}
],
- "time": "2026-04-30T15:19:22+00:00"
+ "time": "2026-09-23T16:18:28+00:00"
},
{
"name": "symfony/var-dumper",
- "version": "v7.4.15",
+ "version": "v7.4.18",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "04ba4add636a95ff437af3a5a9499bb1d6c6d4bd"
+ "reference": "e088da50b813f32473a76871616cbb8fa54653a8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/04ba4add636a95ff437af3a5a9499bb1d6c6d4bd",
- "reference": "04ba4add636a95ff437af3a5a9499bb1d6c6d4bd",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e088da50b813f32473a76871616cbb8fa54653a8",
+ "reference": "e088da50b813f32473a76871616cbb8fa54653a8",
"shasum": ""
},
"require": {
@@ -11725,7 +11848,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v7.4.15"
+ "source": "https://github.com/symfony/var-dumper/tree/v7.4.18"
},
"funding": [
{
@@ -11745,20 +11868,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-21T15:13:06+00:00"
+ "time": "2026-08-30T20:10:52+00:00"
},
{
"name": "symfony/yaml",
- "version": "v7.4.15",
+ "version": "v7.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "e101850ded5d2c0d44bf32abb8996404afec2dec"
+ "reference": "0222bf4dfaa1e3ceb8fff579635d655f2950d5a7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/e101850ded5d2c0d44bf32abb8996404afec2dec",
- "reference": "e101850ded5d2c0d44bf32abb8996404afec2dec",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/0222bf4dfaa1e3ceb8fff579635d655f2950d5a7",
+ "reference": "0222bf4dfaa1e3ceb8fff579635d655f2950d5a7",
"shasum": ""
},
"require": {
@@ -11801,7 +11924,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v7.4.15"
+ "source": "https://github.com/symfony/yaml/tree/v7.4.20"
},
"funding": [
{
@@ -11821,7 +11944,7 @@
"type": "tidelift"
}
],
- "time": "2026-07-21T15:13:06+00:00"
+ "time": "2026-09-26T06:31:10+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@@ -11950,23 +12073,23 @@
},
{
"name": "vlucas/phpdotenv",
- "version": "v5.6.4",
+ "version": "v5.7.0",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
- "reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b"
+ "reference": "301c07936b16d88628b126b01d082ba153cf4c40"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/416df702837983f8d5ff48c9c3fee4f5f57b980b",
- "reference": "416df702837983f8d5ff48c9c3fee4f5f57b980b",
+ "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/301c07936b16d88628b126b01d082ba153cf4c40",
+ "reference": "301c07936b16d88628b126b01d082ba153cf4c40",
"shasum": ""
},
"require": {
"ext-pcre": "*",
- "graham-campbell/result-type": "^1.1.4",
+ "graham-campbell/result-type": "^1.2",
"php": "^7.2.5 || ^8.0",
- "phpoption/phpoption": "^1.9.5",
+ "phpoption/phpoption": "^1.10",
"symfony/polyfill-ctype": "^1.26",
"symfony/polyfill-mbstring": "^1.26",
"symfony/polyfill-php80": "^1.26"
@@ -12010,7 +12133,7 @@
"homepage": "https://github.com/vlucas"
}
],
- "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.",
+ "description": "Loads environment variables from `.env` to `$_ENV` and `$_SERVER` automagically, and optionally to `getenv()`.",
"keywords": [
"dotenv",
"env",
@@ -12018,7 +12141,7 @@
],
"support": {
"issues": "https://github.com/vlucas/phpdotenv/issues",
- "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.4"
+ "source": "https://github.com/vlucas/phpdotenv/tree/v5.7.0"
},
"funding": [
{
@@ -12030,7 +12153,7 @@
"type": "tidelift"
}
],
- "time": "2026-07-06T19:11:50+00:00"
+ "time": "2026-08-24T18:07:49+00:00"
},
{
"name": "voku/portable-ascii",
@@ -12108,32 +12231,36 @@
},
{
"name": "web-auth/cose-lib",
- "version": "4.6.0",
+ "version": "4.8.2",
"source": {
"type": "git",
"url": "https://github.com/web-auth/cose-lib.git",
- "reference": "3afe04df137baf97c5c3e28c5ee6f05536405148"
+ "reference": "8849e8bf043a2d42d0bec5bda5db2469ad376148"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/3afe04df137baf97c5c3e28c5ee6f05536405148",
- "reference": "3afe04df137baf97c5c3e28c5ee6f05536405148",
+ "url": "https://api.github.com/repos/web-auth/cose-lib/zipball/8849e8bf043a2d42d0bec5bda5db2469ad376148",
+ "reference": "8849e8bf043a2d42d0bec5bda5db2469ad376148",
"shasum": ""
},
"require": {
- "brick/math": "^0.9|^0.10|^0.11|^0.12|^0.13|^0.14|^0.15|^0.16|^0.17|^0.18",
+ "brick/math": "^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14 || ^0.15 || ^0.16 || ^0.17 || ^0.18 || ^0.19 || ^0.20 || ^1.0",
"ext-json": "*",
"ext-openssl": "*",
"php": ">=8.1",
"spomky-labs/pki-framework": "^1.0"
},
+ "conflict": {
+ "spomky-labs/cbor-php": "<3.4.0"
+ },
"require-dev": {
- "spomky-labs/cbor-php": "^3.2.2"
+ "spomky-labs/cbor-php": "^3.4"
},
"suggest": {
- "ext-bcmath": "For better performance, please install either GMP (recommended) or BCMath extension",
- "ext-gmp": "For better performance, please install either GMP (recommended) or BCMath extension",
- "spomky-labs/cbor-php": "For COSE Signature support"
+ "ext-bcmath": "Recommended: without GMP or BCMath, signing with RSASSA-PSS (PS256/PS384/PS512) blinds its private exponentiation in pure PHP",
+ "ext-gmp": "Recommended: without GMP or BCMath, signing with RSASSA-PSS (PS256/PS384/PS512) blinds its private exponentiation in pure PHP",
+ "ext-sodium": "Required by the EdDSA/Ed25519 signature algorithms (-8, -19, -260, -261) and to recompute an OKP public key from its private key",
+ "spomky-labs/cbor-php": "Required by the RFC 9052 header reader and cryptographic structures. 3.4.0 or later: it ships the six COSE message classes (CBOR\\Tag\\CoseSign1Tag and its siblings) that replace the deprecated Cose\\...Tag classes, and its decoder is what enforces the RFC 9052 label uniqueness and nesting bounds this library relies on"
},
"type": "library",
"autoload": {
@@ -12163,7 +12290,7 @@
],
"support": {
"issues": "https://github.com/web-auth/cose-lib/issues",
- "source": "https://github.com/web-auth/cose-lib/tree/4.6.0"
+ "source": "https://github.com/web-auth/cose-lib/tree/4.8.2"
},
"funding": [
{
@@ -12175,20 +12302,20 @@
"type": "patreon"
}
],
- "time": "2026-07-16T10:19:49+00:00"
+ "time": "2026-09-15T17:30:33+00:00"
},
{
"name": "web-auth/webauthn-lib",
- "version": "5.3.5",
+ "version": "5.3.9",
"source": {
"type": "git",
"url": "https://github.com/web-auth/webauthn-lib.git",
- "reference": "9e0986d999f4102e24ac8a598d3a80d98b56c19f"
+ "reference": "727e378fb7a36c26be5c911e4a0120c146741ce7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/9e0986d999f4102e24ac8a598d3a80d98b56c19f",
- "reference": "9e0986d999f4102e24ac8a598d3a80d98b56c19f",
+ "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/727e378fb7a36c26be5c911e4a0120c146741ce7",
+ "reference": "727e378fb7a36c26be5c911e4a0120c146741ce7",
"shasum": ""
},
"require": {
@@ -12200,7 +12327,7 @@
"psr/clock": "^1.0",
"psr/event-dispatcher": "^1.0",
"psr/log": "^1.0|^2.0|^3.0",
- "spomky-labs/cbor-php": "^3.0",
+ "spomky-labs/cbor-php": "^3.4",
"spomky-labs/pki-framework": "^1.0",
"symfony/clock": "^6.4|^7.0|^8.0",
"symfony/deprecation-contracts": "^3.2",
@@ -12208,7 +12335,7 @@
"symfony/property-info": "^6.4|^7.0|^8.0",
"symfony/serializer": "^6.4|^7.0|^8.0",
"symfony/uid": "^6.4|^7.0|^8.0",
- "web-auth/cose-lib": "^4.2.3"
+ "web-auth/cose-lib": "^4.8"
},
"suggest": {
"psr/log-implementation": "Recommended to receive logs from the library",
@@ -12249,7 +12376,7 @@
"webauthn"
],
"support": {
- "source": "https://github.com/web-auth/webauthn-lib/tree/5.3.5"
+ "source": "https://github.com/web-auth/webauthn-lib/tree/5.3.9"
},
"funding": [
{
@@ -12261,7 +12388,7 @@
"type": "patreon"
}
],
- "time": "2026-05-31T15:00:08+00:00"
+ "time": "2026-09-10T21:10:45+00:00"
},
{
"name": "webmozart/assert",
@@ -12758,16 +12885,16 @@
},
{
"name": "amphp/dns",
- "version": "v2.4.0",
+ "version": "v2.4.1",
"source": {
"type": "git",
"url": "https://github.com/amphp/dns.git",
- "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71"
+ "reference": "ec5948bfafac808f410406e18bc7b52a2d4629b7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/dns/zipball/78eb3db5fc69bf2fc0cb503c4fcba667bc223c71",
- "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71",
+ "url": "https://api.github.com/repos/amphp/dns/zipball/ec5948bfafac808f410406e18bc7b52a2d4629b7",
+ "reference": "ec5948bfafac808f410406e18bc7b52a2d4629b7",
"shasum": ""
},
"require": {
@@ -12786,7 +12913,7 @@
"amphp/php-cs-fixer-config": "^2",
"amphp/phpunit-util": "^3",
"phpunit/phpunit": "^9",
- "psalm/phar": "5.20"
+ "psalm/phar": "6.16.1"
},
"type": "library",
"autoload": {
@@ -12835,7 +12962,7 @@
],
"support": {
"issues": "https://github.com/amphp/dns/issues",
- "source": "https://github.com/amphp/dns/tree/v2.4.0"
+ "source": "https://github.com/amphp/dns/tree/v2.4.1"
},
"funding": [
{
@@ -12843,7 +12970,7 @@
"type": "github"
}
],
- "time": "2025-01-19T15:43:40+00:00"
+ "time": "2026-07-26T17:53:54+00:00"
},
{
"name": "amphp/hpack",
@@ -13443,16 +13570,16 @@
},
{
"name": "amphp/socket",
- "version": "v2.4.0",
+ "version": "v2.4.1",
"source": {
"type": "git",
"url": "https://github.com/amphp/socket.git",
- "reference": "dadb63c5d3179fd83803e29dfeac27350e619314"
+ "reference": "b347be5aff6b2cc025208bb4d896607eb470c018"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/socket/zipball/dadb63c5d3179fd83803e29dfeac27350e619314",
- "reference": "dadb63c5d3179fd83803e29dfeac27350e619314",
+ "url": "https://api.github.com/repos/amphp/socket/zipball/b347be5aff6b2cc025208bb4d896607eb470c018",
+ "reference": "b347be5aff6b2cc025208bb4d896607eb470c018",
"shasum": ""
},
"require": {
@@ -13515,7 +13642,7 @@
],
"support": {
"issues": "https://github.com/amphp/socket/issues",
- "source": "https://github.com/amphp/socket/tree/v2.4.0"
+ "source": "https://github.com/amphp/socket/tree/v2.4.1"
},
"funding": [
{
@@ -13523,7 +13650,7 @@
"type": "github"
}
],
- "time": "2026-04-19T15:09:56+00:00"
+ "time": "2026-08-22T18:13:20+00:00"
},
{
"name": "amphp/sync",
@@ -14123,24 +14250,46 @@
},
{
"name": "driftingly/rector-laravel",
- "version": "2.5.0",
+ "version": "2.6.2",
"source": {
"type": "git",
"url": "https://github.com/driftingly/rector-laravel.git",
- "reference": "0dbdd842dfdbc821cfe5f47ca7326e2502b2a107"
+ "reference": "c0f9a2ff7365cec45d4dc64223608e7cec74604a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/driftingly/rector-laravel/zipball/0dbdd842dfdbc821cfe5f47ca7326e2502b2a107",
- "reference": "0dbdd842dfdbc821cfe5f47ca7326e2502b2a107",
+ "url": "https://api.github.com/repos/driftingly/rector-laravel/zipball/c0f9a2ff7365cec45d4dc64223608e7cec74604a",
+ "reference": "c0f9a2ff7365cec45d4dc64223608e7cec74604a",
"shasum": ""
},
"require": {
- "php": "^7.4 || ^8.0",
- "rector/rector": "^2.2.7",
+ "php": ">=8.3",
+ "rector/rector": "^2.6.4",
+ "symplify/rule-doc-generator-contracts": "^11.2",
"webmozart/assert": "^1.11 || ^2.0"
},
+ "require-dev": {
+ "boundwize/structarmed": "^0.16",
+ "nette/utils": "^4.0",
+ "nikic/php-parser": "^5.6",
+ "phpstan/extension-installer": "^1.3",
+ "phpstan/phpstan": "^2.2",
+ "phpstan/phpstan-deprecation-rules": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
+ "phpstan/phpstan-webmozart-assert": "^2.0",
+ "phpunit/phpunit": "^10.5",
+ "symplify/rule-doc-generator": "^12.2",
+ "tightenco/duster": "^3.1",
+ "tracy/tracy": "^2.10"
+ },
"type": "rector-extension",
+ "extra": {
+ "rector": {
+ "includes": [
+ "config/config.php"
+ ]
+ }
+ },
"autoload": {
"psr-4": {
"RectorLaravel\\": "src"
@@ -14153,9 +14302,9 @@
"description": "Rector upgrades rules for Laravel Framework",
"support": {
"issues": "https://github.com/driftingly/rector-laravel/issues",
- "source": "https://github.com/driftingly/rector-laravel/tree/2.5.0"
+ "source": "https://github.com/driftingly/rector-laravel/tree/2.6.2"
},
- "time": "2026-06-02T16:22:14+00:00"
+ "time": "2026-08-29T21:42:57+00:00"
},
{
"name": "fakerphp/faker",
@@ -14222,23 +14371,23 @@
},
{
"name": "fidry/cpu-core-counter",
- "version": "1.3.0",
+ "version": "1.4.1",
"source": {
"type": "git",
"url": "https://github.com/theofidry/cpu-core-counter.git",
- "reference": "db9508f7b1474469d9d3c53b86f817e344732678"
+ "reference": "d384a7d0d6e67aa497327260ca95023e92dc2032"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678",
- "reference": "db9508f7b1474469d9d3c53b86f817e344732678",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/d384a7d0d6e67aa497327260ca95023e92dc2032",
+ "reference": "d384a7d0d6e67aa497327260ca95023e92dc2032",
"shasum": ""
},
"require": {
"php": "^7.2 || ^8.0"
},
"require-dev": {
- "fidry/makefile": "^0.2.0",
+ "fidry/makefile": "^0.2.0 || ^1.1.2",
"fidry/php-cs-fixer-config": "^1.1.2",
"phpstan/extension-installer": "^1.2.0",
"phpstan/phpstan": "^2.0",
@@ -14246,6 +14395,7 @@
"phpstan/phpstan-phpunit": "^2.0",
"phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^8.5.31 || ^9.5.26",
+ "symfony/polyfill-mbstring": "^1.33",
"webmozarts/strict-phpunit": "^7.5"
},
"type": "library",
@@ -14271,7 +14421,7 @@
],
"support": {
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
- "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0"
+ "source": "https://github.com/theofidry/cpu-core-counter/tree/1.4.1"
},
"funding": [
{
@@ -14279,20 +14429,20 @@
"type": "github"
}
],
- "time": "2025-08-14T07:29:31+00:00"
+ "time": "2026-09-29T22:11:39+00:00"
},
{
"name": "filp/whoops",
- "version": "2.18.4",
+ "version": "2.18.5",
"source": {
"type": "git",
"url": "https://github.com/filp/whoops.git",
- "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d"
+ "reference": "baec851ad6ae00db8bd0fdd30d208afc1b71c56e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d",
- "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d",
+ "url": "https://api.github.com/repos/filp/whoops/zipball/baec851ad6ae00db8bd0fdd30d208afc1b71c56e",
+ "reference": "baec851ad6ae00db8bd0fdd30d208afc1b71c56e",
"shasum": ""
},
"require": {
@@ -14301,8 +14451,8 @@
},
"require-dev": {
"mockery/mockery": "^1.0",
- "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3",
- "symfony/var-dumper": "^4.0 || ^5.0"
+ "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3 || ^10.5.58",
+ "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0"
},
"suggest": {
"symfony/var-dumper": "Pretty print complex values better with var-dumper available",
@@ -14342,7 +14492,7 @@
],
"support": {
"issues": "https://github.com/filp/whoops/issues",
- "source": "https://github.com/filp/whoops/tree/2.18.4"
+ "source": "https://github.com/filp/whoops/tree/2.18.5"
},
"funding": [
{
@@ -14350,23 +14500,25 @@
"type": "github"
}
],
- "time": "2025-08-08T12:00:00+00:00"
+ "time": "2026-09-18T12:00:00+00:00"
},
{
"name": "hamcrest/hamcrest-php",
- "version": "v2.1.1",
+ "version": "v3.0.0",
"source": {
"type": "git",
"url": "https://github.com/hamcrest/hamcrest-php.git",
- "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487"
+ "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487",
- "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487",
+ "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b61cd040da1a4925bc90a51c074f5297e7c0fa52",
+ "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52",
"shasum": ""
},
"require": {
+ "ext-ctype": "*",
+ "ext-dom": "*",
"php": "^7.4|^8.0"
},
"replace": {
@@ -14375,13 +14527,15 @@
"kodova/hamcrest-php": "*"
},
"require-dev": {
+ "phpstan/phpstan": "^2.1",
+ "phpstan/phpstan-phpunit": "^2.0",
"phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0",
"phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.1-dev"
+ "dev-master": "3.0-dev"
}
},
"autoload": {
@@ -14399,9 +14553,9 @@
],
"support": {
"issues": "https://github.com/hamcrest/hamcrest-php/issues",
- "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1"
+ "source": "https://github.com/hamcrest/hamcrest-php/tree/v3.0.0"
},
- "time": "2025-04-30T06:54:44+00:00"
+ "time": "2026-03-17T11:56:53+00:00"
},
{
"name": "kelunik/certificate",
@@ -14529,16 +14683,16 @@
},
{
"name": "laravel/pint",
- "version": "v1.30.4",
+ "version": "v1.32.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/pint.git",
- "reference": "a96cb6eee2961905d2fce7207aefb80945bf6b28"
+ "reference": "006bd7825eb01daf92959d060b89cd9514fe4253"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/pint/zipball/a96cb6eee2961905d2fce7207aefb80945bf6b28",
- "reference": "a96cb6eee2961905d2fce7207aefb80945bf6b28",
+ "url": "https://api.github.com/repos/laravel/pint/zipball/006bd7825eb01daf92959d060b89cd9514fe4253",
+ "reference": "006bd7825eb01daf92959d060b89cd9514fe4253",
"shasum": ""
},
"require": {
@@ -14546,19 +14700,19 @@
"ext-mbstring": "*",
"ext-tokenizer": "*",
"ext-xml": "*",
- "php": "^8.2.0"
+ "php": "^8.3.0"
},
"require-dev": {
"composer/semver": "^3.4.4",
- "friendsofphp/php-cs-fixer": "^3.95.18",
- "illuminate/view": "^12.65.0",
- "larastan/larastan": "^3.10.0",
- "laravel-zero/framework": "^12.1.0",
+ "friendsofphp/php-cs-fixer": "^3.95.25",
+ "illuminate/view": "^13.31.0",
+ "larastan/larastan": "^3.11.0",
+ "laravel-zero/framework": "^13.0.0",
"laravel/agent-detector": "^2.0.2",
- "laravel/prompts": "^0.3.22",
- "mockery/mockery": "^1.6.12",
+ "laravel/prompts": "^0.3.24",
+ "mockery/mockery": "^1.6.15",
"nunomaduro/termwind": "^2.4.0",
- "pestphp/pest": "^3.8.7"
+ "pestphp/pest": "^4.7.8"
},
"bin": [
"builds/pint"
@@ -14595,7 +14749,7 @@
"issues": "https://github.com/laravel/pint/issues",
"source": "https://github.com/laravel/pint"
},
- "time": "2026-08-05T16:47:22+00:00"
+ "time": "2026-09-10T10:47:55+00:00"
},
{
"name": "laravel/roster",
@@ -14821,29 +14975,28 @@
},
{
"name": "mockery/mockery",
- "version": "1.6.12",
+ "version": "1.6.15",
"source": {
"type": "git",
"url": "https://github.com/mockery/mockery.git",
- "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699"
+ "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699",
- "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699",
+ "url": "https://api.github.com/repos/mockery/mockery/zipball/967a801bd188989a5669bd280f252d51c0fdc9ee",
+ "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee",
"shasum": ""
},
"require": {
- "hamcrest/hamcrest-php": "^2.0.1",
- "lib-pcre": ">=7.0",
+ "hamcrest/hamcrest-php": "^2.0 || ^3.0",
"php": ">=7.3"
},
"conflict": {
"phpunit/phpunit": "<8.0"
},
"require-dev": {
- "phpunit/phpunit": "^8.5 || ^9.6.17",
- "symplify/easy-coding-standard": "^12.1.14"
+ "phpunit/phpunit": "^9.6.36",
+ "symplify/easy-coding-standard": "^13.2.17"
},
"type": "library",
"autoload": {
@@ -14900,24 +15053,24 @@
"security": "https://github.com/mockery/mockery/security/advisories",
"source": "https://github.com/mockery/mockery"
},
- "time": "2024-05-16T03:13:13+00:00"
+ "time": "2026-08-19T19:37:52+00:00"
},
{
"name": "myclabs/deep-copy",
- "version": "1.13.4",
+ "version": "1.14.0",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a"
+ "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a",
- "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae",
+ "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^8.0"
},
"conflict": {
"doctrine/collections": "<1.6.8",
@@ -14952,15 +15105,15 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.14.0"
},
"funding": [
{
- "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
- "type": "tidelift"
+ "url": "https://github.com/mnapoli",
+ "type": "github"
}
],
- "time": "2025-08-01T08:46:24+00:00"
+ "time": "2026-08-11T10:17:44+00:00"
},
{
"name": "nunomaduro/collision",
@@ -15651,11 +15804,11 @@
},
{
"name": "phpstan/phpstan",
- "version": "2.2.8",
+ "version": "2.2.16",
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e285254e60f33c21902efef4a926ca0987c06804",
- "reference": "e285254e60f33c21902efef4a926ca0987c06804",
+ "url": "https://api.github.com/repos/phpstan/phpstan/zipball/46a6d9060e5a7763adfcc21ebcb8b504ebdbcb92",
+ "reference": "46a6d9060e5a7763adfcc21ebcb8b504ebdbcb92",
"shasum": ""
},
"require": {
@@ -15711,7 +15864,7 @@
"type": "github"
}
],
- "time": "2026-08-04T22:21:45+00:00"
+ "time": "2026-09-25T09:31:51+00:00"
},
{
"name": "phpunit/php-code-coverage",
@@ -15803,23 +15956,23 @@
},
{
"name": "phpunit/php-file-iterator",
- "version": "6.0.1",
+ "version": "6.0.2",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5"
+ "reference": "a248d1640ab059b075f53a2ef0f9856e864e06b5"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5",
- "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a248d1640ab059b075f53a2ef0f9856e864e06b5",
+ "reference": "a248d1640ab059b075f53a2ef0f9856e864e06b5",
"shasum": ""
},
"require": {
"php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^12.0"
+ "phpunit/phpunit": "^12.5.33"
},
"type": "library",
"extra": {
@@ -15852,7 +16005,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
"security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.1"
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.2"
},
"funding": [
{
@@ -15872,7 +16025,7 @@
"type": "tidelift"
}
],
- "time": "2026-02-02T14:04:18+00:00"
+ "time": "2026-08-25T14:40:53+00:00"
},
{
"name": "phpunit/php-invoker",
@@ -16150,21 +16303,21 @@
},
{
"name": "rector/rector",
- "version": "2.6.1",
+ "version": "2.6.7",
"source": {
"type": "git",
"url": "https://github.com/rectorphp/rector.git",
- "reference": "b8e68f058bca43e01a2e1caa51ef022d6551ed95"
+ "reference": "f4aa224edb9b0630fb43826d4cb6a49b62e48d4c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/rectorphp/rector/zipball/b8e68f058bca43e01a2e1caa51ef022d6551ed95",
- "reference": "b8e68f058bca43e01a2e1caa51ef022d6551ed95",
+ "url": "https://api.github.com/repos/rectorphp/rector/zipball/f4aa224edb9b0630fb43826d4cb6a49b62e48d4c",
+ "reference": "f4aa224edb9b0630fb43826d4cb6a49b62e48d4c",
"shasum": ""
},
"require": {
"php": "^7.4|^8.0",
- "phpstan/phpstan": "^2.2.6"
+ "phpstan/phpstan": "^2.2.14"
},
"conflict": {
"rector/rector-doctrine": "*",
@@ -16172,9 +16325,6 @@
"rector/rector-phpunit": "*",
"rector/rector-symfony": "*"
},
- "suggest": {
- "ext-dom": "To manipulate phpunit.xml via the custom-rule command"
- },
"bin": [
"bin/rector"
],
@@ -16198,7 +16348,7 @@
],
"support": {
"issues": "https://github.com/rectorphp/rector/issues",
- "source": "https://github.com/rectorphp/rector/tree/2.6.1"
+ "source": "https://github.com/rectorphp/rector/tree/2.6.7"
},
"funding": [
{
@@ -16206,7 +16356,7 @@
"type": "github"
}
],
- "time": "2026-08-03T17:30:34+00:00"
+ "time": "2026-09-13T20:17:44+00:00"
},
{
"name": "revolt/event-loop",
@@ -16501,24 +16651,24 @@
},
{
"name": "sebastian/diff",
- "version": "7.0.0",
+ "version": "7.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "7ab1ea946c012266ca32390913653d844ecd085f"
+ "reference": "cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f",
- "reference": "7ab1ea946c012266ca32390913653d844ecd085f",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6",
+ "reference": "cd4cabe39f8a4e8ee6818ba99f10a05561ea4ad6",
"shasum": ""
},
"require": {
"php": ">=8.3"
},
"require-dev": {
- "phpunit/phpunit": "^12.0",
- "symfony/process": "^7.2"
+ "phpunit/phpunit": "^12.5.33",
+ "symfony/process": "^7.4.17"
},
"type": "library",
"extra": {
@@ -16556,15 +16706,27 @@
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
"security": "https://github.com/sebastianbergmann/diff/security/policy",
- "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0"
+ "source": "https://github.com/sebastianbergmann/diff/tree/7.0.1"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
+ },
+ {
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/diff",
+ "type": "tidelift"
}
],
- "time": "2025-02-07T04:55:46+00:00"
+ "time": "2026-08-25T15:35:54+00:00"
},
{
"name": "sebastian/environment",
@@ -17191,16 +17353,16 @@
},
{
"name": "serversideup/spin",
- "version": "v3.3.0",
+ "version": "v3.5.2",
"source": {
"type": "git",
"url": "https://github.com/serversideup/spin.git",
- "reference": "4c65c3244470e2da44b0331efbefef5506a20fb2"
+ "reference": "faf54321caa9e16e4af172f467958c40cb5dd8c3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/serversideup/spin/zipball/4c65c3244470e2da44b0331efbefef5506a20fb2",
- "reference": "4c65c3244470e2da44b0331efbefef5506a20fb2",
+ "url": "https://api.github.com/repos/serversideup/spin/zipball/faf54321caa9e16e4af172f467958c40cb5dd8c3",
+ "reference": "faf54321caa9e16e4af172f467958c40cb5dd8c3",
"shasum": ""
},
"bin": [
@@ -17225,7 +17387,7 @@
"description": "Replicate your production environment locally using Docker. Just run \"spin up\". It's really that easy.",
"support": {
"issues": "https://github.com/serversideup/spin/issues",
- "source": "https://github.com/serversideup/spin/tree/v3.3.0"
+ "source": "https://github.com/serversideup/spin/tree/v3.5.2"
},
"funding": [
{
@@ -17233,7 +17395,7 @@
"type": "github"
}
],
- "time": "2026-07-16T20:06:00+00:00"
+ "time": "2026-09-29T13:55:02+00:00"
},
{
"name": "staabm/side-effects-detector",
@@ -17289,16 +17451,16 @@
},
{
"name": "symfony/http-client",
- "version": "v7.4.16",
+ "version": "v7.4.20",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "c513ed0ba5d1784a6b55fc84190dbe4451b12f41"
+ "reference": "750a420b8dd0af3d6e1c6c1412802abf2cdd2b6c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/c513ed0ba5d1784a6b55fc84190dbe4451b12f41",
- "reference": "c513ed0ba5d1784a6b55fc84190dbe4451b12f41",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/750a420b8dd0af3d6e1c6c1412802abf2cdd2b6c",
+ "reference": "750a420b8dd0af3d6e1c6c1412802abf2cdd2b6c",
"shasum": ""
},
"require": {
@@ -17366,7 +17528,7 @@
"http"
],
"support": {
- "source": "https://github.com/symfony/http-client/tree/v7.4.16"
+ "source": "https://github.com/symfony/http-client/tree/v7.4.20"
},
"funding": [
{
@@ -17386,20 +17548,20 @@
"type": "tidelift"
}
],
- "time": "2026-07-29T16:20:51+00:00"
+ "time": "2026-09-24T11:02:13+00:00"
},
{
"name": "symfony/http-client-contracts",
- "version": "v3.7.1",
+ "version": "v3.7.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client-contracts.git",
- "reference": "41fc42d276aeff21192465331ebbab7d83a743c0"
+ "reference": "35be0019e2c2c9fba80f9dc033290a5240f7b44f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/41fc42d276aeff21192465331ebbab7d83a743c0",
- "reference": "41fc42d276aeff21192465331ebbab7d83a743c0",
+ "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/35be0019e2c2c9fba80f9dc033290a5240f7b44f",
+ "reference": "35be0019e2c2c9fba80f9dc033290a5240f7b44f",
"shasum": ""
},
"require": {
@@ -17448,7 +17610,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/http-client-contracts/tree/v3.7.1"
+ "source": "https://github.com/symfony/http-client-contracts/tree/v3.7.3"
},
"funding": [
{
@@ -17468,7 +17630,67 @@
"type": "tidelift"
}
],
- "time": "2026-06-05T06:23:12+00:00"
+ "time": "2026-08-04T08:41:16+00:00"
+ },
+ {
+ "name": "symplify/rule-doc-generator-contracts",
+ "version": "11.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symplify/rule-doc-generator-contracts.git",
+ "reference": "479cfcfd46047f80624aba931d9789e50475b5c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symplify/rule-doc-generator-contracts/zipball/479cfcfd46047f80624aba931d9789e50475b5c6",
+ "reference": "479cfcfd46047f80624aba931d9789e50475b5c6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-parallel-lint": "^1.3",
+ "phpstan/extension-installer": "^1.2",
+ "rector/rector": "^0.15.10",
+ "symplify/easy-ci": "^11.1",
+ "symplify/easy-coding-standard": "^11.1",
+ "symplify/easy-testing": "^11.1",
+ "symplify/phpstan-extensions": "^11.1",
+ "symplify/phpstan-rules": "11.2.3.72",
+ "tomasvotruba/unused-public": "^0.0.34"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "11.2-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symplify\\RuleDocGenerator\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Contracts for production code of RuleDocGenerator",
+ "support": {
+ "source": "https://github.com/symplify/rule-doc-generator-contracts/tree/11.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.paypal.me/rectorphp",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/tomasvotruba",
+ "type": "github"
+ }
+ ],
+ "abandoned": true,
+ "time": "2024-03-18T22:02:54+00:00"
},
{
"name": "ta-tikoma/phpunit-architecture-test",
diff --git a/vet.json b/vet.json
index 67f492a011..de28baaa3e 100644
--- a/vet.json
+++ b/vet.json
@@ -5,8 +5,8 @@
"hash": "tree-v2:be22a57eb742622a1ffba6ca86d121622eb74e75f927a8494532d5d4803badce"
},
"aws/aws-sdk-php": {
- "version": "3.391.1",
- "hash": "tree-v2:16aee08fbba9a6ffece4681341f8028ac3caba5a79b39d3b5555e0a57ec71f50"
+ "version": "3.398.4",
+ "hash": "tree-v2:6c1c6ac6e6c2d9508b01e8ca3953322575e866aa3e1487a7aa315e7dfb4ba2b8"
},
"bacon/bacon-qr-code": {
"version": "v3.1.1",
@@ -17,8 +17,8 @@
"hash": "tree-v2:79827d9b803e1ecdc82b596e792180dd785719f5d865f59a42aabbe61d85d4fb"
},
"carbonphp/carbon-doctrine-types": {
- "version": "3.2.0",
- "hash": "tree-v2:ad33848c07e8c0d58a0f9011341684a226db43f96f7fc21c6cb99b9c66720f0f"
+ "version": "3.2.1",
+ "hash": "tree-v2:0f158f3b909fc01e691ed5f5121186056232b049031e7d3a914676d49881ece5"
},
"clue/redis-protocol": {
"version": "v0.3.2",
@@ -29,8 +29,8 @@
"hash": "tree-v2:919b5f4e495641eb54043ec944915a2a83b269412e2acc85a18eadacc96ee1b8"
},
"danharrin/livewire-rate-limiting": {
- "version": "v2.2.1",
- "hash": "tree-v2:3bc003901f11d83845615a2b83b6f0e52f14d132cfe21fd39c78f5f81ec85bb4"
+ "version": "v2.3.0",
+ "hash": "tree-v2:493b9709f201171bdf9fdee2e33e3526e11a0600bd81c0ad08afa19c23703f21"
},
"dasprid/enum": {
"version": "1.0.7",
@@ -41,8 +41,8 @@
"hash": "tree-v2:05d15a85340adeabba2a95b5280336f0df3a544fcd89be9b2053e410212960b5"
},
"doctrine/dbal": {
- "version": "4.4.4",
- "hash": "tree-v2:c4d9ed2d117d1fb270dd92ad1f626477c87c427969b59527d023c71ab37cae14"
+ "version": "4.5.0",
+ "hash": "tree-v2:20df4d8e38810d489e6b77be95cdba556096476d0cf9afc00c74641b2ebca8ab"
},
"doctrine/deprecations": {
"version": "1.1.6",
@@ -69,52 +69,52 @@
"hash": "tree-v2:5bf08ea1a28ca2559ae1b79a9e99cb3bfd5c33cf13a4b8ce7cc943461473e4e3"
},
"ezyang/htmlpurifier": {
- "version": "v4.19.0",
- "hash": "tree-v2:d3c22c4953b78400b870df5de8b38b239728c661f4ad0bd011a1343525e5eed4"
+ "version": "v4.19.1",
+ "hash": "tree-v2:fa90f54e49e566edcd7862886eb05a7712fda460a08937961defd674a4349a79"
},
"firebase/php-jwt": {
- "version": "v7.1.0",
- "hash": "tree-v2:fb9b281e0f88b9a10a2daf91a1323182371b3b5a2c5eb8919027e8c86f3d27af"
+ "version": "v7.2.1",
+ "hash": "tree-v2:270603953b72218f417df9fa995b4d833b712b3a2a0d19d1d83f6e5c5ffa7875"
},
"fruitcake/php-cors": {
"version": "v1.4.0",
"hash": "tree-v2:843a0fd0c0519e1e8e46ce45b613feb881065e0a5687b359660900b7be3d0094"
},
"graham-campbell/result-type": {
- "version": "v1.1.4",
- "hash": "tree-v2:20ce4b1cffb859a4b85bec52529ec4a633574f184a5f335b82d904c27cd98c33"
+ "version": "v1.2.0",
+ "hash": "tree-v2:19182f95f7c4750192e6cfe25b1f769686638fc59e5517710472b9f2b68315e7"
},
"guzzlehttp/guzzle": {
- "version": "7.15.3",
- "hash": "tree-v2:e8515d60ce62d49290f05b65cc3250b8526836b3ee61bca6b12e4f45388d9bb0"
+ "version": "7.15.5",
+ "hash": "tree-v2:52f341c0bf614afe1fbd26362999adb2a746dd90cc5fc1f7a610f923b1b670a0"
},
"guzzlehttp/promises": {
- "version": "2.5.2",
- "hash": "tree-v2:dc061818ecce047b05af603eca27ff84d7c93e0b05b87efd83ba67e0c241e695"
+ "version": "2.5.3",
+ "hash": "tree-v2:fd057dc4b4c991c686151e9e6cb938c9c429c389becaa8d0607a4ce15a804f10"
},
"guzzlehttp/psr7": {
"version": "2.13.1",
"hash": "tree-v2:7607132af9efdbe31c5a6d8b92d4cac549bb4e4141caec6b0d917e813c201a19"
},
"guzzlehttp/uri-template": {
- "version": "v1.0.10",
- "hash": "tree-v2:3228d9ad243f43c65a8e250acf8b82cd2454442483d388821ee4227933cb333a"
+ "version": "v1.0.11",
+ "hash": "tree-v2:8621308a489e67328265553e68e5bb49c7e887ecb33627e108bf21f59d56d445"
},
"jean85/pretty-package-versions": {
"version": "2.1.1",
"hash": "tree-v2:5cc304e8a530449d8c745eaec902384554d1740d4e083032d5f9ce3ac1cf25e3"
},
"laravel/fortify": {
- "version": "v1.37.3",
- "hash": "tree-v2:41b517f26837c05ae8cc9b4edd0530ca83ffe79c008ddbdd5752c4232987c7fe"
+ "version": "v1.40.0",
+ "hash": "tree-v2:be1c2def5d70383bc18e9893861ecb3f4c0418961dc381549b583a187e6b8d33"
},
"laravel/framework": {
"version": "v12.69.3",
"hash": "tree-v2:406d3fd2a8e434af41c60567dc3e57830cac780dab9753e854c4ccdaab71f3a7"
},
"laravel/horizon": {
- "version": "v5.48.2",
- "hash": "tree-v2:5173777c8b58d8f7dc185a8252ed5c8d4f922aa818d89c571448d053bdbb3fd8"
+ "version": "v5.50.0",
+ "hash": "tree-v2:524ba1806df3f59f4daafd5db7e6c7a3767a1297396303b14dc11f129f73c4eb"
},
"laravel/mcp": {
"version": "v1.0.1",
@@ -129,12 +129,12 @@
"hash": "tree-v2:788db1215e7e8c6cb282ee115d4b7570a7f30eb763a53b40417df4b7c5a4981c"
},
"laravel/prompts": {
- "version": "v0.3.22",
- "hash": "tree-v2:6e9c301dd528b44952cf87472ee49cd9f9a2c1aac7bb26d7d105ca779fdbdad8"
+ "version": "v0.3.24",
+ "hash": "tree-v2:af7fccf97985aef4aad89febec94cee2dce8d76a74b961c1d03a680df881ef6e"
},
"laravel/reverb": {
- "version": "v1.11.1",
- "hash": "tree-v2:cc912bc1cad0332eb928da40f3bce89d47ead68e4455ad6f450e0fddf7dd6aa9"
+ "version": "v1.12.0",
+ "hash": "tree-v2:ccc8b90a2d1039edd725f432f001e6001a87796858f127609d1686d06921816f"
},
"laravel/sanctum": {
"version": "v4.3.3",
@@ -145,12 +145,12 @@
"hash": "tree-v2:2893786cf018af94219a831c0e4056110487dd448a8dd32f80c936760a180115"
},
"laravel/serializable-closure": {
- "version": "v2.0.15",
- "hash": "tree-v2:cf3dc1978786badf5de9edfb49e9e4faf44353726823fe35657ee6176539da76"
+ "version": "v2.1.0",
+ "hash": "tree-v2:46e235154eb6a796d4dc4365dc4c2fd1bc4abb91f2235b7741061116a06e0637"
},
"laravel/socialite": {
- "version": "v5.29.0",
- "hash": "tree-v2:28926a0133c2b3594903c7a65b5401b5a5660ad59d5db3ff0e2a74807e7a5594"
+ "version": "v5.30.0",
+ "hash": "tree-v2:935f438d7fd622b867b4752ae68b906f120cd770c126d4c2f6dbfc49eaec4dbb"
},
"laravel/tinker": {
"version": "v2.11.1",
@@ -177,24 +177,24 @@
"hash": "tree-v2:420e48fea76c143b41f4a8c1516031dc09ebb7e6367321af317e0a48fa998320"
},
"league/flysystem-aws-s3-v3": {
- "version": "3.35.2",
- "hash": "tree-v2:c8e152eed6be05d58efb91340a8625509bf8e37e96dd5494a2fa0e5efcdfd473"
+ "version": "3.35.3",
+ "hash": "tree-v2:b444006b5245a442e5623e546c1d49d3150330574d27da41ea2da01230df0938"
},
"league/flysystem-local": {
"version": "3.35.3",
"hash": "tree-v2:7dba7c9670489313d3604b6a2801a152cf455b5e0d428bf721efda7ea37a5000"
},
"league/flysystem-sftp-v3": {
- "version": "3.33.0",
- "hash": "tree-v2:08f6d0810972764546da057809b3f896fccb0aaf78cf373ae4ca7c2a3b2e7c5d"
+ "version": "3.36.0",
+ "hash": "tree-v2:a5da24792e8191c3e234b897466197a20b8f6d657ae1651b68592aaa743efdc4"
},
"league/mime-type-detection": {
"version": "1.17.0",
"hash": "tree-v2:1726a64b700472e12c6e5917132914a632350a91b90816cc3c5940ddea1f92d7"
},
"league/oauth1-client": {
- "version": "v1.11.0",
- "hash": "tree-v2:677e7814fa6d106ecb790969760478ea4be3196f57c2d1221d52bd65b0d0314c"
+ "version": "v1.12.0",
+ "hash": "tree-v2:96e3c6b7cca4d1cc2b14391f0d38bd631afbd44aecd549be6426fe78214c01a2"
},
"league/uri": {
"version": "7.8.1",
@@ -205,32 +205,32 @@
"hash": "tree-v2:227c217ed67b9cd48cc589867bf18379e95858e068724b8fbef94713311b024e"
},
"livewire/livewire": {
- "version": "v3.8.7",
- "hash": "tree-v2:03751c8d0ff86c69cd31d12d03108a2b51de4e0814112f52fa0430b373048287"
+ "version": "v3.8.10",
+ "hash": "tree-v2:53b5f60c4ed2d495c3a2fcb2b2390f87c7d26d5e54648b3f10efe4010d720924"
},
"log1x/laravel-webfonts": {
"version": "v2.0.1",
"hash": "tree-v2:c192111c594d02411d0fbf9dab0837775b56a044c85dd30351d20a9779929872"
},
"lorisleiva/laravel-actions": {
- "version": "v2.10.2",
- "hash": "tree-v2:29d4ccab64e49c12ef9a474d85db12c65efaebb1af8a3d2ecf6ec947cff6eda4"
+ "version": "v2.12.0",
+ "hash": "tree-v2:88028833bc2531aa43a58f4af7f79fd6cc6c25d9f813732ff9b73e4df31d0a13"
},
"lorisleiva/lody": {
- "version": "v0.7.0",
- "hash": "tree-v2:2c14f50081e55efb773357853964f9afbecb8ffc9743f9388f0d8d56ec20a06a"
+ "version": "v0.7.1",
+ "hash": "tree-v2:e02bb6ff9f6b29fb36c4e9a8daf8b3fe788ed55cdd2b616d88214976b18521c7"
},
"monolog/monolog": {
- "version": "3.10.0",
- "hash": "tree-v2:e248df59c4227ff9e0639a9a9c181c11d5a2f1b006cff723c410ac8384f5221e"
+ "version": "3.12.1",
+ "hash": "tree-v2:bb7a293a3ba00d6ca00220a74a07a194fa22bdde721ae8533e8773c7c3589cc4"
},
"mtdowling/jmespath.php": {
"version": "2.9.2",
"hash": "tree-v2:c87e5d6482253928932f38ada2184333cccc8be28081642f4f1b41dc66734822"
},
"nesbot/carbon": {
- "version": "3.13.2",
- "hash": "tree-v2:234c5d4f300a255952cd9c20d906a8d8103826a9dadcc63b17073d922dfdab1a"
+ "version": "3.14.1",
+ "hash": "tree-v2:a5a16a60481dc65e8852ac76a275ab81dcb42947cf82c48aac3b36f85a584a86"
},
"nette/schema": {
"version": "v1.3.6",
@@ -241,8 +241,8 @@
"hash": "tree-v2:98a3f1d758153bf83c6da5b98625cb4b1ad1105369e07cb24ea29f60eff0ab63"
},
"nikic/php-parser": {
- "version": "v5.8.0",
- "hash": "tree-v2:90ddc66bf11d350b722c1773acd27c8dd2fa1e49aef3a97fded688f19fdde528"
+ "version": "v5.9.0",
+ "hash": "tree-v2:bcacf1331427ef1203828abd4716eae2d19aa68027126caa55860acf46057cf7"
},
"nubs/random-name-generator": {
"version": "v2.2.0",
@@ -265,28 +265,28 @@
"hash": "tree-v2:3f247d4e9da196031d5ee2754558e7dc17e8d63d7506320fa384d0432c5450d1"
},
"phpdocumentor/reflection-common": {
- "version": "2.2.0",
- "hash": "tree-v2:4d02e6474b2c5b0a756adbb6d10bc568fff06a6d51ad8bb23162d2719dd08119"
+ "version": "2.2.1",
+ "hash": "tree-v2:b5e96fe132bff07f74d641a9d92eed23f59de9bf11828c15afe4b0a79efede7f"
},
"phpdocumentor/reflection-docblock": {
"version": "6.0.3",
"hash": "tree-v2:d4455a70c012b399cab192e5b46fc8609741b8c54d1d8d2ca241b51011f602e1"
},
"phpdocumentor/type-resolver": {
- "version": "2.0.0",
- "hash": "tree-v2:dbbcdc69a18db06efa73b7c12d48bf3918cb1a8fb2e062d4eb726cff61ce2264"
+ "version": "2.1.0",
+ "hash": "tree-v2:b38f8e64f9e625074fc0b7f271a4f4d8100e7e0771c54ae2fae397fe68a45ea0"
},
"phpoption/phpoption": {
- "version": "1.9.5",
- "hash": "tree-v2:b62416f10065930c8d9360481686b69cc63f37eb585dba067bc05da794b0047f"
+ "version": "1.10.0",
+ "hash": "tree-v2:88bf58174c3d5e79cc8ba99f6a072fc4c26e4aea72ad093b5d5a43d3d46ccea4"
},
"phpseclib/phpseclib": {
"version": "3.0.57",
"hash": "tree-v2:55fd680d70046da18276ca8b09dd3f45507a955c8963f01b2b65e1d576241790"
},
"phpstan/phpdoc-parser": {
- "version": "2.3.3",
- "hash": "tree-v2:03f1a0e3c46d438463837789e469ee322c8bc9418615ea8145692cc9159df65b"
+ "version": "2.3.6",
+ "hash": "tree-v2:871a2c3e3fce5505337233418c37cdac1515c9824110bf602cbb8216b4fab7cb"
},
"pion/laravel-chunk-upload": {
"version": "v1.6.3",
@@ -297,8 +297,8 @@
"hash": "tree-v2:828c1437d249186e1dc7c8070b14b520c78460ede432120f647ce63187f89c02"
},
"pragmarx/google2fa": {
- "version": "v9.0.0",
- "hash": "tree-v2:6661a83fede3ef801435599f5358318363e7a13a6a4447d9abd38b10ce49605f"
+ "version": "v9.1.0",
+ "hash": "tree-v2:c4e6d87c5e09946a20bedb4a4c1b68f39385d1cef45b17bd9bec517e39479d2b"
},
"psr/cache": {
"version": "3.0.0",
@@ -341,8 +341,8 @@
"hash": "tree-v2:c518e85e74d1aef81854220186172a87c7e1553652d35eff97655015389e5404"
},
"purplepixie/phpdns": {
- "version": "2.3.6",
- "hash": "tree-v2:3e2c11aebd52bf1faa28737c6871f0bb311ee09d5936e572f1b8dd9b43c77817"
+ "version": "2.4.0",
+ "hash": "tree-v2:1c1ebac6d50b61cd01452f9c6cad774c2b641601925c67f33f6329b5d9cfa5c2"
},
"pusher/pusher-php-server": {
"version": "7.3.0",
@@ -357,8 +357,8 @@
"hash": "tree-v2:ad16df2a5b3611348dc88ba0a921d27b7e074406ff667ca547c6a3579734972c"
},
"ramsey/uuid": {
- "version": "4.9.3",
- "hash": "tree-v2:5683dc29fce0bf6588b8074e4f5d5c1987401c061bb8e412ae7efff27c24c5ad"
+ "version": "4.9.4",
+ "hash": "tree-v2:68d8f0c8847e8275812a7af6335ada47d71f8534bb96c5b54ea18141e4739d77"
},
"ratchet/rfc6455": {
"version": "v0.4.1",
@@ -393,20 +393,20 @@
"hash": "tree-v2:24cd9a269d6eef586865cd4525abfa3068f55e7c634a0d938071300df371fbb1"
},
"resend/resend-laravel": {
- "version": "v1.5.0",
- "hash": "tree-v2:0d8595f92df4e111c5093d4d8ce45b51a21e19a63ad3cd5f11898d613a3778b6"
+ "version": "v1.6.0",
+ "hash": "tree-v2:f5537049aaf9df6fac8e71c360f36367e7adabd64440681cc1005fcb5bc06c8a"
},
"resend/resend-php": {
"version": "v1.16.0",
"hash": "tree-v2:41aee3a1e56f0c323e4c11b2204958d7e24716a4f6ba33a82a279fabdadbc698"
},
"sentry/sentry": {
- "version": "4.30.0",
- "hash": "tree-v2:559b1c23b5422ac70204d32280cb016bf79476201b395c10454dc13c4755ba95"
+ "version": "4.32.0",
+ "hash": "tree-v2:5a245d8c147faace301993c10f5f8df7e4b48d5c140fff3a1ca6dc91c763dffa"
},
"sentry/sentry-laravel": {
- "version": "4.27.0",
- "hash": "tree-v2:5303ae7449f08c6ad252d2fbbea504d8123279b3a72a32c478fbab234289be25"
+ "version": "4.28.0",
+ "hash": "tree-v2:01d427cba075614542d54618e2e2d226ca72033e124c2168f80264cbb03b7461"
},
"socialiteproviders/authentik": {
"version": "5.3.0",
@@ -429,12 +429,12 @@
"hash": "tree-v2:646fdffaaa711fb0698a2ec1647056f8c9cc23a9d4e170ea6ab62d44044993ca"
},
"socialiteproviders/manager": {
- "version": "4.9.2",
- "hash": "tree-v2:d800f550bccc1d0ff067c7a97615aa5ed91fc854d0535b7e8667ee4d0954b59c"
+ "version": "4.10.0",
+ "hash": "tree-v2:af08ad057ab7afee0aa8cd58b5433227e49f5eb9dce326f663eb5915ece3e8e7"
},
"socialiteproviders/microsoft-azure": {
- "version": "5.2.0",
- "hash": "tree-v2:3a0a2a1617d91d6aa2cff6e476c0c471738ed8a3aff12259ad7a9908aafdc248"
+ "version": "5.2.1",
+ "hash": "tree-v2:cf389d095c3ed53db7e1b49192dff77af0fb63777d82bc87417f61cc27de3ed7"
},
"socialiteproviders/zitadel": {
"version": "4.2.0",
@@ -457,8 +457,8 @@
"hash": "tree-v2:35ba0757f6a53e91cdbb12000f797cca394fb4d0694d84e274c65cc94ecc6170"
},
"spatie/laravel-package-tools": {
- "version": "1.93.1",
- "hash": "tree-v2:872b831650427458a405c2c8335c05a6ce31ab58206a1c90c08e22df643fc282"
+ "version": "1.93.3",
+ "hash": "tree-v2:4ae3f9910639e24ebdb2ee3220edcf93e27a380890e8c8442e361d113951e575"
},
"spatie/laravel-schemaless-attributes": {
"version": "2.6.0",
@@ -481,12 +481,12 @@
"hash": "tree-v2:ccfbd1e8a695b968ba0e8b70663c8313ee60235ec562c27e51d1e7ec20ca5881"
},
"spomky-labs/cbor-php": {
- "version": "3.3.0",
- "hash": "tree-v2:8185dd56a52fda8afe3ea92b333809a94a1635cc94b9a80afd03d0f5e895bacf"
+ "version": "3.4.2",
+ "hash": "tree-v2:5017024176dcdeeec0e9224abdc211bdad50da7d66d71fd4a7b5f4412b523290"
},
"spomky-labs/pki-framework": {
- "version": "1.6.0",
- "hash": "tree-v2:be0c59ec13eae7e346bbcec4a0821a75016fb809f18df0357b19d9555edb7f80"
+ "version": "1.6.3",
+ "hash": "tree-v2:8878022c5dc6d32ad0c56bb2806806d5ff1602ae9a10f5bbccd8027283ae8943"
},
"stevebauman/purify": {
"version": "v6.3.2",
@@ -501,20 +501,20 @@
"hash": "tree-v2:7888f31d60c29c4f777204510e9a60a557c98a4e480efe5d9eb13dd617bf21f1"
},
"symfony/console": {
- "version": "v7.4.16",
- "hash": "tree-v2:6bcaeda34b1df22209a4ea023cf74641d865fdb255fa909e94e956dc7a261303"
+ "version": "v7.4.20",
+ "hash": "tree-v2:1473afc4cb70ccac83b3bb8b6683438c5901a5d3fcd8c3b2c2c84da3a2f5b499"
},
"symfony/css-selector": {
- "version": "v8.1.0",
- "hash": "tree-v2:e9e6a6af09fd94bc3bb7e23963502feb3981befc9898be01576ffc704a4e9698"
+ "version": "v8.1.6",
+ "hash": "tree-v2:d8c1eda011461f48443b0fcb1d607979dea4d8f0c1e9e85cee5e9d2f27613cc8"
},
"symfony/deprecation-contracts": {
"version": "v3.7.1",
"hash": "tree-v2:5833e98c5092cd02ed429ffd459b82b158f20393ef0b0ec2e06b2833d7efe838"
},
"symfony/error-handler": {
- "version": "v7.4.15",
- "hash": "tree-v2:8496cdd8c3c237648e8c48f092f7f0a90d33a996852c44021a0b724344c9d92b"
+ "version": "v7.4.20",
+ "hash": "tree-v2:cee97a6ff75008c349ab2b93bf74a109bde62c4d769e6b616bf2c2235956807d"
},
"symfony/event-dispatcher": {
"version": "v8.1.5",
@@ -525,20 +525,20 @@
"hash": "tree-v2:0ac7e6b0bd6da93975ac9b3ec9f41aa596e9c1c6217813797d1e8bb64be89139"
},
"symfony/filesystem": {
- "version": "v8.1.2",
- "hash": "tree-v2:4b713fff4a6a0f61e0b226bab639f355c11dd4a548fa108df08660c0e5055cdb"
+ "version": "v8.1.6",
+ "hash": "tree-v2:0988ddfa5dbfd1d49f57b456feac3132e9ad72c09a8e994b3edcdbb3d8a48a4f"
},
"symfony/finder": {
- "version": "v7.4.14",
- "hash": "tree-v2:eacf156b53cc64a5af416a2d40ed666c4a33727b5fed3d230578e5f0240ed4e1"
+ "version": "v7.4.20",
+ "hash": "tree-v2:c0cb8d8344fdae5029d26bdf249f140beb07180652173fd91b992585c8380753"
},
"symfony/http-foundation": {
- "version": "v7.4.16",
- "hash": "tree-v2:a913c017875712cfbe74b767d16f32aa838606f6c5a714265922c12f82f2778d"
+ "version": "v7.4.20",
+ "hash": "tree-v2:6f0ed46431710070db850c88d9218344a14db9b33262bab8cd7a89c1b68696d6"
},
"symfony/http-kernel": {
- "version": "v7.4.16",
- "hash": "tree-v2:9471b2f370a93fff534e818b17fb270471fec8648636860fe3dcd343f27f0ba6"
+ "version": "v7.4.20",
+ "hash": "tree-v2:c304a88316c6d8ec8255aa9471c47973bcac5b28b042521e1bf2aec5ae0bb670"
},
"symfony/mailer": {
"version": "v7.4.19",
@@ -557,96 +557,100 @@
"hash": "tree-v2:8a05c9979125b75411bed1356ebf16439972fafc4cca1ff6baa717db25e3dfca"
},
"symfony/polyfill-intl-grapheme": {
- "version": "v1.41.0",
- "hash": "tree-v2:eb79b6c358896580faee98f60707746489d3575e1641e46c3e6f76ffebf959b1"
+ "version": "v1.43.0",
+ "hash": "tree-v2:5e6dbd2dc74543299269b89eb6e2ba8c170b51b1697674fbfe681c256e55dd47"
},
"symfony/polyfill-intl-idn": {
- "version": "v1.42.0",
- "hash": "tree-v2:5908ed2ff682cbff50af4623e96bdf4368a0f9dd8e1ac67f00fad0a6b4a0524c"
+ "version": "v1.43.0",
+ "hash": "tree-v2:c923d31d3d92c64e387245034bf7ca44284e3ec6674004efd41e7d13da99a492"
},
"symfony/polyfill-intl-normalizer": {
- "version": "v1.42.0",
- "hash": "tree-v2:a6da84cf96f8c7adc795ab75d322190007835218c206238bd74d4f05036e568d"
+ "version": "v1.43.0",
+ "hash": "tree-v2:cd506f4802cec64c0a39b6fa45cf9e22bffc84e674442ae93b6eaf936304ec5d"
},
"symfony/polyfill-mbstring": {
- "version": "v1.38.2",
- "hash": "tree-v2:a9c8cb96ff984032b9ba2c4ad692eba9376cfe8ad9aa95b238bd3edfde57d9b9"
+ "version": "v1.43.0",
+ "hash": "tree-v2:1178bc6cf2eca3121b218c648dc6b60c5596ba469520be8aa5744cf105dd9e5b"
},
"symfony/polyfill-php80": {
- "version": "v1.37.0",
- "hash": "tree-v2:db9811052bb9f7cd15e09bd54128f33f64516627d90efa9747b8cb0862188aa8"
+ "version": "v1.43.0",
+ "hash": "tree-v2:dac9a7018f6de962c077a8a96a80deaf4da282d85250f36c90e293fde4804664"
+ },
+ "symfony/polyfill-php81": {
+ "version": "v1.38.1",
+ "hash": "tree-v2:fa626280ca82a3b621da208fe448441ec61a315e5f968fabe708d8ab0ebf83f3"
},
"symfony/polyfill-php83": {
- "version": "v1.41.0",
- "hash": "tree-v2:fada0d369c196d6f1f04166f5d4efc01f4c8c2fccbe96f2bb8a4c2d0ec90d44d"
+ "version": "v1.43.0",
+ "hash": "tree-v2:d6cc98eac4a84a4ad1bffbf3b5ae52ce3716d8e8f8ef74b2a76172ce07545d9e"
},
"symfony/polyfill-php84": {
- "version": "v1.38.1",
- "hash": "tree-v2:6503d40681cfabb0497999505304d6e13215f353cdb3f4f351c1a7ec80ed0799"
+ "version": "v1.43.0",
+ "hash": "tree-v2:0e8b2fc36bad3b28730f58da447ce185e1bc0b65e905d8a08f409b8444f853d4"
},
"symfony/polyfill-php85": {
- "version": "v1.41.0",
- "hash": "tree-v2:6d47992b5698e9021fef2975870ed346c85aeb53d33bbd83f703179b0ff665b3"
+ "version": "v1.43.0",
+ "hash": "tree-v2:7399609adce52ef72aab96a3db35805814b486e6a46d30b2ed8e69f587eb3c8f"
},
"symfony/polyfill-uuid": {
- "version": "v1.37.0",
- "hash": "tree-v2:3672d6e03712b8d283e49b2c863affd8db644d152d41b733ec4f0ac2c8f02ff2"
+ "version": "v1.43.0",
+ "hash": "tree-v2:d5a39f5ddaf6c4b4b53829f8cca739b82ac309b5066ac170665b010e03fe6fc1"
},
"symfony/process": {
- "version": "v7.4.13",
- "hash": "tree-v2:7fa664d757a0fdf27dc8dfd65c746dab18d968e1c682f8839caa95e3952840ad"
+ "version": "v7.4.19",
+ "hash": "tree-v2:2fa5a43314ce3843a467b733c1db2c64b861424a177e07c7ded950ac8712edb7"
},
"symfony/property-access": {
"version": "v8.1.4",
"hash": "tree-v2:5f465a4a0eb7e2e8fbe080af2bf95e4c4d3fd4fe272bdf98efc63ed5c0794073"
},
"symfony/property-info": {
- "version": "v8.1.4",
- "hash": "tree-v2:17a0d521ae39e683928b84eef8a9d05e753e798c46e62e412b0bad0f8c165cd3"
+ "version": "v8.1.8",
+ "hash": "tree-v2:08cd925cac3b082917a9c19315571388a1c66fba31fe438dae4af59238f45f55"
},
"symfony/psr-http-message-bridge": {
"version": "v8.1.0",
"hash": "tree-v2:5436ca31402054df5b2f0112afa655297032380d0db45baa946bad4253a8a324"
},
"symfony/routing": {
- "version": "v7.4.15",
- "hash": "tree-v2:1eec74fab090e7db3ebebb7889e672f4c58bbd369e04019318f612e5c40924fe"
+ "version": "v7.4.20",
+ "hash": "tree-v2:19428320d0ea2565dc895a1d706d8c94497ccca8ffbff34422369fd3d9a828c2"
},
"symfony/serializer": {
- "version": "v8.1.4",
- "hash": "tree-v2:149659705c501cec2697f2c75bd4bd962a3dca4aef20cb62a210ce127f68755f"
+ "version": "v8.1.8",
+ "hash": "tree-v2:af5d415bda361730ecfbb542dc810a7d98ac00922c9fc625e740d3e221d645ef"
},
"symfony/service-contracts": {
"version": "v3.7.3",
"hash": "tree-v2:87421779a4d0f4aae910ba4a77c7a04bfd6d385d86190a96ec8276ec1ba48987"
},
"symfony/string": {
- "version": "v8.1.2",
- "hash": "tree-v2:6c3dbd245e870cd78bdd16b764534dff6ddf4c1e0391fd491116cf3a2c1d5ea7"
+ "version": "v8.1.7",
+ "hash": "tree-v2:e51a49ae27601177aa109b457a6fa3c578e8df63f80845a3101095010791f66f"
},
"symfony/translation": {
- "version": "v8.1.4",
- "hash": "tree-v2:0cd6421dce1427357556e4e4bd0f77d71d59e15e878a5bbfd687e0a6e4911d87"
+ "version": "v8.1.5",
+ "hash": "tree-v2:5ed59b86402810a7cc27e7abb649b87fe5e32e20f982a025dee49333b77c0182"
},
"symfony/translation-contracts": {
"version": "v3.7.1",
"hash": "tree-v2:74a8e3a8f0580af687b411de0e087911c348807f6e59858632fbffabeb7bf9a9"
},
"symfony/type-info": {
- "version": "v8.1.0",
- "hash": "tree-v2:f71c1d1d8a9605c340252d2c7fc5e4a5feee46edd89e40b9988a037fa544fc65"
+ "version": "v8.1.8",
+ "hash": "tree-v2:f5b0432361367fb8453952c9821a05fb2aadf6918fed80cb82a8b9bea4cc039c"
},
"symfony/uid": {
- "version": "v7.4.9",
- "hash": "tree-v2:0ab2c9a4659cc4f1715a62c49074f741474d06544445e56baa87d922b71aacc9"
+ "version": "v7.4.20",
+ "hash": "tree-v2:9c354ab4077f1df6443bda228b659e01c97a28bbc64ad36b15f9976cb66bdbce"
},
"symfony/var-dumper": {
- "version": "v7.4.15",
- "hash": "tree-v2:c8b18ce6dcad1d629dccc76b6c4820edb4fe7c61eeeb744ca3d31de45a85087e"
+ "version": "v7.4.18",
+ "hash": "tree-v2:6cf1763f4c700d9ead924182f1176ee815be6414cb1ea67bc6e92d13fc3461b2"
},
"symfony/yaml": {
- "version": "v7.4.15",
- "hash": "tree-v2:9b3804edae9da1565a6e299ede6fd0b079d650fb0d782859242f4d66d341e07d"
+ "version": "v7.4.20",
+ "hash": "tree-v2:6df48f1dc34ac760427993457ed35021434f1ae3d5ebfd610dfffee57bc7cfe9"
},
"tijsverkoyen/css-to-inline-styles": {
"version": "v2.4.0",
@@ -657,20 +661,20 @@
"hash": "tree-v2:e96d37d3b83f67809d1ea0fb7f4e33f9879d7aeb2dc5b4fa2135b84177e651c9"
},
"vlucas/phpdotenv": {
- "version": "v5.6.4",
- "hash": "tree-v2:2ca7accffdf5b12d4958d2ae3f336361834c50c21c70a2be3532cc286b5f019f"
+ "version": "v5.7.0",
+ "hash": "tree-v2:6c06f3ef79457956cc5468b35ba53b18504b47a0925d29278c2b195caa85bae0"
},
"voku/portable-ascii": {
"version": "2.1.1",
"hash": "tree-v2:6c1b22272d89eb3d85366cc99a0375535b76a897616d9d79bbfddc8bcded66c6"
},
"web-auth/cose-lib": {
- "version": "4.6.0",
- "hash": "tree-v2:58dff943fe79fabffa06d2ad63f9eae90ec2ca5b39078d757260875d7ef99d66"
+ "version": "4.8.2",
+ "hash": "tree-v2:de961d934f2e526f30b69334bb474ac1aa3ff77389998ea9d0f6c02ffe493936"
},
"web-auth/webauthn-lib": {
- "version": "5.3.5",
- "hash": "tree-v2:4843b192ff2f3ad73d9464fc8b55127d23a4b7862b04a0b575391115d89580f9"
+ "version": "5.3.9",
+ "hash": "tree-v2:e0949da9b86423ae77ef6a89f893c59bf769748d6a73ef90b6b0c35ea62e8209"
},
"webmozart/assert": {
"version": "2.4.1",
@@ -703,8 +707,8 @@
"hash": "tree-v2:d7d30faedc5d9aaadb6cd48d296f2bcc202f5b9e9251cb749c07196398da42de"
},
"amphp/dns": {
- "version": "v2.4.0",
- "hash": "tree-v2:d28e15bcd691a79054c254023a536ac3c7de9524afd32e8ca1e967ed01cf4dc5"
+ "version": "v2.4.1",
+ "hash": "tree-v2:5244fcc714f0651538775d9749fb14f2d7980ec3b3f472c85724f6dd7a37efc1"
},
"amphp/hpack": {
"version": "v3.2.2",
@@ -739,8 +743,8 @@
"hash": "tree-v2:a4cd50472d471a9d10fcafdb712cb3efc112bb2e643814529bb6195d43acdce4"
},
"amphp/socket": {
- "version": "v2.4.0",
- "hash": "tree-v2:57eb1b91472ba757cd5ab821c4468b1472b1c4a9e5d5bb57d931efbe5a5a3899"
+ "version": "v2.4.1",
+ "hash": "tree-v2:cfe7178350f2a9cacd4b6ea1e5f68ba14889162e04838b04b279cb8389dd780b"
},
"amphp/sync": {
"version": "v2.3.0",
@@ -775,24 +779,24 @@
"hash": "tree-v2:a4f2d4abdf003756bf9b88bb6c55c8a70d8d214c81529273974c9ddda020fe02"
},
"driftingly/rector-laravel": {
- "version": "2.5.0",
- "hash": "tree-v2:8f0433e6ed4017e91c5c41632633330f34370e910335b004913709c5711fc8d4"
+ "version": "2.6.2",
+ "hash": "tree-v2:7ad85f8d2c4fc8ae611466f654d894413f9d066999bbede4abdccda6f230be4e"
},
"fakerphp/faker": {
"version": "v1.24.1",
"hash": "tree-v2:b6f3d0f8ca79f98400b0df7c2a29004dbd9e3f39f39125ecfd5613e38b9ff6a3"
},
"fidry/cpu-core-counter": {
- "version": "1.3.0",
- "hash": "tree-v2:c33bdd2e0430e4110e6ee218701bdee1b422acb2510dd198836519b9a8fcc58d"
+ "version": "1.4.1",
+ "hash": "tree-v2:187d5e8e97709597df098f058a60567f02d205ecf769583864ae461552cdae95"
},
"filp/whoops": {
- "version": "2.18.4",
- "hash": "tree-v2:db8671d760c94524baa207edf2fc1731a493b7074eb94f8767d821712b68188c"
+ "version": "2.18.5",
+ "hash": "tree-v2:8c32519eacbd19b8d00468e9a8aaf35efca825f90c912fd802d74494d97e1ca5"
},
"hamcrest/hamcrest-php": {
- "version": "v2.1.1",
- "hash": "tree-v2:8b11d442e6982460070110b31fc532c8fe524fc757990e5a4e75f32ebc1e8852"
+ "version": "v3.0.0",
+ "hash": "tree-v2:49f1c99167659adb6f9f9bf1aa7abca02fcd773f3c19041f7983dd50b83d85e7"
},
"kelunik/certificate": {
"version": "v1.1.3",
@@ -803,8 +807,8 @@
"hash": "tree-v2:c88d4a35bf2e78d321dca9e8c342c6de41d85d06e840d0f1149d5990ac7c3a3a"
},
"laravel/pint": {
- "version": "v1.30.4",
- "hash": "tree-v2:012d3f194967babaf7ec78395508e0c287f5eeda5c549e8adc42740571c7c9bd"
+ "version": "v1.32.1",
+ "hash": "tree-v2:6011ed0cc05d840c85dac563c64a2461bc3c09f131e7c819f75abd73c9502f64"
},
"laravel/roster": {
"version": "v1.0.0",
@@ -819,12 +823,12 @@
"hash": "tree-v2:a2b928f6fae0e15c66f08ae84e98f7dd8547749390ca842c83014bf1f2d68777"
},
"mockery/mockery": {
- "version": "1.6.12",
- "hash": "tree-v2:c6cb44811fb2674feeac51789852447cc0148c22f87a4557f608cd0d3f238836"
+ "version": "1.6.15",
+ "hash": "tree-v2:4bc0e2fbaea02a9469caa0f1105242dca2907278bc1fd8a3f9c6c8a2ddf920d7"
},
"myclabs/deep-copy": {
- "version": "1.13.4",
- "hash": "tree-v2:7927270fd36147270b920cea3dce8149bf609959dfe7c4174a30e0141143e232"
+ "version": "1.14.0",
+ "hash": "tree-v2:6f013d251808abbe250faa2a847f14d89804ba137fc7e085495311bc6ebc1822"
},
"nunomaduro/collision": {
"version": "v8.9.5",
@@ -863,16 +867,16 @@
"hash": "tree-v2:0409e2019377650177c2b10da803617abc85e49d5b02b8697d450c007eab42b4"
},
"phpstan/phpstan": {
- "version": "2.2.8",
- "hash": "tree-v2:11220d859d5bd2348fd5077163b60446b371076d43567e50fa7c8d392a1beffd"
+ "version": "2.2.16",
+ "hash": "tree-v2:2c6a2e25bc83ef5a18b9a3a5fb9ac9464160a2e414cf4df481d3810becefdde1"
},
"phpunit/php-code-coverage": {
"version": "12.5.7",
"hash": "tree-v2:5cf24f83c21b6d8fce23e7ad853f77f0807e76f4c84d4f7ffb9053a167df16ca"
},
"phpunit/php-file-iterator": {
- "version": "6.0.1",
- "hash": "tree-v2:54536e94dfbd738ec39954f8f2bc3774caa1a1b12a439cafe42011cac2ee0569"
+ "version": "6.0.2",
+ "hash": "tree-v2:5899b835455b09f32cda45548e9aaa437dd3aa9508c5960076d081175aa53293"
},
"phpunit/php-invoker": {
"version": "6.0.0",
@@ -891,8 +895,8 @@
"hash": "tree-v2:fe7d4ec3e4840290cee07c39535422b61bb31ebd2afde15a39a78373a0cd2c64"
},
"rector/rector": {
- "version": "2.6.1",
- "hash": "tree-v2:2a4a264d7df24292e129c0d39cdc6a09f70dbf9393ad9868b8741e5eb429e716"
+ "version": "2.6.7",
+ "hash": "tree-v2:9e83455ef9d1fa0a25829c840dd17ad00620e4b315bed4aee4fde6a2aa10cac5"
},
"revolt/event-loop": {
"version": "v1.0.9",
@@ -911,8 +915,8 @@
"hash": "tree-v2:f0d6eb200ba389679d875eb854ffc9d6c55884d1e5b5bdcd2e58cb27d505c362"
},
"sebastian/diff": {
- "version": "7.0.0",
- "hash": "tree-v2:c72b3660535ae84aa1fa0cf9f328ee07fa30fb779724ee10462908121ec2d8ac"
+ "version": "7.0.1",
+ "hash": "tree-v2:97deb1c25a59326f762c614ccc25be2163296ae70762785f12d307ed967a5326"
},
"sebastian/environment": {
"version": "8.1.2",
@@ -951,20 +955,24 @@
"hash": "tree-v2:b900b2263d6a49e35e6c9adf9d477f927d769f6a019ae4532a6867b44506f456"
},
"serversideup/spin": {
- "version": "v3.3.0",
- "hash": "tree-v2:bba2bd0cc9b72ae27db7fb4cded0b8b9959fe39d2528f733e4d6f12264f9e279"
+ "version": "v3.5.2",
+ "hash": "tree-v2:21e14ccdd73e58677be9802890fd8d73dc3bd608e7693451ed63c34329cfe2a0"
},
"staabm/side-effects-detector": {
"version": "1.0.5",
"hash": "tree-v2:26d964435c381c94abd5dbadf497d7888b5a811f0693b66aa7976a3d01c545ba"
},
"symfony/http-client": {
- "version": "v7.4.16",
- "hash": "tree-v2:d316de62dd4763550b258ab71fd021a58c42743e8e9f2e79d0f54f944fedbb6b"
+ "version": "v7.4.20",
+ "hash": "tree-v2:01cdb0293ea860ec2a8a73a855d8a05ed611e0f71cdaad02699782a8f47f5ccc"
},
"symfony/http-client-contracts": {
- "version": "v3.7.1",
- "hash": "tree-v2:6b3703eade4cde3e59fae53198d32bd786fb63786980c71b2049b29afbc971f0"
+ "version": "v3.7.3",
+ "hash": "tree-v2:3fba0792bd4d55c49f97b475328f8f87d3c0f761c4a533d03b7f9afea731046f"
+ },
+ "symplify/rule-doc-generator-contracts": {
+ "version": "11.2.0",
+ "hash": "tree-v2:143fc89ce64308c660e6f52de2df92429720106e1e43e1484dd93193772ed011"
},
"ta-tikoma/phpunit-architecture-test": {
"version": "0.8.7",
From d5b3fad6cd1f2e7a46d136283691f6f09a913df8 Mon Sep 17 00:00:00 2001
From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Date: Sat, 3 Oct 2026 22:55:28 +0200
Subject: [PATCH 04/19] chore(deps): upgrade composer dependencies to new major
versions
---
composer.json | 8 +--
composer.lock | 136 +++++++++++++++++++++++++-------------------------
vet.json | 16 +++---
3 files changed, 79 insertions(+), 81 deletions(-)
diff --git a/composer.json b/composer.json
index 222e4ed045..63607eb98b 100644
--- a/composer.json
+++ b/composer.json
@@ -25,7 +25,7 @@
"laravel/reverb": "^1.12.0",
"laravel/sanctum": "^4.3.3",
"laravel/socialite": "^5.30.0",
- "laravel/tinker": "^2.11.1",
+ "laravel/tinker": "^3.0.2",
"laravel/ui": "^4.6.3",
"lcobucci/jwt": "^5.6.0",
"league/flysystem-aws-s3-v3": "^3.35.3",
@@ -55,8 +55,8 @@
"spatie/url": "^2.4.0",
"stevebauman/purify": "^6.3.2",
"stripe/stripe-php": "^16.6.0",
- "symfony/yaml": "^7.4.20",
- "visus/cuid2": "^6.0.0",
+ "symfony/yaml": "^8.1.8",
+ "visus/cuid2": "^7.0.0",
"yosymfony/toml": "^1.0.4",
"zircote/swagger-php": "^5.8.3"
},
@@ -73,7 +73,7 @@
"phpstan/phpstan": "^2.2.16",
"rector/rector": "^2.6.7",
"serversideup/spin": "^3.5.2",
- "symfony/http-client": "^7.4.20"
+ "symfony/http-client": "^8.1.8"
},
"minimum-stability": "stable",
"prefer-stable": true,
diff --git a/composer.lock b/composer.lock
index 7df96507d0..43ded925a9 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": "6aa67566da21c08f267067cdbad6d18b",
+ "content-hash": "5a92d3a9cc7cdaa3fc2598841619ec11",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -2877,33 +2877,33 @@
},
{
"name": "laravel/tinker",
- "version": "v2.11.1",
+ "version": "v3.0.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/tinker.git",
- "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741"
+ "reference": "4faba77764bd33411735936acdf30446d058c78b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laravel/tinker/zipball/c9f80cc835649b5c1842898fb043f8cc098dd741",
- "reference": "c9f80cc835649b5c1842898fb043f8cc098dd741",
+ "url": "https://api.github.com/repos/laravel/tinker/zipball/4faba77764bd33411735936acdf30446d058c78b",
+ "reference": "4faba77764bd33411735936acdf30446d058c78b",
"shasum": ""
},
"require": {
- "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
- "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
- "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0",
- "php": "^7.2.5|^8.0",
- "psy/psysh": "^0.11.1|^0.12.0",
- "symfony/var-dumper": "^4.3.4|^5.0|^6.0|^7.0|^8.0"
+ "illuminate/console": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0",
+ "illuminate/contracts": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0",
+ "illuminate/support": "^8.0|^9.0|^10.0|^11.0|^12.0|^13.0",
+ "php": "^8.1",
+ "psy/psysh": "^0.12.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0|^8.0"
},
"require-dev": {
"mockery/mockery": "~1.3.3|^1.4.2",
"phpstan/phpstan": "^1.10",
- "phpunit/phpunit": "^8.5.8|^9.3.3|^10.0"
+ "phpunit/phpunit": "^10.5|^11.5"
},
"suggest": {
- "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0|^11.0|^12.0)."
+ "illuminate/database": "The Illuminate Database package (^8.0|^9.0|^10.0|^11.0|^12.0|^13.0)."
},
"type": "library",
"extra": {
@@ -2911,6 +2911,9 @@
"providers": [
"Laravel\\Tinker\\TinkerServiceProvider"
]
+ },
+ "branch-alias": {
+ "dev-master": "3.x-dev"
}
},
"autoload": {
@@ -2937,9 +2940,9 @@
],
"support": {
"issues": "https://github.com/laravel/tinker/issues",
- "source": "https://github.com/laravel/tinker/tree/v2.11.1"
+ "source": "https://github.com/laravel/tinker/tree/v3.0.2"
},
- "time": "2026-02-06T14:12:35+00:00"
+ "time": "2026-03-17T14:54:13+00:00"
},
{
"name": "laravel/ui",
@@ -11872,28 +11875,28 @@
},
{
"name": "symfony/yaml",
- "version": "v7.4.20",
+ "version": "v8.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "0222bf4dfaa1e3ceb8fff579635d655f2950d5a7"
+ "reference": "030e96eed0303223bfca3af9109e9e64830b6ec3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/0222bf4dfaa1e3ceb8fff579635d655f2950d5a7",
- "reference": "0222bf4dfaa1e3ceb8fff579635d655f2950d5a7",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/030e96eed0303223bfca3af9109e9e64830b6ec3",
+ "reference": "030e96eed0303223bfca3af9109e9e64830b6ec3",
"shasum": ""
},
"require": {
- "php": ">=8.2",
- "symfony/deprecation-contracts": "^2.5|^3",
+ "php": ">=8.4.1",
"symfony/polyfill-ctype": "^1.8"
},
"conflict": {
- "symfony/console": "<6.4"
+ "symfony/console": "<7.4"
},
"require-dev": {
- "symfony/console": "^6.4|^7.0|^8.0"
+ "symfony/console": "^7.4|^8.0",
+ "yaml/yaml-test-suite": "*"
},
"bin": [
"Resources/bin/yaml-lint"
@@ -11924,7 +11927,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v7.4.20"
+ "source": "https://github.com/symfony/yaml/tree/v8.1.8"
},
"funding": [
{
@@ -11944,7 +11947,7 @@
"type": "tidelift"
}
],
- "time": "2026-09-26T06:31:10+00:00"
+ "time": "2026-09-26T06:33:49+00:00"
},
{
"name": "tijsverkoyen/css-to-inline-styles",
@@ -12003,35 +12006,34 @@
},
{
"name": "visus/cuid2",
- "version": "6.0.0",
+ "version": "7.0.0",
"source": {
"type": "git",
"url": "https://github.com/visus-io/php-cuid2.git",
- "reference": "834c8a1c04684931600ee7a4189150b331a5b56c"
+ "reference": "a495550b8a88a4813f6a15683eb74bbb60312fe1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/visus-io/php-cuid2/zipball/834c8a1c04684931600ee7a4189150b331a5b56c",
- "reference": "834c8a1c04684931600ee7a4189150b331a5b56c",
+ "url": "https://api.github.com/repos/visus-io/php-cuid2/zipball/a495550b8a88a4813f6a15683eb74bbb60312fe1",
+ "reference": "a495550b8a88a4813f6a15683eb74bbb60312fe1",
"shasum": ""
},
"require": {
- "php": "^8.2",
- "symfony/polyfill-php83": "^1.32"
+ "php": "^8.3"
},
"require-dev": {
- "captainhook/captainhook": "^5.27",
- "captainhook/hook-installer": "^1.0",
- "captainhook/plugin-composer": "^5.3",
- "dealerdirect/phpcodesniffer-composer-installer": "^1.2",
- "ergebnis/composer-normalize": "^2.29",
+ "captainhook/captainhook": "^5.29.2",
+ "captainhook/hook-installer": "^1.0.5",
+ "captainhook/plugin-composer": "^5.3.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^1.2.1",
+ "ergebnis/composer-normalize": "^2.52",
"php-parallel-lint/php-parallel-lint": "^1.4",
- "phpbench/phpbench": "^1.4",
- "phpstan/phpstan": "^1.9",
- "phpunit/phpunit": "^10.5",
- "ramsey/conventional-commits": "^1.5",
- "slevomat/coding-standard": "^8.25",
- "squizlabs/php_codesniffer": "^4.0"
+ "phpbench/phpbench": "^1.7",
+ "phpstan/phpstan": "^2.2.7",
+ "phpunit/phpunit": "^12.5.33",
+ "ramsey/conventional-commits": "^1.7",
+ "slevomat/coding-standard": "^8.31.1",
+ "squizlabs/php_codesniffer": "^4.0.1"
},
"suggest": {
"ext-gmp": "Enables faster math with arbitrary precision integers using GMP."
@@ -12067,9 +12069,9 @@
],
"support": {
"issues": "https://github.com/visus-io/php-cuid2/issues",
- "source": "https://github.com/visus-io/php-cuid2/tree/6.0.0"
+ "source": "https://github.com/visus-io/php-cuid2/tree/7.0.0"
},
- "time": "2025-12-18T14:52:27+00:00"
+ "time": "2026-09-21T10:58:46+00:00"
},
{
"name": "vlucas/phpdotenv",
@@ -17451,31 +17453,28 @@
},
{
"name": "symfony/http-client",
- "version": "v7.4.20",
+ "version": "v8.1.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/http-client.git",
- "reference": "750a420b8dd0af3d6e1c6c1412802abf2cdd2b6c"
+ "reference": "e20aca4ceaa888197de5c792ffc551d99e43d98a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/http-client/zipball/750a420b8dd0af3d6e1c6c1412802abf2cdd2b6c",
- "reference": "750a420b8dd0af3d6e1c6c1412802abf2cdd2b6c",
+ "url": "https://api.github.com/repos/symfony/http-client/zipball/e20aca4ceaa888197de5c792ffc551d99e43d98a",
+ "reference": "e20aca4ceaa888197de5c792ffc551d99e43d98a",
"shasum": ""
},
"require": {
- "php": ">=8.2",
+ "php": ">=8.4.1",
"psr/log": "^1|^2|^3",
- "symfony/deprecation-contracts": "^2.5|^3",
- "symfony/http-client-contracts": "~3.4.4|^3.5.2",
- "symfony/polyfill-php83": "^1.29",
+ "symfony/deprecation-contracts": "^2.5|^3.0",
+ "symfony/http-client-contracts": "^3.7",
"symfony/service-contracts": "^2.5|^3"
},
"conflict": {
- "amphp/amp": "<2.5",
- "amphp/socket": "<1.1",
- "php-http/discovery": "<1.15",
- "symfony/http-foundation": "<6.4"
+ "amphp/amp": "<3",
+ "php-http/discovery": "<1.15"
},
"provide": {
"php-http/async-client-implementation": "*",
@@ -17484,20 +17483,19 @@
"symfony/http-client-implementation": "3.0"
},
"require-dev": {
- "amphp/http-client": "^4.2.1|^5.0",
- "amphp/http-tunnel": "^1.0|^2.0",
- "guzzlehttp/promises": "^1.4|^2.0",
+ "amphp/http-client": "^5.3.2",
+ "amphp/http-tunnel": "^2.0",
+ "guzzlehttp/guzzle": "^7.10|^8.0",
"nyholm/psr7": "^1.0",
"php-http/httplug": "^1.0|^2.0",
"psr/http-client": "^1.0",
- "symfony/amphp-http-client-meta": "^1.0|^2.0",
- "symfony/cache": "^6.4|^7.0|^8.0",
- "symfony/dependency-injection": "^6.4|^7.0|^8.0",
- "symfony/http-kernel": "^6.4|^7.0|^8.0",
- "symfony/messenger": "^6.4|^7.0|^8.0",
- "symfony/process": "^6.4|^7.0|^8.0",
- "symfony/rate-limiter": "^6.4|^7.0|^8.0",
- "symfony/stopwatch": "^6.4|^7.0|^8.0"
+ "symfony/cache": "^7.4|^8.0",
+ "symfony/dependency-injection": "^7.4|^8.0",
+ "symfony/http-kernel": "^7.4|^8.0",
+ "symfony/messenger": "^7.4|^8.0",
+ "symfony/process": "^7.4|^8.0",
+ "symfony/rate-limiter": "^7.4|^8.0",
+ "symfony/stopwatch": "^7.4|^8.0"
},
"type": "library",
"autoload": {
@@ -17528,7 +17526,7 @@
"http"
],
"support": {
- "source": "https://github.com/symfony/http-client/tree/v7.4.20"
+ "source": "https://github.com/symfony/http-client/tree/v8.1.8"
},
"funding": [
{
@@ -17548,7 +17546,7 @@
"type": "tidelift"
}
],
- "time": "2026-09-24T11:02:13+00:00"
+ "time": "2026-09-24T11:09:32+00:00"
},
{
"name": "symfony/http-client-contracts",
diff --git a/vet.json b/vet.json
index de28baaa3e..c697711495 100644
--- a/vet.json
+++ b/vet.json
@@ -153,8 +153,8 @@
"hash": "tree-v2:935f438d7fd622b867b4752ae68b906f120cd770c126d4c2f6dbfc49eaec4dbb"
},
"laravel/tinker": {
- "version": "v2.11.1",
- "hash": "tree-v2:dbf0a4e6982ec1eb10731c20edaca53829317d294b9a61432b3832a0ef5270fe"
+ "version": "v3.0.2",
+ "hash": "tree-v2:07c01215fec4bef8c1a223bba86119b769ab70dd45d7013834d3dfcdf8046fea"
},
"laravel/ui": {
"version": "v4.6.3",
@@ -649,16 +649,16 @@
"hash": "tree-v2:6cf1763f4c700d9ead924182f1176ee815be6414cb1ea67bc6e92d13fc3461b2"
},
"symfony/yaml": {
- "version": "v7.4.20",
- "hash": "tree-v2:6df48f1dc34ac760427993457ed35021434f1ae3d5ebfd610dfffee57bc7cfe9"
+ "version": "v8.1.8",
+ "hash": "tree-v2:8d990fa9be574dec0fbb19199b855c71c40515b9feebaa996d44de7c954143ee"
},
"tijsverkoyen/css-to-inline-styles": {
"version": "v2.4.0",
"hash": "tree-v2:ac5b86c6dee0dc8f5c5f7f98d250d378d8c65dde04156022650e4776734f7fcb"
},
"visus/cuid2": {
- "version": "6.0.0",
- "hash": "tree-v2:e96d37d3b83f67809d1ea0fb7f4e33f9879d7aeb2dc5b4fa2135b84177e651c9"
+ "version": "7.0.0",
+ "hash": "tree-v2:9558deceb662c50e421e5e42402f973d6cdf72af45322f5274337f6fb741ad2a"
},
"vlucas/phpdotenv": {
"version": "v5.7.0",
@@ -963,8 +963,8 @@
"hash": "tree-v2:26d964435c381c94abd5dbadf497d7888b5a811f0693b66aa7976a3d01c545ba"
},
"symfony/http-client": {
- "version": "v7.4.20",
- "hash": "tree-v2:01cdb0293ea860ec2a8a73a855d8a05ed611e0f71cdaad02699782a8f47f5ccc"
+ "version": "v8.1.8",
+ "hash": "tree-v2:4ef9be0a8af777834c59a7d18c442cbb950b4e5e4d725c22250d301d1ffb7ccb"
},
"symfony/http-client-contracts": {
"version": "v3.7.3",
From c298c22f9999057e38ccd09d0dc0945bfa3ea524 Mon Sep 17 00:00:00 2001
From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Date: Sat, 3 Oct 2026 22:59:20 +0200
Subject: [PATCH 05/19] chore(deps): upgrade swagger-php to v6
---
app/Console/Commands/Generate/OpenApi.php | 13 +--
composer.json | 2 +-
composer.lock | 97 ++++++++++++++++++-----
vet.json | 8 +-
4 files changed, 91 insertions(+), 29 deletions(-)
diff --git a/app/Console/Commands/Generate/OpenApi.php b/app/Console/Commands/Generate/OpenApi.php
index d1e018b0c4..64d83e1bf9 100644
--- a/app/Console/Commands/Generate/OpenApi.php
+++ b/app/Console/Commands/Generate/OpenApi.php
@@ -17,7 +17,8 @@ class OpenApi extends Command
// Generate OpenAPI documentation
echo "Generating OpenAPI documentation.\n";
// https://github.com/OAI/OpenAPI-Specification/releases
- $process = Process::run([
+ // swagger-php 6 leaves PHP warnings to PHP itself; with Xdebug each one carries a stack trace and exhausts memory.
+ $process = Process::env(['XDEBUG_MODE' => 'off'])->run([
'./vendor/bin/openapi',
'app',
// Server transfer endpoints are development-only (isDev()), so they stay out of the public docs.
@@ -28,11 +29,11 @@ class OpenApi extends Command
'--version',
'3.1.0',
]);
- $error = $process->errorOutput();
- $error = preg_replace('/^.*an object literal,.*$/m', '', $error);
- $error = preg_replace('/^\h*\v+/m', '', $error);
- echo $error;
- echo $process->output();
+ foreach ([$process->errorOutput(), $process->output()] as $output) {
+ $output = preg_replace('/^.*an object literal,.*$/m', '', $output);
+ $output = preg_replace('/^\h*\v+/m', '', $output);
+ echo $output;
+ }
$yaml = file_get_contents('openapi.yaml');
diff --git a/composer.json b/composer.json
index 63607eb98b..7e92f92cb3 100644
--- a/composer.json
+++ b/composer.json
@@ -58,7 +58,7 @@
"symfony/yaml": "^8.1.8",
"visus/cuid2": "^7.0.0",
"yosymfony/toml": "^1.0.4",
- "zircote/swagger-php": "^5.8.3"
+ "zircote/swagger-php": "^6.11.0"
},
"require-dev": {
"driftingly/rector-laravel": "^2.6.2",
diff --git a/composer.lock b/composer.lock
index 43ded925a9..43835e7622 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": "5a92d3a9cc7cdaa3fc2598841619ec11",
+ "content-hash": "664589c32e86e8e6fc2a0fb17feab410",
"packages": [
{
"name": "aws/aws-crt-php",
@@ -6184,6 +6184,68 @@
},
"time": "2026-08-07T12:47:11+00:00"
},
+ {
+ "name": "radebatz/type-info-extras",
+ "version": "1.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/DerManoMann/type-info-extras.git",
+ "reference": "2d9f01d60d642f890d9f170c0d8fde1f75ab17fb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/DerManoMann/type-info-extras/zipball/2d9f01d60d642f890d9f170c0d8fde1f75ab17fb",
+ "reference": "2d9f01d60d642f890d9f170c0d8fde1f75ab17fb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.2",
+ "phpstan/phpdoc-parser": "^2.0",
+ "symfony/type-info": "^7.3.8 || ^7.4.1 || ^8.0 || ^8.1-@dev"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^3.70",
+ "phpstan/phpstan": "^2.1",
+ "phpunit/phpunit": "^11.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Radebatz\\TypeInfoExtras\\": "src"
+ },
+ "exclude-from-classmap": [
+ "/tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Martin Rademacher",
+ "email": "mano@radebatz.org"
+ }
+ ],
+ "description": "Extras for symfony/type-info",
+ "homepage": "http://radebatz.net/mano/",
+ "keywords": [
+ "component",
+ "symfony",
+ "type-info",
+ "types"
+ ],
+ "support": {
+ "issues": "https://github.com/DerManoMann/type-info-extras/issues",
+ "source": "https://github.com/DerManoMann/type-info-extras/tree/1.0.9"
+ },
+ "time": "2026-09-29T22:04:31+00:00"
+ },
{
"name": "ralouphie/getallheaders",
"version": "3.0.3",
@@ -12570,24 +12632,25 @@
},
{
"name": "zircote/swagger-php",
- "version": "5.8.3",
+ "version": "6.11.0",
"source": {
"type": "git",
"url": "https://github.com/zircote/swagger-php.git",
- "reference": "098223019f764a16715f64089a58606096719c98"
+ "reference": "f998f7e712658fba61f86fccbdcf8e301a982175"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/zircote/swagger-php/zipball/098223019f764a16715f64089a58606096719c98",
- "reference": "098223019f764a16715f64089a58606096719c98",
+ "url": "https://api.github.com/repos/zircote/swagger-php/zipball/f998f7e712658fba61f86fccbdcf8e301a982175",
+ "reference": "f998f7e712658fba61f86fccbdcf8e301a982175",
"shasum": ""
},
"require": {
- "ext-json": "*",
"nikic/php-parser": "^4.19 || ^5.0",
- "php": ">=7.4",
+ "php": ">=8.2",
"phpstan/phpdoc-parser": "^2.0",
"psr/log": "^1.1 || ^2.0 || ^3.0",
+ "radebatz/type-info-extras": "^1.0.2",
+ "symfony/console": "^6.4 || ^7.0 || ^8.0",
"symfony/deprecation-contracts": "^2 || ^3",
"symfony/finder": "^5.0 || ^6.0 || ^7.0 || ^8.0",
"symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0"
@@ -12596,17 +12659,11 @@
"symfony/process": ">=6, <6.4.14"
},
"require-dev": {
- "composer/package-versions-deprecated": "^1.11",
"doctrine/annotations": "^2.0",
- "friendsofphp/php-cs-fixer": "^3.62.0",
- "phpstan/phpstan": "^1.6 || ^2.0",
- "phpunit/phpunit": "^9.0",
- "rector/rector": "^1.0 || ^2.3.1",
- "vimeo/psalm": "^4.30 || ^5.0"
- },
- "suggest": {
- "doctrine/annotations": "^2.0",
- "radebatz/type-info-extras": "^1.0.2"
+ "friendsofphp/php-cs-fixer": "3.95.23",
+ "phpstan/phpstan": "2.2.12",
+ "phpunit/phpunit": "^11.5 || >=12.5.22",
+ "rector/rector": "2.6.5"
},
"bin": [
"bin/openapi"
@@ -12614,7 +12671,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.x-dev"
+ "dev-master": "6.x-dev"
}
},
"autoload": {
@@ -12652,7 +12709,7 @@
],
"support": {
"issues": "https://github.com/zircote/swagger-php/issues",
- "source": "https://github.com/zircote/swagger-php/tree/5.8.3"
+ "source": "https://github.com/zircote/swagger-php/tree/6.11.0"
},
"funding": [
{
@@ -12660,7 +12717,7 @@
"type": "github"
}
],
- "time": "2026-03-02T00:47:18+00:00"
+ "time": "2026-09-26T07:11:30+00:00"
}
],
"packages-dev": [
diff --git a/vet.json b/vet.json
index c697711495..a6e2e321e4 100644
--- a/vet.json
+++ b/vet.json
@@ -348,6 +348,10 @@
"version": "7.3.0",
"hash": "tree-v2:c7713b62c33d0f6504f5226e33be144a1255125ec013abfe5ee06fa619c4a340"
},
+ "radebatz/type-info-extras": {
+ "version": "1.0.9",
+ "hash": "tree-v2:8922f01f69a848e5332fe1e16033223e9afd552039df344b851fd2e2644488ca"
+ },
"ralouphie/getallheaders": {
"version": "3.0.3",
"hash": "tree-v2:db666a4e690725b904b5de22a95b230e08ba09f45559a03b32ffb933b0abb75f"
@@ -689,8 +693,8 @@
"hash": "tree-v2:06d6d20af34021a04bb906b2f8b28a82dc986db7e17234bbae7074b1235e7119"
},
"zircote/swagger-php": {
- "version": "5.8.3",
- "hash": "tree-v2:82ab08143346378ab92441f4372cb4ff75439fc9164d53dc79e155d03d12d5a8"
+ "version": "6.11.0",
+ "hash": "tree-v2:d6535e60c5f64c53eba5cfe4f8729ae437b0007f2a0d67d2a2daeae3bf01f79f"
}
},
"require-dev": {
From 174e0131f77c8fc9dec3c2f009a872184fec4c9a Mon Sep 17 00:00:00 2001
From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Date: Sat, 3 Oct 2026 21:54:48 +0200
Subject: [PATCH 06/19] feat(proxy): add hashing options for HTTP basic
authentication
---
app/Enums/HttpBasicAuthHashAlgorithm.php | 9 +
.../Api/ApplicationsController.php | 49 ++++-
app/Livewire/Project/Application/General.php | 30 ++-
app/Models/Application.php | 16 ++
app/Models/Server.php | 6 +
.../ApplicationConfigurationSnapshot.php | 4 +
bootstrap/helpers/api.php | 5 +
bootstrap/helpers/docker.php | 29 ++-
database/factories/ApplicationFactory.php | 3 +
...uth_hash_options_to_applications_table.php | 30 +++
openapi.json | 202 ++++++++++++++++++
openapi.yaml | 155 ++++++++++++++
.../project/application/general.blade.php | 39 ++++
.../Api/ApplicationSettingsApiTest.php | 29 +++
.../ApplicationHttpBasicAuthUiTest.php | 70 ++++++
.../Proxy/CaddyBasicAuthLabelsTest.php | 52 +++++
.../ApplicationConfigurationSnapshotTest.php | 16 ++
.../ApplicationHttpBasicAuthHashingTest.php | 45 ++++
18 files changed, 778 insertions(+), 11 deletions(-)
create mode 100644 app/Enums/HttpBasicAuthHashAlgorithm.php
create mode 100644 database/migrations/2026_10_02_170101_add_http_basic_auth_hash_options_to_applications_table.php
create mode 100644 tests/v4/Browser/ApplicationHttpBasicAuthHashingTest.php
diff --git a/app/Enums/HttpBasicAuthHashAlgorithm.php b/app/Enums/HttpBasicAuthHashAlgorithm.php
new file mode 100644
index 0000000000..c6340c0a1f
--- /dev/null
+++ b/app/Enums/HttpBasicAuthHashAlgorithm.php
@@ -0,0 +1,9 @@
+ ['type' => 'boolean', 'description' => 'HTTP Basic Authentication enabled.'],
'http_basic_auth_username' => ['type' => 'string', 'nullable' => true, 'description' => 'Username for HTTP Basic Authentication'],
'http_basic_auth_password' => ['type' => 'string', 'nullable' => true, 'description' => 'Password for HTTP Basic Authentication'],
+ 'http_basic_auth_hash_algorithm' => ['type' => 'string', 'enum' => ['bcrypt', 'argon2id'], 'default' => 'bcrypt', 'description' => 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'],
+ 'http_basic_auth_bcrypt_cost' => ['type' => 'integer', 'minimum' => 4, 'maximum' => 14, 'default' => 10, 'description' => 'Bcrypt cost for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_memory_cost' => ['type' => 'integer', 'minimum' => 8192, 'maximum' => 262144, 'default' => 65536, 'description' => 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_time_cost' => ['type' => 'integer', 'minimum' => 1, 'maximum' => 12, 'default' => 4, 'description' => 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'],
'connect_to_docker_network' => ['type' => 'boolean', 'description' => 'The flag to connect the service to the predefined Docker network.'],
'force_domain_override' => ['type' => 'boolean', 'description' => 'Force domain usage even if conflicts are detected. Default is false.'],
'autogenerate_domain' => ['type' => 'boolean', 'default' => true, 'description' => 'If true and domains is empty, auto-generate a domain using the server\'s wildcard domain or sslip.io fallback. Default: true.'],
@@ -620,6 +625,10 @@ class ApplicationsController extends Controller
'is_http_basic_auth_enabled' => ['type' => 'boolean', 'description' => 'HTTP Basic Authentication enabled.'],
'http_basic_auth_username' => ['type' => 'string', 'nullable' => true, 'description' => 'Username for HTTP Basic Authentication'],
'http_basic_auth_password' => ['type' => 'string', 'nullable' => true, 'description' => 'Password for HTTP Basic Authentication'],
+ 'http_basic_auth_hash_algorithm' => ['type' => 'string', 'enum' => ['bcrypt', 'argon2id'], 'default' => 'bcrypt', 'description' => 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'],
+ 'http_basic_auth_bcrypt_cost' => ['type' => 'integer', 'minimum' => 4, 'maximum' => 14, 'default' => 10, 'description' => 'Bcrypt cost for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_memory_cost' => ['type' => 'integer', 'minimum' => 8192, 'maximum' => 262144, 'default' => 65536, 'description' => 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_time_cost' => ['type' => 'integer', 'minimum' => 1, 'maximum' => 12, 'default' => 4, 'description' => 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'],
'connect_to_docker_network' => ['type' => 'boolean', 'description' => 'The flag to connect the service to the predefined Docker network.'],
'force_domain_override' => ['type' => 'boolean', 'description' => 'Force domain usage even if conflicts are detected. Default is false.'],
'autogenerate_domain' => ['type' => 'boolean', 'default' => true, 'description' => 'If true and domains is empty, auto-generate a domain using the server\'s wildcard domain or sslip.io fallback. Default: true.'],
@@ -815,6 +824,10 @@ class ApplicationsController extends Controller
'is_http_basic_auth_enabled' => ['type' => 'boolean', 'description' => 'HTTP Basic Authentication enabled.'],
'http_basic_auth_username' => ['type' => 'string', 'nullable' => true, 'description' => 'Username for HTTP Basic Authentication'],
'http_basic_auth_password' => ['type' => 'string', 'nullable' => true, 'description' => 'Password for HTTP Basic Authentication'],
+ 'http_basic_auth_hash_algorithm' => ['type' => 'string', 'enum' => ['bcrypt', 'argon2id'], 'default' => 'bcrypt', 'description' => 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'],
+ 'http_basic_auth_bcrypt_cost' => ['type' => 'integer', 'minimum' => 4, 'maximum' => 14, 'default' => 10, 'description' => 'Bcrypt cost for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_memory_cost' => ['type' => 'integer', 'minimum' => 8192, 'maximum' => 262144, 'default' => 65536, 'description' => 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_time_cost' => ['type' => 'integer', 'minimum' => 1, 'maximum' => 12, 'default' => 4, 'description' => 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'],
'connect_to_docker_network' => ['type' => 'boolean', 'description' => 'The flag to connect the service to the predefined Docker network.'],
'force_domain_override' => ['type' => 'boolean', 'description' => 'Force domain usage even if conflicts are detected. Default is false.'],
'autogenerate_domain' => ['type' => 'boolean', 'default' => true, 'description' => 'If true and domains is empty, auto-generate a domain using the server\'s wildcard domain or sslip.io fallback. Default: true.'],
@@ -981,6 +994,10 @@ class ApplicationsController extends Controller
'is_http_basic_auth_enabled' => ['type' => 'boolean', 'description' => 'HTTP Basic Authentication enabled.'],
'http_basic_auth_username' => ['type' => 'string', 'nullable' => true, 'description' => 'Username for HTTP Basic Authentication'],
'http_basic_auth_password' => ['type' => 'string', 'nullable' => true, 'description' => 'Password for HTTP Basic Authentication'],
+ 'http_basic_auth_hash_algorithm' => ['type' => 'string', 'enum' => ['bcrypt', 'argon2id'], 'default' => 'bcrypt', 'description' => 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'],
+ 'http_basic_auth_bcrypt_cost' => ['type' => 'integer', 'minimum' => 4, 'maximum' => 14, 'default' => 10, 'description' => 'Bcrypt cost for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_memory_cost' => ['type' => 'integer', 'minimum' => 8192, 'maximum' => 262144, 'default' => 65536, 'description' => 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_time_cost' => ['type' => 'integer', 'minimum' => 1, 'maximum' => 12, 'default' => 4, 'description' => 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'],
'connect_to_docker_network' => ['type' => 'boolean', 'description' => 'The flag to connect the service to the predefined Docker network.'],
'force_domain_override' => ['type' => 'boolean', 'description' => 'Force domain usage even if conflicts are detected. Default is false.'],
'autogenerate_domain' => ['type' => 'boolean', 'default' => true, 'description' => 'If true and domains is empty, auto-generate a domain using the server\'s wildcard domain or sslip.io fallback. Default: true.'],
@@ -1143,6 +1160,10 @@ class ApplicationsController extends Controller
'is_http_basic_auth_enabled' => ['type' => 'boolean', 'description' => 'HTTP Basic Authentication enabled.'],
'http_basic_auth_username' => ['type' => 'string', 'nullable' => true, 'description' => 'Username for HTTP Basic Authentication'],
'http_basic_auth_password' => ['type' => 'string', 'nullable' => true, 'description' => 'Password for HTTP Basic Authentication'],
+ 'http_basic_auth_hash_algorithm' => ['type' => 'string', 'enum' => ['bcrypt', 'argon2id'], 'default' => 'bcrypt', 'description' => 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'],
+ 'http_basic_auth_bcrypt_cost' => ['type' => 'integer', 'minimum' => 4, 'maximum' => 14, 'default' => 10, 'description' => 'Bcrypt cost for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_memory_cost' => ['type' => 'integer', 'minimum' => 8192, 'maximum' => 262144, 'default' => 65536, 'description' => 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_time_cost' => ['type' => 'integer', 'minimum' => 1, 'maximum' => 12, 'default' => 4, 'description' => 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'],
'connect_to_docker_network' => ['type' => 'boolean', 'description' => 'The flag to connect the service to the predefined Docker network.'],
'force_domain_override' => ['type' => 'boolean', 'description' => 'Force domain usage even if conflicts are detected. Default is false.'],
'autogenerate_domain' => ['type' => 'boolean', 'default' => true, 'description' => 'If true and domains is empty, auto-generate a domain using the server\'s wildcard domain or sslip.io fallback. Default: true.'],
@@ -1228,7 +1249,7 @@ class ApplicationsController extends Controller
if ($return instanceof JsonResponse) {
return $return;
}
- $allowedFields = ['project_uuid', 'environment_name', 'environment_uuid', 'server_uuid', 'destination_uuid', 'type', 'name', 'description', 'is_static', 'is_spa', 'is_auto_deploy_enabled', 'is_force_https_enabled', 'is_preview_deployments_enabled', 'domains', 'noindex_domains', 'git_repository', 'git_branch', 'git_commit_sha', 'private_key_uuid', 'docker_registry_image_name', 'docker_registry_image_tag', 'build_pack', 'install_command', 'build_command', 'start_command', 'ports_exposes', 'ports_mappings', 'custom_network_aliases', 'base_directory', 'publish_directory', 'health_check_enabled', 'health_check_type', 'health_check_command', 'health_check_path', 'health_check_port', 'health_check_host', 'health_check_method', 'health_check_return_code', 'health_check_scheme', 'health_check_response_text', 'health_check_interval', 'health_check_timeout', 'health_check_retries', 'health_check_start_period', 'limits_memory', 'limits_memory_swap', 'limits_memory_swappiness', 'limits_memory_reservation', 'limits_cpus', 'limits_cpuset', 'limits_cpu_shares', 'custom_labels', 'custom_docker_run_options', 'post_deployment_command', 'post_deployment_command_container', 'pre_deployment_command', 'pre_deployment_command_container', 'manual_webhook_secret_github', 'manual_webhook_secret_gitlab', 'manual_webhook_secret_bitbucket', 'manual_webhook_secret_gitea', 'redirect', 'github_app_uuid', 'instant_deploy', 'dockerfile', 'dockerfile_location', 'docker_compose_location', 'docker_compose_raw', 'docker_compose_custom_start_command', 'docker_compose_custom_build_command', 'docker_compose_domains', 'watch_paths', 'use_build_server', 'use_build_secrets', 'static_image', 'custom_nginx_configuration', 'is_http_basic_auth_enabled', 'http_basic_auth_username', 'http_basic_auth_password', 'connect_to_docker_network', 'force_domain_override', 'autogenerate_domain', 'is_container_label_escape_enabled', 'tags', 'is_preserve_repository_enabled', 'preview_url_template', 'max_restart_count', ...self::APPLICATION_SETTING_FIELDS];
+ $allowedFields = ['project_uuid', 'environment_name', 'environment_uuid', 'server_uuid', 'destination_uuid', 'type', 'name', 'description', 'is_static', 'is_spa', 'is_auto_deploy_enabled', 'is_force_https_enabled', 'is_preview_deployments_enabled', 'domains', 'noindex_domains', 'git_repository', 'git_branch', 'git_commit_sha', 'private_key_uuid', 'docker_registry_image_name', 'docker_registry_image_tag', 'build_pack', 'install_command', 'build_command', 'start_command', 'ports_exposes', 'ports_mappings', 'custom_network_aliases', 'base_directory', 'publish_directory', 'health_check_enabled', 'health_check_type', 'health_check_command', 'health_check_path', 'health_check_port', 'health_check_host', 'health_check_method', 'health_check_return_code', 'health_check_scheme', 'health_check_response_text', 'health_check_interval', 'health_check_timeout', 'health_check_retries', 'health_check_start_period', 'limits_memory', 'limits_memory_swap', 'limits_memory_swappiness', 'limits_memory_reservation', 'limits_cpus', 'limits_cpuset', 'limits_cpu_shares', 'custom_labels', 'custom_docker_run_options', 'post_deployment_command', 'post_deployment_command_container', 'pre_deployment_command', 'pre_deployment_command_container', 'manual_webhook_secret_github', 'manual_webhook_secret_gitlab', 'manual_webhook_secret_bitbucket', 'manual_webhook_secret_gitea', 'redirect', 'github_app_uuid', 'instant_deploy', 'dockerfile', 'dockerfile_location', 'docker_compose_location', 'docker_compose_raw', 'docker_compose_custom_start_command', 'docker_compose_custom_build_command', 'docker_compose_domains', 'watch_paths', 'use_build_server', 'use_build_secrets', 'static_image', 'custom_nginx_configuration', 'is_http_basic_auth_enabled', 'http_basic_auth_username', 'http_basic_auth_password', 'http_basic_auth_hash_algorithm', 'http_basic_auth_bcrypt_cost', 'http_basic_auth_argon2id_memory_cost', 'http_basic_auth_argon2id_time_cost', 'connect_to_docker_network', 'force_domain_override', 'autogenerate_domain', 'is_container_label_escape_enabled', 'tags', 'is_preserve_repository_enabled', 'preview_url_template', 'max_restart_count', ...self::APPLICATION_SETTING_FIELDS];
$validator = customApiValidator($request->all(), [
'name' => 'string|max:255',
@@ -1240,7 +1261,9 @@ class ApplicationsController extends Controller
'destination_uuid' => 'string',
'is_http_basic_auth_enabled' => 'boolean',
'http_basic_auth_username' => 'string|nullable',
- 'http_basic_auth_password' => 'string|nullable',
+ // bcrypt ignores everything after 72 bytes. Labels for Traefik always use bcrypt and are also generated on
+ // Caddy servers when "Labels for all supported proxies" is selected, so that the proxy can be switched easily.
+ 'http_basic_auth_password' => 'string|nullable|max:72',
'autogenerate_domain' => 'boolean',
'tags' => 'array|nullable',
'tags.*' => 'string|min:2',
@@ -3106,6 +3129,10 @@ class ApplicationsController extends Controller
'watch_paths' => ['type' => 'string', 'description' => 'The watch paths.'],
'use_build_server' => ['type' => 'boolean', 'nullable' => true, 'description' => 'Use build server.'],
'use_build_secrets' => ['type' => 'boolean', 'description' => 'Use Docker Build Secrets for build-time environment variables.'],
+ 'http_basic_auth_hash_algorithm' => ['type' => 'string', 'enum' => ['bcrypt', 'argon2id'], 'description' => 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'],
+ 'http_basic_auth_bcrypt_cost' => ['type' => 'integer', 'minimum' => 4, 'maximum' => 14, 'description' => 'Bcrypt cost for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_memory_cost' => ['type' => 'integer', 'minimum' => 8192, 'maximum' => 262144, 'description' => 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_time_cost' => ['type' => 'integer', 'minimum' => 1, 'maximum' => 12, 'description' => 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'],
'is_git_submodules_enabled' => ['type' => 'boolean', 'description' => 'Clone Git submodules.'],
'is_git_lfs_enabled' => ['type' => 'boolean', 'description' => 'Enable Git LFS.'],
'is_git_shallow_clone_enabled' => ['type' => 'boolean', 'description' => 'Use a shallow Git clone.'],
@@ -3226,7 +3253,7 @@ class ApplicationsController extends Controller
$dnsCleanup = app(ManagedDnsRecordCleanup::class);
$previousDnsHostnames = $dnsCleanup->hostnamesOf($application);
$server = $application->destination->server;
- $allowedFields = ['name', 'description', 'is_static', 'is_spa', 'is_auto_deploy_enabled', 'is_force_https_enabled', 'is_preview_deployments_enabled', 'domains', 'noindex_domains', 'git_repository', 'git_branch', 'git_commit_sha', 'docker_registry_image_name', 'docker_registry_image_tag', 'build_pack', 'static_image', 'install_command', 'build_command', 'start_command', 'ports_exposes', 'ports_mappings', 'custom_network_aliases', 'base_directory', 'publish_directory', 'health_check_enabled', 'health_check_type', 'health_check_command', 'health_check_path', 'health_check_port', 'health_check_host', 'health_check_method', 'health_check_return_code', 'health_check_scheme', 'health_check_response_text', 'health_check_interval', 'health_check_timeout', 'health_check_retries', 'health_check_start_period', 'limits_memory', 'limits_memory_swap', 'limits_memory_swappiness', 'limits_memory_reservation', 'limits_cpus', 'limits_cpuset', 'limits_cpu_shares', 'custom_labels', 'custom_docker_run_options', 'post_deployment_command', 'post_deployment_command_container', 'pre_deployment_command', 'pre_deployment_command_container', 'watch_paths', 'manual_webhook_secret_github', 'manual_webhook_secret_gitlab', 'manual_webhook_secret_bitbucket', 'manual_webhook_secret_gitea', 'dockerfile_location', 'dockerfile_target_build', 'docker_compose_location', 'docker_compose_custom_start_command', 'docker_compose_custom_build_command', 'docker_compose_domains', 'redirect', 'instant_deploy', 'use_build_server', 'use_build_secrets', 'custom_nginx_configuration', 'is_http_basic_auth_enabled', 'http_basic_auth_username', 'http_basic_auth_password', 'connect_to_docker_network', 'force_domain_override', 'is_container_label_escape_enabled', 'is_preserve_repository_enabled', 'preview_url_template', 'max_restart_count', ...self::APPLICATION_SETTING_FIELDS];
+ $allowedFields = ['name', 'description', 'is_static', 'is_spa', 'is_auto_deploy_enabled', 'is_force_https_enabled', 'is_preview_deployments_enabled', 'domains', 'noindex_domains', 'git_repository', 'git_branch', 'git_commit_sha', 'docker_registry_image_name', 'docker_registry_image_tag', 'build_pack', 'static_image', 'install_command', 'build_command', 'start_command', 'ports_exposes', 'ports_mappings', 'custom_network_aliases', 'base_directory', 'publish_directory', 'health_check_enabled', 'health_check_type', 'health_check_command', 'health_check_path', 'health_check_port', 'health_check_host', 'health_check_method', 'health_check_return_code', 'health_check_scheme', 'health_check_response_text', 'health_check_interval', 'health_check_timeout', 'health_check_retries', 'health_check_start_period', 'limits_memory', 'limits_memory_swap', 'limits_memory_swappiness', 'limits_memory_reservation', 'limits_cpus', 'limits_cpuset', 'limits_cpu_shares', 'custom_labels', 'custom_docker_run_options', 'post_deployment_command', 'post_deployment_command_container', 'pre_deployment_command', 'pre_deployment_command_container', 'watch_paths', 'manual_webhook_secret_github', 'manual_webhook_secret_gitlab', 'manual_webhook_secret_bitbucket', 'manual_webhook_secret_gitea', 'dockerfile_location', 'dockerfile_target_build', 'docker_compose_location', 'docker_compose_custom_start_command', 'docker_compose_custom_build_command', 'docker_compose_domains', 'redirect', 'instant_deploy', 'use_build_server', 'use_build_secrets', 'custom_nginx_configuration', 'is_http_basic_auth_enabled', 'http_basic_auth_username', 'http_basic_auth_password', 'http_basic_auth_hash_algorithm', 'http_basic_auth_bcrypt_cost', 'http_basic_auth_argon2id_memory_cost', 'http_basic_auth_argon2id_time_cost', 'connect_to_docker_network', 'force_domain_override', 'is_container_label_escape_enabled', 'is_preserve_repository_enabled', 'preview_url_template', 'max_restart_count', ...self::APPLICATION_SETTING_FIELDS];
$validationRules = [
'name' => 'string|max:255',
@@ -3241,7 +3268,9 @@ class ApplicationsController extends Controller
'is_http_basic_auth_enabled' => 'boolean|nullable',
'is_preview_deployments_enabled' => 'boolean|nullable',
'http_basic_auth_username' => 'string',
- 'http_basic_auth_password' => 'string',
+ // bcrypt ignores everything after 72 bytes. Labels for Traefik always use bcrypt and are also generated on
+ // Caddy servers when "Labels for all supported proxies" is selected, so that the proxy can be switched easily.
+ 'http_basic_auth_password' => 'string|max:72',
'include_source_commit_in_build' => 'boolean',
'ports_exposes' => 'nullable|string|regex:/^(\d+)(,\d+)*$/',
];
@@ -3322,7 +3351,8 @@ class ApplicationsController extends Controller
$requestHasHttpBasicAuth = $request->has('is_http_basic_auth_enabled')
|| $request->has('http_basic_auth_username')
- || $request->has('http_basic_auth_password');
+ || $request->has('http_basic_auth_password')
+ || $request->hasAny(['http_basic_auth_hash_algorithm', 'http_basic_auth_bcrypt_cost', 'http_basic_auth_argon2id_memory_cost', 'http_basic_auth_argon2id_time_cost']);
if ($request->has('is_http_basic_auth_enabled') && $request->is_http_basic_auth_enabled === true) {
if (blank($application->http_basic_auth_username) || blank($application->http_basic_auth_password)) {
@@ -4867,6 +4897,15 @@ class ApplicationsController extends Controller
{
$teamId = getTeamIdFromToken();
+ if ($request->input('http_basic_auth_hash_algorithm') === HttpBasicAuthHashAlgorithm::ARGON2ID->value && ! $server->caddySupportsArgon2idBasicAuth()) {
+ return response()->json([
+ 'message' => 'Validation failed.',
+ 'errors' => [
+ 'http_basic_auth_hash_algorithm' => 'Argon2id needs a server that runs the Caddy proxy, version 2.11 or newer.',
+ ],
+ ], 422);
+ }
+
// Validate ports_mappings
if ($request->has('ports_mappings')) {
$ports = [];
diff --git a/app/Livewire/Project/Application/General.php b/app/Livewire/Project/Application/General.php
index 5d272b36fa..0e13b97501 100644
--- a/app/Livewire/Project/Application/General.php
+++ b/app/Livewire/Project/Application/General.php
@@ -2,6 +2,7 @@
namespace App\Livewire\Project\Application;
+use App\Enums\HttpBasicAuthHashAlgorithm;
use App\Enums\StaticImageTypes;
use App\Jobs\ApplicationDeploymentJob;
use App\Livewire\Project\Service\Storage;
@@ -118,6 +119,14 @@ class General extends Component
public ?string $httpBasicAuthPassword = null;
+ public string $httpBasicAuthHashAlgorithm = HttpBasicAuthHashAlgorithm::BCRYPT->value;
+
+ public int $httpBasicAuthBcryptCost = 10;
+
+ public int $httpBasicAuthArgon2idMemoryCost = 65536;
+
+ public int $httpBasicAuthArgon2idTimeCost = 4;
+
public ?string $watchPaths = null;
public string $redirect;
@@ -193,7 +202,13 @@ class General extends Component
'isPreserveRepositoryEnabled' => 'boolean|required',
'isHttpBasicAuthEnabled' => 'boolean|required',
'httpBasicAuthUsername' => 'string|nullable',
- 'httpBasicAuthPassword' => 'string|nullable',
+ // bcrypt ignores everything after 72 bytes. Labels for Traefik always use bcrypt and are also generated on
+ // Caddy servers when "Labels for all supported proxies" is selected, so that the proxy can be switched easily.
+ 'httpBasicAuthPassword' => 'string|nullable|max:72',
+ 'httpBasicAuthHashAlgorithm' => ['required', Rule::enum(HttpBasicAuthHashAlgorithm::class)],
+ 'httpBasicAuthBcryptCost' => 'required|integer|min:4|max:14',
+ 'httpBasicAuthArgon2idMemoryCost' => 'required|integer|min:8192|max:262144',
+ 'httpBasicAuthArgon2idTimeCost' => 'required|integer|min:1|max:12',
'watchPaths' => 'nullable',
'redirect' => 'string|required',
];
@@ -367,6 +382,9 @@ class General extends Component
if ($toModel) {
$this->validate();
$this->validateChangedDockerComposeRaw();
+ if ($this->httpBasicAuthHashAlgorithm === HttpBasicAuthHashAlgorithm::ARGON2ID->value && ! $this->application->destination->server->caddySupportsArgon2idBasicAuth()) {
+ throw new Exception('Argon2id needs a server that runs the Caddy proxy, version 2.11 or newer.');
+ }
// Application properties
$this->application->name = $this->name;
@@ -407,6 +425,10 @@ class General extends Component
$this->application->is_http_basic_auth_enabled = $this->isHttpBasicAuthEnabled;
$this->application->http_basic_auth_username = $this->httpBasicAuthUsername;
$this->application->http_basic_auth_password = $this->httpBasicAuthPassword;
+ $this->application->http_basic_auth_hash_algorithm = $this->httpBasicAuthHashAlgorithm;
+ $this->application->http_basic_auth_bcrypt_cost = $this->httpBasicAuthBcryptCost;
+ $this->application->http_basic_auth_argon2id_memory_cost = $this->httpBasicAuthArgon2idMemoryCost;
+ $this->application->http_basic_auth_argon2id_time_cost = $this->httpBasicAuthArgon2idTimeCost;
$this->application->watch_paths = $this->watchPaths;
$this->application->redirect = $this->redirect;
@@ -460,6 +482,10 @@ class General extends Component
$this->httpBasicAuthPassword = auth()->user()->can('update', $this->application)
? $this->application->http_basic_auth_password
: null;
+ $this->httpBasicAuthHashAlgorithm = ($this->application->usesArgon2idBasicAuth() ? HttpBasicAuthHashAlgorithm::ARGON2ID : HttpBasicAuthHashAlgorithm::BCRYPT)->value;
+ $this->httpBasicAuthBcryptCost = $this->application->http_basic_auth_bcrypt_cost;
+ $this->httpBasicAuthArgon2idMemoryCost = $this->application->http_basic_auth_argon2id_memory_cost;
+ $this->httpBasicAuthArgon2idTimeCost = $this->application->http_basic_auth_argon2id_time_cost;
$this->watchPaths = $this->application->watch_paths;
$this->redirect = $this->application->redirect;
@@ -497,7 +523,7 @@ class General extends Component
if ($oldIsSpa !== $this->isSpa) {
$this->generateNginxConfiguration($this->isSpa ? 'spa' : 'static');
}
- if ($oldIsHttpBasicAuthEnabled !== $this->isHttpBasicAuthEnabled) {
+ if ($oldIsHttpBasicAuthEnabled !== $this->isHttpBasicAuthEnabled || $this->application->isDirty(['http_basic_auth_hash_algorithm', 'http_basic_auth_bcrypt_cost', 'http_basic_auth_argon2id_memory_cost', 'http_basic_auth_argon2id_time_cost'])) {
$this->application->save();
}
diff --git a/app/Models/Application.php b/app/Models/Application.php
index 277b7ec246..1c3c416bb1 100644
--- a/app/Models/Application.php
+++ b/app/Models/Application.php
@@ -4,6 +4,7 @@ namespace App\Models;
use App\Enums\ApplicationDeploymentStatus;
use App\Enums\BuildPackTypes;
+use App\Enums\HttpBasicAuthHashAlgorithm;
use App\Enums\ProxyTypes;
use App\Exceptions\DeploymentException;
use App\Services\ConfigurationGenerator;
@@ -125,6 +126,10 @@ use Symfony\Component\Yaml\Yaml;
'is_http_basic_auth_enabled' => ['type' => 'boolean', 'description' => 'HTTP Basic Authentication enabled.'],
'http_basic_auth_username' => ['type' => 'string', 'nullable' => true, 'description' => 'Username for HTTP Basic Authentication'],
'http_basic_auth_password' => ['type' => 'string', 'nullable' => true, 'description' => 'Password for HTTP Basic Authentication'],
+ 'http_basic_auth_hash_algorithm' => ['type' => 'string', 'enum' => ['bcrypt', 'argon2id'], 'description' => 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'],
+ 'http_basic_auth_bcrypt_cost' => ['type' => 'integer', 'minimum' => 4, 'maximum' => 14, 'description' => 'Bcrypt cost for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_memory_cost' => ['type' => 'integer', 'minimum' => 8192, 'maximum' => 262144, 'description' => 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'],
+ 'http_basic_auth_argon2id_time_cost' => ['type' => 'integer', 'minimum' => 1, 'maximum' => 12, 'description' => 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'],
new OA\Property(property: 'settings', ref: '#/components/schemas/ApplicationSetting'),
]
)]
@@ -220,6 +225,10 @@ class Application extends BaseModel
'is_http_basic_auth_enabled',
'http_basic_auth_username',
'http_basic_auth_password',
+ 'http_basic_auth_hash_algorithm',
+ 'http_basic_auth_bcrypt_cost',
+ 'http_basic_auth_argon2id_memory_cost',
+ 'http_basic_auth_argon2id_time_cost',
'connect_to_docker_network',
'force_domain_override',
'is_container_label_escape_enabled',
@@ -268,6 +277,7 @@ class Application extends BaseModel
{
return [
'http_basic_auth_password' => 'encrypted',
+ 'http_basic_auth_hash_algorithm' => HttpBasicAuthHashAlgorithm::class,
'manual_webhook_secret_github' => 'encrypted',
'manual_webhook_secret_gitlab' => 'encrypted',
'manual_webhook_secret_bitbucket' => 'encrypted',
@@ -657,6 +667,12 @@ class Application extends BaseModel
return $this->source instanceof GithubApp;
}
+ public function usesArgon2idBasicAuth(): bool
+ {
+ return $this->http_basic_auth_hash_algorithm === HttpBasicAuthHashAlgorithm::ARGON2ID
+ && $this->destination->server->caddySupportsArgon2idBasicAuth();
+ }
+
public function isForceHttpsEnabled()
{
return data_get($this, 'settings.is_force_https_enabled', false);
diff --git a/app/Models/Server.php b/app/Models/Server.php
index 88f3ecc15a..2fc5a99e3e 100644
--- a/app/Models/Server.php
+++ b/app/Models/Server.php
@@ -1244,6 +1244,12 @@ $siteAddress {
return $this->caddyRunsCurrentVersion();
}
+ public function caddySupportsArgon2idBasicAuth(): bool
+ {
+ return $this->caddyRunsCurrentVersion()
+ && self::caddyDockerProxyImageVersion($this->configuredCaddyProxyImage()) >= [2, 11];
+ }
+
public function isServerApiEnabled(): bool
{
return $this->settings->is_sentinel_enabled;
diff --git a/app/Services/DeploymentConfiguration/ApplicationConfigurationSnapshot.php b/app/Services/DeploymentConfiguration/ApplicationConfigurationSnapshot.php
index b974e03db3..6a38840c5f 100644
--- a/app/Services/DeploymentConfiguration/ApplicationConfigurationSnapshot.php
+++ b/app/Services/DeploymentConfiguration/ApplicationConfigurationSnapshot.php
@@ -208,6 +208,10 @@ class ApplicationConfigurationSnapshot
$this->item('is_http_basic_auth_enabled', 'HTTP basic auth', $this->application->is_http_basic_auth_enabled, 'redeploy'),
$this->item('http_basic_auth_username', 'HTTP basic auth username', $this->application->http_basic_auth_username, 'redeploy'),
$this->item('http_basic_auth_password', 'HTTP basic auth password', $this->application->http_basic_auth_password, 'redeploy', sensitive: true),
+ $this->item('http_basic_auth_hash_algorithm', 'HTTP basic auth hash algorithm', $this->application->http_basic_auth_hash_algorithm?->value, 'redeploy'),
+ $this->item('http_basic_auth_bcrypt_cost', 'HTTP basic auth bcrypt cost factor', $this->application->http_basic_auth_bcrypt_cost, 'redeploy'),
+ $this->item('http_basic_auth_argon2id_memory_cost', 'HTTP basic auth Argon2id memory (KiB)', $this->application->http_basic_auth_argon2id_memory_cost, 'redeploy'),
+ $this->item('http_basic_auth_argon2id_time_cost', 'HTTP basic auth Argon2id iterations', $this->application->http_basic_auth_argon2id_time_cost, 'redeploy'),
];
}
diff --git a/bootstrap/helpers/api.php b/bootstrap/helpers/api.php
index ee89f52c6f..46501331e9 100644
--- a/bootstrap/helpers/api.php
+++ b/bootstrap/helpers/api.php
@@ -2,6 +2,7 @@
use App\Actions\Shared\MigrateResourceToDestination;
use App\Enums\BuildPackTypes;
+use App\Enums\HttpBasicAuthHashAlgorithm;
use App\Enums\RedirectTypes;
use App\Enums\StaticImageTypes;
use App\Models\Application;
@@ -276,6 +277,10 @@ function sharedDataApplications(?Application $application = null): array
'docker_compose_custom_build_command' => ValidationPatterns::shellSafeCommandRules(),
'is_container_label_escape_enabled' => 'boolean',
'is_preserve_repository_enabled' => 'boolean',
+ 'http_basic_auth_hash_algorithm' => Rule::enum(HttpBasicAuthHashAlgorithm::class),
+ 'http_basic_auth_bcrypt_cost' => 'integer|min:4|max:14',
+ 'http_basic_auth_argon2id_memory_cost' => 'integer|min:8192|max:262144',
+ 'http_basic_auth_argon2id_time_cost' => 'integer|min:1|max:12',
];
}
diff --git a/bootstrap/helpers/docker.php b/bootstrap/helpers/docker.php
index b44714a8b0..464bad84cc 100644
--- a/bootstrap/helpers/docker.php
+++ b/bootstrap/helpers/docker.php
@@ -766,7 +766,7 @@ function isNoindexDomain(string $domain, ?Collection $noindex_domains): bool
->contains(ValidationPatterns::normalizeApplicationDomainUrl($domain));
}
-function fqdnLabelsForCaddy(string $network, string $uuid, Collection $domains, bool $is_force_https_enabled = false, $onlyPort = null, ?Collection $serviceLabels = null, ?bool $is_gzip_enabled = true, ?bool $is_stripprefix_enabled = true, ?string $service_name = null, ?string $image = null, string $redirect_direction = 'both', ?string $predefinedPort = null, bool $is_http_basic_auth_enabled = false, ?string $http_basic_auth_username = null, ?string $http_basic_auth_password = null, ?Collection $noindex_domains = null, bool $is_traffic_analytics_enabled = false, array $domainPortOverrides = [], bool $supports_log_append = false, bool $supports_basic_auth_directive = false)
+function fqdnLabelsForCaddy(string $network, string $uuid, Collection $domains, bool $is_force_https_enabled = false, $onlyPort = null, ?Collection $serviceLabels = null, ?bool $is_gzip_enabled = true, ?bool $is_stripprefix_enabled = true, ?string $service_name = null, ?string $image = null, string $redirect_direction = 'both', ?string $predefinedPort = null, bool $is_http_basic_auth_enabled = false, ?string $http_basic_auth_username = null, ?string $http_basic_auth_password = null, ?Collection $noindex_domains = null, bool $is_traffic_analytics_enabled = false, array $domainPortOverrides = [], bool $supports_log_append = false, bool $supports_basic_auth_directive = false, ?int $http_basic_auth_bcrypt_cost = null, array $http_basic_auth_argon2id_options = [])
{
$labels = collect([]);
if ($serviceLabels) {
@@ -777,7 +777,9 @@ function fqdnLabelsForCaddy(string $network, string $uuid, Collection $domains,
$is_http_basic_auth_enabled = $is_http_basic_auth_enabled && $http_basic_auth_username !== null && $http_basic_auth_password !== null;
if ($is_http_basic_auth_enabled) {
- $hashedPassword = password_hash($http_basic_auth_password, PASSWORD_BCRYPT, ['cost' => 10]);
+ $hashedPassword = $http_basic_auth_argon2id_options
+ ? password_hash($http_basic_auth_password, PASSWORD_ARGON2ID, $http_basic_auth_argon2id_options)
+ : password_hash($http_basic_auth_password, PASSWORD_BCRYPT, ['cost' => $http_basic_auth_bcrypt_cost ?? 10]);
}
$trafficAppKey = caddyTrafficAppKey($uuid, $service_name);
@@ -834,6 +836,9 @@ function fqdnLabelsForCaddy(string $network, string $uuid, Collection $domains,
if ($is_http_basic_auth_enabled) {
// Caddy 2.8 renamed basicauth to basic_auth; see Server::caddySupportsBasicAuthDirective().
$basicAuthDirective = $supports_basic_auth_directive ? 'basic_auth' : 'basicauth';
+ if ($http_basic_auth_argon2id_options) {
+ $labels->push("caddy_{$loop}.{$basicAuthDirective}=argon2id");
+ }
$labels->push("caddy_{$loop}.{$basicAuthDirective}.{$http_basic_auth_username}=\"{$hashedPassword}\"");
}
if ($is_traffic_analytics_enabled) {
@@ -907,7 +912,7 @@ function dockerComposeServicePorts(?string $compose, ?string $serviceName): arra
->unique()->values()->all();
}
-function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_https_enabled = false, $onlyPort = null, ?Collection $serviceLabels = null, ?bool $is_gzip_enabled = true, ?bool $is_stripprefix_enabled = true, ?string $service_name = null, bool $generate_unique_uuid = false, ?string $image = null, string $redirect_direction = 'both', bool $is_http_basic_auth_enabled = false, ?string $http_basic_auth_username = null, ?string $http_basic_auth_password = null, ?Collection $noindex_domains = null, bool $escape_redirect_replacement_for_compose = true, array $domainPortOverrides = [])
+function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_https_enabled = false, $onlyPort = null, ?Collection $serviceLabels = null, ?bool $is_gzip_enabled = true, ?bool $is_stripprefix_enabled = true, ?string $service_name = null, bool $generate_unique_uuid = false, ?string $image = null, string $redirect_direction = 'both', bool $is_http_basic_auth_enabled = false, ?string $http_basic_auth_username = null, ?string $http_basic_auth_password = null, ?Collection $noindex_domains = null, bool $escape_redirect_replacement_for_compose = true, array $domainPortOverrides = [], ?int $http_basic_auth_bcrypt_cost = null)
{
$labels = collect([]);
$labels->push('traefik.enable=true');
@@ -919,7 +924,7 @@ function fqdnLabelsForTraefik(string $uuid, Collection $domains, bool $is_force_
$is_http_basic_auth_enabled = $is_http_basic_auth_enabled && $http_basic_auth_username !== null && $http_basic_auth_password !== null;
$http_basic_auth_label = "http-basic-auth-{$uuid}";
if ($is_http_basic_auth_enabled) {
- $hashedPassword = password_hash($http_basic_auth_password, PASSWORD_BCRYPT, ['cost' => 10]);
+ $hashedPassword = password_hash($http_basic_auth_password, PASSWORD_BCRYPT, ['cost' => $http_basic_auth_bcrypt_cost ?? 10]);
}
if ($is_http_basic_auth_enabled) {
@@ -1186,6 +1191,10 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
$appUuid = $appUuid.'-pr-'.$pull_request_id;
}
$labels = collect([]);
+ $httpBasicAuthArgon2idOptions = $application->usesArgon2idBasicAuth() ? [
+ 'memory_cost' => $application->http_basic_auth_argon2id_memory_cost,
+ 'time_cost' => $application->http_basic_auth_argon2id_time_cost,
+ ] : [];
if ($pull_request_id === 0) {
if ($application->fqdn) {
$domains = str(data_get($application, 'fqdn'))->explode(',');
@@ -1205,6 +1214,7 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
is_http_basic_auth_enabled: $application->is_http_basic_auth_enabled,
http_basic_auth_username: $application->http_basic_auth_username,
http_basic_auth_password: $application->http_basic_auth_password,
+ http_basic_auth_bcrypt_cost: $application->http_basic_auth_bcrypt_cost,
noindex_domains: $noindexDomains,
domainPortOverrides: $application->domain_port_overrides ?? [],
));
@@ -1222,6 +1232,8 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
is_http_basic_auth_enabled: $application->is_http_basic_auth_enabled,
http_basic_auth_username: $application->http_basic_auth_username,
http_basic_auth_password: $application->http_basic_auth_password,
+ http_basic_auth_bcrypt_cost: $application->http_basic_auth_bcrypt_cost,
+ http_basic_auth_argon2id_options: $httpBasicAuthArgon2idOptions,
noindex_domains: $noindexDomains,
is_traffic_analytics_enabled: $application->destination->server->isTrafficAnalyticsEnabled(),
supports_log_append: $application->destination->server->caddySupportsLogAppend(),
@@ -1242,6 +1254,7 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
is_http_basic_auth_enabled: $application->is_http_basic_auth_enabled,
http_basic_auth_username: $application->http_basic_auth_username,
http_basic_auth_password: $application->http_basic_auth_password,
+ http_basic_auth_bcrypt_cost: $application->http_basic_auth_bcrypt_cost,
noindex_domains: $noindexDomains,
escape_redirect_replacement_for_compose: false,
domainPortOverrides: $application->domain_port_overrides ?? [],
@@ -1258,6 +1271,8 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
is_http_basic_auth_enabled: $application->is_http_basic_auth_enabled,
http_basic_auth_username: $application->http_basic_auth_username,
http_basic_auth_password: $application->http_basic_auth_password,
+ http_basic_auth_bcrypt_cost: $application->http_basic_auth_bcrypt_cost,
+ http_basic_auth_argon2id_options: $httpBasicAuthArgon2idOptions,
noindex_domains: $noindexDomains,
is_traffic_analytics_enabled: $application->destination->server->isTrafficAnalyticsEnabled(),
supports_log_append: $application->destination->server->caddySupportsLogAppend(),
@@ -1288,6 +1303,7 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
is_http_basic_auth_enabled: $application->is_http_basic_auth_enabled,
http_basic_auth_username: $application->http_basic_auth_username,
http_basic_auth_password: $application->http_basic_auth_password,
+ http_basic_auth_bcrypt_cost: $application->http_basic_auth_bcrypt_cost,
noindex_domains: $noindexDomains,
escape_redirect_replacement_for_compose: false,
domainPortOverrides: $preview->domain_port_overrides ?? [],
@@ -1305,6 +1321,8 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
is_http_basic_auth_enabled: $application->is_http_basic_auth_enabled,
http_basic_auth_username: $application->http_basic_auth_username,
http_basic_auth_password: $application->http_basic_auth_password,
+ http_basic_auth_bcrypt_cost: $application->http_basic_auth_bcrypt_cost,
+ http_basic_auth_argon2id_options: $httpBasicAuthArgon2idOptions,
noindex_domains: $noindexDomains,
is_traffic_analytics_enabled: $application->destination->server->isTrafficAnalyticsEnabled(),
supports_log_append: $application->destination->server->caddySupportsLogAppend(),
@@ -1324,6 +1342,7 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
is_http_basic_auth_enabled: $application->is_http_basic_auth_enabled,
http_basic_auth_username: $application->http_basic_auth_username,
http_basic_auth_password: $application->http_basic_auth_password,
+ http_basic_auth_bcrypt_cost: $application->http_basic_auth_bcrypt_cost,
noindex_domains: $noindexDomains,
escape_redirect_replacement_for_compose: false,
domainPortOverrides: $preview->domain_port_overrides ?? [],
@@ -1339,6 +1358,8 @@ function generateLabelsApplication(Application $application, ?ApplicationPreview
is_http_basic_auth_enabled: $application->is_http_basic_auth_enabled,
http_basic_auth_username: $application->http_basic_auth_username,
http_basic_auth_password: $application->http_basic_auth_password,
+ http_basic_auth_bcrypt_cost: $application->http_basic_auth_bcrypt_cost,
+ http_basic_auth_argon2id_options: $httpBasicAuthArgon2idOptions,
noindex_domains: $noindexDomains,
is_traffic_analytics_enabled: $application->destination->server->isTrafficAnalyticsEnabled(),
supports_log_append: $application->destination->server->caddySupportsLogAppend(),
diff --git a/database/factories/ApplicationFactory.php b/database/factories/ApplicationFactory.php
index 188d32954b..ecbae8862f 100644
--- a/database/factories/ApplicationFactory.php
+++ b/database/factories/ApplicationFactory.php
@@ -21,6 +21,9 @@ class ApplicationFactory extends Factory
'ports_exposes' => '3000',
'environment_id' => 1,
'destination_id' => 1,
+ 'http_basic_auth_bcrypt_cost' => 10,
+ 'http_basic_auth_argon2id_memory_cost' => 65536,
+ 'http_basic_auth_argon2id_time_cost' => 4,
];
}
}
diff --git a/database/migrations/2026_10_02_170101_add_http_basic_auth_hash_options_to_applications_table.php b/database/migrations/2026_10_02_170101_add_http_basic_auth_hash_options_to_applications_table.php
new file mode 100644
index 0000000000..17212a63a6
--- /dev/null
+++ b/database/migrations/2026_10_02_170101_add_http_basic_auth_hash_options_to_applications_table.php
@@ -0,0 +1,30 @@
+string('http_basic_auth_hash_algorithm')->default('bcrypt');
+ $table->unsignedTinyInteger('http_basic_auth_bcrypt_cost')->default(10);
+ $table->unsignedInteger('http_basic_auth_argon2id_memory_cost')->default(65536);
+ $table->unsignedTinyInteger('http_basic_auth_argon2id_time_cost')->default(4);
+ });
+ }
+
+ public function down(): void
+ {
+ Schema::table('applications', function (Blueprint $table) {
+ $table->dropColumn([
+ 'http_basic_auth_hash_algorithm',
+ 'http_basic_auth_bcrypt_cost',
+ 'http_basic_auth_argon2id_memory_cost',
+ 'http_basic_auth_argon2id_time_cost',
+ ]);
+ });
+ }
+};
diff --git a/openapi.json b/openapi.json
index 313fefa63a..8c4eb62e7f 100644
--- a/openapi.json
+++ b/openapi.json
@@ -979,6 +979,36 @@
"nullable": true,
"description": "Password for HTTP Basic Authentication"
},
+ "http_basic_auth_hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "bcrypt",
+ "argon2id"
+ ],
+ "default": "bcrypt",
+ "description": "Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer."
+ },
+ "http_basic_auth_bcrypt_cost": {
+ "type": "integer",
+ "minimum": 4,
+ "maximum": 14,
+ "default": 10,
+ "description": "Bcrypt cost for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_memory_cost": {
+ "type": "integer",
+ "minimum": 8192,
+ "maximum": 262144,
+ "default": 65536,
+ "description": "Argon2id memory cost in KiB for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_time_cost": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 12,
+ "default": 4,
+ "description": "Argon2id time cost (iterations) for the HTTP Basic Authentication password."
+ },
"connect_to_docker_network": {
"type": "boolean",
"description": "The flag to connect the service to the predefined Docker network."
@@ -1570,6 +1600,36 @@
"nullable": true,
"description": "Password for HTTP Basic Authentication"
},
+ "http_basic_auth_hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "bcrypt",
+ "argon2id"
+ ],
+ "default": "bcrypt",
+ "description": "Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer."
+ },
+ "http_basic_auth_bcrypt_cost": {
+ "type": "integer",
+ "minimum": 4,
+ "maximum": 14,
+ "default": 10,
+ "description": "Bcrypt cost for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_memory_cost": {
+ "type": "integer",
+ "minimum": 8192,
+ "maximum": 262144,
+ "default": 65536,
+ "description": "Argon2id memory cost in KiB for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_time_cost": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 12,
+ "default": 4,
+ "description": "Argon2id time cost (iterations) for the HTTP Basic Authentication password."
+ },
"connect_to_docker_network": {
"type": "boolean",
"description": "The flag to connect the service to the predefined Docker network."
@@ -2161,6 +2221,36 @@
"nullable": true,
"description": "Password for HTTP Basic Authentication"
},
+ "http_basic_auth_hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "bcrypt",
+ "argon2id"
+ ],
+ "default": "bcrypt",
+ "description": "Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer."
+ },
+ "http_basic_auth_bcrypt_cost": {
+ "type": "integer",
+ "minimum": 4,
+ "maximum": 14,
+ "default": 10,
+ "description": "Bcrypt cost for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_memory_cost": {
+ "type": "integer",
+ "minimum": 8192,
+ "maximum": 262144,
+ "default": 65536,
+ "description": "Argon2id memory cost in KiB for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_time_cost": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 12,
+ "default": 4,
+ "description": "Argon2id time cost (iterations) for the HTTP Basic Authentication password."
+ },
"connect_to_docker_network": {
"type": "boolean",
"description": "The flag to connect the service to the predefined Docker network."
@@ -2647,6 +2737,36 @@
"nullable": true,
"description": "Password for HTTP Basic Authentication"
},
+ "http_basic_auth_hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "bcrypt",
+ "argon2id"
+ ],
+ "default": "bcrypt",
+ "description": "Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer."
+ },
+ "http_basic_auth_bcrypt_cost": {
+ "type": "integer",
+ "minimum": 4,
+ "maximum": 14,
+ "default": 10,
+ "description": "Bcrypt cost for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_memory_cost": {
+ "type": "integer",
+ "minimum": 8192,
+ "maximum": 262144,
+ "default": 65536,
+ "description": "Argon2id memory cost in KiB for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_time_cost": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 12,
+ "default": 4,
+ "description": "Argon2id time cost (iterations) for the HTTP Basic Authentication password."
+ },
"connect_to_docker_network": {
"type": "boolean",
"description": "The flag to connect the service to the predefined Docker network."
@@ -3113,6 +3233,36 @@
"nullable": true,
"description": "Password for HTTP Basic Authentication"
},
+ "http_basic_auth_hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "bcrypt",
+ "argon2id"
+ ],
+ "default": "bcrypt",
+ "description": "Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer."
+ },
+ "http_basic_auth_bcrypt_cost": {
+ "type": "integer",
+ "minimum": 4,
+ "maximum": 14,
+ "default": 10,
+ "description": "Bcrypt cost for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_memory_cost": {
+ "type": "integer",
+ "minimum": 8192,
+ "maximum": 262144,
+ "default": 65536,
+ "description": "Argon2id memory cost in KiB for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_time_cost": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 12,
+ "default": 4,
+ "description": "Argon2id time cost (iterations) for the HTTP Basic Authentication password."
+ },
"connect_to_docker_network": {
"type": "boolean",
"description": "The flag to connect the service to the predefined Docker network."
@@ -3702,6 +3852,32 @@
"type": "boolean",
"description": "Use Docker Build Secrets for build-time environment variables."
},
+ "http_basic_auth_hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "bcrypt",
+ "argon2id"
+ ],
+ "description": "Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer."
+ },
+ "http_basic_auth_bcrypt_cost": {
+ "type": "integer",
+ "minimum": 4,
+ "maximum": 14,
+ "description": "Bcrypt cost for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_memory_cost": {
+ "type": "integer",
+ "minimum": 8192,
+ "maximum": 262144,
+ "description": "Argon2id memory cost in KiB for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_time_cost": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 12,
+ "description": "Argon2id time cost (iterations) for the HTTP Basic Authentication password."
+ },
"is_git_submodules_enabled": {
"type": "boolean",
"description": "Clone Git submodules."
@@ -23504,6 +23680,32 @@
"nullable": true,
"description": "Password for HTTP Basic Authentication"
},
+ "http_basic_auth_hash_algorithm": {
+ "type": "string",
+ "enum": [
+ "bcrypt",
+ "argon2id"
+ ],
+ "description": "Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer."
+ },
+ "http_basic_auth_bcrypt_cost": {
+ "type": "integer",
+ "minimum": 4,
+ "maximum": 14,
+ "description": "Bcrypt cost for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_memory_cost": {
+ "type": "integer",
+ "minimum": 8192,
+ "maximum": 262144,
+ "description": "Argon2id memory cost in KiB for the HTTP Basic Authentication password."
+ },
+ "http_basic_auth_argon2id_time_cost": {
+ "type": "integer",
+ "minimum": 1,
+ "maximum": 12,
+ "description": "Argon2id time cost (iterations) for the HTTP Basic Authentication password."
+ },
"settings": {
"$ref": "#\/components\/schemas\/ApplicationSetting"
}
diff --git a/openapi.yaml b/openapi.yaml
index dc2b3aebf9..cfc334c844 100644
--- a/openapi.yaml
+++ b/openapi.yaml
@@ -645,6 +645,29 @@ paths:
type: string
nullable: true
description: 'Password for HTTP Basic Authentication'
+ http_basic_auth_hash_algorithm:
+ type: string
+ enum: [bcrypt, argon2id]
+ default: bcrypt
+ description: 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'
+ http_basic_auth_bcrypt_cost:
+ type: integer
+ minimum: 4
+ maximum: 14
+ default: 10
+ description: 'Bcrypt cost for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_memory_cost:
+ type: integer
+ minimum: 8192
+ maximum: 262144
+ default: 65536
+ description: 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_time_cost:
+ type: integer
+ minimum: 1
+ maximum: 12
+ default: 4
+ description: 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'
connect_to_docker_network:
type: boolean
description: 'The flag to connect the service to the predefined Docker network.'
@@ -1031,6 +1054,29 @@ paths:
type: string
nullable: true
description: 'Password for HTTP Basic Authentication'
+ http_basic_auth_hash_algorithm:
+ type: string
+ enum: [bcrypt, argon2id]
+ default: bcrypt
+ description: 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'
+ http_basic_auth_bcrypt_cost:
+ type: integer
+ minimum: 4
+ maximum: 14
+ default: 10
+ description: 'Bcrypt cost for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_memory_cost:
+ type: integer
+ minimum: 8192
+ maximum: 262144
+ default: 65536
+ description: 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_time_cost:
+ type: integer
+ minimum: 1
+ maximum: 12
+ default: 4
+ description: 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'
connect_to_docker_network:
type: boolean
description: 'The flag to connect the service to the predefined Docker network.'
@@ -1417,6 +1463,29 @@ paths:
type: string
nullable: true
description: 'Password for HTTP Basic Authentication'
+ http_basic_auth_hash_algorithm:
+ type: string
+ enum: [bcrypt, argon2id]
+ default: bcrypt
+ description: 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'
+ http_basic_auth_bcrypt_cost:
+ type: integer
+ minimum: 4
+ maximum: 14
+ default: 10
+ description: 'Bcrypt cost for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_memory_cost:
+ type: integer
+ minimum: 8192
+ maximum: 262144
+ default: 65536
+ description: 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_time_cost:
+ type: integer
+ minimum: 1
+ maximum: 12
+ default: 4
+ description: 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'
connect_to_docker_network:
type: boolean
description: 'The flag to connect the service to the predefined Docker network.'
@@ -1744,6 +1813,29 @@ paths:
type: string
nullable: true
description: 'Password for HTTP Basic Authentication'
+ http_basic_auth_hash_algorithm:
+ type: string
+ enum: [bcrypt, argon2id]
+ default: bcrypt
+ description: 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'
+ http_basic_auth_bcrypt_cost:
+ type: integer
+ minimum: 4
+ maximum: 14
+ default: 10
+ description: 'Bcrypt cost for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_memory_cost:
+ type: integer
+ minimum: 8192
+ maximum: 262144
+ default: 65536
+ description: 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_time_cost:
+ type: integer
+ minimum: 1
+ maximum: 12
+ default: 4
+ description: 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'
connect_to_docker_network:
type: boolean
description: 'The flag to connect the service to the predefined Docker network.'
@@ -2057,6 +2149,29 @@ paths:
type: string
nullable: true
description: 'Password for HTTP Basic Authentication'
+ http_basic_auth_hash_algorithm:
+ type: string
+ enum: [bcrypt, argon2id]
+ default: bcrypt
+ description: 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'
+ http_basic_auth_bcrypt_cost:
+ type: integer
+ minimum: 4
+ maximum: 14
+ default: 10
+ description: 'Bcrypt cost for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_memory_cost:
+ type: integer
+ minimum: 8192
+ maximum: 262144
+ default: 65536
+ description: 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_time_cost:
+ type: integer
+ minimum: 1
+ maximum: 12
+ default: 4
+ description: 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'
connect_to_docker_network:
type: boolean
description: 'The flag to connect the service to the predefined Docker network.'
@@ -2429,6 +2544,25 @@ paths:
use_build_secrets:
type: boolean
description: 'Use Docker Build Secrets for build-time environment variables.'
+ http_basic_auth_hash_algorithm:
+ type: string
+ enum: [bcrypt, argon2id]
+ description: 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'
+ http_basic_auth_bcrypt_cost:
+ type: integer
+ minimum: 4
+ maximum: 14
+ description: 'Bcrypt cost for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_memory_cost:
+ type: integer
+ minimum: 8192
+ maximum: 262144
+ description: 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_time_cost:
+ type: integer
+ minimum: 1
+ maximum: 12
+ description: 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'
is_git_submodules_enabled:
type: boolean
description: 'Clone Git submodules.'
@@ -15009,6 +15143,27 @@ components:
type: string
nullable: true
description: 'Password for HTTP Basic Authentication'
+ http_basic_auth_hash_algorithm:
+ type: string
+ enum:
+ - bcrypt
+ - argon2id
+ description: 'Hash algorithm for the HTTP Basic Authentication password. Argon2id needs the Caddy proxy, version 2.11 or newer.'
+ http_basic_auth_bcrypt_cost:
+ type: integer
+ minimum: 4
+ maximum: 14
+ description: 'Bcrypt cost for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_memory_cost:
+ type: integer
+ minimum: 8192
+ maximum: 262144
+ description: 'Argon2id memory cost in KiB for the HTTP Basic Authentication password.'
+ http_basic_auth_argon2id_time_cost:
+ type: integer
+ minimum: 1
+ maximum: 12
+ description: 'Argon2id time cost (iterations) for the HTTP Basic Authentication password.'
settings:
$ref: '#/components/schemas/ApplicationSetting'
type: object
diff --git a/resources/views/livewire/project/application/general.blade.php b/resources/views/livewire/project/application/general.blade.php
index 1df2bedfb2..45e03854a3 100644
--- a/resources/views/livewire/project/application/general.blade.php
+++ b/resources/views/livewire/project/application/general.blade.php
@@ -1,3 +1,4 @@
+@php use App\Enums\HttpBasicAuthHashAlgorithm; use App\Enums\ProxyTypes; @endphp
+ @php
+ $server = $application->destination->server;
+ $supportsArgon2id = $server->caddySupportsArgon2idBasicAuth();
+ $usesArgon2id = $httpBasicAuthHashAlgorithm === HttpBasicAuthHashAlgorithm::ARGON2ID->value;
+ @endphp
+
+
Password hashing
+
+
+ @if ($usesArgon2id)
+
+
+
+
+
+
+ @else
+
+
+
+ @endif
+
+
@endif
@endif
diff --git a/tests/Feature/Api/ApplicationSettingsApiTest.php b/tests/Feature/Api/ApplicationSettingsApiTest.php
index 8074be8bbe..018c662a4b 100644
--- a/tests/Feature/Api/ApplicationSettingsApiTest.php
+++ b/tests/Feature/Api/ApplicationSettingsApiTest.php
@@ -267,6 +267,35 @@ test('http basic auth updates preserve user-managed labels', function () {
expect(base64_decode($this->application->fresh()->custom_labels))->toBe('sentinel-label=true');
});
+test('http basic auth hash settings are saved and applied to managed labels', function () {
+ $this->application->update([
+ 'fqdn' => 'https://app.example.com',
+ 'is_http_basic_auth_enabled' => true,
+ 'http_basic_auth_username' => 'api-user',
+ 'http_basic_auth_password' => 'api-password',
+ ]);
+
+ $this->withHeaders(applicationSettingsApiHeaders($this->bearerToken))
+ ->patchJson("/api/v1/applications/{$this->application->uuid}", ['http_basic_auth_bcrypt_cost' => 4])
+ ->assertOk();
+
+ expect($this->application->fresh()->parseContainerLabels())->toContain('.basicauth.users=api-user:$2y$04$');
+});
+
+test('rejects http basic auth settings that are not supported', function (string $field, mixed $value) {
+ $this->withHeaders(applicationSettingsApiHeaders($this->bearerToken))
+ ->patchJson("/api/v1/applications/{$this->application->uuid}", [$field => $value])
+ ->assertUnprocessable()
+ ->assertJsonValidationErrors($field);
+})->with([
+ 'Argon2id on a proxy without it' => ['http_basic_auth_hash_algorithm', 'argon2id'],
+ 'unknown algorithm' => ['http_basic_auth_hash_algorithm', 'md5'],
+ 'bcrypt cost above 14' => ['http_basic_auth_bcrypt_cost', 15],
+ 'Argon2id memory above 256 MiB' => ['http_basic_auth_argon2id_memory_cost', 262145],
+ 'Argon2id iterations above 12' => ['http_basic_auth_argon2id_time_cost', 13],
+ 'password longer than 72 characters' => ['http_basic_auth_password', str_repeat('a', 73)],
+]);
+
test('rejects invalid boolean application settings', function () {
$this->withHeaders(applicationSettingsApiHeaders($this->bearerToken))
->patchJson("/api/v1/applications/{$this->application->uuid}", [
diff --git a/tests/Feature/ApplicationHttpBasicAuthUiTest.php b/tests/Feature/ApplicationHttpBasicAuthUiTest.php
index 78d42bd481..666cddec44 100644
--- a/tests/Feature/ApplicationHttpBasicAuthUiTest.php
+++ b/tests/Feature/ApplicationHttpBasicAuthUiTest.php
@@ -1,5 +1,6 @@
team = Team::factory()->create();
$this->user = User::factory()->create();
$this->team->members()->attach($this->user->id, ['role' => 'owner']);
@@ -47,9 +49,12 @@ uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==
?? StandaloneDocker::factory()->create(['server_id' => $this->server->id, 'network' => 'coolify-test']);
});
+afterEach(fn () => Server::flushIdentityMap());
+
function createApplicationForHttpBasicAuth(array $overrides = []): Application
{
return Application::factory()->create(array_merge([
+ 'name' => 'Basic Auth App',
'environment_id' => test()->environment->id,
'destination_id' => test()->destination->id,
'destination_type' => StandaloneDocker::class,
@@ -112,3 +117,68 @@ test('disabling http basic auth is saved instantly', function () {
expect((bool) $application->is_http_basic_auth_enabled)->toBeFalse();
});
+
+function useCaddyProxyForHttpBasicAuth(string $image): void
+{
+ test()->server->forceFill(['proxy' => [
+ 'type' => ProxyTypes::CADDY->value,
+ 'status' => 'running',
+ 'last_saved_settings' => 'applied',
+ 'last_applied_settings' => 'applied',
+ 'last_saved_proxy_configuration' => "services:\n caddy:\n image: '{$image}'\n",
+ ]])->save();
+}
+
+test('changing the bcrypt cost factor is saved instantly and applied to the proxy labels', function () {
+ $application = createApplicationForHttpBasicAuth(['fqdn' => 'https://app.example.com']);
+
+ Livewire::test(General::class, ['application' => $application])
+ ->set('httpBasicAuthBcryptCost', 4)
+ ->call('instantSave')
+ ->assertDispatched('success');
+
+ $application->refresh();
+
+ expect($application->http_basic_auth_bcrypt_cost)->toBe(4)
+ ->and(base64_decode($application->custom_labels))->toContain('.basicauth.users=admin:$2y$04$');
+});
+
+test('selecting Argon2id is saved instantly and applied to the Caddy labels', function () {
+ useCaddyProxyForHttpBasicAuth('lucaslorentz/caddy-docker-proxy:2.13-alpine');
+ $application = createApplicationForHttpBasicAuth(['fqdn' => 'https://app.example.com']);
+
+ Livewire::test(General::class, ['application' => $application])
+ ->set('httpBasicAuthHashAlgorithm', 'argon2id')
+ ->set('httpBasicAuthArgon2idMemoryCost', 8192)
+ ->call('instantSave')
+ ->assertDispatched('success')
+ ->assertSee('Iterations')
+ ->assertDontSee('Cost factor');
+
+ expect(base64_decode($application->refresh()->custom_labels))
+ ->toContain('caddy_0.basic_auth=argon2id', 'caddy_0.basic_auth.admin="$argon2id$v=19$m=8192,t=4,p=1$');
+});
+
+test('http basic auth form explains why Argon2id cannot be selected', function (?string $image, string $reason) {
+ if ($image !== null) {
+ useCaddyProxyForHttpBasicAuth($image);
+ }
+
+ Livewire::test(General::class, ['application' => createApplicationForHttpBasicAuth()])
+ ->assertSee($reason);
+})->with([
+ 'Traefik' => [null, 'Only supported by the Caddy proxy'],
+ 'Caddy 2.10' => ['lucaslorentz/caddy-docker-proxy:2.10-alpine', 'Needs Caddy 2.11 or newer on this server'],
+]);
+
+test('an unsupported http basic auth setting is rejected', function (string $property, mixed $value) {
+ Livewire::test(General::class, ['application' => createApplicationForHttpBasicAuth()])
+ ->set($property, $value)
+ ->call('instantSave')
+ ->assertDispatched('error')
+ ->assertNotDispatched('success');
+})->with([
+ 'Argon2id on a proxy without it' => ['httpBasicAuthHashAlgorithm', 'argon2id'],
+ 'bcrypt cost above 14' => ['httpBasicAuthBcryptCost', 15],
+ 'password longer than 72 characters' => ['httpBasicAuthPassword', str_repeat('a', 73)],
+]);
diff --git a/tests/Feature/Proxy/CaddyBasicAuthLabelsTest.php b/tests/Feature/Proxy/CaddyBasicAuthLabelsTest.php
index 359abef073..4f3aa36510 100644
--- a/tests/Feature/Proxy/CaddyBasicAuthLabelsTest.php
+++ b/tests/Feature/Proxy/CaddyBasicAuthLabelsTest.php
@@ -106,3 +106,55 @@ it('emits the matching basic auth directive in application labels', function (st
'caddy-docker-proxy 2.13, preview, all proxies' => ['lucaslorentz/caddy-docker-proxy:2.13-alpine', false, true, 'basic_auth'],
'caddy-docker-proxy 2.13, preview, exact labels' => ['lucaslorentz/caddy-docker-proxy:2.13-alpine', true, true, 'basic_auth'],
]);
+
+it('hashes the password in application labels with the selected settings', function (array $proxy, bool $exactLabels, bool $preview, array $hashSettings, array $expectedLabels) {
+ $team = Team::factory()->create();
+ $environment = Environment::factory()->create(['project_id' => Project::factory()->create(['team_id' => $team->id])->id]);
+ $server = Server::factory()->create(['team_id' => $team->id, 'proxy' => $proxy]);
+ $server->settings->update(['generate_exact_labels' => $exactLabels]);
+ $destination = StandaloneDocker::query()->where('server_id', $server->id)->firstOrFail();
+ $application = Application::factory()->createOne([
+ 'environment_id' => $environment->id,
+ 'destination_id' => $destination->id,
+ 'destination_type' => $destination->getMorphClass(),
+ 'fqdn' => 'https://example.com',
+ 'is_http_basic_auth_enabled' => true,
+ 'http_basic_auth_username' => 'admin',
+ 'http_basic_auth_password' => 'secret',
+ ...$hashSettings,
+ ]);
+ Server::flushIdentityMap();
+
+ $applicationPreview = $preview
+ ? (new ApplicationPreview)->forceFill(['pull_request_id' => 7, 'fqdn' => 'https://pr-7.example.com'])
+ : null;
+
+ $labels = collect(generateLabelsApplication($application->fresh(), $applicationPreview))->implode("\n");
+
+ expect($labels)->toContain(...$expectedLabels);
+})->with(function () {
+ $caddy = basicAuthCaddyProxy('lucaslorentz/caddy-docker-proxy:2.13-alpine');
+ $traefik = basicAuthCaddyProxy('traefik:v3.7', ['type' => ProxyTypes::TRAEFIK->value]);
+ $bcrypt = ['http_basic_auth_bcrypt_cost' => 4];
+ $argon2id = ['http_basic_auth_hash_algorithm' => 'argon2id', 'http_basic_auth_argon2id_memory_cost' => 8192, 'http_basic_auth_argon2id_time_cost' => 2];
+ $caddyBcrypt = 'caddy_0.basic_auth.admin="$2y$04$';
+ $traefikBcrypt = '.basicauth.users=admin:$2y$04$';
+
+ return [
+ 'bcrypt, all proxies' => [$caddy, false, false, $bcrypt, [$caddyBcrypt, $traefikBcrypt]],
+ 'bcrypt, all proxies, preview' => [$caddy, false, true, $bcrypt, [$caddyBcrypt, $traefikBcrypt]],
+ 'bcrypt, exact Caddy labels' => [$caddy, true, false, $bcrypt, [$caddyBcrypt]],
+ 'bcrypt, exact Caddy labels, preview' => [$caddy, true, true, $bcrypt, [$caddyBcrypt]],
+ 'bcrypt, exact Traefik labels' => [$traefik, true, false, $bcrypt, [$traefikBcrypt]],
+ 'bcrypt, exact Traefik labels, preview' => [$traefik, true, true, $bcrypt, [$traefikBcrypt]],
+ 'Argon2id for Caddy, bcrypt for Traefik' => [$caddy, false, false, $argon2id, [
+ 'caddy_0.basic_auth=argon2id',
+ 'caddy_0.basic_auth.admin="$argon2id$v=19$m=8192,t=2,p=1$',
+ '.basicauth.users=admin:$2y$10$',
+ ]],
+ 'bcrypt when Caddy is too old for the stored Argon2id' => [basicAuthCaddyProxy('lucaslorentz/caddy-docker-proxy:2.10-alpine'), false, false, $argon2id, [
+ 'caddy_0.basic_auth.admin="$2y$10$',
+ '.basicauth.users=admin:$2y$10$',
+ ]],
+ ];
+});
diff --git a/tests/Unit/DeploymentConfiguration/ApplicationConfigurationSnapshotTest.php b/tests/Unit/DeploymentConfiguration/ApplicationConfigurationSnapshotTest.php
index 1e2e0d796c..f4b4586832 100644
--- a/tests/Unit/DeploymentConfiguration/ApplicationConfigurationSnapshotTest.php
+++ b/tests/Unit/DeploymentConfiguration/ApplicationConfigurationSnapshotTest.php
@@ -148,6 +148,22 @@ it('detects deployment hook changes as redeploy-only changes', function (string
'post-deployment container' => ['post_deployment_command_container', 'Post-deployment command container', 'worker'],
]);
+it('detects HTTP basic auth hash setting changes as redeploy-only changes', function (string $field, string $label, string|int $newValue) {
+ $application = snapshotTestApplication();
+ markSnapshotTestApplicationDeployed($application);
+
+ $application->update([$field => $newValue]);
+ $diff = $application->refresh()->pendingDeploymentConfigurationDiff();
+
+ expect($diff->requiresBuild())->toBeFalse()
+ ->and(collect($diff->changes())->pluck('label'))->toContain($label);
+})->with([
+ 'hash algorithm' => ['http_basic_auth_hash_algorithm', 'HTTP basic auth hash algorithm', 'argon2id'],
+ 'bcrypt cost factor' => ['http_basic_auth_bcrypt_cost', 'HTTP basic auth bcrypt cost factor', 4],
+ 'Argon2id memory' => ['http_basic_auth_argon2id_memory_cost', 'HTTP basic auth Argon2id memory (KiB)', 8192],
+ 'Argon2id iterations' => ['http_basic_auth_argon2id_time_cost', 'HTTP basic auth Argon2id iterations', 2],
+]);
+
it('detects source integration changes as build changes', function (string $field, string $label, mixed $newValue) {
$application = snapshotTestApplication([
'source_id' => 1,
diff --git a/tests/v4/Browser/ApplicationHttpBasicAuthHashingTest.php b/tests/v4/Browser/ApplicationHttpBasicAuthHashingTest.php
new file mode 100644
index 0000000000..148900b144
--- /dev/null
+++ b/tests/v4/Browser/ApplicationHttpBasicAuthHashingTest.php
@@ -0,0 +1,45 @@
+ Server::flushIdentityMap());
+
+afterEach(fn () => Server::flushIdentityMap());
+
+it('replaces the cost factor with memory and iterations when Argon2id is selected', function () {
+ $stack = seedBrowserResourceStack();
+ $stack['server']->forceFill(['proxy' => [
+ 'type' => ProxyTypes::CADDY->value,
+ 'status' => 'running',
+ 'last_saved_settings' => 'applied',
+ 'last_applied_settings' => 'applied',
+ 'last_saved_proxy_configuration' => "services:\n caddy:\n image: 'lucaslorentz/caddy-docker-proxy:2.13-alpine'\n",
+ ]])->save();
+ $application = createBrowserApplication($stack, [
+ 'name' => 'Basic Auth App',
+ 'fqdn' => 'https://basic-auth.example.com',
+ 'is_http_basic_auth_enabled' => true,
+ 'http_basic_auth_username' => 'admin',
+ 'http_basic_auth_password' => 'secret',
+ ]);
+ loginAndSkipBoarding();
+
+ $page = visit(applicationConfigurationUrl($stack['project'], $stack['environment'], $application));
+ $page->assertSee('Cost factor')
+ ->script("document.querySelector('#security-section').scrollIntoView()");
+
+ selectListboxOption($page, 'httpBasicAuthHashAlgorithm', 'Argon2id Memory-hard, more resistant to cracking');
+
+ $page->assertSeeIn('#httpBasicAuthArgon2idMemoryCost-trigger', '64 MiB')
+ ->assertSeeIn('#httpBasicAuthArgon2idTimeCost-trigger', '4')
+ ->assertDontSee('Cost factor')
+ ->assertNoJavaScriptErrors()
+ ->screenshot(filename: 'application-basic-auth-argon2id');
+
+ expect($application->fresh()->http_basic_auth_hash_algorithm)->toBe(HttpBasicAuthHashAlgorithm::ARGON2ID);
+});
From 00dced2c24a030333b75b196e4dcf19ecc8e486d Mon Sep 17 00:00:00 2001
From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com>
Date: Sun, 4 Oct 2026 19:48:46 +0200
Subject: [PATCH 07/19] refactor(api): check HTTP basic auth request fields
with one hasAny call
---
app/Http/Controllers/Api/ApplicationsController.php | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/app/Http/Controllers/Api/ApplicationsController.php b/app/Http/Controllers/Api/ApplicationsController.php
index 1f6e9e6a11..d6d7821238 100644
--- a/app/Http/Controllers/Api/ApplicationsController.php
+++ b/app/Http/Controllers/Api/ApplicationsController.php
@@ -3349,10 +3349,15 @@ class ApplicationsController extends Controller
], 422);
}
- $requestHasHttpBasicAuth = $request->has('is_http_basic_auth_enabled')
- || $request->has('http_basic_auth_username')
- || $request->has('http_basic_auth_password')
- || $request->hasAny(['http_basic_auth_hash_algorithm', 'http_basic_auth_bcrypt_cost', 'http_basic_auth_argon2id_memory_cost', 'http_basic_auth_argon2id_time_cost']);
+ $requestHasHttpBasicAuth = $request->hasAny([
+ 'is_http_basic_auth_enabled',
+ 'http_basic_auth_username',
+ 'http_basic_auth_password',
+ 'http_basic_auth_hash_algorithm',
+ 'http_basic_auth_bcrypt_cost',
+ 'http_basic_auth_argon2id_memory_cost',
+ 'http_basic_auth_argon2id_time_cost',
+ ]);
if ($request->has('is_http_basic_auth_enabled') && $request->is_http_basic_auth_enabled === true) {
if (blank($application->http_basic_auth_username) || blank($application->http_basic_auth_password)) {
From 52cad11f344d1d4a8ae46161904422604513c259 Mon Sep 17 00:00:00 2001
From: Aditya Tripathi
Date: Wed, 26 Aug 2026 12:52:56 +0000
Subject: [PATCH 08/19] feat(database): add flush cache option for Redis, KeyDB
and Dragonfly
Adds a Flush cache action to the database heading for the three
Redis-protocol cache databases. It runs FLUSHALL ASYNC inside the
running container to clear all keys without stopping the container.
The option is hidden for SQL/Mongo databases and only shown while the
database is running. A confirmation modal requires typing the database
name before flushing. The redis-cli password is shell-escaped to
prevent command injection.
---
app/Actions/Database/FlushCacheDatabase.php | 56 +++++++++++++++++++
app/Livewire/Project/Database/Heading.php | 29 ++++++++++
.../project/database/heading.blade.php | 27 +++++++++
tests/Unit/FlushCacheDatabaseCommandTest.php | 39 +++++++++++++
4 files changed, 151 insertions(+)
create mode 100644 app/Actions/Database/FlushCacheDatabase.php
create mode 100644 tests/Unit/FlushCacheDatabaseCommandTest.php
diff --git a/app/Actions/Database/FlushCacheDatabase.php b/app/Actions/Database/FlushCacheDatabase.php
new file mode 100644
index 0000000000..998d2cd5c8
--- /dev/null
+++ b/app/Actions/Database/FlushCacheDatabase.php
@@ -0,0 +1,56 @@
+destination->server;
+
+ if (! $server->isFunctional()) {
+ throw new \RuntimeException('Server is not functional.');
+ }
+
+ if (! $database->isRunning()) {
+ throw new \RuntimeException('Database is not running.');
+ }
+
+ $command = $this->buildFlushCommand($database->uuid, $this->resolvePassword($database));
+
+ instant_remote_process(command: [$command], server: $server, throwError: true);
+ }
+
+ /**
+ * Build the `redis-cli FLUSHALL ASYNC` command executed inside the running container.
+ *
+ * The command connects over the container's local plaintext port (available even when
+ * SSL is enabled, because Coolify never disables it), so no TLS flags are needed. The
+ * password is shell-escaped so it cannot break out of the argument and inject commands.
+ */
+ public function buildFlushCommand(string $containerName, ?string $password): string
+ {
+ $redisCli = 'redis-cli';
+ if (filled($password)) {
+ $redisCli .= ' -a '.escapeshellarg($password);
+ }
+
+ return "docker exec {$containerName} {$redisCli} FLUSHALL ASYNC";
+ }
+
+ private function resolvePassword(StandaloneRedis|StandaloneKeydb|StandaloneDragonfly $database): ?string
+ {
+ return match (true) {
+ $database instanceof StandaloneRedis => $database->redis_password,
+ $database instanceof StandaloneKeydb => $database->keydb_password,
+ $database instanceof StandaloneDragonfly => $database->dragonfly_password,
+ };
+ }
+}
diff --git a/app/Livewire/Project/Database/Heading.php b/app/Livewire/Project/Database/Heading.php
index a7e8cfedd8..354d9ed8d2 100644
--- a/app/Livewire/Project/Database/Heading.php
+++ b/app/Livewire/Project/Database/Heading.php
@@ -2,11 +2,15 @@
namespace App\Livewire\Project\Database;
+use App\Actions\Database\FlushCacheDatabase;
use App\Actions\Database\RestartDatabase;
use App\Actions\Database\StartDatabase;
use App\Actions\Database\StopDatabase;
use App\Actions\Docker\GetContainersStatus;
use App\Events\ServiceStatusChanged;
+use App\Models\StandaloneDragonfly;
+use App\Models\StandaloneKeydb;
+use App\Models\StandaloneRedis;
use App\Support\ResourceStartActivity;
use App\Traits\ListensToTeamChannel;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
@@ -146,6 +150,23 @@ class Heading extends Component
}
}
+ public function flush()
+ {
+ try {
+ $this->authorize('manage', $this->database);
+
+ if (! $this->isCacheDatabase()) {
+ throw new \RuntimeException('This database type does not support cache flushing.');
+ }
+
+ FlushCacheDatabase::run($this->database);
+ $this->auditDatabaseAction('ui.database.flushed');
+ $this->dispatch('success', 'Cache flushed successfully.');
+ } catch (\Throwable $e) {
+ return handleError($e, $this);
+ }
+ }
+
public function restart()
{
try {
@@ -192,9 +213,17 @@ class Heading extends Component
'checkboxes' => [
['id' => 'docker_cleanup', 'label' => __('resource.docker_cleanup')],
],
+ 'isCacheDatabase' => $this->isCacheDatabase(),
]);
}
+ private function isCacheDatabase(): bool
+ {
+ return $this->database instanceof StandaloneRedis
+ || $this->database instanceof StandaloneKeydb
+ || $this->database instanceof StandaloneDragonfly;
+ }
+
private function auditDatabaseAction(string $event): void
{
auditLog($event, [
diff --git a/resources/views/livewire/project/database/heading.blade.php b/resources/views/livewire/project/database/heading.blade.php
index abf58177c7..43e6b5af4b 100644
--- a/resources/views/livewire/project/database/heading.blade.php
+++ b/resources/views/livewire/project/database/heading.blade.php
@@ -88,6 +88,13 @@
Restart
+ @if ($isCacheDatabase)
+
+ @endif