diff --git a/appinfo/info.xml b/appinfo/info.xml
index 66762699..6811c472 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -4,7 +4,7 @@
Slack Integration
Integration of Slack
- 2.1.1
+ 2.1.2
agpl
Anupam Kumar
Slack
@@ -17,7 +17,7 @@
https://raw.githubusercontent.com/nextcloud/integration_slack/main/img/screenshot1.png
https://raw.githubusercontent.com/nextcloud/integration_slack/main/img/screenshot2.png
-
+
OCA\Slack\Settings\Admin
diff --git a/composer.json b/composer.json
index e202b4d7..11d42827 100644
--- a/composer.json
+++ b/composer.json
@@ -7,7 +7,7 @@
}
],
"require": {
- "php": "^8.1 || ^8.2 || ^8.3 || ^8.4",
+ "php": "^8.2 || ^8.3 || ^8.4",
"bamarni/composer-bin-plugin": "^1.8"
},
"scripts": {
diff --git a/composer.lock b/composer.lock
index 275cde41..4ce5fb53 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,20 +4,20 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "f31789ae3d4997d60b845675849d2c16",
+ "content-hash": "7a3e2a702111e2364db37010041e4f5c",
"packages": [
{
"name": "bamarni/composer-bin-plugin",
- "version": "1.8.2",
+ "version": "1.8.3",
"source": {
"type": "git",
"url": "https://github.com/bamarni/composer-bin-plugin.git",
- "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880"
+ "reference": "e7ef9e012667327516c24e5fad9903a3bc91389d"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880",
- "reference": "92fd7b1e6e9cdae19b0d57369d8ad31a37b6a880",
+ "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/e7ef9e012667327516c24e5fad9903a3bc91389d",
+ "reference": "e7ef9e012667327516c24e5fad9903a3bc91389d",
"shasum": ""
},
"require": {
@@ -30,7 +30,7 @@
"phpstan/extension-installer": "^1.1",
"phpstan/phpstan": "^1.8",
"phpstan/phpstan-phpunit": "^1.1",
- "phpunit/phpunit": "^8.5 || ^9.5",
+ "phpunit/phpunit": "^8.5 || ^9.6 || ^10.0",
"symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
"symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0",
"symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0"
@@ -59,9 +59,9 @@
],
"support": {
"issues": "https://github.com/bamarni/composer-bin-plugin/issues",
- "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.2"
+ "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.3"
},
- "time": "2022-10-31T08:38:03+00:00"
+ "time": "2025-11-24T19:20:55+00:00"
}
],
"packages-dev": [
@@ -71,12 +71,12 @@
"source": {
"type": "git",
"url": "https://github.com/nextcloud-deps/ocp.git",
- "reference": "fb418a70943a4e4a64ade1ee025019e72d87b694"
+ "reference": "2ce5bef7efc76907b708860d472ccaf401d3bf0c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/fb418a70943a4e4a64ade1ee025019e72d87b694",
- "reference": "fb418a70943a4e4a64ade1ee025019e72d87b694",
+ "url": "https://api.github.com/repos/nextcloud-deps/ocp/zipball/2ce5bef7efc76907b708860d472ccaf401d3bf0c",
+ "reference": "2ce5bef7efc76907b708860d472ccaf401d3bf0c",
"shasum": ""
},
"require": {
@@ -90,7 +90,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "32.0.0-dev"
+ "dev-master": "33.0.0-dev"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -112,7 +112,7 @@
"issues": "https://github.com/nextcloud-deps/ocp/issues",
"source": "https://github.com/nextcloud-deps/ocp/tree/master"
},
- "time": "2025-07-08T00:54:05+00:00"
+ "time": "2025-11-25T00:51:14+00:00"
},
{
"name": "psr/clock",
@@ -324,7 +324,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^8.1 || ^8.2 || ^8.3 || ^8.4"
+ "php": "^8.2 || ^8.3 || ^8.4"
},
"platform-dev": {},
"plugin-api-version": "2.6.0"
diff --git a/lib/Controller/ConfigController.php b/lib/Controller/ConfigController.php
index de8f76fb..1654e178 100644
--- a/lib/Controller/ConfigController.php
+++ b/lib/Controller/ConfigController.php
@@ -24,6 +24,7 @@
use OCP\AppFramework\Http\DataResponse;
use OCP\AppFramework\Http\RedirectResponse;
use OCP\AppFramework\Http\TemplateResponse;
+use OCP\AppFramework\Services\IAppConfig;
use OCP\AppFramework\Services\IInitialState;
use OCP\IConfig;
use OCP\IL10N;
@@ -41,6 +42,7 @@ public function __construct(
string $appName,
IRequest $request,
private IConfig $config,
+ private IAppConfig $appConfig,
private IURLGenerator $urlGenerator,
private IL10N $l,
private IInitialState $initialStateService,
@@ -58,10 +60,10 @@ public function __construct(
#[NoAdminRequired]
public function isUserConnected(): DataResponse {
$token = $this->config->getUserValue($this->userId, Application::APP_ID, 'token');
- $clientID = $this->config->getAppValue(Application::APP_ID, 'client_id');
- $clientSecret = $this->config->getAppValue(Application::APP_ID, 'client_secret');
+ $clientID = $this->appConfig->getAppValueString('client_id', lazy: true);
+ $clientSecret = $this->appConfig->getAppValueString('client_secret', lazy: true);
$oauthPossible = $clientID !== '' && $clientSecret !== '';
- $usePopup = $this->config->getAppValue(Application::APP_ID, 'use_popup', '0');
+ $usePopup = $this->appConfig->getAppValueString('use_popup', '0', lazy: true);
return new DataResponse([
'connected' => ($token !== ''),
@@ -135,7 +137,7 @@ public function setAdminConfig(array $values): DataResponse {
if (in_array($key, self::SENSITIVE_ADMIN_KEYS, true)) {
continue;
}
- $this->config->setAppValue(Application::APP_ID, $key, $value);
+ $this->appConfig->setAppValueString($key, $value, lazy: true);
}
return new DataResponse([]);
}
@@ -157,13 +159,13 @@ public function setSensitiveAdminConfig(array $values): DataResponse {
$value = $this->crypto->encrypt($value);
}
} catch (Exception $e) {
- $this->config->setAppValue(Application::APP_ID, 'client_secret', '');
+ $this->appConfig->setAppValueString('client_secret', '', lazy: true);
// logger takes care not to leak the secret
$this->logger->error('Could not encrypt client secret', ['exception' => $e]);
return new DataResponse(['message' => $this->l->t('Could not encrypt client secret')]);
}
- $this->config->setAppValue(Application::APP_ID, $key, $value);
+ $this->appConfig->setAppValueString($key, $value, lazy: true);
}
return new DataResponse([]);
}
@@ -196,8 +198,8 @@ public function popupSuccessPage(string $user_id, string $user_displayname): Tem
*/
public function oauthRedirect(string $code = '', string $state = ''): RedirectResponse {
$configState = $this->config->getUserValue($this->userId, Application::APP_ID, 'oauth_state');
- $clientID = $this->config->getAppValue(Application::APP_ID, 'client_id');
- $clientSecret = $this->config->getAppValue(Application::APP_ID, 'client_secret');
+ $clientID = $this->appConfig->getAppValueString('client_id', lazy: true);
+ $clientSecret = $this->appConfig->getAppValueString('client_secret', lazy: true);
// decrypt client secret
try {
@@ -240,7 +242,7 @@ public function oauthRedirect(string $code = '', string $state = ''): RedirectRe
$this->config->setUserValue($this->userId, Application::APP_ID, 'refresh_token', $encryptedRefreshToken);
$userInfo = $this->storeUserInfo($result['authed_user']['id']);
- $usePopup = $this->config->getAppValue(Application::APP_ID, 'use_popup', '0') === '1';
+ $usePopup = $this->appConfig->getAppValueString('use_popup', '0', lazy: true) === '1';
if ($usePopup) {
return new RedirectResponse(
diff --git a/lib/Migration/Version020102Date20251125141127.php b/lib/Migration/Version020102Date20251125141127.php
new file mode 100644
index 00000000..9d06845b
--- /dev/null
+++ b/lib/Migration/Version020102Date20251125141127.php
@@ -0,0 +1,49 @@
+appConfig->getAppKeys();
+
+ foreach (self::$configKeys as $key) {
+ // skip if not already set
+ if (!in_array($key, $allSetKeys)) {
+ continue;
+ }
+ $value = $this->appConfig->getAppValueString($key);
+ $this->appConfig->setAppValueString($key, $value, lazy: true);
+ }
+ }
+}
diff --git a/lib/Service/SlackAPIService.php b/lib/Service/SlackAPIService.php
index b3d396da..07aa0831 100644
--- a/lib/Service/SlackAPIService.php
+++ b/lib/Service/SlackAPIService.php
@@ -18,6 +18,7 @@
use Exception;
use OC\User\NoUserException;
use OCA\Slack\AppInfo\Application;
+use OCP\AppFramework\Services\IAppConfig;
use OCP\Constants;
use OCP\Files\File;
use OCP\Files\Folder;
@@ -47,6 +48,7 @@ public function __construct(
private LoggerInterface $logger,
private IL10N $l10n,
private IConfig $config,
+ private IAppConfig $appConfig,
private IRootFolder $root,
private ShareManager $shareManager,
private IURLGenerator $urlGenerator,
@@ -440,8 +442,8 @@ private function checkTokenExpiration(string $userId): void {
* @throws \OCP\PreConditionNotMetException
*/
private function refreshToken(string $userId): bool {
- $clientID = $this->config->getAppValue(Application::APP_ID, 'client_id');
- $clientSecret = $this->config->getAppValue(Application::APP_ID, 'client_secret');
+ $clientID = $this->appConfig->getAppValueString('client_id', lazy: true);
+ $clientSecret = $this->appConfig->getAppValueString('client_secret', lazy: true);
$refreshToken = $this->config->getUserValue($userId, Application::APP_ID, 'refresh_token');
$refreshToken = $refreshToken === '' ? '' : $this->crypto->decrypt($refreshToken);
diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php
index 445c4963..7ab3ff09 100644
--- a/lib/Settings/Admin.php
+++ b/lib/Settings/Admin.php
@@ -5,8 +5,8 @@
use Exception;
use OCA\Slack\AppInfo\Application;
use OCP\AppFramework\Http\TemplateResponse;
+use OCP\AppFramework\Services\IAppConfig;
use OCP\AppFramework\Services\IInitialState;
-use OCP\IConfig;
use OCP\Security\ICrypto;
use OCP\Settings\ISettings;
use Psr\Log\LoggerInterface;
@@ -14,7 +14,7 @@
class Admin implements ISettings {
public function __construct(
- private IConfig $config,
+ private IAppConfig $appConfig,
private IInitialState $initialStateService,
private ICrypto $crypto,
private LoggerInterface $logger,
@@ -25,9 +25,9 @@ public function __construct(
* @return TemplateResponse
*/
public function getForm(): TemplateResponse {
- $clientID = $this->config->getAppValue(Application::APP_ID, 'client_id');
- $clientSecret = $this->config->getAppValue(Application::APP_ID, 'client_secret');
- $usePopup = $this->config->getAppValue(Application::APP_ID, 'use_popup', '0');
+ $clientID = $this->appConfig->getAppValueString('client_id', lazy: true);
+ $clientSecret = $this->appConfig->getAppValueString('client_secret', lazy: true);
+ $usePopup = $this->appConfig->getAppValueString('use_popup', '0', lazy: true);
try {
if ($clientSecret !== '') {
diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php
index 5ae23b32..2abaef48 100644
--- a/lib/Settings/Personal.php
+++ b/lib/Settings/Personal.php
@@ -4,6 +4,7 @@
use OCA\Slack\AppInfo\Application;
use OCP\AppFramework\Http\TemplateResponse;
+use OCP\AppFramework\Services\IAppConfig;
use OCP\AppFramework\Services\IInitialState;
use OCP\IConfig;
use OCP\Settings\ISettings;
@@ -12,6 +13,7 @@ class Personal implements ISettings {
public function __construct(
private IConfig $config,
+ private IAppConfig $appConfig,
private IInitialState $initialStateService,
private ?string $userId,
) {
@@ -27,9 +29,9 @@ public function getForm(): TemplateResponse {
$fileActionEnabled = $this->config->getUserValue($this->userId, Application::APP_ID, 'file_action_enabled', '1') === '1';
// for OAuth
- $clientID = $this->config->getAppValue(Application::APP_ID, 'client_id');
- $clientSecret = $this->config->getAppValue(Application::APP_ID, 'client_secret');
- $usePopup = $this->config->getAppValue(Application::APP_ID, 'use_popup', '0');
+ $clientID = $this->appConfig->getAppValueString('client_id', lazy: true);
+ $clientSecret = $this->appConfig->getAppValueString('client_secret', lazy: true);
+ $usePopup = $this->appConfig->getAppValueString('use_popup', '0', lazy: true);
$userConfig = [
// don't need to decrypt it, just need to know if it's set
diff --git a/tests/unit/Service/SlackAPIServiceTest.php b/tests/unit/Service/SlackAPIServiceTest.php
index 0bf52741..c20e9bad 100644
--- a/tests/unit/Service/SlackAPIServiceTest.php
+++ b/tests/unit/Service/SlackAPIServiceTest.php
@@ -7,6 +7,7 @@
use OCA\Slack\AppInfo\Application;
use OCA\Slack\Service\NetworkService;
use OCA\Slack\Service\SlackAPIService;
+use OCP\AppFramework\Services\IAppConfig;
use OCP\Files\IRootFolder;
use OCP\Http\Client\IClientService;
use OCP\ICacheFactory;
@@ -22,6 +23,7 @@ class SlackAPIServiceTest extends TestCase {
private LoggerInterface $logger;
private IL10N $l10n;
private IConfig $config;
+ private IAppConfig $appConfig;
private IRootFolder $root;
private ShareManager $shareManager;
private IURLGenerator $urlGenerator;
@@ -42,6 +44,7 @@ private function setupDummies(): void {
$this->logger = $this->createMock(LoggerInterface::class);
$this->l10n = $this->createMock(L10N::class);
$this->config = $this->createMock(IConfig::class);
+ $this->appConfig = $this->createMock(IAppConfig::class);
$this->root = $this->createMock(IRootFolder::class);
$this->shareManager = $this->createMock(ShareManager::class);
$this->urlGenerator = $this->createMock(IURLGenerator::class);
@@ -58,6 +61,7 @@ private function setupDummies(): void {
$this->logger,
$this->l10n,
$this->config,
+ $this->appConfig,
$this->root,
$this->shareManager,
$this->urlGenerator,
diff --git a/vendor-bin/php-cs-fixer/composer.json b/vendor-bin/php-cs-fixer/composer.json
index c03cf676..3a7a5f05 100644
--- a/vendor-bin/php-cs-fixer/composer.json
+++ b/vendor-bin/php-cs-fixer/composer.json
@@ -1,6 +1,6 @@
{
"require": {
- "php": "^8.1 || ^8.2 || ^8.3 || ^8.4"
+ "php": "^8.2 || ^8.3 || ^8.4"
},
"require-dev": {
"nextcloud/coding-standard": "^1.1"
diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock
index 37316aaa..6398350d 100644
--- a/vendor-bin/php-cs-fixer/composer.lock
+++ b/vendor-bin/php-cs-fixer/composer.lock
@@ -4,31 +4,31 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "839e4c991d5c60018590df69ed6d0ba4",
+ "content-hash": "7c620d14b9eb1867ec25119b94008cf4",
"packages": [],
"packages-dev": [
{
"name": "kubawerlos/php-cs-fixer-custom-fixers",
- "version": "v3.30.0",
+ "version": "v3.35.1",
"source": {
"type": "git",
"url": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers.git",
- "reference": "0cf921cf9aee50ac3091839325f5cf38ab189b97"
+ "reference": "2a35f80ae24ca77443a7af1599c3a3db1b6bd395"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/0cf921cf9aee50ac3091839325f5cf38ab189b97",
- "reference": "0cf921cf9aee50ac3091839325f5cf38ab189b97",
+ "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/2a35f80ae24ca77443a7af1599c3a3db1b6bd395",
+ "reference": "2a35f80ae24ca77443a7af1599c3a3db1b6bd395",
"shasum": ""
},
"require": {
"ext-filter": "*",
"ext-tokenizer": "*",
- "friendsofphp/php-cs-fixer": "^3.82",
+ "friendsofphp/php-cs-fixer": "^3.87",
"php": "^7.4 || ^8.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.6.22 || 10.5.45 || ^11.5.7"
+ "phpunit/phpunit": "^9.6.24 || ^10.5.51 || ^11.5.32"
},
"type": "library",
"autoload": {
@@ -49,7 +49,7 @@
"description": "A set of custom fixers for PHP CS Fixer",
"support": {
"issues": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/issues",
- "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.30.0"
+ "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.35.1"
},
"funding": [
{
@@ -57,7 +57,7 @@
"type": "github"
}
],
- "time": "2025-07-07T22:51:31+00:00"
+ "time": "2025-09-28T18:43:35+00:00"
},
{
"name": "nextcloud/coding-standard",
@@ -106,16 +106,16 @@
},
{
"name": "php-cs-fixer/shim",
- "version": "v3.82.1",
+ "version": "v3.90.0",
"source": {
"type": "git",
"url": "https://github.com/PHP-CS-Fixer/shim.git",
- "reference": "daff83ac6980d852d9f41b0227b3b77b3320a542"
+ "reference": "db628db551759424b1ba511aef3b0ff0550044f6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/daff83ac6980d852d9f41b0227b3b77b3320a542",
- "reference": "daff83ac6980d852d9f41b0227b3b77b3320a542",
+ "url": "https://api.github.com/repos/PHP-CS-Fixer/shim/zipball/db628db551759424b1ba511aef3b0ff0550044f6",
+ "reference": "db628db551759424b1ba511aef3b0ff0550044f6",
"shasum": ""
},
"require": {
@@ -152,9 +152,9 @@
"description": "A tool to automatically fix PHP code style",
"support": {
"issues": "https://github.com/PHP-CS-Fixer/shim/issues",
- "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.82.1"
+ "source": "https://github.com/PHP-CS-Fixer/shim/tree/v3.90.0"
},
- "time": "2025-07-08T10:19:41+00:00"
+ "time": "2025-11-20T15:15:37+00:00"
}
],
"aliases": [],
@@ -163,7 +163,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^8.1 || ^8.2 || ^8.3 || ^8.4"
+ "php": "^8.2 || ^8.3 || ^8.4"
},
"platform-dev": {},
"plugin-api-version": "2.6.0"
diff --git a/vendor-bin/phpunit/composer.json b/vendor-bin/phpunit/composer.json
index 47e7dc7b..fe64d800 100644
--- a/vendor-bin/phpunit/composer.json
+++ b/vendor-bin/phpunit/composer.json
@@ -1,6 +1,6 @@
{
"require": {
- "php": "^8.1 || ^8.2 || ^8.3 || ^8.4"
+ "php": "^8.2 || ^8.3 || ^8.4"
},
"require-dev": {
"phpunit/phpunit": "^10.5.45"
diff --git a/vendor-bin/phpunit/composer.lock b/vendor-bin/phpunit/composer.lock
index 7c91cdf2..629226a9 100644
--- a/vendor-bin/phpunit/composer.lock
+++ b/vendor-bin/phpunit/composer.lock
@@ -4,21 +4,21 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "8e82d18cbfa5d9918199e7a449241b1b",
+ "content-hash": "7bb336cc3c869823600fff6494697797",
"packages": [],
"packages-dev": [
{
"name": "myclabs/deep-copy",
- "version": "1.13.3",
+ "version": "1.13.4",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "faed855a7b5f4d4637717c2b3863e277116beb36"
+ "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36",
- "reference": "faed855a7b5f4d4637717c2b3863e277116beb36",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a",
+ "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a",
"shasum": ""
},
"require": {
@@ -57,7 +57,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.13.3"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4"
},
"funding": [
{
@@ -65,20 +65,20 @@
"type": "tidelift"
}
],
- "time": "2025-07-05T12:25:42+00:00"
+ "time": "2025-08-01T08:46:24+00:00"
},
{
"name": "nikic/php-parser",
- "version": "v5.5.0",
+ "version": "v5.6.2",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "ae59794362fe85e051a58ad36b289443f57be7a9"
+ "reference": "3a454ca033b9e06b63282ce19562e892747449bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9",
- "reference": "ae59794362fe85e051a58ad36b289443f57be7a9",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb",
+ "reference": "3a454ca033b9e06b63282ce19562e892747449bb",
"shasum": ""
},
"require": {
@@ -97,7 +97,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "5.x-dev"
}
},
"autoload": {
@@ -121,9 +121,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2"
},
- "time": "2025-05-31T08:24:38+00:00"
+ "time": "2025-10-21T19:32:17+00:00"
},
{
"name": "phar-io/manifest",
@@ -566,16 +566,16 @@
},
{
"name": "phpunit/phpunit",
- "version": "10.5.47",
+ "version": "10.5.58",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "3637b3e50d32ab3a0d1a33b3b6177169ec3d95a3"
+ "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3637b3e50d32ab3a0d1a33b3b6177169ec3d95a3",
- "reference": "3637b3e50d32ab3a0d1a33b3b6177169ec3d95a3",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e24fb46da450d8e6a5788670513c1af1424f16ca",
+ "reference": "e24fb46da450d8e6a5788670513c1af1424f16ca",
"shasum": ""
},
"require": {
@@ -585,7 +585,7 @@
"ext-mbstring": "*",
"ext-xml": "*",
"ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.13.1",
+ "myclabs/deep-copy": "^1.13.4",
"phar-io/manifest": "^2.0.4",
"phar-io/version": "^3.2.1",
"php": ">=8.1",
@@ -596,13 +596,13 @@
"phpunit/php-timer": "^6.0.0",
"sebastian/cli-parser": "^2.0.1",
"sebastian/code-unit": "^2.0.0",
- "sebastian/comparator": "^5.0.3",
+ "sebastian/comparator": "^5.0.4",
"sebastian/diff": "^5.1.1",
"sebastian/environment": "^6.1.0",
- "sebastian/exporter": "^5.1.2",
+ "sebastian/exporter": "^5.1.4",
"sebastian/global-state": "^6.0.2",
"sebastian/object-enumerator": "^5.0.0",
- "sebastian/recursion-context": "^5.0.0",
+ "sebastian/recursion-context": "^5.0.1",
"sebastian/type": "^4.0.0",
"sebastian/version": "^4.0.1"
},
@@ -647,7 +647,7 @@
"support": {
"issues": "https://github.com/sebastianbergmann/phpunit/issues",
"security": "https://github.com/sebastianbergmann/phpunit/security/policy",
- "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.47"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.58"
},
"funding": [
{
@@ -671,7 +671,7 @@
"type": "tidelift"
}
],
- "time": "2025-06-20T11:29:11+00:00"
+ "time": "2025-09-28T12:04:46+00:00"
},
{
"name": "sebastian/cli-parser",
@@ -843,16 +843,16 @@
},
{
"name": "sebastian/comparator",
- "version": "5.0.3",
+ "version": "5.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e"
+ "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e",
- "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e8e53097718d2b53cfb2aa859b06a41abf58c62e",
+ "reference": "e8e53097718d2b53cfb2aa859b06a41abf58c62e",
"shasum": ""
},
"require": {
@@ -908,15 +908,27 @@
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
"security": "https://github.com/sebastianbergmann/comparator/security/policy",
- "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3"
+ "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.4"
},
"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/comparator",
+ "type": "tidelift"
}
],
- "time": "2024-10-18T14:56:07+00:00"
+ "time": "2025-09-07T05:25:07+00:00"
},
{
"name": "sebastian/complexity",
@@ -1109,16 +1121,16 @@
},
{
"name": "sebastian/exporter",
- "version": "5.1.2",
+ "version": "5.1.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "955288482d97c19a372d3f31006ab3f37da47adf"
+ "reference": "0735b90f4da94969541dac1da743446e276defa6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf",
- "reference": "955288482d97c19a372d3f31006ab3f37da47adf",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/0735b90f4da94969541dac1da743446e276defa6",
+ "reference": "0735b90f4da94969541dac1da743446e276defa6",
"shasum": ""
},
"require": {
@@ -1127,7 +1139,7 @@
"sebastian/recursion-context": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^10.0"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
@@ -1175,15 +1187,27 @@
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
"security": "https://github.com/sebastianbergmann/exporter/security/policy",
- "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2"
+ "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.4"
},
"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/exporter",
+ "type": "tidelift"
}
],
- "time": "2024-03-02T07:17:12+00:00"
+ "time": "2025-09-24T06:09:11+00:00"
},
{
"name": "sebastian/global-state",
@@ -1419,23 +1443,23 @@
},
{
"name": "sebastian/recursion-context",
- "version": "5.0.0",
+ "version": "5.0.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "05909fb5bc7df4c52992396d0116aed689f93712"
+ "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712",
- "reference": "05909fb5bc7df4c52992396d0116aed689f93712",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/47e34210757a2f37a97dcd207d032e1b01e64c7a",
+ "reference": "47e34210757a2f37a97dcd207d032e1b01e64c7a",
"shasum": ""
},
"require": {
"php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^10.0"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
@@ -1470,15 +1494,28 @@
"homepage": "https://github.com/sebastianbergmann/recursion-context",
"support": {
"issues": "https://github.com/sebastianbergmann/recursion-context/issues",
- "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0"
+ "security": "https://github.com/sebastianbergmann/recursion-context/security/policy",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.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/recursion-context",
+ "type": "tidelift"
}
],
- "time": "2023-02-03T07:05:40+00:00"
+ "time": "2025-08-10T07:50:56+00:00"
},
{
"name": "sebastian/type",
@@ -1591,16 +1628,16 @@
},
{
"name": "theseer/tokenizer",
- "version": "1.2.3",
+ "version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c",
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c",
"shasum": ""
},
"require": {
@@ -1629,7 +1666,7 @@
"description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
"support": {
"issues": "https://github.com/theseer/tokenizer/issues",
- "source": "https://github.com/theseer/tokenizer/tree/1.2.3"
+ "source": "https://github.com/theseer/tokenizer/tree/1.3.1"
},
"funding": [
{
@@ -1637,7 +1674,7 @@
"type": "github"
}
],
- "time": "2024-03-03T12:36:25+00:00"
+ "time": "2025-11-17T20:03:58+00:00"
}
],
"aliases": [],
@@ -1646,7 +1683,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^8.1 || ^8.2 || ^8.3 || ^8.4"
+ "php": "^8.2 || ^8.3 || ^8.4"
},
"platform-dev": {},
"plugin-api-version": "2.6.0"
diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json
index 5ac43c71..65319bb5 100644
--- a/vendor-bin/psalm/composer.json
+++ b/vendor-bin/psalm/composer.json
@@ -1,6 +1,6 @@
{
"require": {
- "php": "^8.1 || ^8.2 || ^8.3 || ^8.4"
+ "php": "^8.2 || ^8.3 || ^8.4"
},
"require-dev": {
"vimeo/psalm": "^6.10.0"
diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock
index 072701e1..7fc5d036 100644
--- a/vendor-bin/psalm/composer.lock
+++ b/vendor-bin/psalm/composer.lock
@@ -4,21 +4,21 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "cd9cb730385145e04b1ea70f67c0d9af",
+ "content-hash": "15dcf1923e7adeb8db3efc3f666383e0",
"packages": [],
"packages-dev": [
{
"name": "amphp/amp",
- "version": "v3.1.0",
+ "version": "v3.1.1",
"source": {
"type": "git",
"url": "https://github.com/amphp/amp.git",
- "reference": "7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9"
+ "reference": "fa0ab33a6f47a82929c38d03ca47ebb71086a93f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/amp/zipball/7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9",
- "reference": "7cf7fef3d667bfe4b2560bc87e67d5387a7bcde9",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/fa0ab33a6f47a82929c38d03ca47ebb71086a93f",
+ "reference": "fa0ab33a6f47a82929c38d03ca47ebb71086a93f",
"shasum": ""
},
"require": {
@@ -78,7 +78,7 @@
],
"support": {
"issues": "https://github.com/amphp/amp/issues",
- "source": "https://github.com/amphp/amp/tree/v3.1.0"
+ "source": "https://github.com/amphp/amp/tree/v3.1.1"
},
"funding": [
{
@@ -86,7 +86,7 @@
"type": "github"
}
],
- "time": "2025-01-26T16:07:39+00:00"
+ "time": "2025-08-27T21:42:00+00:00"
},
{
"name": "amphp/byte-stream",
@@ -319,16 +319,16 @@
},
{
"name": "amphp/parallel",
- "version": "v2.3.1",
+ "version": "v2.3.2",
"source": {
"type": "git",
"url": "https://github.com/amphp/parallel.git",
- "reference": "5113111de02796a782f5d90767455e7391cca190"
+ "reference": "321b45ae771d9c33a068186b24117e3cd1c48dce"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/parallel/zipball/5113111de02796a782f5d90767455e7391cca190",
- "reference": "5113111de02796a782f5d90767455e7391cca190",
+ "url": "https://api.github.com/repos/amphp/parallel/zipball/321b45ae771d9c33a068186b24117e3cd1c48dce",
+ "reference": "321b45ae771d9c33a068186b24117e3cd1c48dce",
"shasum": ""
},
"require": {
@@ -391,7 +391,7 @@
],
"support": {
"issues": "https://github.com/amphp/parallel/issues",
- "source": "https://github.com/amphp/parallel/tree/v2.3.1"
+ "source": "https://github.com/amphp/parallel/tree/v2.3.2"
},
"funding": [
{
@@ -399,7 +399,7 @@
"type": "github"
}
],
- "time": "2024-12-21T01:56:09+00:00"
+ "time": "2025-08-27T21:55:40+00:00"
},
{
"name": "amphp/parser",
@@ -896,16 +896,16 @@
},
{
"name": "composer/semver",
- "version": "3.4.3",
+ "version": "3.4.4",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
+ "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95",
+ "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95",
"shasum": ""
},
"require": {
@@ -957,7 +957,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.3"
+ "source": "https://github.com/composer/semver/tree/3.4.4"
},
"funding": [
{
@@ -967,13 +967,9 @@
{
"url": "https://github.com/composer",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-09-19T14:15:21+00:00"
+ "time": "2025-08-20T19:15:30+00:00"
},
{
"name": "composer/xdebug-handler",
@@ -1280,16 +1276,16 @@
},
{
"name": "fidry/cpu-core-counter",
- "version": "1.2.0",
+ "version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/theofidry/cpu-core-counter.git",
- "reference": "8520451a140d3f46ac33042715115e290cf5785f"
+ "reference": "db9508f7b1474469d9d3c53b86f817e344732678"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f",
- "reference": "8520451a140d3f46ac33042715115e290cf5785f",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678",
+ "reference": "db9508f7b1474469d9d3c53b86f817e344732678",
"shasum": ""
},
"require": {
@@ -1299,10 +1295,10 @@
"fidry/makefile": "^0.2.0",
"fidry/php-cs-fixer-config": "^1.1.2",
"phpstan/extension-installer": "^1.2.0",
- "phpstan/phpstan": "^1.9.2",
- "phpstan/phpstan-deprecation-rules": "^1.0.0",
- "phpstan/phpstan-phpunit": "^1.2.2",
- "phpstan/phpstan-strict-rules": "^1.4.4",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-deprecation-rules": "^2.0.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^8.5.31 || ^9.5.26",
"webmozarts/strict-phpunit": "^7.5"
},
@@ -1329,7 +1325,7 @@
],
"support": {
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
- "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0"
+ "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0"
},
"funding": [
{
@@ -1337,7 +1333,7 @@
"type": "github"
}
],
- "time": "2024-08-06T10:04:20+00:00"
+ "time": "2025-08-14T07:29:31+00:00"
},
{
"name": "kelunik/certificate",
@@ -1399,33 +1395,38 @@
},
{
"name": "league/uri",
- "version": "7.5.1",
+ "version": "7.6.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/uri.git",
- "reference": "81fb5145d2644324614cc532b28efd0215bda430"
+ "reference": "f625804987a0a9112d954f9209d91fec52182344"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri/zipball/81fb5145d2644324614cc532b28efd0215bda430",
- "reference": "81fb5145d2644324614cc532b28efd0215bda430",
+ "url": "https://api.github.com/repos/thephpleague/uri/zipball/f625804987a0a9112d954f9209d91fec52182344",
+ "reference": "f625804987a0a9112d954f9209d91fec52182344",
"shasum": ""
},
"require": {
- "league/uri-interfaces": "^7.5",
- "php": "^8.1"
+ "league/uri-interfaces": "^7.6",
+ "php": "^8.1",
+ "psr/http-factory": "^1"
},
"conflict": {
"league/uri-schemes": "^1.0"
},
"suggest": {
"ext-bcmath": "to improve IPV4 host parsing",
+ "ext-dom": "to convert the URI into an HTML anchor tag",
"ext-fileinfo": "to create Data URI from file contennts",
"ext-gmp": "to improve IPV4 host parsing",
"ext-intl": "to handle IDN host with the best performance",
+ "ext-uri": "to use the PHP native URI class",
"jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain",
"league/uri-components": "Needed to easily manipulate URI objects components",
+ "league/uri-polyfill": "Needed to backport the PHP URI extension for older versions of PHP",
"php-64bit": "to improve IPV4 host parsing",
+ "rowbot/url": "to handle WHATWG URL",
"symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
},
"type": "library",
@@ -1453,6 +1454,7 @@
"description": "URI manipulation library",
"homepage": "https://uri.thephpleague.com",
"keywords": [
+ "URN",
"data-uri",
"file-uri",
"ftp",
@@ -1465,9 +1467,11 @@
"psr-7",
"query-string",
"querystring",
+ "rfc2141",
"rfc3986",
"rfc3987",
"rfc6570",
+ "rfc8141",
"uri",
"uri-template",
"url",
@@ -1477,7 +1481,7 @@
"docs": "https://uri.thephpleague.com",
"forum": "https://thephpleague.slack.com",
"issues": "https://github.com/thephpleague/uri-src/issues",
- "source": "https://github.com/thephpleague/uri/tree/7.5.1"
+ "source": "https://github.com/thephpleague/uri/tree/7.6.0"
},
"funding": [
{
@@ -1485,26 +1489,25 @@
"type": "github"
}
],
- "time": "2024-12-08T08:40:02+00:00"
+ "time": "2025-11-18T12:17:23+00:00"
},
{
"name": "league/uri-interfaces",
- "version": "7.5.0",
+ "version": "7.6.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/uri-interfaces.git",
- "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742"
+ "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/08cfc6c4f3d811584fb09c37e2849e6a7f9b0742",
- "reference": "08cfc6c4f3d811584fb09c37e2849e6a7f9b0742",
+ "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/ccbfb51c0445298e7e0b7f4481b942f589665368",
+ "reference": "ccbfb51c0445298e7e0b7f4481b942f589665368",
"shasum": ""
},
"require": {
"ext-filter": "*",
"php": "^8.1",
- "psr/http-factory": "^1",
"psr/http-message": "^1.1 || ^2.0"
},
"suggest": {
@@ -1512,6 +1515,7 @@
"ext-gmp": "to improve IPV4 host parsing",
"ext-intl": "to handle IDN host with the best performance",
"php-64bit": "to improve IPV4 host parsing",
+ "rowbot/url": "to handle WHATWG URL",
"symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
},
"type": "library",
@@ -1536,7 +1540,7 @@
"homepage": "https://nyamsprod.com"
}
],
- "description": "Common interfaces and classes for URI representation and interaction",
+ "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI",
"homepage": "https://uri.thephpleague.com",
"keywords": [
"data-uri",
@@ -1561,7 +1565,7 @@
"docs": "https://uri.thephpleague.com",
"forum": "https://thephpleague.slack.com",
"issues": "https://github.com/thephpleague/uri-src/issues",
- "source": "https://github.com/thephpleague/uri-interfaces/tree/7.5.0"
+ "source": "https://github.com/thephpleague/uri-interfaces/tree/7.6.0"
},
"funding": [
{
@@ -1569,7 +1573,7 @@
"type": "github"
}
],
- "time": "2024-12-08T08:18:47+00:00"
+ "time": "2025-11-18T12:17:23+00:00"
},
{
"name": "netresearch/jsonmapper",
@@ -1624,16 +1628,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v5.5.0",
+ "version": "v5.6.2",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "ae59794362fe85e051a58ad36b289443f57be7a9"
+ "reference": "3a454ca033b9e06b63282ce19562e892747449bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9",
- "reference": "ae59794362fe85e051a58ad36b289443f57be7a9",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/3a454ca033b9e06b63282ce19562e892747449bb",
+ "reference": "3a454ca033b9e06b63282ce19562e892747449bb",
"shasum": ""
},
"require": {
@@ -1652,7 +1656,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-master": "5.x-dev"
}
},
"autoload": {
@@ -1676,9 +1680,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v5.6.2"
},
- "time": "2025-05-31T08:24:38+00:00"
+ "time": "2025-10-21T19:32:17+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -1735,16 +1739,16 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.6.2",
+ "version": "5.6.4",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62"
+ "reference": "90a04bcbf03784066f16038e87e23a0a83cee3c2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62",
- "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/90a04bcbf03784066f16038e87e23a0a83cee3c2",
+ "reference": "90a04bcbf03784066f16038e87e23a0a83cee3c2",
"shasum": ""
},
"require": {
@@ -1793,22 +1797,22 @@
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.4"
},
- "time": "2025-04-13T19:20:35+00:00"
+ "time": "2025-11-17T21:13:10+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.10.0",
+ "version": "1.12.0",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a"
+ "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a",
- "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195",
+ "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195",
"shasum": ""
},
"require": {
@@ -1851,22 +1855,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/1.10.0"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0"
},
- "time": "2024-11-09T15:12:26+00:00"
+ "time": "2025-11-21T15:09:14+00:00"
},
{
"name": "phpstan/phpdoc-parser",
- "version": "2.1.0",
+ "version": "2.3.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68"
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
- "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/1e0cd5370df5dd2e556a36b9c62f62e555870495",
+ "reference": "1e0cd5370df5dd2e556a36b9c62f62e555870495",
"shasum": ""
},
"require": {
@@ -1898,9 +1902,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.1.0"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.0"
},
- "time": "2025-02-19T13:28:12+00:00"
+ "time": "2025-08-30T15:50:23+00:00"
},
{
"name": "psr/container",
@@ -2254,16 +2258,16 @@
},
{
"name": "spatie/array-to-xml",
- "version": "3.4.0",
+ "version": "3.4.1",
"source": {
"type": "git",
"url": "https://github.com/spatie/array-to-xml.git",
- "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67"
+ "reference": "6a740f39415aee8886aea10333403adc77d50791"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
- "reference": "7dcfc67d60b0272926dabad1ec01f6b8a5fb5e67",
+ "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/6a740f39415aee8886aea10333403adc77d50791",
+ "reference": "6a740f39415aee8886aea10333403adc77d50791",
"shasum": ""
},
"require": {
@@ -2306,7 +2310,7 @@
"xml"
],
"support": {
- "source": "https://github.com/spatie/array-to-xml/tree/3.4.0"
+ "source": "https://github.com/spatie/array-to-xml/tree/3.4.1"
},
"funding": [
{
@@ -2318,20 +2322,20 @@
"type": "github"
}
],
- "time": "2024-12-16T12:45:15+00:00"
+ "time": "2025-11-12T10:32:50+00:00"
},
{
"name": "symfony/console",
- "version": "v7.3.1",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101"
+ "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101",
- "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101",
+ "url": "https://api.github.com/repos/symfony/console/zipball/c28ad91448f86c5f6d9d2c70f0cf68bf135f252a",
+ "reference": "c28ad91448f86c5f6d9d2c70f0cf68bf135f252a",
"shasum": ""
},
"require": {
@@ -2396,7 +2400,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v7.3.1"
+ "source": "https://github.com/symfony/console/tree/v7.3.6"
},
"funding": [
{
@@ -2407,12 +2411,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-06-27T19:55:54+00:00"
+ "time": "2025-11-04T01:21:42+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -2483,16 +2491,16 @@
},
{
"name": "symfony/filesystem",
- "version": "v7.3.0",
+ "version": "v7.3.6",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb"
+ "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
- "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/e9bcfd7837928ab656276fe00464092cc9e1826a",
+ "reference": "e9bcfd7837928ab656276fe00464092cc9e1826a",
"shasum": ""
},
"require": {
@@ -2529,7 +2537,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/v7.3.0"
+ "source": "https://github.com/symfony/filesystem/tree/v7.3.6"
},
"funding": [
{
@@ -2540,16 +2548,20 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-10-25T15:15:23+00:00"
+ "time": "2025-11-05T09:52:27+00:00"
},
{
"name": "symfony/polyfill-ctype",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
@@ -2608,7 +2620,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
},
"funding": [
{
@@ -2619,6 +2631,10 @@
"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"
@@ -2628,16 +2644,16 @@
},
{
"name": "symfony/polyfill-intl-grapheme",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
- "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
"shasum": ""
},
"require": {
@@ -2686,7 +2702,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
},
"funding": [
{
@@ -2697,16 +2713,20 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-09T11:45:10+00:00"
+ "time": "2025-06-27T09:58:17+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-normalizer.git",
@@ -2767,7 +2787,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
},
"funding": [
{
@@ -2778,6 +2798,10 @@
"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"
@@ -2787,7 +2811,7 @@
},
{
"name": "symfony/polyfill-mbstring",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
@@ -2848,7 +2872,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
},
"funding": [
{
@@ -2859,6 +2883,10 @@
"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"
@@ -2868,16 +2896,16 @@
},
{
"name": "symfony/polyfill-php84",
- "version": "v1.32.0",
+ "version": "v1.33.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-php84.git",
- "reference": "000df7860439609837bbe28670b0be15783b7fbf"
+ "reference": "d8ced4d875142b6a7426000426b8abc631d6b191"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/000df7860439609837bbe28670b0be15783b7fbf",
- "reference": "000df7860439609837bbe28670b0be15783b7fbf",
+ "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191",
+ "reference": "d8ced4d875142b6a7426000426b8abc631d6b191",
"shasum": ""
},
"require": {
@@ -2924,7 +2952,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php84/tree/v1.32.0"
+ "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0"
},
"funding": [
{
@@ -2935,25 +2963,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-02-20T12:04:08+00:00"
+ "time": "2025-06-24T13:30:11+00:00"
},
{
"name": "symfony/service-contracts",
- "version": "v3.6.0",
+ "version": "v3.6.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/service-contracts.git",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4"
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
- "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43",
+ "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43",
"shasum": ""
},
"require": {
@@ -3007,7 +3039,7 @@
"standards"
],
"support": {
- "source": "https://github.com/symfony/service-contracts/tree/v3.6.0"
+ "source": "https://github.com/symfony/service-contracts/tree/v3.6.1"
},
"funding": [
{
@@ -3018,25 +3050,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-04-25T09:37:31+00:00"
+ "time": "2025-07-15T11:30:57+00:00"
},
{
"name": "symfony/string",
- "version": "v7.3.0",
+ "version": "v7.3.4",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125"
+ "reference": "f96476035142921000338bad71e5247fbc138872"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125",
- "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125",
+ "url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872",
+ "reference": "f96476035142921000338bad71e5247fbc138872",
"shasum": ""
},
"require": {
@@ -3051,7 +3087,6 @@
},
"require-dev": {
"symfony/emoji": "^7.1",
- "symfony/error-handler": "^6.4|^7.0",
"symfony/http-client": "^6.4|^7.0",
"symfony/intl": "^6.4|^7.0",
"symfony/translation-contracts": "^2.5|^3.0",
@@ -3094,7 +3129,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v7.3.0"
+ "source": "https://github.com/symfony/string/tree/v7.3.4"
},
"funding": [
{
@@ -3105,25 +3140,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2025-04-20T20:19:01+00:00"
+ "time": "2025-09-11T14:36:48+00:00"
},
{
"name": "vimeo/psalm",
- "version": "6.12.1",
+ "version": "6.13.1",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "e71404b0465be25cf7f8a631b298c01c5ddd864f"
+ "reference": "1e3b7f0a8ab32b23197b91107adc0a7ed8a05b51"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/e71404b0465be25cf7f8a631b298c01c5ddd864f",
- "reference": "e71404b0465be25cf7f8a631b298c01c5ddd864f",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/1e3b7f0a8ab32b23197b91107adc0a7ed8a05b51",
+ "reference": "1e3b7f0a8ab32b23197b91107adc0a7ed8a05b51",
"shasum": ""
},
"require": {
@@ -3228,32 +3267,32 @@
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
},
- "time": "2025-07-04T09:56:28+00:00"
+ "time": "2025-08-06T10:10:28+00:00"
},
{
"name": "webmozart/assert",
- "version": "1.11.0",
+ "version": "1.12.1",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+ "reference": "9be6926d8b485f55b9229203f962b51ed377ba68"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68",
+ "reference": "9be6926d8b485f55b9229203f962b51ed377ba68",
"shasum": ""
},
"require": {
"ext-ctype": "*",
+ "ext-date": "*",
+ "ext-filter": "*",
"php": "^7.2 || ^8.0"
},
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<4.6.1 || 4.6.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.13"
+ "suggest": {
+ "ext-intl": "",
+ "ext-simplexml": "",
+ "ext-spl": ""
},
"type": "library",
"extra": {
@@ -3284,9 +3323,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+ "source": "https://github.com/webmozarts/assert/tree/1.12.1"
},
- "time": "2022-06-03T18:03:27+00:00"
+ "time": "2025-10-29T15:56:20+00:00"
}
],
"aliases": [],
@@ -3295,7 +3334,7 @@
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^8.1 || ^8.2 || ^8.3 || ^8.4"
+ "php": "^8.2 || ^8.3 || ^8.4"
},
"platform-dev": {},
"plugin-api-version": "2.6.0"