diff --git a/composer.lock b/composer.lock index 3931eed7e..ea7dcef6d 100644 --- a/composer.lock +++ b/composer.lock @@ -545,27 +545,27 @@ }, { "name": "laminas/laminas-loader", - "version": "2.8.0", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b" + "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/d0589ec9dd48365fd95ad10d1c906efd7711c16b", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/e6fe952304ef40ce45cd814751ab35d42afdad12", + "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-loader": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "~9.5.25" }, "type": "library", "autoload": { @@ -597,49 +597,46 @@ "type": "community_bridge" } ], - "time": "2021-09-02T18:30:53+00:00" + "time": "2023-10-18T09:58:51+00:00" }, { "name": "laminas/laminas-mail", - "version": "2.16.0", + "version": "2.22.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mail.git", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49" + "reference": "1d307ff65328c00117c6d90ba0084fdd0fc2bd5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", + "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/1d307ff65328c00117c6d90ba0084fdd0fc2bd5c", + "reference": "1d307ff65328c00117c6d90ba0084fdd0fc2bd5c", "shasum": "" }, "require": { "ext-iconv": "*", - "laminas/laminas-loader": "^2.8", - "laminas/laminas-mime": "^2.9.1", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-validator": "^2.15", - "php": "^7.3 || ~8.0.0 || ~8.1.0", - "symfony/polyfill-intl-idn": "^1.24.0", - "symfony/polyfill-mbstring": "^1.12.0", - "webmozart/assert": "^1.10" - }, - "conflict": { - "zendframework/zend-mail": "*" + "laminas/laminas-loader": "^2.8.0", + "laminas/laminas-mime": "^2.10.0", + "laminas/laminas-stdlib": "^3.11.0", + "laminas/laminas-validator": "^2.23.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "symfony/polyfill-intl-idn": "^1.26.0", + "symfony/polyfill-mbstring": "^1.16.0", + "webmozart/assert": "^1.11.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-crypt": "^2.6 || ^3.4", - "laminas/laminas-db": "^2.13.3", - "laminas/laminas-servicemanager": "^3.7", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "symfony/process": "^5.3.7", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-crypt": "^3.9.0", + "laminas/laminas-db": "^2.16", + "laminas/laminas-servicemanager": "^3.20", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.4", + "symfony/process": "^6.0.11", + "vimeo/psalm": "^5.1" }, "suggest": { - "laminas/laminas-crypt": "Crammd5 support in SMTP Auth", - "laminas/laminas-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" + "laminas/laminas-crypt": "^3.8 Crammd5 support in SMTP Auth", + "laminas/laminas-servicemanager": "^3.16 when using SMTP to deliver messages" }, "type": "library", "extra": { @@ -677,33 +674,33 @@ "type": "community_bridge" } ], - "time": "2022-02-23T21:08:17+00:00" + "time": "2023-01-18T08:33:48+00:00" }, { "name": "laminas/laminas-mime", - "version": "2.9.1", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mime.git", - "reference": "72d21a1b4bb7086d4a4d7058c0abca180b209184" + "reference": "08cc544778829b7d68d27a097885bd6e7130135e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/72d21a1b4bb7086d4a4d7058c0abca180b209184", - "reference": "72d21a1b4bb7086d4a4d7058c0abca180b209184", + "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/08cc544778829b7d68d27a097885bd6e7130135e", + "reference": "08cc544778829b7d68d27a097885bd6e7130135e", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-mime": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-mail": "^2.12", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-mail": "^2.19.0", + "phpunit/phpunit": "~9.5.25" }, "suggest": { "laminas/laminas-mail": "Laminas\\Mail component" @@ -738,7 +735,7 @@ "type": "community_bridge" } ], - "time": "2021-09-20T21:19:24+00:00" + "time": "2023-11-02T16:47:19+00:00" }, { "name": "laminas/laminas-servicemanager", @@ -833,31 +830,30 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.12.0", + "version": "3.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "c5aed3c798018e31fbb7b1e421b8d96bf2cda453" + "reference": "6a192dd0882b514e45506f533b833b623b78fff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/c5aed3c798018e31fbb7b1e421b8d96bf2cda453", - "reference": "c5aed3c798018e31fbb7b1e421b8d96bf2cda453", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6a192dd0882b514e45506f533b833b623b78fff3", + "reference": "6a192dd0882b514e45506f533b833b623b78fff3", "shasum": "" }, "require": { - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpbench/phpbench": "^1.2.6", - "phpstan/phpdoc-parser": "^0.5.4", - "phpunit/phpunit": "^9.5.23", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.26" + "laminas/laminas-coding-standard": "^2.5", + "phpbench/phpbench": "^1.2.15", + "phpunit/phpunit": "^10.5.8", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.20.0" }, "type": "library", "autoload": { @@ -889,45 +885,44 @@ "type": "community_bridge" } ], - "time": "2022-08-22T22:55:58+00:00" + "time": "2024-01-19T12:39:49+00:00" }, { "name": "laminas/laminas-validator", - "version": "2.23.0", + "version": "2.27.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03" + "reference": "451f5e24574a99b86e8e22f0431ccfc6d5c7318b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/6d61b6cc3b222f13807a18d9247cdfb084958b03", - "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/451f5e24574a99b86e8e22f0431ccfc6d5c7318b", + "reference": "451f5e24574a99b86e8e22f0431ccfc6d5c7318b", "shasum": "" }, "require": { "laminas/laminas-servicemanager": "^3.12.0", - "laminas/laminas-stdlib": "^3.10", - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "laminas/laminas-stdlib": "^3.13", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-validator": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-db": "^2.7", - "laminas/laminas-filter": "^2.14.0", - "laminas/laminas-http": "^2.14.2", - "laminas/laminas-i18n": "^2.15.0", - "laminas/laminas-session": "^2.12.1", - "laminas/laminas-uri": "^2.9.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.21", - "psalm/plugin-phpunit": "^0.17.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "vimeo/psalm": "^4.24.0" + "laminas/laminas-coding-standard": "^2.4.0", + "laminas/laminas-db": "^2.15.0", + "laminas/laminas-filter": "^2.23.0", + "laminas/laminas-http": "^2.17.0", + "laminas/laminas-i18n": "^2.19", + "laminas/laminas-session": "^2.13.0", + "laminas/laminas-uri": "^2.10.0", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.18.0", + "psr/http-client": "^1.0.1", + "psr/http-factory": "^1.0.1", + "psr/http-message": "^1.0.1", + "vimeo/psalm": "^4.28" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -975,7 +970,7 @@ "type": "community_bridge" } ], - "time": "2022-07-27T19:17:59+00:00" + "time": "2022-11-12T21:00:53+00:00" }, { "name": "league/oauth2-client", diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php index d9f04ff4c..bf35b49f3 100644 --- a/lib/composer/autoload_classmap.php +++ b/lib/composer/autoload_classmap.php @@ -817,6 +817,8 @@ return array( 'Laminas\\Mail\\Protocol\\Exception\\RuntimeException' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Exception/RuntimeException.php', 'Laminas\\Mail\\Protocol\\Imap' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Imap.php', 'Laminas\\Mail\\Protocol\\Pop3' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Pop3.php', + 'Laminas\\Mail\\Protocol\\Pop3\\Response' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Pop3/Response.php', + 'Laminas\\Mail\\Protocol\\Pop3\\Xoauth2\\Microsoft' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Pop3/Xoauth2/Microsoft.php', 'Laminas\\Mail\\Protocol\\ProtocolTrait' => $vendorDir . '/laminas/laminas-mail/src/Protocol/ProtocolTrait.php', 'Laminas\\Mail\\Protocol\\Smtp' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Smtp.php', 'Laminas\\Mail\\Protocol\\SmtpPluginManager' => $vendorDir . '/laminas/laminas-mail/src/Protocol/SmtpPluginManager.php', @@ -824,6 +826,8 @@ return array( 'Laminas\\Mail\\Protocol\\Smtp\\Auth\\Crammd5' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Smtp/Auth/Crammd5.php', 'Laminas\\Mail\\Protocol\\Smtp\\Auth\\Login' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Smtp/Auth/Login.php', 'Laminas\\Mail\\Protocol\\Smtp\\Auth\\Plain' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Smtp/Auth/Plain.php', + 'Laminas\\Mail\\Protocol\\Smtp\\Auth\\Xoauth2' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Smtp/Auth/Xoauth2.php', + 'Laminas\\Mail\\Protocol\\Xoauth2\\Xoauth2' => $vendorDir . '/laminas/laminas-mail/src/Protocol/Xoauth2/Xoauth2.php', 'Laminas\\Mail\\Storage' => $vendorDir . '/laminas/laminas-mail/src/Storage.php', 'Laminas\\Mail\\Storage\\AbstractStorage' => $vendorDir . '/laminas/laminas-mail/src/Storage/AbstractStorage.php', 'Laminas\\Mail\\Storage\\Exception\\ExceptionInterface' => $vendorDir . '/laminas/laminas-mail/src/Storage/Exception/ExceptionInterface.php', diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php index 0c40f52e7..6bc161c94 100644 --- a/lib/composer/autoload_static.php +++ b/lib/composer/autoload_static.php @@ -1192,6 +1192,8 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Laminas\\Mail\\Protocol\\Exception\\RuntimeException' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Exception/RuntimeException.php', 'Laminas\\Mail\\Protocol\\Imap' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Imap.php', 'Laminas\\Mail\\Protocol\\Pop3' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Pop3.php', + 'Laminas\\Mail\\Protocol\\Pop3\\Response' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Pop3/Response.php', + 'Laminas\\Mail\\Protocol\\Pop3\\Xoauth2\\Microsoft' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Pop3/Xoauth2/Microsoft.php', 'Laminas\\Mail\\Protocol\\ProtocolTrait' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/ProtocolTrait.php', 'Laminas\\Mail\\Protocol\\Smtp' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Smtp.php', 'Laminas\\Mail\\Protocol\\SmtpPluginManager' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/SmtpPluginManager.php', @@ -1199,6 +1201,8 @@ class ComposerStaticInit7f81b4a2a468a061c306af5e447a9a9f 'Laminas\\Mail\\Protocol\\Smtp\\Auth\\Crammd5' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Smtp/Auth/Crammd5.php', 'Laminas\\Mail\\Protocol\\Smtp\\Auth\\Login' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Smtp/Auth/Login.php', 'Laminas\\Mail\\Protocol\\Smtp\\Auth\\Plain' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Smtp/Auth/Plain.php', + 'Laminas\\Mail\\Protocol\\Smtp\\Auth\\Xoauth2' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Smtp/Auth/Xoauth2.php', + 'Laminas\\Mail\\Protocol\\Xoauth2\\Xoauth2' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Protocol/Xoauth2/Xoauth2.php', 'Laminas\\Mail\\Storage' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Storage.php', 'Laminas\\Mail\\Storage\\AbstractStorage' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Storage/AbstractStorage.php', 'Laminas\\Mail\\Storage\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/laminas/laminas-mail/src/Storage/Exception/ExceptionInterface.php', diff --git a/lib/composer/installed.json b/lib/composer/installed.json index 658792697..0ae0afea7 100644 --- a/lib/composer/installed.json +++ b/lib/composer/installed.json @@ -557,30 +557,30 @@ }, { "name": "laminas/laminas-loader", - "version": "2.8.0", - "version_normalized": "2.8.0.0", + "version": "2.10.0", + "version_normalized": "2.10.0.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b" + "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/d0589ec9dd48365fd95ad10d1c906efd7711c16b", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/e6fe952304ef40ce45cd814751ab35d42afdad12", + "reference": "e6fe952304ef40ce45cd814751ab35d42afdad12", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-loader": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "~9.5.25" }, - "time": "2021-09-02T18:30:53+00:00", + "time": "2023-10-18T09:58:51+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -616,48 +616,45 @@ }, { "name": "laminas/laminas-mail", - "version": "2.16.0", - "version_normalized": "2.16.0.0", + "version": "2.22.0", + "version_normalized": "2.22.0.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mail.git", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49" + "reference": "1d307ff65328c00117c6d90ba0084fdd0fc2bd5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", - "reference": "1ee1a384b96c8af29ecad9b3a7adc27a150ebc49", + "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/1d307ff65328c00117c6d90ba0084fdd0fc2bd5c", + "reference": "1d307ff65328c00117c6d90ba0084fdd0fc2bd5c", "shasum": "" }, "require": { "ext-iconv": "*", - "laminas/laminas-loader": "^2.8", - "laminas/laminas-mime": "^2.9.1", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-validator": "^2.15", - "php": "^7.3 || ~8.0.0 || ~8.1.0", - "symfony/polyfill-intl-idn": "^1.24.0", - "symfony/polyfill-mbstring": "^1.12.0", - "webmozart/assert": "^1.10" - }, - "conflict": { - "zendframework/zend-mail": "*" + "laminas/laminas-loader": "^2.8.0", + "laminas/laminas-mime": "^2.10.0", + "laminas/laminas-stdlib": "^3.11.0", + "laminas/laminas-validator": "^2.23.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "symfony/polyfill-intl-idn": "^1.26.0", + "symfony/polyfill-mbstring": "^1.16.0", + "webmozart/assert": "^1.11.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-crypt": "^2.6 || ^3.4", - "laminas/laminas-db": "^2.13.3", - "laminas/laminas-servicemanager": "^3.7", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "symfony/process": "^5.3.7", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-crypt": "^3.9.0", + "laminas/laminas-db": "^2.16", + "laminas/laminas-servicemanager": "^3.20", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.4", + "symfony/process": "^6.0.11", + "vimeo/psalm": "^5.1" }, "suggest": { - "laminas/laminas-crypt": "Crammd5 support in SMTP Auth", - "laminas/laminas-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" + "laminas/laminas-crypt": "^3.8 Crammd5 support in SMTP Auth", + "laminas/laminas-servicemanager": "^3.16 when using SMTP to deliver messages" }, - "time": "2022-02-23T21:08:17+00:00", + "time": "2023-01-18T08:33:48+00:00", "type": "library", "extra": { "laminas": { @@ -699,35 +696,35 @@ }, { "name": "laminas/laminas-mime", - "version": "2.9.1", - "version_normalized": "2.9.1.0", + "version": "2.12.0", + "version_normalized": "2.12.0.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mime.git", - "reference": "72d21a1b4bb7086d4a4d7058c0abca180b209184" + "reference": "08cc544778829b7d68d27a097885bd6e7130135e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/72d21a1b4bb7086d4a4d7058c0abca180b209184", - "reference": "72d21a1b4bb7086d4a4d7058c0abca180b209184", + "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/08cc544778829b7d68d27a097885bd6e7130135e", + "reference": "08cc544778829b7d68d27a097885bd6e7130135e", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-mime": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-mail": "^2.12", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-mail": "^2.19.0", + "phpunit/phpunit": "~9.5.25" }, "suggest": { "laminas/laminas-mail": "Laminas\\Mail component" }, - "time": "2021-09-20T21:19:24+00:00", + "time": "2023-11-02T16:47:19+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -857,34 +854,33 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.12.0", - "version_normalized": "3.12.0.0", + "version": "3.19.0", + "version_normalized": "3.19.0.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "c5aed3c798018e31fbb7b1e421b8d96bf2cda453" + "reference": "6a192dd0882b514e45506f533b833b623b78fff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/c5aed3c798018e31fbb7b1e421b8d96bf2cda453", - "reference": "c5aed3c798018e31fbb7b1e421b8d96bf2cda453", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6a192dd0882b514e45506f533b833b623b78fff3", + "reference": "6a192dd0882b514e45506f533b833b623b78fff3", "shasum": "" }, "require": { - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpbench/phpbench": "^1.2.6", - "phpstan/phpdoc-parser": "^0.5.4", - "phpunit/phpunit": "^9.5.23", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.26" + "laminas/laminas-coding-standard": "^2.5", + "phpbench/phpbench": "^1.2.15", + "phpunit/phpunit": "^10.5.8", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.20.0" }, - "time": "2022-08-22T22:55:58+00:00", + "time": "2024-01-19T12:39:49+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -920,42 +916,41 @@ }, { "name": "laminas/laminas-validator", - "version": "2.23.0", - "version_normalized": "2.23.0.0", + "version": "2.27.0", + "version_normalized": "2.27.0.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03" + "reference": "451f5e24574a99b86e8e22f0431ccfc6d5c7318b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/6d61b6cc3b222f13807a18d9247cdfb084958b03", - "reference": "6d61b6cc3b222f13807a18d9247cdfb084958b03", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/451f5e24574a99b86e8e22f0431ccfc6d5c7318b", + "reference": "451f5e24574a99b86e8e22f0431ccfc6d5c7318b", "shasum": "" }, "require": { "laminas/laminas-servicemanager": "^3.12.0", - "laminas/laminas-stdlib": "^3.10", - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "laminas/laminas-stdlib": "^3.13", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-validator": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-db": "^2.7", - "laminas/laminas-filter": "^2.14.0", - "laminas/laminas-http": "^2.14.2", - "laminas/laminas-i18n": "^2.15.0", - "laminas/laminas-session": "^2.12.1", - "laminas/laminas-uri": "^2.9.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.21", - "psalm/plugin-phpunit": "^0.17.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "vimeo/psalm": "^4.24.0" + "laminas/laminas-coding-standard": "^2.4.0", + "laminas/laminas-db": "^2.15.0", + "laminas/laminas-filter": "^2.23.0", + "laminas/laminas-http": "^2.17.0", + "laminas/laminas-i18n": "^2.19", + "laminas/laminas-session": "^2.13.0", + "laminas/laminas-uri": "^2.10.0", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.18.0", + "psr/http-client": "^1.0.1", + "psr/http-factory": "^1.0.1", + "psr/http-message": "^1.0.1", + "vimeo/psalm": "^4.28" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -967,7 +962,7 @@ "laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators", "psr/http-message": "psr/http-message, required when validating PSR-7 UploadedFileInterface instances via the Upload and UploadFile validators" }, - "time": "2022-07-27T19:17:59+00:00", + "time": "2022-11-12T21:00:53+00:00", "type": "library", "extra": { "laminas": { diff --git a/lib/composer/installed.php b/lib/composer/installed.php index 4945bd02b..ca200b822 100644 --- a/lib/composer/installed.php +++ b/lib/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'combodo/itop', 'pretty_version' => 'dev-develop', 'version' => 'dev-develop', - 'reference' => '3c17b5ed7e1db817b582dbb626be0cc6765e8f67', + 'reference' => '23a187a4582feb216abfcb822e06e2d9d1cf3705', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -22,7 +22,7 @@ 'combodo/itop' => array( 'pretty_version' => 'dev-develop', 'version' => 'dev-develop', - 'reference' => '3c17b5ed7e1db817b582dbb626be0cc6765e8f67', + 'reference' => '23a187a4582feb216abfcb822e06e2d9d1cf3705', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -80,27 +80,27 @@ 'dev_requirement' => false, ), 'laminas/laminas-loader' => array( - 'pretty_version' => '2.8.0', - 'version' => '2.8.0.0', - 'reference' => 'd0589ec9dd48365fd95ad10d1c906efd7711c16b', + 'pretty_version' => '2.10.0', + 'version' => '2.10.0.0', + 'reference' => 'e6fe952304ef40ce45cd814751ab35d42afdad12', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-loader', 'aliases' => array(), 'dev_requirement' => false, ), 'laminas/laminas-mail' => array( - 'pretty_version' => '2.16.0', - 'version' => '2.16.0.0', - 'reference' => '1ee1a384b96c8af29ecad9b3a7adc27a150ebc49', + 'pretty_version' => '2.22.0', + 'version' => '2.22.0.0', + 'reference' => '1d307ff65328c00117c6d90ba0084fdd0fc2bd5c', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-mail', 'aliases' => array(), 'dev_requirement' => false, ), 'laminas/laminas-mime' => array( - 'pretty_version' => '2.9.1', - 'version' => '2.9.1.0', - 'reference' => '72d21a1b4bb7086d4a4d7058c0abca180b209184', + 'pretty_version' => '2.12.0', + 'version' => '2.12.0.0', + 'reference' => '08cc544778829b7d68d27a097885bd6e7130135e', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-mime', 'aliases' => array(), @@ -116,18 +116,18 @@ 'dev_requirement' => false, ), 'laminas/laminas-stdlib' => array( - 'pretty_version' => '3.12.0', - 'version' => '3.12.0.0', - 'reference' => 'c5aed3c798018e31fbb7b1e421b8d96bf2cda453', + 'pretty_version' => '3.19.0', + 'version' => '3.19.0.0', + 'reference' => '6a192dd0882b514e45506f533b833b623b78fff3', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-stdlib', 'aliases' => array(), 'dev_requirement' => false, ), 'laminas/laminas-validator' => array( - 'pretty_version' => '2.23.0', - 'version' => '2.23.0.0', - 'reference' => '6d61b6cc3b222f13807a18d9247cdfb084958b03', + 'pretty_version' => '2.27.0', + 'version' => '2.27.0.0', + 'reference' => '451f5e24574a99b86e8e22f0431ccfc6d5c7318b', 'type' => 'library', 'install_path' => __DIR__ . '/../laminas/laminas-validator', 'aliases' => array(), diff --git a/lib/laminas/laminas-loader/.laminas-ci.json b/lib/laminas/laminas-loader/.laminas-ci.json deleted file mode 100644 index bce3fa21b..000000000 --- a/lib/laminas/laminas-loader/.laminas-ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "ignore_php_platform_requirements": { - "8.1": true - } -} diff --git a/lib/laminas/laminas-loader/README.md b/lib/laminas/laminas-loader/README.md index 1c9911767..a7529c920 100644 --- a/lib/laminas/laminas-loader/README.md +++ b/lib/laminas/laminas-loader/README.md @@ -1,5 +1,22 @@ # laminas-loader +> ## πŸ‡·πŸ‡Ί Русским Π³Ρ€Π°ΠΆΠ΄Π°Π½Π°ΠΌ +> +> ΠœΡ‹, участники Laminas, Ρ€ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ ΠΈ ΠΆΠΈΠ²Π΅ΠΌ Π² Ρ€Π°Π·Π½Ρ‹Ρ… странах. Π£ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ· нас Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ·ΡŒΡ, родствСнники ΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΊΠ°ΠΊ Π² России, Ρ‚Π°ΠΊ ΠΈ Π² Π£ΠΊΡ€Π°ΠΈΠ½Π΅. НСкоторыС ΠΈΠ· нас Ρ€ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² России. НСкоторыС ΠΈΠ· нас ΠΆΠΈΠ²ΡƒΡ‚ Π² России. Π£ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Π°Π±ΡƒΡˆΠΊΠΈ ΠΈ Π΄Π΅Π΄ΡƒΡˆΠΊΠΈ ΡΡ€Π°ΠΆΠ°Π»ΠΈΡΡŒ с Ρ„Π°ΡˆΠΈΡΡ‚Π°ΠΌΠΈ Π²ΠΎ Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΉ Π²ΠΎΠΉΠ½Π΅. Π—Π΄Π΅ΡΡŒ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„Π°ΡˆΠΈΠ·ΠΌ. +> +> Π£ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· нас Π΅ΡΡ‚ΡŒ украинская родствСнница, которая спаслась ΠΈΠ· Π΄ΠΎΠΌΠ° вмСстС с сыном. ПоСзд задСрТался ΠΈΠ·-Π·Π° Π±ΠΎΠΌΠ±Π΅ΠΆΠΊΠΈ Π½Π° Π΄ΠΎΡ€ΠΎΠ³Π΅ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ. Π£ нас Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ·ΡŒΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прячутся Π² Π±ΠΎΠΌΠ±ΠΎΡƒΠ±Π΅ΠΆΠΈΡ‰Π°Ρ…. ΠœΡ‹ с Ρ‚Ρ€Π΅Π²ΠΎΠ³ΠΎΠΉ ΠΆΠ΄Π΅ΠΌ вСсточки ΠΎΡ‚ Π½ΠΈΡ… послС Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Ρ… Π½Π°Π»Π΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ бСспорядочно наносят ΡƒΠ΄Π°Ρ€Ρ‹ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎ Π±ΠΎΠ»ΡŒΠ½ΠΈΡ†Π°ΠΌ, школам, дСтским садам ΠΈ Π΄ΠΎΠΌΠ°ΠΌ. ΠœΡ‹ Π½Π΅ Π±Π΅Ρ€Π΅ΠΌ это ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ БМИ. ΠœΡ‹ наблюдаСм это Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. +> +> Π’Ρ‹ довСряСтС Π½Π°ΠΌ достаточно, Ρ‡Ρ‚ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΌΡ‹ просим вас Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π½Π°ΠΌ вновь. ΠœΡ‹ нуТдаСмся Π² ΠΏΠΎΠΌΠΎΡ‰ΠΈ. Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ протСстуйтС ΠΏΡ€ΠΎΡ‚ΠΈΠ² этой бСсполСзной Π²ΠΎΠΉΠ½Ρ‹. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΡ€ΠΎΠ²ΠΎΠΏΡ€ΠΎΠ»ΠΈΡ‚ΠΈΠ΅. Π‘ΠΊΠ°ΠΆΠΈΡ‚Π΅ "НСт Π²ΠΎΠΉΠ½Π΅!" +> +> ## πŸ‡ΊπŸ‡Έ To Citizens of Russia +> +> We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism. +> +> One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences. +> +> You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!" + + > This package is considered feature-complete, and is now in **security-only** maintenance mode, following a [decision by the Technical Steering Committee](https://github.com/laminas/technical-steering-committee/blob/2b55453e172a1b8c9c4c212be7cf7e7a58b9352c/meetings/minutes/2020-08-03-TSC-Minutes.md#vote-on-components-to-mark-as-security-only). > If you have a security issue, please [follow our security reporting guidelines](https://getlaminas.org/security/). > If you wish to take on the role of maintainer, please [nominate yourself](https://github.com/laminas/technical-steering-committee/issues/new?assignees=&labels=Nomination&template=Maintainer_Nomination.md&title=%5BNOMINATION%5D%5BMAINTAINER%5D%3A+%7Bname+of+person+being+nominated%7D) diff --git a/lib/laminas/laminas-loader/composer.json b/lib/laminas/laminas-loader/composer.json index 8457d67ed..881509587 100644 --- a/lib/laminas/laminas-loader/composer.json +++ b/lib/laminas/laminas-loader/composer.json @@ -16,14 +16,17 @@ "forum": "https://discourse.laminas.dev" }, "config": { - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "~9.5.25" }, "autoload": { "psr-4": { diff --git a/lib/laminas/laminas-loader/composer.lock b/lib/laminas/laminas-loader/composer.lock index 19e27ed25..a7d09a27d 100644 --- a/lib/laminas/laminas-loader/composer.lock +++ b/lib/laminas/laminas-loader/composer.lock @@ -4,32 +4,32 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "04bc51f9c0a84aa54ea419f7c9fbee94", + "content-hash": "d00ced3d7abc2f3094a3205a51ef6376", "packages": [], "packages-dev": [ { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.1", + "version": "v0.7.2", "source": { "type": "git", "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c" + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0" + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { "composer/composer": "*", - "phpcompatibility/php-compatibility": "^9.0", - "sensiolabs/security-checker": "^4.1.0" + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0" }, "type": "composer-plugin", "extra": { @@ -50,6 +50,10 @@ "email": "franck.nijhof@dealerdirect.com", "homepage": "http://www.frenck.nl", "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", @@ -61,6 +65,7 @@ "codesniffer", "composer", "installer", + "phpcbf", "phpcs", "plugin", "qa", @@ -75,33 +80,34 @@ "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" }, - "time": "2020-12-07T18:04:37+00:00" + "time": "2022-02-04T12:51:07+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -128,7 +134,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -144,28 +150,31 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "laminas/laminas-coding-standard", - "version": "2.2.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-coding-standard.git", - "reference": "c953ecb1d37034f4aa326046e2c24a10fe0a2845" + "reference": "eb076dd86aa93dd424856b150c9b6f76c1fdfabc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/c953ecb1d37034f4aa326046e2c24a10fe0a2845", - "reference": "c953ecb1d37034f4aa326046e2c24a10fe0a2845", + "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/eb076dd86aa93dd424856b150c9b6f76c1fdfabc", + "reference": "eb076dd86aa93dd424856b150c9b6f76c1fdfabc", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.3 || ~8.0.0", - "slevomat/coding-standard": "^6.4.1", - "squizlabs/php_codesniffer": "^3.5.8", - "webimpress/coding-standard": "^1.1.6" + "dealerdirect/phpcodesniffer-composer-installer": "^0.7", + "php": "^7.4 || ^8.0", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.6", + "webimpress/coding-standard": "^1.2" + }, + "conflict": { + "phpstan/phpdoc-parser": ">=1.6.0" }, "type": "phpcodesniffer-standard", "autoload": { @@ -197,41 +206,42 @@ "type": "community_bridge" } ], - "time": "2021-05-17T17:39:41+00:00" + "time": "2022-08-24T17:45:47+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -247,7 +257,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -255,20 +265,20 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nikic/php-parser", - "version": "v4.12.0", + "version": "v4.15.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", "shasum": "" }, "require": { @@ -309,9 +319,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" }, - "time": "2021-07-21T10:44:31+00:00" + "time": "2022-09-04T07:30:47+00:00" }, { "name": "phar-io/manifest", @@ -375,16 +385,16 @@ }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -420,270 +430,36 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "phpstan/phpdoc-parser", + "version": "1.5.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "981cc368a216c988e862a75e526b6076987d1b50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/981cc368a216c988e862a75e526b6076987d1b50", + "reference": "981cc368a216c988e862a75e526b6076987d1b50", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, "require-dev": { - "mockery/mockery": "~1.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "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/master" - }, - "time": "2020-09-03T19:13:55+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "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.4.0" - }, - "time": "2020-09-17T18:55:26+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.13.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" - }, - "time": "2021-03-17T13:42:18+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "0.4.9", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "98a088b17966bdf6ee25c8a4b634df313d8aa531" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/98a088b17966bdf6ee25c8a4b634df313d8aa531", - "reference": "98a088b17966bdf6ee25c8a4b634df313d8aa531", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "consistence/coding-standard": "^3.5", - "ergebnis/composer-normalize": "^2.0.2", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "phing/phing": "^2.16.0", + "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.26", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^6.3", - "slevomat/coding-standard": "^4.7.2", - "symfony/process": "^4.0" + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.4-dev" - } - }, "autoload": { "psr-4": { "PHPStan\\PhpDocParser\\": [ @@ -698,29 +474,29 @@ "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/master" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.5.1" }, - "time": "2020-08-03T20:32:43+00:00" + "time": "2022-05-05T11:32:40+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "version": "9.2.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa94dc41e8661fe90c7316849907cba3007b10d8", + "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -769,7 +545,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.17" }, "funding": [ { @@ -777,20 +553,20 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2022-08-30T12:24:04+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -829,7 +605,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -837,7 +613,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -1022,16 +798,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.9", + "version": "9.5.25", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b" + "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d", + "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d", "shasum": "" }, "require": { @@ -1046,28 +822,23 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -1082,11 +853,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1109,19 +880,23 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.25" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2021-08-31T06:47:40+00:00" + "time": "2022-09-25T03:44:45+00:00" }, { "name": "sebastian/cli-parser", @@ -1292,16 +1067,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -1354,7 +1129,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -1362,7 +1137,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -1489,16 +1264,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -1540,7 +1315,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -1548,20 +1323,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -1610,14 +1385,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -1625,20 +1400,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -1681,7 +1456,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -1689,7 +1464,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -1980,28 +1755,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2024,7 +1799,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" }, "funding": [ { @@ -2032,7 +1807,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-09-12T14:47:03+00:00" }, { "name": "sebastian/version", @@ -2089,37 +1864,37 @@ }, { "name": "slevomat/coding-standard", - "version": "6.4.1", + "version": "7.2.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "696dcca217d0c9da2c40d02731526c1e25b65346" + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/696dcca217d0c9da2c40d02731526c1e25b65346", - "reference": "696dcca217d0c9da2c40d02731526c1e25b65346", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/aff06ae7a84e4534bf6f821dc982a93a5d477c90", + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.1 || ^8.0", - "phpstan/phpdoc-parser": "0.4.5 - 0.4.9", - "squizlabs/php_codesniffer": "^3.5.6" + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.5.1", + "squizlabs/php_codesniffer": "^3.6.2" }, "require-dev": { - "phing/phing": "2.16.3", - "php-parallel-lint/php-parallel-lint": "1.2.0", - "phpstan/phpstan": "0.12.48", - "phpstan/phpstan-deprecation-rules": "0.12.5", - "phpstan/phpstan-phpunit": "0.12.16", - "phpstan/phpstan-strict-rules": "0.12.5", - "phpunit/phpunit": "7.5.20|8.5.5|9.4.0" + "phing/phing": "2.17.3", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.4.10|1.7.1", + "phpstan/phpstan-deprecation-rules": "1.0.0", + "phpstan/phpstan-phpunit": "1.0.0|1.1.1", + "phpstan/phpstan-strict-rules": "1.2.3", + "phpunit/phpunit": "7.5.20|8.5.21|9.5.20" }, "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "6.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { @@ -2134,7 +1909,7 @@ "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/6.4.1" + "source": "https://github.com/slevomat/coding-standard/tree/7.2.1" }, "funding": [ { @@ -2146,20 +1921,20 @@ "type": "tidelift" } ], - "time": "2020-10-05T12:39:37+00:00" + "time": "2022-05-25T10:58:12+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", "shasum": "" }, "require": { @@ -2202,86 +1977,7 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-06-18T07:21:10+00:00" }, { "name": "theseer/tokenizer", @@ -2335,24 +2031,24 @@ }, { "name": "webimpress/coding-standard", - "version": "1.2.2", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/webimpress/coding-standard.git", - "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03" + "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/8f4a220de33f471a8101836f7ec72b852c3f9f03", - "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03", + "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", + "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", "shasum": "" }, "require": { "php": "^7.3 || ^8.0", - "squizlabs/php_codesniffer": "^3.6" + "squizlabs/php_codesniffer": "^3.6.2" }, "require-dev": { - "phpunit/phpunit": "^9.5.4" + "phpunit/phpunit": "^9.5.13" }, "type": "phpcodesniffer-standard", "extra": { @@ -2378,7 +2074,7 @@ ], "support": { "issues": "https://github.com/webimpress/coding-standard/issues", - "source": "https://github.com/webimpress/coding-standard/tree/1.2.2" + "source": "https://github.com/webimpress/coding-standard/tree/1.2.4" }, "funding": [ { @@ -2386,65 +2082,7 @@ "type": "github" } ], - "time": "2021-04-12T12:51:27+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-02-15T19:52:12+00:00" } ], "aliases": [], @@ -2453,8 +2091,8 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.6.0" } diff --git a/lib/laminas/laminas-loader/phpcs.xml.dist b/lib/laminas/laminas-loader/phpcs.xml.dist deleted file mode 100644 index 174a8d4c9..000000000 --- a/lib/laminas/laminas-loader/phpcs.xml.dist +++ /dev/null @@ -1,32 +0,0 @@ -ο»Ώ - - - - - - - - - - - - - src - test - */TestAsset/* - */_files/* - - - - - - /src/Exception/* - /src/SplAutoloader.php - /src/AutoloaderFactory.php - /src/ClassMapAutoloader.php - /src/ModuleAutoloader.php - /src/StandardAutoloader.php - - diff --git a/lib/laminas/laminas-mail/.laminas-ci.json b/lib/laminas/laminas-mail/.laminas-ci.json deleted file mode 100644 index bce3fa21b..000000000 --- a/lib/laminas/laminas-mail/.laminas-ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "ignore_php_platform_requirements": { - "8.1": true - } -} diff --git a/lib/laminas/laminas-mail/.laminas-ci/pre-run.sh b/lib/laminas/laminas-mail/.laminas-ci/pre-run.sh deleted file mode 100644 index eed79a3b2..000000000 --- a/lib/laminas/laminas-mail/.laminas-ci/pre-run.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -set -euo pipefail - -INTL_EXTENSION=$(php -r 'echo sprintf("php%s.%s-intl",PHP_MAJOR_VERSION,PHP_MINOR_VERSION);') - -echo -e "Removing $INTL_EXTENSION extension:\n" -sudo apt remove "$INTL_EXTENSION" -y - -echo -e "Cleaning up:\n" -sudo apt autoclean && sudo apt autoremove - -echo -e "Installed extensions:\n" -/usr/local/bin/php-extensions-with-version.php \ No newline at end of file diff --git a/lib/laminas/laminas-mail/README.md b/lib/laminas/laminas-mail/README.md index 16e57f835..8c6ac60c4 100644 --- a/lib/laminas/laminas-mail/README.md +++ b/lib/laminas/laminas-mail/README.md @@ -2,6 +2,22 @@ [![Build Status](https://github.com/laminas/laminas-mail/workflows/Continuous%20Integration/badge.svg)](https://github.com/laminas/laminas-mail/actions?query=workflow%3A"Continuous+Integration") +> ## πŸ‡·πŸ‡Ί Русским Π³Ρ€Π°ΠΆΠ΄Π°Π½Π°ΠΌ +> +> ΠœΡ‹, участники Laminas, Ρ€ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ ΠΈ ΠΆΠΈΠ²Π΅ΠΌ Π² Ρ€Π°Π·Π½Ρ‹Ρ… странах. Π£ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ· нас Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ·ΡŒΡ, родствСнники ΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΊΠ°ΠΊ Π² России, Ρ‚Π°ΠΊ ΠΈ Π² Π£ΠΊΡ€Π°ΠΈΠ½Π΅. НСкоторыС ΠΈΠ· нас Ρ€ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² России. НСкоторыС ΠΈΠ· нас ΠΆΠΈΠ²ΡƒΡ‚ Π² России. Π£ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Π°Π±ΡƒΡˆΠΊΠΈ ΠΈ Π΄Π΅Π΄ΡƒΡˆΠΊΠΈ ΡΡ€Π°ΠΆΠ°Π»ΠΈΡΡŒ с Ρ„Π°ΡˆΠΈΡΡ‚Π°ΠΌΠΈ Π²ΠΎ Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΉ Π²ΠΎΠΉΠ½Π΅. Π—Π΄Π΅ΡΡŒ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„Π°ΡˆΠΈΠ·ΠΌ. +> +> Π£ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· нас Π΅ΡΡ‚ΡŒ украинская родствСнница, которая спаслась ΠΈΠ· Π΄ΠΎΠΌΠ° вмСстС с сыном. ПоСзд задСрТался ΠΈΠ·-Π·Π° Π±ΠΎΠΌΠ±Π΅ΠΆΠΊΠΈ Π½Π° Π΄ΠΎΡ€ΠΎΠ³Π΅ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ. Π£ нас Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ·ΡŒΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прячутся Π² Π±ΠΎΠΌΠ±ΠΎΡƒΠ±Π΅ΠΆΠΈΡ‰Π°Ρ…. ΠœΡ‹ с Ρ‚Ρ€Π΅Π²ΠΎΠ³ΠΎΠΉ ΠΆΠ΄Π΅ΠΌ вСсточки ΠΎΡ‚ Π½ΠΈΡ… послС Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Ρ… Π½Π°Π»Π΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ бСспорядочно наносят ΡƒΠ΄Π°Ρ€Ρ‹ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎ Π±ΠΎΠ»ΡŒΠ½ΠΈΡ†Π°ΠΌ, школам, дСтским садам ΠΈ Π΄ΠΎΠΌΠ°ΠΌ. ΠœΡ‹ Π½Π΅ Π±Π΅Ρ€Π΅ΠΌ это ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ БМИ. ΠœΡ‹ наблюдаСм это Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. +> +> Π’Ρ‹ довСряСтС Π½Π°ΠΌ достаточно, Ρ‡Ρ‚ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΌΡ‹ просим вас Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π½Π°ΠΌ вновь. ΠœΡ‹ нуТдаСмся Π² ΠΏΠΎΠΌΠΎΡ‰ΠΈ. Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ протСстуйтС ΠΏΡ€ΠΎΡ‚ΠΈΠ² этой бСсполСзной Π²ΠΎΠΉΠ½Ρ‹. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΡ€ΠΎΠ²ΠΎΠΏΡ€ΠΎΠ»ΠΈΡ‚ΠΈΠ΅. Π‘ΠΊΠ°ΠΆΠΈΡ‚Π΅ "НСт Π²ΠΎΠΉΠ½Π΅!" +> +> ## πŸ‡ΊπŸ‡Έ To Citizens of Russia +> +> We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism. +> +> One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences. +> +> You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!" + `Laminas\Mail` provides generalized functionality to compose and send both text and MIME-compliant multipart email messages. Mail can be sent with `Laminas\Mail` via the `Mail\Transport\Sendmail`, `Mail\Transport\Smtp` or the `Mail\Transport\File` diff --git a/lib/laminas/laminas-mail/composer.json b/lib/laminas/laminas-mail/composer.json index 96074d234..f06b205e6 100644 --- a/lib/laminas/laminas-mail/composer.json +++ b/lib/laminas/laminas-mail/composer.json @@ -8,40 +8,38 @@ "homepage": "https://laminas.dev", "license": "BSD-3-Clause", "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "ext-iconv": "*", - "laminas/laminas-loader": "^2.8", - "laminas/laminas-mime": "^2.9.1", - "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-validator": "^2.15", - "symfony/polyfill-mbstring": "^1.12.0", - "webmozart/assert": "^1.10", - "symfony/polyfill-intl-idn": "^1.24.0" - }, - "conflict": { - "zendframework/zend-mail": "*" + "laminas/laminas-loader": "^2.8.0", + "laminas/laminas-mime": "^2.10.0", + "laminas/laminas-stdlib": "^3.11.0", + "laminas/laminas-validator": "^2.23.0", + "symfony/polyfill-mbstring": "^1.16.0", + "webmozart/assert": "^1.11.0", + "symfony/polyfill-intl-idn": "^1.26.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-crypt": "^2.6 || ^3.4", - "laminas/laminas-db": "^2.13.3", - "laminas/laminas-servicemanager": "^3.7", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.1", - "symfony/process": "^5.3.7", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "~2.5.0", + "laminas/laminas-crypt": "^3.9.0", + "laminas/laminas-db": "^2.16", + "laminas/laminas-servicemanager": "^3.20", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.4", + "symfony/process": "^6.0.11", + "vimeo/psalm": "^5.1" }, "suggest": { - "laminas/laminas-crypt": "Crammd5 support in SMTP Auth", - "laminas/laminas-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" + "laminas/laminas-crypt": "^3.8 Crammd5 support in SMTP Auth", + "laminas/laminas-servicemanager": "^3.16 when using SMTP to deliver messages" }, "config": { "sort-packages": true, "allow-plugins": { - "composer/package-versions-deprecated": true + "composer/package-versions-deprecated": true, + "dealerdirect/phpcodesniffer-composer-installer": true }, "platform": { - "php": "7.3.99" + "php": "8.0.99" } }, "extra": { diff --git a/lib/laminas/laminas-mail/composer.lock b/lib/laminas/laminas-mail/composer.lock index b6263984b..7c4ecf66b 100644 --- a/lib/laminas/laminas-mail/composer.lock +++ b/lib/laminas/laminas-mail/composer.lock @@ -4,67 +4,31 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c4e2858fd3753937b8ef20cfc5096601", + "content-hash": "cd0e70dcc0432b9ec92dce8a606d0246", "packages": [ - { - "name": "container-interop/container-interop", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "shasum": "" - }, - "require": { - "psr/container": "^1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop", - "support": { - "issues": "https://github.com/container-interop/container-interop/issues", - "source": "https://github.com/container-interop/container-interop/tree/master" - }, - "abandoned": "psr/container", - "time": "2017-02-14T19:40:03+00:00" - }, { "name": "laminas/laminas-loader", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b" + "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/d0589ec9dd48365fd95ad10d1c906efd7711c16b", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/51ed9c3fa42d1098a9997571730c0cbf42d078d3", + "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-loader": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "~9.5.25" }, "type": "library", "autoload": { @@ -96,33 +60,33 @@ "type": "community_bridge" } ], - "time": "2021-09-02T18:30:53+00:00" + "time": "2022-10-16T12:50:49+00:00" }, { "name": "laminas/laminas-mime", - "version": "2.9.1", + "version": "2.11.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mime.git", - "reference": "72d21a1b4bb7086d4a4d7058c0abca180b209184" + "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/72d21a1b4bb7086d4a4d7058c0abca180b209184", - "reference": "72d21a1b4bb7086d4a4d7058c0abca180b209184", + "url": "https://api.github.com/repos/laminas/laminas-mime/zipball/60ec04b755821c79c1987ce291b44e69f2c0831f", + "reference": "60ec04b755821c79c1987ce291b44e69f2c0831f", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-mime": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-mail": "^2.12", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-mail": "^2.19.0", + "phpunit/phpunit": "~9.5.25" }, "suggest": { "laminas/laminas-mail": "Laminas\\Mail component" @@ -157,34 +121,124 @@ "type": "community_bridge" } ], - "time": "2021-09-20T21:19:24+00:00" + "time": "2022-10-18T08:38:15+00:00" }, { - "name": "laminas/laminas-stdlib", - "version": "3.7.0", + "name": "laminas/laminas-servicemanager", + "version": "3.20.0", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "cba75fad2053bb5dc8d3e7f5e62b61d75eecfaf1" + "url": "https://github.com/laminas/laminas-servicemanager.git", + "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/cba75fad2053bb5dc8d3e7f5e62b61d75eecfaf1", - "reference": "cba75fad2053bb5dc8d3e7f5e62b61d75eecfaf1", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/bc2c2cbe2dd90db8b9d16b0618f542692b76ab59", + "reference": "bc2c2cbe2dd90db8b9d16b0618f542692b76ab59", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-stdlib": "^3.2.1", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "psr/container": "^1.0" + }, + "conflict": { + "ext-psr": "*", + "laminas/laminas-code": "<3.3.1", + "zendframework/zend-code": "<3.3.1", + "zendframework/zend-servicemanager": "*" + }, + "provide": { + "psr/container-implementation": "^1.0" + }, + "replace": { + "container-interop/container-interop": "^1.2.0" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.11.99.5", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-container-config-test": "^0.8", + "laminas/laminas-dependency-plugin": "^2.2", + "mikey179/vfsstream": "^1.6.11@alpha", + "ocramius/proxy-manager": "^2.14.1", + "phpbench/phpbench": "^1.2.7", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^5.0.0" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" + }, + "bin": [ + "bin/generate-deps-for-config-factory", + "bin/generate-factory-for-class" + ], + "type": "library", + "autoload": { + "files": [ + "src/autoload.php" + ], + "psr-4": { + "Laminas\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Factory-Driven Dependency Injection Container", + "homepage": "https://laminas.dev", + "keywords": [ + "PSR-11", + "dependency-injection", + "di", + "dic", + "laminas", + "service-manager", + "servicemanager" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-servicemanager/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-servicemanager/issues", + "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", + "source": "https://github.com/laminas/laminas-servicemanager" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-12-01T17:03:38+00:00" + }, + { + "name": "laminas/laminas-stdlib", + "version": "3.16.1", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-stdlib.git", + "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/f4f773641807c7ccee59b758bfe4ac4ba33ecb17", + "reference": "f4f773641807c7ccee59b758bfe4ac4ba33ecb17", + "shasum": "" + }, + "require": { + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpbench/phpbench": "^1.0", - "phpunit/phpunit": "^9.3.7", - "psalm/plugin-phpunit": "^0.16.0", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "^2.4.0", + "phpbench/phpbench": "^1.2.7", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.0", + "vimeo/psalm": "^5.0.0" }, "type": "library", "autoload": { @@ -216,55 +270,50 @@ "type": "community_bridge" } ], - "time": "2022-01-10T11:18:55+00:00" + "time": "2022-12-03T18:48:01+00:00" }, { "name": "laminas/laminas-validator", - "version": "2.15.1", + "version": "2.29.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "fbd87f30c0a27aaeeee8adb2f934c14fb6046c80" + "reference": "e40ee8d86cc1907083e273bfd6ed8b6dde2d9850" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/fbd87f30c0a27aaeeee8adb2f934c14fb6046c80", - "reference": "fbd87f30c0a27aaeeee8adb2f934c14fb6046c80", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/e40ee8d86cc1907083e273bfd6ed8b6dde2d9850", + "reference": "e40ee8d86cc1907083e273bfd6ed8b6dde2d9850", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-servicemanager": "^3.12.0", + "laminas/laminas-stdlib": "^3.13", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "psr/http-message": "^1.0.1" }, "conflict": { "zendframework/zend-validator": "*" }, "require-dev": { - "laminas/laminas-cache": "^2.6.1", - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-db": "^2.7", - "laminas/laminas-filter": "^2.6", - "laminas/laminas-http": "^2.14.2", - "laminas/laminas-i18n": "^2.6", - "laminas/laminas-math": "^2.6", - "laminas/laminas-servicemanager": "^2.7.11 || ^3.0.3", - "laminas/laminas-session": "^2.8", - "laminas/laminas-uri": "^2.7", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", - "psalm/plugin-phpunit": "^0.15.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "vimeo/psalm": "^4.3" + "laminas/laminas-coding-standard": "^2.4.0", + "laminas/laminas-db": "^2.16", + "laminas/laminas-filter": "^2.28.1", + "laminas/laminas-http": "^2.18", + "laminas/laminas-i18n": "^2.19", + "laminas/laminas-session": "^2.15", + "laminas/laminas-uri": "^2.10.0", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.3", + "psr/http-client": "^1.0.1", + "psr/http-factory": "^1.0.1", + "vimeo/psalm": "^5.0" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", "laminas/laminas-filter": "Laminas\\Filter component, required by the Digits validator", "laminas/laminas-i18n": "Laminas\\I18n component to allow translation of validation error messages", "laminas/laminas-i18n-resources": "Translations of validator messages", - "laminas/laminas-math": "Laminas\\Math component, required by the Csrf validator", "laminas/laminas-servicemanager": "Laminas\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", "laminas/laminas-session": "Laminas\\Session component, ^2.8; required by the Csrf validator", "laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators", @@ -306,24 +355,24 @@ "type": "community_bridge" } ], - "time": "2021-12-02T14:23:06+00:00" + "time": "2022-12-13T22:53:38+00:00" }, { "name": "psr/container", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", "autoload": { @@ -352,50 +401,37 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.24.0", + "name": "psr/http-message", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Psr\\Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -403,53 +439,37 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0" + "source": "https://github.com/php-fig/http-message/tree/master" }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-10-20T20:35:02+00:00" + "time": "2016-08-06T14:39:51+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.24.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44" + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/749045c69efb97c70d25d7463abba812e91f3a44", - "reference": "749045c69efb97c70d25d7463abba812e91f3a44", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", "shasum": "" }, "require": { @@ -463,7 +483,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -507,7 +527,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" }, "funding": [ { @@ -523,20 +543,20 @@ "type": "tidelift" } ], - "time": "2021-09-14T14:02:44+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.24.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -548,7 +568,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -591,7 +611,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -607,20 +627,20 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.24.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -635,7 +655,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -674,7 +694,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -690,20 +710,20 @@ "type": "tidelift" } ], - "time": "2021-11-30T18:21:41+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.24.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976" + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9a142215a36a3888e30d0a9eeea9766764e96976", - "reference": "9a142215a36a3888e30d0a9eeea9766764e96976", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", "shasum": "" }, "require": { @@ -712,7 +732,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -750,7 +770,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" }, "funding": [ { @@ -766,25 +786,25 @@ "type": "tidelift" } ], - "time": "2021-05-27T09:17:38+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -822,24 +842,24 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" } ], "packages-dev": [ { "name": "amphp/amp", - "version": "v2.6.1", + "version": "v2.6.2", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae" + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae", - "reference": "c5fc66a78ee38d7ac9195a37bacaf940eb3f65ae", + "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", "shasum": "" }, "require": { @@ -892,7 +912,7 @@ } ], "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "http://amphp.org/amp", + "homepage": "https://amphp.org/amp", "keywords": [ "async", "asynchronous", @@ -907,7 +927,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.1" + "source": "https://github.com/amphp/amp/tree/v2.6.2" }, "funding": [ { @@ -915,7 +935,7 @@ "type": "github" } ], - "time": "2021-09-23T18:43:08+00:00" + "time": "2022-02-20T17:52:18+00:00" }, { "name": "amphp/byte-stream", @@ -996,16 +1016,16 @@ }, { "name": "composer/package-versions-deprecated", - "version": "1.11.99.4", + "version": "1.11.99.5", "source": { "type": "git", "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b174585d1fe49ceed21928a945138948cb394600" + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600", - "reference": "b174585d1fe49ceed21928a945138948cb394600", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", + "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", "shasum": "" }, "require": { @@ -1049,7 +1069,7 @@ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", "support": { "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4" + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" }, "funding": [ { @@ -1065,34 +1085,34 @@ "type": "tidelift" } ], - "time": "2021-09-13T08:41:34+00:00" + "time": "2022-01-17T14:14:24+00:00" }, { "name": "composer/pcre", - "version": "1.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2" + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/3d322d715c43a1ac36c7fe215fa59336265500f2", - "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2", + "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1", + "phpstan/phpstan": "^1.3", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5" + "symfony/phpunit-bridge": "^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -1120,7 +1140,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/1.0.0" + "source": "https://github.com/composer/pcre/tree/3.1.0" }, "funding": [ { @@ -1136,27 +1156,27 @@ "type": "tidelift" } ], - "time": "2021-12-06T15:17:27+00:00" + "time": "2022-11-17T09:50:14+00:00" }, { "name": "composer/semver", - "version": "3.2.7", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "deac27056b57e46faf136fae7b449eeaa71661ee" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/deac27056b57e46faf136fae7b449eeaa71661ee", - "reference": "deac27056b57e46faf136fae7b449eeaa71661ee", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^0.12.54", + "phpstan/phpstan": "^1.4", "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", @@ -1201,7 +1221,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.2.7" + "source": "https://github.com/composer/semver/tree/3.3.2" }, "funding": [ { @@ -1217,24 +1237,24 @@ "type": "tidelift" } ], - "time": "2022-01-04T09:57:54+00:00" + "time": "2022-04-01T19:23:25+00:00" }, { "name": "composer/xdebug-handler", - "version": "3.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8" + "reference": "ced299686f41dce890debac69273b47ffe98a40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/12f1b79476638a5615ed00ea6adbb269cec96fd8", - "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", + "reference": "ced299686f41dce890debac69273b47ffe98a40c", "shasum": "" }, "require": { - "composer/pcre": "^1", + "composer/pcre": "^1 || ^2 || ^3", "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, @@ -1267,7 +1287,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.1" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" }, "funding": [ { @@ -1283,7 +1303,82 @@ "type": "tidelift" } ], - "time": "2022-01-04T18:29:42+00:00" + "time": "2022-02-25T21:32:43+00:00" + }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v0.7.2", + "source": { + "type": "git", + "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.3", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", + "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" + }, + "time": "2022-02-04T12:51:07+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -1324,29 +1419,30 @@ }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -1373,7 +1469,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -1389,7 +1485,7 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -1438,16 +1534,16 @@ }, { "name": "felixfbecker/language-server-protocol", - "version": "1.5.1", + "version": "v1.5.2", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730" + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730", - "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", + "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", "shasum": "" }, "require": { @@ -1488,37 +1584,106 @@ ], "support": { "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1" + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" }, - "time": "2021-02-22T14:02:09+00:00" + "time": "2022-03-02T22:36:06+00:00" }, { - "name": "laminas/laminas-coding-standard", - "version": "1.0.0", + "name": "fidry/cpu-core-counter", + "version": "0.4.1", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-coding-standard.git", - "reference": "08880ce2fbfe62d471cd3cb766a91da630b32539" + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/08880ce2fbfe62d471cd3cb766a91da630b32539", - "reference": "08880ce2fbfe62d471cd3cb766a91da630b32539", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/79261cc280aded96d098e1b0e0ba0c4881b432c2", + "reference": "79261cc280aded96d098e1b0e0ba0c4881b432c2", "shasum": "" }, "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "squizlabs/php_codesniffer": "^2.7" + "php": "^7.2 || ^8.0" }, - "replace": { - "zendframework/zend-coding-standard": "self.version" + "require-dev": { + "fidry/makefile": "^0.2.0", + "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", + "phpunit/phpunit": "^9.5.26 || ^8.5.31", + "theofidry/php-cs-fixer-config": "^1.0", + "webmozarts/strict-phpunit": "^7.5" }, "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "ThΓ©o FIDRY", + "email": "theo.fidry@gmail.com" + } + ], + "description": "Tiny utility to get the number of CPU cores.", + "keywords": [ + "CPU", + "core" + ], + "support": { + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/0.4.1" + }, + "funding": [ + { + "url": "https://github.com/theofidry", + "type": "github" + } + ], + "time": "2022-12-16T22:01:02+00:00" + }, + { + "name": "laminas/laminas-coding-standard", + "version": "2.5.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-coding-standard.git", + "reference": "c1aaa18a7c860c6932677a3e4ec13161f9fc7d61" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/c1aaa18a7c860c6932677a3e4ec13161f9fc7d61", + "reference": "c1aaa18a7c860c6932677a3e4ec13161f9fc7d61", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.0", + "php": "^7.4 || ^8.0", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.6", + "webimpress/coding-standard": "^1.2" + }, + "conflict": { + "phpstan/phpdoc-parser": ">=1.6.0" + }, + "type": "phpcodesniffer-standard", + "autoload": { + "psr-4": { + "LaminasCodingStandard\\": "src/LaminasCodingStandard/" + } + }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], - "description": "Laminas coding standard", + "description": "Laminas Coding Standard", "homepage": "https://laminas.dev", "keywords": [ "Coding Standard", @@ -1532,35 +1697,42 @@ "rss": "https://github.com/laminas/laminas-coding-standard/releases.atom", "source": "https://github.com/laminas/laminas-coding-standard" }, - "time": "2019-12-31T16:28:26+00:00" + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2023-01-05T15:53:40+00:00" }, { "name": "laminas/laminas-crypt", - "version": "3.6.0", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-crypt.git", - "reference": "ad2c29c289a4bc837b37a7650f5178edda0fc548" + "reference": "56ab1b195dad5456753601ff2e8e3d3fd9392d1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-crypt/zipball/ad2c29c289a4bc837b37a7650f5178edda0fc548", - "reference": "ad2c29c289a4bc837b37a7650f5178edda0fc548", + "url": "https://api.github.com/repos/laminas/laminas-crypt/zipball/56ab1b195dad5456753601ff2e8e3d3fd9392d1a", + "reference": "56ab1b195dad5456753601ff2e8e3d3fd9392d1a", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.2", "ext-mbstring": "*", "laminas/laminas-math": "^3.4", + "laminas/laminas-servicemanager": "^3.11.2", "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "psr/container": "^1.1" }, "conflict": { "zendframework/zend-crypt": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "^9.5.25" }, "suggest": { "ext-openssl": "Required for most features of Laminas\\Crypt" @@ -1595,35 +1767,35 @@ "type": "community_bridge" } ], - "time": "2021-12-06T01:25:27+00:00" + "time": "2022-10-16T15:51:01+00:00" }, { "name": "laminas/laminas-db", - "version": "2.13.4", + "version": "2.16.3", "source": { "type": "git", "url": "https://github.com/laminas/laminas-db.git", - "reference": "cdabb4bfa669c2c0edb0cb4e014c15b41afd3fb1" + "reference": "dadd9a19d2f9e89aa59205572b928892b91ff1da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-db/zipball/cdabb4bfa669c2c0edb0cb4e014c15b41afd3fb1", - "reference": "cdabb4bfa669c2c0edb0cb4e014c15b41afd3fb1", + "url": "https://api.github.com/repos/laminas/laminas-db/zipball/dadd9a19d2f9e89aa59205572b928892b91ff1da", + "reference": "dadd9a19d2f9e89aa59205572b928892b91ff1da", "shasum": "" }, "require": { - "laminas/laminas-stdlib": "^3.6", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "laminas/laminas-stdlib": "^3.7.1", + "php": "~8.0.0 || ~8.1.0|| ~8.2.0" }, "conflict": { "zendframework/zend-db": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-eventmanager": "^3.4", - "laminas/laminas-hydrator": "^3.2 || ^4.3", - "laminas/laminas-servicemanager": "^3.7", - "phpunit/phpunit": "^9.5.5" + "laminas/laminas-coding-standard": "^2.4.0", + "laminas/laminas-eventmanager": "^3.6.0", + "laminas/laminas-hydrator": "^4.7", + "laminas/laminas-servicemanager": "^3.19.0", + "phpunit/phpunit": "^9.5.25" }, "suggest": { "laminas/laminas-eventmanager": "Laminas\\EventManager component", @@ -1666,32 +1838,32 @@ "type": "community_bridge" } ], - "time": "2021-09-21T18:59:44+00:00" + "time": "2022-12-17T16:31:58+00:00" }, { "name": "laminas/laminas-math", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-math.git", - "reference": "146d8187ab247ae152e811a6704a953d43537381" + "reference": "5770fc632a3614f5526632a8b70f41b65130460e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-math/zipball/146d8187ab247ae152e811a6704a953d43537381", - "reference": "146d8187ab247ae152e811a6704a953d43537381", + "url": "https://api.github.com/repos/laminas/laminas-math/zipball/5770fc632a3614f5526632a8b70f41b65130460e", + "reference": "5770fc632a3614f5526632a8b70f41b65130460e", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-math": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "phpunit/phpunit": "^9.5.5" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "~9.5.25" }, "suggest": { "ext-bcmath": "If using the bcmath functionality", @@ -1733,180 +1905,33 @@ "type": "community_bridge" } ], - "time": "2021-12-06T02:02:07+00:00" - }, - { - "name": "laminas/laminas-servicemanager", - "version": "3.7.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "2b0aee477fdbd3191af7c302b93dbc5fda0626f4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/2b0aee477fdbd3191af7c302b93dbc5fda0626f4", - "reference": "2b0aee477fdbd3191af7c302b93dbc5fda0626f4", - "shasum": "" - }, - "require": { - "container-interop/container-interop": "^1.2", - "laminas/laminas-stdlib": "^3.2.1", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.3 || ~8.0.0", - "psr/container": "^1.0" - }, - "conflict": { - "laminas/laminas-code": "<3.3.1", - "zendframework/zend-code": "<3.3.1" - }, - "provide": { - "container-interop/container-interop-implementation": "^1.2", - "psr/container-implementation": "^1.0" - }, - "replace": { - "zendframework/zend-servicemanager": "^3.4.0" - }, - "require-dev": { - "composer/package-versions-deprecated": "^1.0", - "laminas/laminas-coding-standard": "~2.2.0", - "laminas/laminas-container-config-test": "^0.3", - "laminas/laminas-dependency-plugin": "^2.1.2", - "mikey179/vfsstream": "^1.6.8", - "ocramius/proxy-manager": "^2.2.3", - "phpbench/phpbench": "^1.0.4", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.4", - "psalm/plugin-phpunit": "^0.16.1", - "vimeo/psalm": "^4.8" - }, - "suggest": { - "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" - }, - "bin": [ - "bin/generate-deps-for-config-factory", - "bin/generate-factory-for-class" - ], - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\ServiceManager\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Factory-Driven Dependency Injection Container", - "homepage": "https://laminas.dev", - "keywords": [ - "PSR-11", - "dependency-injection", - "di", - "dic", - "laminas", - "service-manager", - "servicemanager" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-servicemanager/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-servicemanager/issues", - "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", - "source": "https://github.com/laminas/laminas-servicemanager" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-07-24T19:33:07+00:00" - }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "88bf037259869891afce6504cacc4f8a07b24d0f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/88bf037259869891afce6504cacc4f8a07b24d0f", - "reference": "88bf037259869891afce6504cacc4f8a07b24d0f", - "shasum": "" - }, - "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.6" - }, - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" - ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-12-21T14:34:37+00:00" + "time": "2022-10-16T14:22:28+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" + }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { @@ -1931,7 +1956,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -1939,20 +1964,20 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.0.0", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" + "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", + "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", "shasum": "" }, "require": { @@ -1988,22 +2013,22 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0" }, - "time": "2020-12-01T19:48:11+00:00" + "time": "2022-12-08T20:46:14+00:00" }, { "name": "nikic/php-parser", - "version": "v4.13.2", + "version": "v4.15.2", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", + "reference": "f59bbe44bf7d96f24f3e2b4ddc21cd52c1d2adbc", "shasum": "" }, "require": { @@ -2044,9 +2069,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.2" }, - "time": "2021-11-30T19:35:32+00:00" + "time": "2022-11-12T15:38:23+00:00" }, { "name": "openlss/lib-array2xml", @@ -2163,16 +2188,16 @@ }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -2208,9 +2233,9 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2324,25 +2349,30 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.0", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706" + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706", - "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -2368,96 +2398,73 @@ "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.6.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" }, - "time": "2022-01-04T19:58:01+00:00" + "time": "2022-10-14T12:47:21+00:00" }, { - "name": "phpspec/prophecy", - "version": "v1.15.0", + "name": "phpstan/phpdoc-parser", + "version": "1.5.1", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "981cc368a216c988e862a75e526b6076987d1b50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/981cc368a216c988e862a75e526b6076987d1b50", + "reference": "981cc368a216c988e862a75e526b6076987d1b50", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "psr-4": { - "Prophecy\\": "src/Prophecy" + "PHPStan\\PhpDocParser\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.5.1" }, - "time": "2021-12-08T12:19:24+00:00" + "time": "2022-05-05T11:32:40+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.10", + "version": "9.2.21", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687" + "reference": "3f893e19712bb0c8bc86665d1562e9fd509c4ef0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687", - "reference": "d5850aaf931743067f4bfc1ae4cbd06468400687", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/3f893e19712bb0c8bc86665d1562e9fd509c4ef0", + "reference": "3f893e19712bb0c8bc86665d1562e9fd509c4ef0", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -2506,7 +2513,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.21" }, "funding": [ { @@ -2514,7 +2521,7 @@ "type": "github" } ], - "time": "2021-12-05T09:12:13+00:00" + "time": "2022-12-14T13:26:54+00:00" }, { "name": "phpunit/php-file-iterator", @@ -2759,16 +2766,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.11", + "version": "9.5.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "2406855036db1102126125537adb1406f7242fdd" + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2406855036db1102126125537adb1406f7242fdd", - "reference": "2406855036db1102126125537adb1406f7242fdd", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a2bc7ffdca99f92d959b3f2270529334030bba38", + "reference": "a2bc7ffdca99f92d959b3f2270529334030bba38", "shasum": "" }, "require": { @@ -2783,28 +2790,23 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.7", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -2846,7 +2848,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.11" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.27" }, "funding": [ { @@ -2856,22 +2858,26 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2021-12-25T07:07:57+00:00" + "time": "2022-12-09T07:31:23+00:00" }, { "name": "psalm/plugin-phpunit", - "version": "0.15.2", + "version": "0.18.4", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "31d15bbc0169a3c454e495e03fd8a6ccb663661b" + "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/31d15bbc0169a3c454e495e03fd8a6ccb663661b", - "reference": "31d15bbc0169a3c454e495e03fd8a6ccb663661b", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc", + "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc", "shasum": "" }, "require": { @@ -2879,7 +2885,7 @@ "composer/semver": "^1.4 || ^2.0 || ^3.0", "ext-simplexml": "*", "php": "^7.1 || ^8.0", - "vimeo/psalm": "dev-master || dev-4.x || ^4.0" + "vimeo/psalm": "dev-master || dev-4.x || ^4.7.1 || ^5@beta || ^5.0" }, "conflict": { "phpunit/phpunit": "<7.5" @@ -2916,36 +2922,36 @@ "description": "Psalm plugin for PHPUnit", "support": { "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", - "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.15.2" + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.4" }, - "time": "2021-05-29T19:11:38+00:00" + "time": "2022-12-03T07:47:07+00:00" }, { "name": "psr/log", - "version": "1.1.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2966,9 +2972,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { "name": "sebastian/cli-parser", @@ -3139,16 +3145,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -3201,7 +3207,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -3209,7 +3215,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -3336,16 +3342,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -3387,7 +3393,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -3395,20 +3401,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -3464,7 +3470,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -3472,20 +3478,20 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -3528,7 +3534,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -3536,7 +3542,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -3827,28 +3833,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -3871,7 +3877,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" }, "funding": [ { @@ -3879,7 +3885,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-09-12T14:47:03+00:00" }, { "name": "sebastian/version", @@ -3935,65 +3941,99 @@ "time": "2020-09-28T06:39:44+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "2.9.2", + "name": "slevomat/coding-standard", + "version": "7.2.1", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "2acf168de78487db620ab4bc524135a13cfe6745" + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745", - "reference": "2acf168de78487db620ab4bc524135a13cfe6745", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/aff06ae7a84e4534bf6f821dc982a93a5d477c90", + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90", + "shasum": "" + }, + "require": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.5.1", + "squizlabs/php_codesniffer": "^3.6.2" + }, + "require-dev": { + "phing/phing": "2.17.3", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.4.10|1.7.1", + "phpstan/phpstan-deprecation-rules": "1.0.0", + "phpstan/phpstan-phpunit": "1.0.0|1.1.1", + "phpstan/phpstan-strict-rules": "1.2.3", + "phpunit/phpunit": "7.5.20|8.5.21|9.5.20" + }, + "type": "phpcodesniffer-standard", + "extra": { + "branch-alias": { + "dev-master": "7.x-dev" + } + }, + "autoload": { + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "support": { + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/7.2.1" + }, + "funding": [ + { + "url": "https://github.com/kukulich", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" + } + ], + "time": "2022-05-25T10:58:12+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.7.1", + "source": { + "type": "git", + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", "shasum": "" }, "require": { "ext-simplexml": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": ">=5.1.2" + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "bin": [ - "scripts/phpcs", - "scripts/phpcbf" + "bin/phpcs", + "bin/phpcbf" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "3.x-dev" } }, - "autoload": { - "classmap": [ - "CodeSniffer.php", - "CodeSniffer/CLI.php", - "CodeSniffer/Exception.php", - "CodeSniffer/File.php", - "CodeSniffer/Fixer.php", - "CodeSniffer/Report.php", - "CodeSniffer/Reporting.php", - "CodeSniffer/Sniff.php", - "CodeSniffer/Tokens.php", - "CodeSniffer/Reports/", - "CodeSniffer/Tokenizers/", - "CodeSniffer/DocGenerators/", - "CodeSniffer/Standards/AbstractPatternSniff.php", - "CodeSniffer/Standards/AbstractScopeSniff.php", - "CodeSniffer/Standards/AbstractVariableSniff.php", - "CodeSniffer/Standards/IncorrectPatternException.php", - "CodeSniffer/Standards/Generic/Sniffs/", - "CodeSniffer/Standards/MySource/Sniffs/", - "CodeSniffer/Standards/PEAR/Sniffs/", - "CodeSniffer/Standards/PSR1/Sniffs/", - "CodeSniffer/Standards/PSR2/Sniffs/", - "CodeSniffer/Standards/Squiz/Sniffs/", - "CodeSniffer/Standards/Zend/Sniffs/" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" @@ -4005,7 +4045,7 @@ } ], "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", "standards" @@ -4015,50 +4055,46 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2018-11-07T22:31:41+00:00" + "time": "2022-06-18T07:21:10+00:00" }, { "name": "symfony/console", - "version": "v5.4.2", + "version": "v6.0.16", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a2c6b7ced2eb7799a35375fb9022519282b5405e" + "reference": "be294423f337dda97c810733138c0caec1bb0575" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a2c6b7ced2eb7799a35375fb9022519282b5405e", - "reference": "a2c6b7ced2eb7799a35375fb9022519282b5405e", + "url": "https://api.github.com/repos/symfony/console/zipball/be294423f337dda97c810733138c0caec1bb0575", + "reference": "be294423f337dda97c810733138c0caec1bb0575", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.0.2", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" + "symfony/string": "^5.4|^6.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -4098,7 +4134,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.2" + "source": "https://github.com/symfony/console/tree/v6.0.16" }, "funding": [ { @@ -4114,29 +4150,29 @@ "type": "tidelift" } ], - "time": "2021-12-20T16:11:12+00:00" + "time": "2022-11-25T18:58:46+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.0", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -4165,7 +4201,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" }, "funding": [ { @@ -4181,20 +4217,165 @@ "type": "tidelift" } ], - "time": "2021-07-12T14:48:14+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.24.0", + "name": "symfony/filesystem", + "version": "v6.0.13", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" + "url": "https://github.com/symfony/filesystem.git", + "reference": "3adca49133bd055ebe6011ed1e012be3c908af79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3adca49133bd055ebe6011ed1e012be3c908af79", + "reference": "3adca49133bd055ebe6011ed1e012be3c908af79", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v6.0.13" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-09-21T20:25:27+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.27-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-11-03T14:55:06+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.27.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { @@ -4206,7 +4387,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4246,7 +4427,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -4262,99 +4443,20 @@ "type": "tidelift" } ], - "time": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.24.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "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 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-05T21:20:04+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.24.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9", - "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -4363,7 +4465,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4408,7 +4510,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -4424,25 +4526,24 @@ "type": "tidelift" } ], - "time": "2021-09-13T13:58:33+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/process", - "version": "v5.4.2", + "version": "v6.0.11", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "2b3ba8722c4aaf3e88011be5e7f48710088fb5e4" + "reference": "44270a08ccb664143dede554ff1c00aaa2247a43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/2b3ba8722c4aaf3e88011be5e7f48710088fb5e4", - "reference": "2b3ba8722c4aaf3e88011be5e7f48710088fb5e4", + "url": "https://api.github.com/repos/symfony/process/zipball/44270a08ccb664143dede554ff1c00aaa2247a43", + "reference": "44270a08ccb664143dede554ff1c00aaa2247a43", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.0.2" }, "type": "library", "autoload": { @@ -4470,7 +4571,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.2" + "source": "https://github.com/symfony/process/tree/v6.0.11" }, "funding": [ { @@ -4486,26 +4587,26 @@ "type": "tidelift" } ], - "time": "2021-12-27T21:01:00+00:00" + "time": "2022-06-27T17:10:44+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { "php": ">=7.2.5", "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1" + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -4553,7 +4654,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -4569,47 +4670,46 @@ "type": "tidelift" } ], - "time": "2021-11-04T16:48:04+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/string", - "version": "v5.4.2", + "version": "v6.0.15", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e6a5d5ecf6589c5247d18e0e74e30b11dfd51a3d" + "reference": "51ac0fa0ccf132a00519b87c97e8f775fa14e771" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e6a5d5ecf6589c5247d18e0e74e30b11dfd51a3d", - "reference": "e6a5d5ecf6589c5247d18e0e74e30b11dfd51a3d", + "url": "https://api.github.com/repos/symfony/string/zipball/51ac0fa0ccf132a00519b87c97e8f775fa14e771", + "reference": "51ac0fa0ccf132a00519b87c97e8f775fa14e771", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.0" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { - "psr-4": { - "Symfony\\Component\\String\\": "" - }, "files": [ "Resources/functions.php" ], + "psr-4": { + "Symfony\\Component\\String\\": "" + }, "exclude-from-classmap": [ "/Tests/" ] @@ -4639,7 +4739,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.2" + "source": "https://github.com/symfony/string/tree/v6.0.15" }, "funding": [ { @@ -4655,7 +4755,7 @@ "type": "tidelift" } ], - "time": "2021-12-16T21:52:00+00:00" + "time": "2022-10-10T09:34:08+00:00" }, { "name": "theseer/tokenizer", @@ -4709,24 +4809,24 @@ }, { "name": "vimeo/psalm", - "version": "4.18.1", + "version": "5.2.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "dda05fa913f4dc6eb3386f2f7ce5a45d37a71bcb" + "reference": "fb685a16df3050d4c18d8a4100fe83abe6458cba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/dda05fa913f4dc6eb3386f2f7ce5a45d37a71bcb", - "reference": "dda05fa913f4dc6eb3386f2f7ce5a45d37a71bcb", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/fb685a16df3050d4c18d8a4100fe83abe6458cba", + "reference": "fb685a16df3050d4c18d8a4100fe83abe6458cba", "shasum": "" }, "require": { "amphp/amp": "^2.4.2", "amphp/byte-stream": "^1.5", - "composer/package-versions-deprecated": "^1.8.0", + "composer/package-versions-deprecated": "^1.10.0", "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0", + "composer/xdebug-handler": "^2.0 || ^3.0", "dnoegel/php-xdg-base-dir": "^0.1.1", "ext-ctype": "*", "ext-dom": "*", @@ -4735,33 +4835,35 @@ "ext-mbstring": "*", "ext-simplexml": "*", "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.0.3", - "felixfbecker/language-server-protocol": "^1.5", + "felixfbecker/advanced-json-rpc": "^3.1", + "felixfbecker/language-server-protocol": "^1.5.2", + "fidry/cpu-core-counter": "^0.4.0", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.13", "openlss/lib-array2xml": "^1.0", - "php": "^7.1|^8", - "sebastian/diff": "^3.0 || ^4.0", - "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", - "webmozart/path-util": "^2.3" + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0", + "sebastian/diff": "^4.0", + "symfony/console": "^4.1.6 || ^5.0 || ^6.0", + "symfony/filesystem": "^5.4 || ^6.0", + "symfony/polyfill-php80": "^1.25" }, "provide": { "psalm/psalm": "self.version" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "brianium/paratest": "^4.0||^6.0", + "bamarni/composer-bin-plugin": "^1.4", + "brianium/paratest": "^6.0", "ext-curl": "*", + "mockery/mockery": "^1.5", + "nunomaduro/mock-final-classes": "^1.1", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpdocumentor/reflection-docblock": "^5", - "phpmyadmin/sql-parser": "5.1.0||dev-master", - "phpspec/prophecy": ">=1.9.0", - "phpunit/phpunit": "^9.0", - "psalm/plugin-phpunit": "^0.16", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/process": "^4.3 || ^5.0 || ^6.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" + "phpstan/phpdoc-parser": "^1.6", + "phpunit/phpunit": "^9.5", + "psalm/plugin-mockery": "^1.1", + "psalm/plugin-phpunit": "^0.18", + "slevomat/coding-standard": "^8.4", + "squizlabs/php_codesniffer": "^3.6", + "symfony/process": "^4.4 || ^5.0 || ^6.0" }, "suggest": { "ext-curl": "In order to send data to shepherd", @@ -4777,17 +4879,14 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev", + "dev-master": "5.x-dev", + "dev-4.x": "4.x-dev", "dev-3.x": "3.x-dev", "dev-2.x": "2.x-dev", "dev-1.x": "1.x-dev" } }, "autoload": { - "files": [ - "src/functions.php", - "src/spl_object_id.php" - ], "psr-4": { "Psalm\\": "src/Psalm/" } @@ -4809,60 +4908,64 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.18.1" + "source": "https://github.com/vimeo/psalm/tree/5.2.0" }, - "time": "2022-01-08T21:21:26+00:00" + "time": "2022-12-12T08:18:56+00:00" }, { - "name": "webmozart/path-util", - "version": "2.3.0", + "name": "webimpress/coding-standard", + "version": "1.2.4", "source": { "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" + "url": "https://github.com/webimpress/coding-standard.git", + "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", + "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", "shasum": "" }, "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" + "php": "^7.3 || ^8.0", + "squizlabs/php_codesniffer": "^3.6.2" }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^9.5.13" }, - "type": "library", + "type": "phpcodesniffer-standard", "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } + "dev-master": "1.2.x-dev", + "dev-develop": "1.3.x-dev" }, "autoload": { "psr-4": { - "Webmozart\\PathUtil\\": "src/" + "WebimpressCodingStandard\\": "src/WebimpressCodingStandard/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-2-Clause" ], - "authors": [ + "description": "Webimpress Coding Standard", + "keywords": [ + "Coding Standard", + "PSR-2", + "phpcs", + "psr-12", + "webimpress" + ], + "support": { + "issues": "https://github.com/webimpress/coding-standard/issues", + "source": "https://github.com/webimpress/coding-standard/tree/1.2.4" + }, + "funding": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "url": "https://github.com/michalbundyra", + "type": "github" } ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" - }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" + "time": "2022-02-15T19:52:12+00:00" } ], "aliases": [], @@ -4871,12 +4974,12 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.3 || ~8.0.0 || ~8.1.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "ext-iconv": "*" }, "platform-dev": [], "platform-overrides": { - "php": "7.3.99" + "php": "8.0.99" }, - "plugin-api-version": "2.2.0" + "plugin-api-version": "2.3.0" } diff --git a/lib/laminas/laminas-mail/src/Address.php b/lib/laminas/laminas-mail/src/Address.php index 7b2956f2e..c6f3d6d48 100644 --- a/lib/laminas/laminas-mail/src/Address.php +++ b/lib/laminas/laminas-mail/src/Address.php @@ -5,10 +5,19 @@ namespace Laminas\Mail; use Laminas\Validator\EmailAddress as EmailAddressValidator; use Laminas\Validator\Hostname; +use function array_shift; +use function is_string; +use function preg_match; +use function sprintf; +use function trim; + class Address implements Address\AddressInterface { + /** @var null|string */ protected $comment; + /** @var string */ protected $email; + /** @var null|string */ protected $name; /** @@ -149,7 +158,7 @@ class Address implements Address\AddressInterface */ private function constructName() { - $name = $this->getName(); + $name = $this->getName(); $comment = $this->getComment(); if ($comment === null || $comment === '') { diff --git a/lib/laminas/laminas-mail/src/AddressList.php b/lib/laminas/laminas-mail/src/AddressList.php index fd01388dc..d07802856 100644 --- a/lib/laminas/laminas-mail/src/AddressList.php +++ b/lib/laminas/laminas-mail/src/AddressList.php @@ -4,24 +4,43 @@ namespace Laminas\Mail; use Countable; use Iterator; +use Laminas\Mail\Address\AddressInterface; use ReturnTypeWillChange; +use function count; +use function current; +use function gettype; +use function is_int; +use function is_numeric; +use function is_object; +use function is_string; +use function key; +use function next; +use function reset; +use function sprintf; +use function strtolower; +use function var_export; + +/** + * @implements Iterator + * @final + */ class AddressList implements Countable, Iterator { /** * List of Address objects we're managing * - * @var array + * @var array */ protected $addresses = []; /** * Add an address to the list * - * @param string|Address\AddressInterface $emailOrAddress + * @param string|AddressInterface $emailOrAddress * @param null|string $name * @throws Exception\InvalidArgumentException - * @return AddressList + * @return $this */ public function add($emailOrAddress, $name = null) { @@ -29,12 +48,12 @@ class AddressList implements Countable, Iterator $emailOrAddress = $this->createAddress($emailOrAddress, $name); } - if (! $emailOrAddress instanceof Address\AddressInterface) { + if (! $emailOrAddress instanceof AddressInterface) { throw new Exception\InvalidArgumentException(sprintf( '%s expects an email address or %s\Address object as its first argument; received "%s"', __METHOD__, __NAMESPACE__, - (is_object($emailOrAddress) ? get_class($emailOrAddress) : gettype($emailOrAddress)) + is_object($emailOrAddress) ? $emailOrAddress::class : gettype($emailOrAddress) )); } @@ -56,7 +75,7 @@ class AddressList implements Countable, Iterator * * @param array $addresses * @throws Exception\RuntimeException - * @return AddressList + * @return $this */ public function addMany(array $addresses) { @@ -69,7 +88,7 @@ class AddressList implements Countable, Iterator if (! is_string($key)) { throw new Exception\RuntimeException(sprintf( 'Invalid key type in provided addresses array ("%s")', - (is_object($key) ? get_class($key) : var_export($key, 1)) + is_object($key) ? $key::class : var_export($key, true) )); } @@ -86,7 +105,7 @@ class AddressList implements Countable, Iterator * @param string $address * @param null|string $comment Comment associated with the address, if any. * @throws Exception\InvalidArgumentException - * @return AddressList + * @return $this */ public function addFromString($address, $comment = null) { @@ -97,8 +116,7 @@ class AddressList implements Countable, Iterator /** * Merge another address list into this one * - * @param AddressList $addressList - * @return AddressList + * @return $this */ public function merge(self $addressList) { @@ -124,7 +142,7 @@ class AddressList implements Countable, Iterator * Get an address by email * * @param string $email - * @return bool|Address\AddressInterface + * @return false|AddressInterface */ public function get($email) { @@ -167,9 +185,10 @@ class AddressList implements Countable, Iterator /** * Rewind iterator * - * @return mixed the value of the first addresses element, or false if the addresses is - * empty. * @see addresses + * + * @return false|AddressInterface the value of the first addresses element, or false if the addresses is + * empty. */ #[ReturnTypeWillChange] public function rewind() @@ -180,7 +199,7 @@ class AddressList implements Countable, Iterator /** * Return current item in iteration * - * @return Address + * @return AddressInterface */ #[ReturnTypeWillChange] public function current() @@ -202,9 +221,10 @@ class AddressList implements Countable, Iterator /** * Move to next item * - * @return mixed the addresses value in the next place that's pointed to by the - * internal array pointer, or false if there are no more elements. * @see addresses + * + * @return false|AddressInterface the addresses value in the next place that's pointed to by the + * internal array pointer, or false if there are no more elements. */ #[ReturnTypeWillChange] public function next() @@ -221,7 +241,7 @@ class AddressList implements Countable, Iterator public function valid() { $key = key($this->addresses); - return ($key !== null && $key !== false); + return $key !== null && $key !== false; } /** diff --git a/lib/laminas/laminas-mail/src/ConfigProvider.php b/lib/laminas/laminas-mail/src/ConfigProvider.php index d8468a3f6..5c79a4cf0 100644 --- a/lib/laminas/laminas-mail/src/ConfigProvider.php +++ b/lib/laminas/laminas-mail/src/ConfigProvider.php @@ -25,8 +25,8 @@ class ConfigProvider { return [ // Legacy Zend Framework aliases - 'aliases' => [ - \Zend\Mail\Protocol\SmtpPluginManager::class => Protocol\SmtpPluginManager::class, + 'aliases' => [ + 'Zend\Mail\Protocol\SmtpPluginManager' => Protocol\SmtpPluginManager::class, ], 'factories' => [ Protocol\SmtpPluginManager::class => Protocol\SmtpPluginManagerFactory::class, diff --git a/lib/laminas/laminas-mail/src/Exception/ExceptionInterface.php b/lib/laminas/laminas-mail/src/Exception/ExceptionInterface.php index d903a0321..be95620bf 100644 --- a/lib/laminas/laminas-mail/src/Exception/ExceptionInterface.php +++ b/lib/laminas/laminas-mail/src/Exception/ExceptionInterface.php @@ -2,6 +2,8 @@ namespace Laminas\Mail\Exception; -interface ExceptionInterface +use Throwable; + +interface ExceptionInterface extends Throwable { } diff --git a/lib/laminas/laminas-mail/src/Header/AbstractAddressList.php b/lib/laminas/laminas-mail/src/Header/AbstractAddressList.php index 020de6d0b..1cc998919 100644 --- a/lib/laminas/laminas-mail/src/Header/AbstractAddressList.php +++ b/lib/laminas/laminas-mail/src/Header/AbstractAddressList.php @@ -6,7 +6,39 @@ use Laminas\Mail\Address; use Laminas\Mail\AddressList; use Laminas\Mail\Headers; use Laminas\Mail\Storage\Exception\RuntimeException; -use Throwable; + +use function array_filter; +use function array_map; +use function assert; +use function idn_to_ascii; +use function implode; +use function in_array; +use function is_array; +use function is_string; +use function preg_match; +use function preg_match_all; +use function preg_replace; +use function sprintf; +use function str_contains; +use function str_replace; +use function strtolower; +use function trim; + +use const IDNA_DEFAULT; +use const IDNA_ERROR_BIDI; +use const IDNA_ERROR_CONTEXTJ; +use const IDNA_ERROR_DISALLOWED; +use const IDNA_ERROR_DOMAIN_NAME_TOO_LONG; +use const IDNA_ERROR_EMPTY_LABEL; +use const IDNA_ERROR_HYPHEN_3_4; +use const IDNA_ERROR_INVALID_ACE_LABEL; +use const IDNA_ERROR_LABEL_HAS_DOT; +use const IDNA_ERROR_LABEL_TOO_LONG; +use const IDNA_ERROR_LEADING_COMBINING_MARK; +use const IDNA_ERROR_LEADING_HYPHEN; +use const IDNA_ERROR_PUNYCODE; +use const IDNA_ERROR_TRAILING_HYPHEN; +use const INTL_IDNA_VARIANT_UTS46; /** * Base class for headers composing address lists (to, from, cc, bcc, reply-to) @@ -14,29 +46,25 @@ use Throwable; abstract class AbstractAddressList implements HeaderInterface { private const IDNA_ERROR_MAP = [ - IDNA_ERROR_EMPTY_LABEL => 'empty label', - IDNA_ERROR_LABEL_TOO_LONG => 'label too long', - IDNA_ERROR_DOMAIN_NAME_TOO_LONG => 'domain name too long', - IDNA_ERROR_LEADING_HYPHEN => 'leading hyphen', - IDNA_ERROR_TRAILING_HYPHEN => 'trailing hyphen', - IDNA_ERROR_HYPHEN_3_4 => 'consecutive hyphens', + IDNA_ERROR_EMPTY_LABEL => 'empty label', + IDNA_ERROR_LABEL_TOO_LONG => 'label too long', + IDNA_ERROR_DOMAIN_NAME_TOO_LONG => 'domain name too long', + IDNA_ERROR_LEADING_HYPHEN => 'leading hyphen', + IDNA_ERROR_TRAILING_HYPHEN => 'trailing hyphen', + IDNA_ERROR_HYPHEN_3_4 => 'consecutive hyphens', IDNA_ERROR_LEADING_COMBINING_MARK => 'leading combining mark', - IDNA_ERROR_DISALLOWED => 'disallowed', - IDNA_ERROR_PUNYCODE => 'invalid punycode encoding', - IDNA_ERROR_LABEL_HAS_DOT => 'has dot', - IDNA_ERROR_INVALID_ACE_LABEL => 'label not in ASCII encoding', - IDNA_ERROR_BIDI => 'fails bidirectional criteria', - IDNA_ERROR_CONTEXTJ => 'one or more characters fail CONTEXTJ rule', + IDNA_ERROR_DISALLOWED => 'disallowed', + IDNA_ERROR_PUNYCODE => 'invalid punycode encoding', + IDNA_ERROR_LABEL_HAS_DOT => 'has dot', + IDNA_ERROR_INVALID_ACE_LABEL => 'label not in ASCII encoding', + IDNA_ERROR_BIDI => 'fails bidirectional criteria', + IDNA_ERROR_CONTEXTJ => 'one or more characters fail CONTEXTJ rule', ]; - /** - * @var AddressList - */ + /** @var AddressList */ protected $addressList; - /** - * @var string Normalized field name - */ + /** @var string Normalized field name */ protected $fieldName; /** @@ -46,40 +74,42 @@ abstract class AbstractAddressList implements HeaderInterface */ protected $encoding = 'ASCII'; - /** - * @var string lower case field name - */ + /** @var string lower case field name */ protected static $type; + /** @var string[] lower case aliases for the field name */ + protected static $typeAliases = []; + + /** + * @param string $headerLine + * @return static + */ public static function fromString($headerLine) { - list($fieldName, $fieldValue) = GenericHeader::splitHeaderLine($headerLine); - if (strtolower($fieldName) !== static::$type) { + [$fieldName, $fieldValue] = GenericHeader::splitHeaderLine($headerLine); + if ((strtolower($fieldName) !== static::$type) && ! in_array(strtolower($fieldName), static::$typeAliases)) { throw new Exception\InvalidArgumentException(sprintf( 'Invalid header line for "%s" string', - __CLASS__ + self::class )); } // split value on "," $fieldValue = str_replace(Headers::FOLDING, ' ', $fieldValue); $fieldValue = preg_replace('/[^:]+:([^;]*);/', '$1,', $fieldValue); - $values = ListParser::parse($fieldValue); + $values = ListParser::parse($fieldValue); $wasEncoded = false; - $addresses = array_map( - function ($value) use (&$wasEncoded) { + $addresses = array_map( + static function ($value) use (&$wasEncoded): ?Address { $decodedValue = HeaderWrap::mimeDecodeValue($value); - $wasEncoded = $wasEncoded || ($decodedValue !== $value); - - $value = trim($decodedValue); - - $comments = self::getComments($value); - $value = self::stripComments($value); - - $value = preg_replace( + $wasEncoded = $wasEncoded || ($decodedValue !== $value); + $value = trim($decodedValue); + $comments = self::getComments($value); + $value = self::stripComments($value); + $value = preg_replace( [ - '#(?fieldName; @@ -116,18 +148,21 @@ abstract class AbstractAddressList implements HeaderInterface /** * Safely convert UTF-8 encoded domain name to ASCII + * * @param string $domainName the UTF-8 encoded email - * @return string */ protected function idnToAscii($domainName): string { + /** @psalm-var string|false $ascii */ $ascii = idn_to_ascii($domainName, IDNA_DEFAULT, INTL_IDNA_VARIANT_UTS46, $conversionInfo); - if (false !== $ascii) { + if (is_string($ascii)) { return $ascii; } $messages = []; - $errors = (int) $conversionInfo['errors']; + assert(is_array($conversionInfo)); + /* @psalm-var array{errors: numeric-string} $conversionInfo */ + $errors = (int) $conversionInfo['errors']; foreach (self::IDNA_ERROR_MAP as $flag => $message) { if (($flag & $errors) === $flag) { @@ -141,6 +176,9 @@ abstract class AbstractAddressList implements HeaderInterface )); } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { $emails = []; @@ -151,12 +189,13 @@ abstract class AbstractAddressList implements HeaderInterface $name = $address->getName(); // quote $name if value requires so - if (! empty($name) && (false !== strpos($name, ',') || false !== strpos($name, ';'))) { + if (! empty($name) && (str_contains($name, ',') || str_contains($name, ';'))) { // FIXME: what if name contains double quote? $name = sprintf('"%s"', $name); } - if ($format === HeaderInterface::FORMAT_ENCODED + if ( + $format === HeaderInterface::FORMAT_ENCODED && 'ASCII' !== $encoding ) { if (! empty($name)) { @@ -166,7 +205,7 @@ abstract class AbstractAddressList implements HeaderInterface if (preg_match('/^(.+)@([^@]+)$/', $email, $matches)) { $localPart = $matches[1]; $hostname = $this->idnToAscii($matches[2]); - $email = sprintf('%s@%s', $localPart, $hostname); + $email = sprintf('%s@%s', $localPart, $hostname); } } @@ -187,12 +226,19 @@ abstract class AbstractAddressList implements HeaderInterface return implode(',' . Headers::FOLDING, $emails); } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { $this->encoding = $encoding; return $this; } + /** + * @return string + */ public function getEncoding() { return $this->encoding; @@ -200,8 +246,6 @@ abstract class AbstractAddressList implements HeaderInterface /** * Set address list for this header - * - * @param AddressList $addressList */ public function setAddressList(AddressList $addressList) { @@ -221,11 +265,14 @@ abstract class AbstractAddressList implements HeaderInterface return $this->addressList; } + /** + * @return string + */ public function toString() { $name = $this->getFieldName(); $value = $this->getFieldValue(HeaderInterface::FORMAT_ENCODED); - return (empty($value)) ? '' : sprintf('%s: %s', $name, $value); + return empty($value) ? '' : sprintf('%s: %s', $name, $value); } /** diff --git a/lib/laminas/laminas-mail/src/Header/Bcc.php b/lib/laminas/laminas-mail/src/Header/Bcc.php index 0fd3a12d8..9b37e157f 100644 --- a/lib/laminas/laminas-mail/src/Header/Bcc.php +++ b/lib/laminas/laminas-mail/src/Header/Bcc.php @@ -4,13 +4,9 @@ namespace Laminas\Mail\Header; class Bcc extends AbstractAddressList { - /** - * @var string - */ + /** @var string */ protected $fieldName = 'Bcc'; - /** - * @var string - */ + /** @var string */ protected static $type = 'bcc'; } diff --git a/lib/laminas/laminas-mail/src/Header/Cc.php b/lib/laminas/laminas-mail/src/Header/Cc.php index 625cec41c..96ad58016 100644 --- a/lib/laminas/laminas-mail/src/Header/Cc.php +++ b/lib/laminas/laminas-mail/src/Header/Cc.php @@ -4,6 +4,8 @@ namespace Laminas\Mail\Header; class Cc extends AbstractAddressList { + /** @var string */ protected $fieldName = 'Cc'; + /** @var string */ protected static $type = 'cc'; } diff --git a/lib/laminas/laminas-mail/src/Header/ContentDisposition.php b/lib/laminas/laminas-mail/src/Header/ContentDisposition.php index 586c8eb14..625959e65 100644 --- a/lib/laminas/laminas-mail/src/Header/ContentDisposition.php +++ b/lib/laminas/laminas-mail/src/Header/ContentDisposition.php @@ -5,6 +5,21 @@ namespace Laminas\Mail\Header; use Laminas\Mail\Headers; use Laminas\Mime\Mime; +use function count; +use function explode; +use function gettype; +use function in_array; +use function is_numeric; +use function mb_strlen; +use function mb_substr; +use function sprintf; +use function str_replace; +use function strlen; +use function strpos; +use function strtolower; +use function trim; +use function var_export; + class ContentDisposition implements UnstructuredInterface { /** @@ -14,9 +29,7 @@ class ContentDisposition implements UnstructuredInterface */ public const MAX_PARAMETER_LENGTH = 76; - /** - * @var string - */ + /** @var string */ protected $disposition = 'inline'; /** @@ -26,9 +39,7 @@ class ContentDisposition implements UnstructuredInterface */ protected $encoding = 'ASCII'; - /** - * @var array - */ + /** @var array */ protected $parameters = []; /** @@ -36,32 +47,32 @@ class ContentDisposition implements UnstructuredInterface */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); // check to ensure proper header type for this factory - if (strtolower($name) !== 'content-disposition') { + if (! in_array(strtolower($name), ['contentdisposition', 'content_disposition', 'content-disposition'])) { throw new Exception\InvalidArgumentException('Invalid header line for Content-Disposition string'); } - $value = str_replace(Headers::FOLDING, ' ', $value); + $value = str_replace(Headers::FOLDING, ' ', $value); $parts = explode(';', $value, 2); $header = new static(); $header->setDisposition($parts[0]); if (isset($parts[1])) { - $values = ListParser::parse(trim($parts[1]), [';', '=']); - $length = count($values); + $values = ListParser::parse(trim($parts[1]), [';', '=']); + $length = count($values); $continuedValues = []; for ($i = 0; $i < $length; $i += 2) { $value = $values[$i + 1]; $value = trim($value, "'\" \t\n\r\0\x0B"); - $name = trim($values[$i], "'\" \t\n\r\0\x0B"); + $name = trim($values[$i], "'\" \t\n\r\0\x0B"); if (strpos($name, '*')) { - list($name, $count) = explode('*', $name); + [$name, $count] = explode('*', $name); // allow optional count: // Content-Disposition: attachment; filename*=UTF-8''%64%61%61%6D%69%2D%6D%C3%B5%72%76%2E%6A%70%67 if ($count === "") { @@ -69,11 +80,11 @@ class ContentDisposition implements UnstructuredInterface } if (! is_numeric($count)) { - $type = gettype($count); - $value = var_export($count, 1); + $type = gettype($count); + $value = var_export($count, true); throw new Exception\InvalidArgumentException(sprintf( - "Invalid header line for Content-Disposition string". - " - count expected to be numeric, got %s with value %s", + "Invalid header line for Content-Disposition string" + . " - count expected to be numeric, got %s with value %s", $type, $value )); @@ -92,8 +103,8 @@ class ContentDisposition implements UnstructuredInterface for ($i = 0, $iMax = count($values); $i < $iMax; $i++) { if (! isset($values[$i])) { throw new Exception\InvalidArgumentException( - 'Invalid header line for Content-Disposition string - incomplete continuation'. - '; HeaderLine: '.$headerLine + 'Invalid header line for Content-Disposition string - incomplete continuation' + . '; HeaderLine: ' . $headerLine ); } $value .= $values[$i]; @@ -126,7 +137,7 @@ class ContentDisposition implements UnstructuredInterface foreach ($this->parameters as $attribute => $value) { $valueIsEncoded = false; if (HeaderInterface::FORMAT_ENCODED === $format && ! Mime::isPrintable($value)) { - $value = $this->getEncodedValue($value); + $value = $this->getEncodedValue($value); $valueIsEncoded = true; } @@ -152,13 +163,13 @@ class ContentDisposition implements UnstructuredInterface $value = HeaderWrap::mimeDecodeValue($value); } - $i = 0; + $i = 0; $fullLength = mb_strlen($value, 'UTF-8'); while ($fullLength > 0) { $attributePart = $attribute . '*' . $i++ . '="'; - $attLen = mb_strlen($attributePart, 'UTF-8'); + $attLen = mb_strlen($attributePart, 'UTF-8'); - $subPos = 1; + $subPos = 1; $valuePart = ''; while ($subPos <= $fullLength) { $sub = mb_substr($value, 0, $subPos, 'UTF-8'); @@ -173,9 +184,9 @@ class ContentDisposition implements UnstructuredInterface $valuePart = $sub; } - $value = mb_substr($value, $subPos, null, 'UTF-8'); + $value = mb_substr($value, $subPos, null, 'UTF-8'); $fullLength = mb_strlen($value, 'UTF-8'); - $result .= ';' . Headers::FOLDING . $attributePart . $valuePart . '"'; + $result .= ';' . Headers::FOLDING . $attributePart . $valuePart . '"'; } } } @@ -190,9 +201,9 @@ class ContentDisposition implements UnstructuredInterface protected function getEncodedValue($value) { $configuredEncoding = $this->encoding; - $this->encoding = 'UTF-8'; - $value = HeaderWrap::wrap($value, $this); - $this->encoding = $configuredEncoding; + $this->encoding = 'UTF-8'; + $value = HeaderWrap::wrap($value, $this); + $this->encoding = $configuredEncoding; return $value; } @@ -253,7 +264,7 @@ class ContentDisposition implements UnstructuredInterface */ public function setParameter($name, $value) { - $name = strtolower($name); + $name = strtolower($name); if (! HeaderValue::isValid($name)) { throw new Exception\InvalidArgumentException( diff --git a/lib/laminas/laminas-mail/src/Header/ContentTransferEncoding.php b/lib/laminas/laminas-mail/src/Header/ContentTransferEncoding.php index 3c80e9274..6873f05ae 100644 --- a/lib/laminas/laminas-mail/src/Header/ContentTransferEncoding.php +++ b/lib/laminas/laminas-mail/src/Header/ContentTransferEncoding.php @@ -2,11 +2,17 @@ namespace Laminas\Mail\Header; +use function implode; +use function in_array; +use function sprintf; +use function strtolower; + class ContentTransferEncoding implements HeaderInterface { /** * Allowed Content-Transfer-Encoding parameters specified by RFC 1521 * (reduced set) + * * @var array */ protected static $allowedTransferEncodings = [ @@ -21,23 +27,28 @@ class ContentTransferEncoding implements HeaderInterface */ ]; - /** - * @var string - */ + /** @var string */ protected $transferEncoding; - /** - * @var array - */ + /** @var array */ protected $parameters = []; + /** + * @param string $headerLine + * @return static + */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); // check to ensure proper header type for this factory - if (strtolower($name) !== 'content-transfer-encoding') { + if ( + ! in_array( + strtolower($name), + ['contenttransferencoding', 'content_transfer_encoding', 'content-transfer-encoding'] + ) + ) { throw new Exception\InvalidArgumentException('Invalid header line for Content-Transfer-Encoding string'); } @@ -47,27 +58,43 @@ class ContentTransferEncoding implements HeaderInterface return $header; } + /** + * @return string + */ public function getFieldName() { return 'Content-Transfer-Encoding'; } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { return $this->transferEncoding; } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { // Header must be always in US-ASCII return $this; } + /** + * @return string + */ public function getEncoding() { return 'ASCII'; } + /** + * @return string + */ public function toString() { return 'Content-Transfer-Encoding: ' . $this->getFieldValue(); @@ -87,7 +114,7 @@ class ContentTransferEncoding implements HeaderInterface if (! in_array($transferEncoding, static::$allowedTransferEncodings)) { throw new Exception\InvalidArgumentException(sprintf( - '%s expects one of "'. implode(', ', static::$allowedTransferEncodings) . '"; received "%s"', + '%s expects one of "' . implode(', ', static::$allowedTransferEncodings) . '"; received "%s"', __METHOD__, (string) $transferEncoding )); diff --git a/lib/laminas/laminas-mail/src/Header/ContentType.php b/lib/laminas/laminas-mail/src/Header/ContentType.php index 99fa9ecc5..4ed083b43 100644 --- a/lib/laminas/laminas-mail/src/Header/ContentType.php +++ b/lib/laminas/laminas-mail/src/Header/ContentType.php @@ -5,11 +5,19 @@ namespace Laminas\Mail\Header; use Laminas\Mail\Headers; use Laminas\Mime\Mime; +use function count; +use function explode; +use function implode; +use function in_array; +use function preg_match; +use function sprintf; +use function str_replace; +use function strtolower; +use function trim; + class ContentType implements UnstructuredInterface { - /** - * @var string - */ + /** @var string */ protected $type; /** @@ -19,22 +27,24 @@ class ContentType implements UnstructuredInterface */ protected $encoding = 'ASCII'; - /** - * @var array - */ + /** @var array */ protected $parameters = []; + /** + * @param string $headerLine + * @return static + */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); // check to ensure proper header type for this factory - if (strtolower($name) !== 'content-type') { + if (! in_array(strtolower($name), ['contenttype', 'content_type', 'content-type'])) { throw new Exception\InvalidArgumentException('Invalid header line for Content-Type string'); } - $value = str_replace(Headers::FOLDING, ' ', $value); + $value = str_replace(Headers::FOLDING, ' ', $value); $parts = explode(';', $value, 2); $header = new static(); @@ -54,11 +64,17 @@ class ContentType implements UnstructuredInterface return $header; } + /** + * @return string + */ public function getFieldName() { return 'Content-Type'; } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { $prepared = $this->type; @@ -70,7 +86,7 @@ class ContentType implements UnstructuredInterface foreach ($this->parameters as $attribute => $value) { if (HeaderInterface::FORMAT_ENCODED === $format && ! Mime::isPrintable($value)) { $this->encoding = 'UTF-8'; - $value = HeaderWrap::wrap($value, $this); + $value = HeaderWrap::wrap($value, $this); $this->encoding = 'ASCII'; } @@ -80,17 +96,27 @@ class ContentType implements UnstructuredInterface return implode(';' . Headers::FOLDING, $values); } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { $this->encoding = $encoding; return $this; } + /** + * @return string + */ public function getEncoding() { return $this->encoding; } + /** + * @return string + */ public function toString() { return 'Content-Type: ' . $this->getFieldValue(HeaderInterface::FORMAT_ENCODED); @@ -132,8 +158,8 @@ class ContentType implements UnstructuredInterface * @param string $name * @param string $value * @return ContentType - * @throws Exception\InvalidArgumentException for parameter names that do not follow RFC 2822 - * @throws Exception\InvalidArgumentException for parameter values that do not follow RFC 2822 + * @throws Exception\InvalidArgumentException For parameter names that do not follow RFC 2822. + * @throws Exception\InvalidArgumentException For parameter values that do not follow RFC 2822. */ public function addParameter($name, $value) { diff --git a/lib/laminas/laminas-mail/src/Header/Date.php b/lib/laminas/laminas-mail/src/Header/Date.php index d6d3d732b..32bfef919 100644 --- a/lib/laminas/laminas-mail/src/Header/Date.php +++ b/lib/laminas/laminas-mail/src/Header/Date.php @@ -2,31 +2,36 @@ namespace Laminas\Mail\Header; +use function strtolower; + /** * @todo Add accessors for setting date from DateTime, Laminas\Date, or a string */ class Date implements HeaderInterface { - /** - * @var string - */ + /** @var string */ protected $value; + /** + * @param string $headerLine + * @return static + */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); // check to ensure proper header type for this factory if (strtolower($name) !== 'date') { throw new Exception\InvalidArgumentException('Invalid header line for Date string'); } - $header = new static($value); - - return $header; + return new static($value); } + /** + * @param string $value + */ public function __construct($value) { if (! HeaderValue::isValid($value)) { @@ -35,27 +40,43 @@ class Date implements HeaderInterface $this->value = $value; } + /** + * @return string + */ public function getFieldName() { return 'Date'; } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { return $this->value; } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { // This header must be always in US-ASCII return $this; } + /** + * @return string + */ public function getEncoding() { return 'ASCII'; } + /** + * @return string + */ public function toString() { return 'Date: ' . $this->getFieldValue(); diff --git a/lib/laminas/laminas-mail/src/Header/From.php b/lib/laminas/laminas-mail/src/Header/From.php index 8c9a95130..47c17ae52 100644 --- a/lib/laminas/laminas-mail/src/Header/From.php +++ b/lib/laminas/laminas-mail/src/Header/From.php @@ -4,6 +4,8 @@ namespace Laminas\Mail\Header; class From extends AbstractAddressList { + /** @var string */ protected $fieldName = 'From'; + /** @var string */ protected static $type = 'from'; } diff --git a/lib/laminas/laminas-mail/src/Header/GenericHeader.php b/lib/laminas/laminas-mail/src/Header/GenericHeader.php index f5ca2a1b2..36a76c3d9 100644 --- a/lib/laminas/laminas-mail/src/Header/GenericHeader.php +++ b/lib/laminas/laminas-mail/src/Header/GenericHeader.php @@ -5,16 +5,20 @@ namespace Laminas\Mail\Header; use Laminas\Mail\Header\Exception\InvalidArgumentException; use Laminas\Mime\Mime; +use function count; +use function explode; +use function is_string; +use function ltrim; +use function str_replace; +use function strtoupper; +use function ucwords; + class GenericHeader implements HeaderInterface, UnstructuredInterface { - /** - * @var string - */ + /** @var string */ protected $fieldName; - /** - * @var string - */ + /** @var string */ protected $fieldValue = ''; /** @@ -30,11 +34,9 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface */ public static function fromString($headerLine) { - list($name, $value) = self::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); - $header = new static($name, $value); - - return $header; + [$name, $value] = self::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); + return new static($name, $value); } /** @@ -42,21 +44,21 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface * * @param string $headerLine * @return string[] `name` in the first index and `value` in the second. - * @throws Exception\InvalidArgumentException If header does not match with the format ``name:value`` + * @throws InvalidArgumentException If header does not match with the format ``name:value``. */ public static function splitHeaderLine($headerLine) { $parts = explode(':', $headerLine, 2); if (count($parts) !== 2) { - throw new Exception\InvalidArgumentException('Header must match with the format "name:value"'); + throw new InvalidArgumentException('Header must match with the format "name:value"'); } if (! HeaderName::isValid($parts[0])) { - throw new Exception\InvalidArgumentException('Invalid header name detected'); + throw new InvalidArgumentException('Invalid header name detected'); } if (! HeaderValue::isValid($parts[1])) { - throw new Exception\InvalidArgumentException('Invalid header value detected'); + throw new InvalidArgumentException('Invalid header value detected'); } $parts[1] = ltrim($parts[1]); @@ -93,14 +95,14 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface public function setFieldName($fieldName) { if (! is_string($fieldName) || empty($fieldName)) { - throw new Exception\InvalidArgumentException('Header name must be a string'); + throw new InvalidArgumentException('Header name must be a string'); } // Pre-filter to normalize valid characters, change underscore to dash $fieldName = str_replace(' ', '-', ucwords(str_replace(['_', '-'], ' ', $fieldName))); if (! HeaderName::isValid($fieldName)) { - throw new Exception\InvalidArgumentException( + throw new InvalidArgumentException( 'Header name must be composed of printable US-ASCII characters, except colon.' ); } @@ -109,6 +111,9 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface return $this; } + /** + * @return string + */ public function getFieldName() { return $this->fieldName; @@ -126,7 +131,7 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface $fieldValue = (string) $fieldValue; if (! HeaderWrap::canBeEncoded($fieldValue)) { - throw new Exception\InvalidArgumentException( + throw new InvalidArgumentException( 'Header value must be composed of printable US-ASCII characters and valid folding sequences.' ); } @@ -137,6 +142,9 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface return $this; } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { if (HeaderInterface::FORMAT_ENCODED === $format) { @@ -146,6 +154,10 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface return $this->fieldValue; } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { if ($encoding === $this->encoding) { @@ -173,6 +185,9 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface return $this; } + /** + * @return string + */ public function getEncoding() { if (! $this->encoding) { @@ -182,6 +197,9 @@ class GenericHeader implements HeaderInterface, UnstructuredInterface return $this->encoding; } + /** + * @return string + */ public function toString() { $name = $this->getFieldName(); diff --git a/lib/laminas/laminas-mail/src/Header/GenericMultiHeader.php b/lib/laminas/laminas-mail/src/Header/GenericMultiHeader.php index 9d62a63a0..452c6336f 100644 --- a/lib/laminas/laminas-mail/src/Header/GenericMultiHeader.php +++ b/lib/laminas/laminas-mail/src/Header/GenericMultiHeader.php @@ -2,15 +2,23 @@ namespace Laminas\Mail\Header; +use function explode; +use function implode; +use function strpos; + /** * Generic class for Headers with multiple occurs in the same message */ class GenericMultiHeader extends GenericHeader implements MultipleHeadersInterface { + /** + * @param string $headerLine + * @return array|GenericHeader|GenericMultiHeader|static + */ public static function fromString($headerLine) { - list($fieldName, $fieldValue) = GenericHeader::splitHeaderLine($headerLine); - $fieldValue = HeaderWrap::mimeDecodeValue($fieldValue); + [$fieldName, $fieldValue] = GenericHeader::splitHeaderLine($headerLine); + $fieldValue = HeaderWrap::mimeDecodeValue($fieldValue); if (strpos($fieldValue, ',')) { $headers = []; diff --git a/lib/laminas/laminas-mail/src/Header/HeaderInterface.php b/lib/laminas/laminas-mail/src/Header/HeaderInterface.php index c5e98341c..cb93e3df8 100644 --- a/lib/laminas/laminas-mail/src/Header/HeaderInterface.php +++ b/lib/laminas/laminas-mail/src/Header/HeaderInterface.php @@ -16,15 +16,16 @@ interface HeaderInterface * * @var bool */ - public const FORMAT_RAW = false; + public const FORMAT_RAW = false; /** * Factory to generate a header object from a string * + * @see http://tools.ietf.org/html/rfc2822#section-2.2 + * * @param string $headerLine * @return static * @throws Exception\InvalidArgumentException If the header does not match with RFC 2822 definition. - * @see http://tools.ietf.org/html/rfc2822#section-2.2 */ public static function fromString($headerLine); @@ -38,7 +39,7 @@ interface HeaderInterface /** * Retrieve header value * - * @param bool $format Return the value in Mime::Encoded or in Raw format + * @param HeaderInterface::FORMAT_* $format Return the value in Mime::Encoded or in Raw format * @return string */ public function getFieldValue($format = self::FORMAT_RAW); diff --git a/lib/laminas/laminas-mail/src/Header/HeaderLoader.php b/lib/laminas/laminas-mail/src/Header/HeaderLoader.php index 7e622e37a..a4e5b768a 100644 --- a/lib/laminas/laminas-mail/src/Header/HeaderLoader.php +++ b/lib/laminas/laminas-mail/src/Header/HeaderLoader.php @@ -9,9 +9,7 @@ use Laminas\Loader\PluginClassLoader; */ class HeaderLoader extends PluginClassLoader { - /** - * @var array Pre-aliased Header plugins - */ + /** @var array Pre-aliased Header plugins */ protected $plugins = [ 'bcc' => Bcc::class, 'cc' => Cc::class, diff --git a/lib/laminas/laminas-mail/src/Header/HeaderLocator.php b/lib/laminas/laminas-mail/src/Header/HeaderLocator.php index fcaf2774c..aea477595 100644 --- a/lib/laminas/laminas-mail/src/Header/HeaderLocator.php +++ b/lib/laminas/laminas-mail/src/Header/HeaderLocator.php @@ -4,15 +4,15 @@ declare(strict_types=1); namespace Laminas\Mail\Header; +use function strtolower; + /** * Plugin Class Loader implementation for HTTP headers */ final class HeaderLocator implements HeaderLocatorInterface { - /** - * @var array Pre-aliased Header plugins - */ - private $plugins = [ + /** @var array Pre-aliased Header plugins */ + private array $plugins = [ 'bcc' => Bcc::class, 'cc' => Cc::class, 'contentdisposition' => ContentDisposition::class, diff --git a/lib/laminas/laminas-mail/src/Header/HeaderName.php b/lib/laminas/laminas-mail/src/Header/HeaderName.php index fcfcfcf09..177ab9de2 100644 --- a/lib/laminas/laminas-mail/src/Header/HeaderName.php +++ b/lib/laminas/laminas-mail/src/Header/HeaderName.php @@ -2,6 +2,9 @@ namespace Laminas\Mail\Header; +use function ord; +use function strlen; + final class HeaderName { /** @@ -15,6 +18,7 @@ final class HeaderName * Filter the header name according to RFC 2822 * * @see http://www.rfc-base.org/txt/rfc-2822.txt (section 2.2) + * * @param string $name * @return string */ diff --git a/lib/laminas/laminas-mail/src/Header/HeaderValue.php b/lib/laminas/laminas-mail/src/Header/HeaderValue.php index 175801801..2a2e1028a 100644 --- a/lib/laminas/laminas-mail/src/Header/HeaderValue.php +++ b/lib/laminas/laminas-mail/src/Header/HeaderValue.php @@ -2,6 +2,10 @@ namespace Laminas\Mail\Header; +use function in_array; +use function ord; +use function strlen; + final class HeaderValue { /** @@ -15,6 +19,7 @@ final class HeaderValue * Filter the header value according to RFC 2822 * * @see http://www.rfc-base.org/txt/rfc-2822.txt (section 2.2) + * * @param string $value * @return string */ @@ -44,7 +49,7 @@ final class HeaderValue } $result .= "\r\n "; - $i += 2; + $i += 2; continue; } @@ -58,6 +63,7 @@ final class HeaderValue * Determine if the header value contains any invalid characters. * * @see http://www.rfc-base.org/txt/rfc-2822.txt (section 2.2) + * * @param string $value * @return bool */ diff --git a/lib/laminas/laminas-mail/src/Header/HeaderWrap.php b/lib/laminas/laminas-mail/src/Header/HeaderWrap.php index 483f51a53..b63feb1a9 100644 --- a/lib/laminas/laminas-mail/src/Header/HeaderWrap.php +++ b/lib/laminas/laminas-mail/src/Header/HeaderWrap.php @@ -5,17 +5,35 @@ namespace Laminas\Mail\Header; use Laminas\Mail\Headers; use Laminas\Mime\Mime; +use function array_reduce; +use function explode; +use function extension_loaded; +use function iconv_mime_decode; +use function iconv_mime_encode; +use function imap_mime_header_decode; +use function imap_utf8; +use function implode; +use function str_contains; +use function str_pad; +use function str_starts_with; +use function strlen; +use function strpos; +use function substr; +use function wordwrap; + +use const ICONV_MIME_DECODE_CONTINUE_ON_ERROR; + /** * Utility class used for creating wrapped or MIME-encoded versions of header * values. */ +// phpcs:ignore WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix abstract class HeaderWrap { /** * Wrap a long header line * * @param string $value - * @param HeaderInterface $header * @return string */ public static function wrap($value, HeaderInterface $header) @@ -34,23 +52,33 @@ abstract class HeaderWrap * Wrap at 78 characters or before, based on whitespace. * * @param string $value - * @param HeaderInterface $header * @return string */ protected static function wrapUnstructuredHeader($value, HeaderInterface $header) { - $encoding = $header->getEncoding(); + $headerNameColonSize = strlen($header->getFieldName() . ': '); + $encoding = $header->getEncoding(); + if ($encoding == 'ASCII') { - return wordwrap($value, 78, Headers::FOLDING); + /* + * Before folding the header line, it is necessary to calculate the length of the + * entire header (including the name and colon). We need to put a stub at the + * beginning of the value so that the folding is performed correctly. + */ + $headerLine = str_pad('0', $headerNameColonSize, '0') . $value; + $foldedHeaderLine = wordwrap($headerLine, 78, Headers::FOLDING); + + // Remove the stub and return the header folded value. + return substr($foldedHeaderLine, $headerNameColonSize); } - return static::mimeEncodeValue($value, $encoding, 78); + + return static::mimeEncodeValue($value, $encoding, 78, $headerNameColonSize); } /** * Wrap a structured header line * * @param string $value - * @param StructuredInterface $header * @return string */ protected static function wrapStructuredHeader($value, StructuredInterface $header) @@ -76,14 +104,19 @@ abstract class HeaderWrap * Performs quoted-printable encoding on a value, setting maximum * line-length to 998. * - * @param string $value - * @param string $encoding - * @param int $lineLength maximum line-length, by default 998 + * @param string $value + * @param string $encoding + * @param int $lineLength Maximum line-length, by default 998 + * @param positive-int|0 $firstLineGapSize When folding a line, it is necessary to calculate + * the length of the entire line (together with the + * header name). Therefore, you can specify the header + * name and colon length in this argument to fold the + * string properly. * @return string Returns the mime encode value without the last line ending */ - public static function mimeEncodeValue($value, $encoding, $lineLength = 998) + public static function mimeEncodeValue($value, $encoding, $lineLength = 998, $firstLineGapSize = 0) { - return Mime::encodeQuotedPrintableHeader($value, $encoding, $lineLength, Headers::EOL); + return Mime::encodeQuotedPrintableHeader($value, $encoding, $lineLength, Headers::EOL, $firstLineGapSize); } /** @@ -109,9 +142,7 @@ abstract class HeaderWrap if (self::isNotDecoded($value, $decodedValue) && extension_loaded('imap')) { return array_reduce( imap_mime_header_decode(imap_utf8($value)), - function ($accumulator, $headerPart) { - return $accumulator . $headerPart->text; - }, + static fn($accumulator, $headerPart) => $accumulator . $headerPart->text, '' ); } @@ -119,11 +150,11 @@ abstract class HeaderWrap return $decodedValue; } - private static function isNotDecoded($originalValue, $value) + private static function isNotDecoded(string $originalValue, string $value): bool { - return 0 === strpos($value, '=?') + return str_starts_with($value, '=?') && strlen($value) - 2 === strpos($value, '?=') - && false !== strpos($originalValue, $value); + && str_contains($originalValue, $value); } /** @@ -138,18 +169,18 @@ abstract class HeaderWrap // "test" -> 4 // "x-test: =?ISO-8859-1?B?dGVzdA==?=" -> 33 // 8 +2 +3 +3 -> 16 - $charset = 'UTF-8'; + $charset = 'UTF-8'; $lineLength = strlen($value) * 4 + strlen($charset) + 16; $preferences = [ - 'scheme' => 'Q', - 'input-charset' => $charset, + 'scheme' => 'Q', + 'input-charset' => $charset, 'output-charset' => $charset, - 'line-length' => $lineLength, + 'line-length' => $lineLength, ]; $encoded = iconv_mime_encode('x-test', $value, $preferences); - return (false !== $encoded); + return false !== $encoded; } } diff --git a/lib/laminas/laminas-mail/src/Header/IdentificationField.php b/lib/laminas/laminas-mail/src/Header/IdentificationField.php index 2c5084369..79fd2e428 100644 --- a/lib/laminas/laminas-mail/src/Header/IdentificationField.php +++ b/lib/laminas/laminas-mail/src/Header/IdentificationField.php @@ -4,24 +4,27 @@ namespace Laminas\Mail\Header; use Laminas\Mail\Headers; +use function array_map; +use function explode; +use function implode; +use function preg_match; +use function sprintf; +use function strtolower; +use function trim; + /** * @see https://tools.ietf.org/html/rfc5322#section-3.6.4 */ +// phpcs:ignore WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix abstract class IdentificationField implements HeaderInterface { - /** - * @var string lower case field name - */ + /** @var string lower case field name */ protected static $type; - /** - * @var string[] - */ + /** @var string[] */ protected $messageIds; - /** - * @var string - */ + /** @var string */ protected $fieldName; /** @@ -30,11 +33,11 @@ abstract class IdentificationField implements HeaderInterface */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); if (strtolower($name) !== static::$type) { throw new Exception\InvalidArgumentException(sprintf( 'Invalid header line for "%s" string', - __CLASS__ + self::class )); } @@ -69,14 +72,11 @@ abstract class IdentificationField implements HeaderInterface } /** - * @param bool $format - * @return string + * @inheritDoc */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { - return implode(Headers::FOLDING, array_map(function ($id) { - return sprintf('<%s>', $id); - }, $this->messageIds)); + return implode(Headers::FOLDING, array_map(static fn($id) => sprintf('<%s>', $id), $this->messageIds)); } /** @@ -114,7 +114,8 @@ abstract class IdentificationField implements HeaderInterface public function setIds($ids) { foreach ($ids as $id) { - if (! HeaderValue::isValid($id) + if ( + ! HeaderValue::isValid($id) || preg_match("/[\r\n]/", $id) ) { throw new Exception\InvalidArgumentException('Invalid ID detected'); diff --git a/lib/laminas/laminas-mail/src/Header/InReplyTo.php b/lib/laminas/laminas-mail/src/Header/InReplyTo.php index 6698d441a..2a00bd603 100644 --- a/lib/laminas/laminas-mail/src/Header/InReplyTo.php +++ b/lib/laminas/laminas-mail/src/Header/InReplyTo.php @@ -4,6 +4,8 @@ namespace Laminas\Mail\Header; class InReplyTo extends IdentificationField { + /** @var string */ protected $fieldName = 'In-Reply-To'; + /** @var string */ protected static $type = 'in-reply-to'; } diff --git a/lib/laminas/laminas-mail/src/Header/ListParser.php b/lib/laminas/laminas-mail/src/Header/ListParser.php index bc3dcc070..d6dcf0d98 100644 --- a/lib/laminas/laminas-mail/src/Header/ListParser.php +++ b/lib/laminas/laminas-mail/src/Header/ListParser.php @@ -3,6 +3,7 @@ namespace Laminas\Mail\Header; use function in_array; +use function strlen; /** * @internal @@ -35,14 +36,14 @@ class ListParser // If we are in an escape sequence, append the character and continue. if ($inEscape) { $currentValue .= $char; - $inEscape = false; + $inEscape = false; continue; } // If we are not in a quoted string, and have a delimiter, append // the current value to the list, and reset the current value. if (in_array($char, $delims, true) && ! $inQuote) { - $values [] = $currentValue; + $values [] = $currentValue; $currentValue = ''; continue; } @@ -66,7 +67,7 @@ class ListParser // we reset our quote status and the currently opened quote // delimiter. if ($char === $currentQuoteDelim) { - $inQuote = false; + $inQuote = false; $currentQuoteDelim = null; continue; } @@ -78,7 +79,7 @@ class ListParser } // Otherwise, we're starting a quoted string. - $inQuote = true; + $inQuote = true; $currentQuoteDelim = $char; } diff --git a/lib/laminas/laminas-mail/src/Header/MessageId.php b/lib/laminas/laminas-mail/src/Header/MessageId.php index 4f9f9db44..530ed68d3 100644 --- a/lib/laminas/laminas-mail/src/Header/MessageId.php +++ b/lib/laminas/laminas-mail/src/Header/MessageId.php @@ -2,17 +2,29 @@ namespace Laminas\Mail\Header; +use function getmypid; +use function mt_rand; +use function php_uname; +use function preg_match; +use function sha1; +use function sprintf; +use function strtolower; +use function time; +use function trim; + class MessageId implements HeaderInterface { - /** - * @var string - */ + /** @var string */ protected $messageId; + /** + * @param string $headerLine + * @return static + */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); // check to ensure proper header type for this factory if (strtolower($name) !== 'message-id') { @@ -25,27 +37,43 @@ class MessageId implements HeaderInterface return $header; } + /** + * @return string + */ public function getFieldName() { return 'Message-ID'; } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { return $this->messageId; } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { // This header must be always in US-ASCII return $this; } + /** + * @return string + */ public function getEncoding() { return 'ASCII'; } + /** + * @return string + */ public function toString() { return 'Message-ID: ' . $this->getFieldValue(); @@ -65,7 +93,8 @@ class MessageId implements HeaderInterface $id = trim($id, '<>'); } - if (! HeaderValue::isValid($id) + if ( + ! HeaderValue::isValid($id) || preg_match("/[\r\n]/", $id) ) { throw new Exception\InvalidArgumentException('Invalid ID detected'); diff --git a/lib/laminas/laminas-mail/src/Header/MimeVersion.php b/lib/laminas/laminas-mail/src/Header/MimeVersion.php index 435029470..dac333ee9 100644 --- a/lib/laminas/laminas-mail/src/Header/MimeVersion.php +++ b/lib/laminas/laminas-mail/src/Header/MimeVersion.php @@ -2,20 +2,26 @@ namespace Laminas\Mail\Header; +use function in_array; +use function preg_match; +use function strtolower; + class MimeVersion implements HeaderInterface { - /** - * @var string Version string - */ + /** @var string Version string */ protected $version = '1.0'; + /** + * @param string $headerLine + * @return static + */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); // check to ensure proper header type for this factory - if (strtolower($name) !== 'mime-version') { + if (! in_array(strtolower($name), ['mimeversion', 'mime_version', 'mime-version'])) { throw new Exception\InvalidArgumentException('Invalid header line for MIME-Version string'); } @@ -28,27 +34,43 @@ class MimeVersion implements HeaderInterface return $header; } + /** + * @return string + */ public function getFieldName() { return 'MIME-Version'; } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { return $this->version; } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { // This header must be always in US-ASCII return $this; } + /** + * @return string + */ public function getEncoding() { return 'ASCII'; } + /** + * @return string + */ public function toString() { return 'MIME-Version: ' . $this->getFieldValue(); diff --git a/lib/laminas/laminas-mail/src/Header/Received.php b/lib/laminas/laminas-mail/src/Header/Received.php index 037b6bc79..d26389892 100644 --- a/lib/laminas/laminas-mail/src/Header/Received.php +++ b/lib/laminas/laminas-mail/src/Header/Received.php @@ -4,31 +4,37 @@ namespace Laminas\Mail\Header; use Laminas\Mail\Headers; +use function implode; +use function strtolower; + /** * @todo Allow setting date from DateTime, Laminas\Date, or string */ class Received implements HeaderInterface, MultipleHeadersInterface { - /** - * @var string - */ + /** @var string */ protected $value; + /** + * @param string $headerLine + * @return static + */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); // check to ensure proper header type for this factory if (strtolower($name) !== 'received') { throw new Exception\InvalidArgumentException('Invalid header line for Received string'); } - $header = new static($value); - - return $header; + return new static($value); } + /** + * @param string $value + */ public function __construct($value = '') { if (! HeaderValue::isValid($value)) { @@ -37,27 +43,43 @@ class Received implements HeaderInterface, MultipleHeadersInterface $this->value = $value; } + /** + * @return string + */ public function getFieldName() { return 'Received'; } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { return $this->value; } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { // This header must be always in US-ASCII return $this; } + /** + * @return string + */ public function getEncoding() { return 'ASCII'; } + /** + * @return string + */ public function toString() { return 'Received: ' . $this->getFieldValue(); diff --git a/lib/laminas/laminas-mail/src/Header/References.php b/lib/laminas/laminas-mail/src/Header/References.php index 9b7b92fe7..f9701408f 100644 --- a/lib/laminas/laminas-mail/src/Header/References.php +++ b/lib/laminas/laminas-mail/src/Header/References.php @@ -4,6 +4,8 @@ namespace Laminas\Mail\Header; class References extends IdentificationField { + /** @var string */ protected $fieldName = 'References'; + /** @var string */ protected static $type = 'references'; } diff --git a/lib/laminas/laminas-mail/src/Header/ReplyTo.php b/lib/laminas/laminas-mail/src/Header/ReplyTo.php index 9a8b9e7f4..05b0021d1 100644 --- a/lib/laminas/laminas-mail/src/Header/ReplyTo.php +++ b/lib/laminas/laminas-mail/src/Header/ReplyTo.php @@ -4,6 +4,10 @@ namespace Laminas\Mail\Header; class ReplyTo extends AbstractAddressList { + /** @var string */ protected $fieldName = 'Reply-To'; + /** @var string */ protected static $type = 'reply-to'; + /** @var string[] */ + protected static $typeAliases = ['replyto', 'reply_to']; } diff --git a/lib/laminas/laminas-mail/src/Header/Sender.php b/lib/laminas/laminas-mail/src/Header/Sender.php index fdc253315..c298bcad8 100644 --- a/lib/laminas/laminas-mail/src/Header/Sender.php +++ b/lib/laminas/laminas-mail/src/Header/Sender.php @@ -3,8 +3,17 @@ namespace Laminas\Mail\Header; use Laminas\Mail; +use Laminas\Mail\Address\AddressInterface; use Laminas\Mime\Mime; +use function gettype; +use function is_object; +use function is_string; +use function preg_match; +use function sprintf; +use function strtolower; +use function trim; + /** * Sender header class methods. * @@ -13,9 +22,7 @@ use Laminas\Mime\Mime; */ class Sender implements HeaderInterface { - /** - * @var \Laminas\Mail\Address\AddressInterface - */ + /** @var AddressInterface */ protected $address; /** @@ -25,21 +32,26 @@ class Sender implements HeaderInterface */ protected $encoding; + /** + * @param string $headerLine + * @return static + */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); // check to ensure proper header type for this factory if (strtolower($name) !== 'sender') { throw new Exception\InvalidArgumentException('Invalid header name for Sender string'); } - $header = new static(); + $header = new static(); /** * matches the header value so that the email must be enclosed by < > when a name is present * 'name' and 'email' capture groups correspond respectively to 'display-name' and 'addr-spec' in the ABNF + * * @see https://tools.ietf.org/html/rfc5322#section-3.4 */ $hasMatches = preg_match( @@ -63,11 +75,17 @@ class Sender implements HeaderInterface return $header; } + /** + * @return string + */ public function getFieldName() { return 'Sender'; } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { if (! $this->address instanceof Mail\Address\AddressInterface) { @@ -81,7 +99,7 @@ class Sender implements HeaderInterface if ($format == HeaderInterface::FORMAT_ENCODED) { $encoding = $this->getEncoding(); if ('ASCII' !== $encoding) { - $name = HeaderWrap::mimeEncodeValue($name, $encoding); + $name = HeaderWrap::mimeEncodeValue($name, $encoding); } } $email = sprintf('%s %s', $name, $email); @@ -90,12 +108,19 @@ class Sender implements HeaderInterface return $email; } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { $this->encoding = $encoding; return $this; } + /** + * @return string + */ public function getEncoding() { if (! $this->encoding) { @@ -107,6 +132,9 @@ class Sender implements HeaderInterface return $this->encoding; } + /** + * @return string + */ public function toString() { return 'Sender: ' . $this->getFieldValue(HeaderInterface::FORMAT_ENCODED); @@ -115,7 +143,7 @@ class Sender implements HeaderInterface /** * Set the address used in this header * - * @param string|\Laminas\Mail\Address\AddressInterface $emailOrAddress + * @param string|AddressInterface $emailOrAddress * @param null|string $name * @throws Exception\InvalidArgumentException * @return Sender @@ -128,7 +156,7 @@ class Sender implements HeaderInterface throw new Exception\InvalidArgumentException(sprintf( '%s expects a string or AddressInterface object; received "%s"', __METHOD__, - (is_object($emailOrAddress) ? get_class($emailOrAddress) : gettype($emailOrAddress)) + is_object($emailOrAddress) ? $emailOrAddress::class : gettype($emailOrAddress) )); } $this->address = $emailOrAddress; @@ -138,7 +166,7 @@ class Sender implements HeaderInterface /** * Retrieve the internal address from this header * - * @return \Laminas\Mail\Address\AddressInterface|null + * @return AddressInterface|null */ public function getAddress() { diff --git a/lib/laminas/laminas-mail/src/Header/Subject.php b/lib/laminas/laminas-mail/src/Header/Subject.php index 48074237f..811af24f4 100644 --- a/lib/laminas/laminas-mail/src/Header/Subject.php +++ b/lib/laminas/laminas-mail/src/Header/Subject.php @@ -4,6 +4,9 @@ namespace Laminas\Mail\Header; use Laminas\Mime\Mime; +use function strtolower; +use function strtoupper; + /** * Subject header class methods. * @@ -12,9 +15,7 @@ use Laminas\Mime\Mime; */ class Subject implements UnstructuredInterface { - /** - * @var string - */ + /** @var string */ protected $subject = ''; /** @@ -24,10 +25,14 @@ class Subject implements UnstructuredInterface */ protected $encoding; + /** + * @param string $headerLine + * @return static + */ public static function fromString($headerLine) { - list($name, $value) = GenericHeader::splitHeaderLine($headerLine); - $value = HeaderWrap::mimeDecodeValue($value); + [$name, $value] = GenericHeader::splitHeaderLine($headerLine); + $value = HeaderWrap::mimeDecodeValue($value); // check to ensure proper header type for this factory if (strtolower($name) !== 'subject') { @@ -40,11 +45,17 @@ class Subject implements UnstructuredInterface return $header; } + /** + * @return string + */ public function getFieldName() { return 'Subject'; } + /** + * @inheritDoc + */ public function getFieldValue($format = HeaderInterface::FORMAT_RAW) { if (HeaderInterface::FORMAT_ENCODED === $format) { @@ -54,6 +65,10 @@ class Subject implements UnstructuredInterface return $this->subject; } + /** + * @param string $encoding + * @return self + */ public function setEncoding($encoding) { if ($encoding === $this->encoding) { @@ -81,6 +96,9 @@ class Subject implements UnstructuredInterface return $this; } + /** + * @return string + */ public function getEncoding() { if (! $this->encoding) { @@ -90,6 +108,10 @@ class Subject implements UnstructuredInterface return $this->encoding; } + /** + * @param string $subject + * @return self + */ public function setSubject($subject) { $subject = (string) $subject; @@ -106,6 +128,9 @@ class Subject implements UnstructuredInterface return $this; } + /** + * @return string + */ public function toString() { return 'Subject: ' . $this->getFieldValue(HeaderInterface::FORMAT_ENCODED); diff --git a/lib/laminas/laminas-mail/src/Header/To.php b/lib/laminas/laminas-mail/src/Header/To.php index b3f50dead..42355460c 100644 --- a/lib/laminas/laminas-mail/src/Header/To.php +++ b/lib/laminas/laminas-mail/src/Header/To.php @@ -4,6 +4,8 @@ namespace Laminas\Mail\Header; class To extends AbstractAddressList { + /** @var string */ protected $fieldName = 'To'; + /** @var string */ protected static $type = 'to'; } diff --git a/lib/laminas/laminas-mail/src/Headers.php b/lib/laminas/laminas-mail/src/Headers.php index 23475bc3f..840edec50 100644 --- a/lib/laminas/laminas-mail/src/Headers.php +++ b/lib/laminas/laminas-mail/src/Headers.php @@ -10,13 +10,40 @@ use Iterator; use Laminas\Loader\PluginClassLocator; use Laminas\Mail\Header\GenericHeader; use Laminas\Mail\Header\HeaderInterface; +use Laminas\Mail\Header\HeaderLocatorInterface; use ReturnTypeWillChange; use Traversable; +use function array_keys; +use function array_shift; +use function assert; +use function count; +use function current; +use function explode; +use function gettype; +use function in_array; +use function is_array; +use function is_int; +use function is_object; +use function is_string; +use function key; +use function next; +use function preg_match; +use function reset; +use function sprintf; +use function str_replace; +use function strtolower; +use function trigger_error; +use function trim; + +use const E_USER_DEPRECATED; + /** * Basic mail headers collection functionality * * Handles aggregation of headers + * + * @implements Iterator */ class Headers implements Countable, Iterator { @@ -26,10 +53,7 @@ class Headers implements Countable, Iterator /** @var string Start of Line when folding */ public const FOLDING = "\r\n "; - /** - * @var null|Header\HeaderLocatorInterface - */ - private $headerLocator; + private ?HeaderLocatorInterface $headerLocator = null; /** * @todo Remove for 3.0.0. @@ -37,14 +61,10 @@ class Headers implements Countable, Iterator */ protected $pluginClassLoader; - /** - * @var array key names for $headers array - */ + /** @var list key names for $headers array */ protected $headersKeys = []; - /** - * @var Header\HeaderInterface[] instances - */ + /** @var list instances */ protected $headers = []; /** @@ -62,18 +82,18 @@ class Headers implements Countable, Iterator * will be lazy loaded) * * @param string $string - * @param string $EOL EOL string; defaults to {@link EOL} - * @throws Exception\RuntimeException + * @param string $eol EOL string; defaults to {@link EOL} * @return Headers + * @throws Exception\RuntimeException */ - public static function fromString($string, $EOL = self::EOL) + public static function fromString($string, $eol = self::EOL) { $headers = new static(); $currentLine = ''; $emptyLine = 0; // iterate the header lines, some might be continuations - $lines = explode($EOL, $string); + $lines = explode($eol, $string); $total = count($lines); for ($i = 0; $i < $total; $i += 1) { $line = $lines[$i]; @@ -128,6 +148,7 @@ class Headers implements Countable, Iterator * Set an alternate PluginClassLocator implementation for loading header classes. * * @deprecated since 2.12.0 + * * @todo Remove for version 3.0.0 * @return $this */ @@ -137,7 +158,7 @@ class Headers implements Countable, Iterator @trigger_error(sprintf( 'Since laminas/laminas-mail 2.12.0: Usage of %s is deprecated; use %s::setHeaderLocator() instead', __METHOD__, - __CLASS__ + self::class ), E_USER_DEPRECATED); $this->pluginClassLoader = $pluginClassLoader; @@ -150,6 +171,7 @@ class Headers implements Countable, Iterator * Lazyloads a Header\HeaderLoader if necessary. * * @deprecated since 2.12.0 + * * @todo Remove for version 3.0.0 * @return PluginClassLocator */ @@ -159,7 +181,7 @@ class Headers implements Countable, Iterator @trigger_error(sprintf( 'Since laminas/laminas-mail 2.12.0: Usage of %s is deprecated; use %s::getHeaderLocator() instead', __METHOD__, - __CLASS__ + self::class ), E_USER_DEPRECATED); if (! $this->pluginClassLoader) { @@ -174,11 +196,14 @@ class Headers implements Countable, Iterator * * Lazyloads a Header\HeaderLocator instance if necessary. */ - public function getHeaderLocator(): Header\HeaderLocatorInterface + public function getHeaderLocator(): HeaderLocatorInterface { if (! $this->headerLocator) { $this->setHeaderLocator(new Header\HeaderLocator()); } + + assert($this->headerLocator instanceof HeaderLocatorInterface); + return $this->headerLocator; } @@ -186,7 +211,7 @@ class Headers implements Countable, Iterator * @todo Return self when we update to 7.4 or later as minimum PHP version. * @return $this */ - public function setHeaderLocator(Header\HeaderLocatorInterface $headerLocator) + public function setHeaderLocator(HeaderLocatorInterface $headerLocator) { $this->headerLocator = $headerLocator; return $this; @@ -231,7 +256,7 @@ class Headers implements Countable, Iterator if (! is_array($headers) && ! $headers instanceof Traversable) { throw new Exception\InvalidArgumentException(sprintf( 'Expected array or Traversable; received "%s"', - (is_object($headers) ? get_class($headers) : gettype($headers)) + is_object($headers) ? $headers::class : gettype($headers) )); } @@ -271,9 +296,9 @@ class Headers implements Countable, Iterator throw new Exception\InvalidArgumentException(sprintf( '%s expects its first argument to be a string; received "%s"', __METHOD__, - (is_object($headerFieldNameOrLine) - ? get_class($headerFieldNameOrLine) - : gettype($headerFieldNameOrLine)) + is_object($headerFieldNameOrLine) + ? $headerFieldNameOrLine::class + : gettype($headerFieldNameOrLine) )); } @@ -288,7 +313,7 @@ class Headers implements Countable, Iterator $this->addHeader(Header\GenericMultiHeader::fromString($headerFieldNameOrLine . ':' . $i)); } } else { - $this->addHeader(Header\GenericHeader::fromString($headerFieldNameOrLine . ':' . $fieldValue)); + $this->addHeader(GenericHeader::fromString($headerFieldNameOrLine . ':' . $fieldValue)); } return $this; @@ -297,14 +322,13 @@ class Headers implements Countable, Iterator /** * Add a Header\Interface to this container, for raw values see {@link addHeaderLine()} and {@link addHeaders()} * - * @param Header\HeaderInterface $header * @return Headers */ - public function addHeader(Header\HeaderInterface $header) + public function addHeader(HeaderInterface $header) { - $key = $this->normalizeFieldName($header->getFieldName()); + $key = $this->normalizeFieldName($header->getFieldName()); $this->headersKeys[] = $key; - $this->headers[] = $header; + $this->headers[] = $header; if ($this->getEncoding() !== 'ASCII') { $header->setEncoding($this->getEncoding()); } @@ -314,7 +338,7 @@ class Headers implements Countable, Iterator /** * Remove a Header from the container * - * @param string|Header\HeaderInterface field name or specific header instance to remove + * @param string|HeaderInterface $instanceOrFieldName field name or specific header instance to remove * @return bool */ public function removeHeader($instanceOrFieldName) @@ -323,8 +347,8 @@ class Headers implements Countable, Iterator throw new Exception\InvalidArgumentException(sprintf( '%s requires a string or %s instance; received %s', __METHOD__, - Header\HeaderInterface::class, - is_object($instanceOrFieldName) ? get_class($instanceOrFieldName) : gettype($instanceOrFieldName) + HeaderInterface::class, + is_object($instanceOrFieldName) ? $instanceOrFieldName::class : gettype($instanceOrFieldName) )); } @@ -333,7 +357,7 @@ class Headers implements Countable, Iterator } if (is_string($instanceOrFieldName)) { - $key = $this->normalizeFieldName($instanceOrFieldName); + $key = $this->normalizeFieldName($instanceOrFieldName); $indexes = array_keys($this->headersKeys, $key, true); } @@ -365,13 +389,13 @@ class Headers implements Countable, Iterator * Get all headers of a certain name/type * * @param string $name - * @return bool|ArrayIterator|Header\HeaderInterface Returns false if there is no headers with $name in this + * @return false|ArrayIterator|HeaderInterface Returns false if there is no headers with $name in this * contain, an ArrayIterator if the header is a MultipleHeadersInterface instance and finally returns * HeaderInterface for the rest of cases. */ public function get($name) { - $key = $this->normalizeFieldName($name); + $key = $this->normalizeFieldName($name); $results = []; foreach (array_keys($this->headersKeys, $key, true) as $index) { @@ -409,7 +433,6 @@ class Headers implements Countable, Iterator /** * Advance the pointer for this object as an iterator - * */ #[ReturnTypeWillChange] public function next() @@ -436,12 +459,11 @@ class Headers implements Countable, Iterator #[ReturnTypeWillChange] public function valid() { - return (current($this->headers) !== false); + return current($this->headers) !== false; } /** * Reset the internal pointer for this object as an iterator - * */ #[ReturnTypeWillChange] public function rewind() @@ -452,7 +474,7 @@ class Headers implements Countable, Iterator /** * Return the current value for this iterator, lazy loading it if need be * - * @return Header\HeaderInterface + * @return HeaderInterface */ #[ReturnTypeWillChange] public function current() @@ -500,13 +522,12 @@ class Headers implements Countable, Iterator * Return the headers container as an array * * @param bool $format Return the values in Mime::Encoded or in Raw format - * @return array + * @return array|string> * @todo determine how to produce single line headers, if they are supported */ - public function toArray($format = Header\HeaderInterface::FORMAT_RAW) + public function toArray($format = HeaderInterface::FORMAT_RAW) { $headers = []; - /* @var $header Header\HeaderInterface */ foreach ($this->headers as $header) { if ($header instanceof Header\MultipleHeadersInterface) { $name = $header->getFieldName(); @@ -528,6 +549,7 @@ class Headers implements Countable, Iterator */ public function forceLoading() { + // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedForeach foreach ($this as $item) { // $item should now be loaded } @@ -538,11 +560,11 @@ class Headers implements Countable, Iterator * Create Header object from header line * * @param string $headerLine - * @return Header\HeaderInterface|Header\HeaderInterface[] + * @return HeaderInterface|HeaderInterface[] */ public function loadHeader($headerLine) { - list($name) = Header\GenericHeader::splitHeaderLine($headerLine); + [$name] = GenericHeader::splitHeaderLine($headerLine); /** @var HeaderInterface $class */ $class = $this->resolveHeaderClass($name); @@ -550,14 +572,14 @@ class Headers implements Countable, Iterator } /** - * @param $index + * @param array-key $index * @return mixed */ protected function lazyLoadHeader($index) { $current = $this->headers[$index]; - $key = $this->headersKeys[$index]; + $key = $this->headersKeys[$index]; /** @var GenericHeader $class */ $class = $this->resolveHeaderClass($key); @@ -595,13 +617,13 @@ class Headers implements Countable, Iterator /** * @param string $key - * @return string + * @return null|string */ private function resolveHeaderClass($key) { if ($this->pluginClassLoader) { - return $this->pluginClassLoader->load($key) ?: Header\GenericHeader::class; + return $this->pluginClassLoader->load($key) ?: GenericHeader::class; } - return $this->getHeaderLocator()->get($key, Header\GenericHeader::class); + return $this->getHeaderLocator()->get($key, GenericHeader::class); } } diff --git a/lib/laminas/laminas-mail/src/Message.php b/lib/laminas/laminas-mail/src/Message.php index 67f429d67..f0e748407 100644 --- a/lib/laminas/laminas-mail/src/Message.php +++ b/lib/laminas/laminas-mail/src/Message.php @@ -2,6 +2,7 @@ namespace Laminas\Mail; +use ArrayIterator; use Laminas\Mail\Header\Bcc; use Laminas\Mail\Header\Cc; use Laminas\Mail\Header\ContentType; @@ -13,6 +14,16 @@ use Laminas\Mail\Header\To; use Laminas\Mime; use Traversable; +use function array_shift; +use function count; +use function date; +use function gettype; +use function is_array; +use function is_object; +use function is_string; +use function method_exists; +use function sprintf; + class Message { /** @@ -22,9 +33,7 @@ class Message */ protected $body; - /** - * @var Headers - */ + /** @var Headers */ protected $headers; /** @@ -78,7 +87,6 @@ class Message /** * Compose headers * - * @param Headers $headers * @return Message */ public function setHeaders(Headers $headers) @@ -297,11 +305,9 @@ class Message /** * setSender * - * @param mixed $emailOrAddress - * @param mixed $name * @return Message */ - public function setSender($emailOrAddress, $name = null) + public function setSender(mixed $emailOrAddress, mixed $name = null) { /** @var Sender $header */ $header = $this->getHeaderByName('sender', Sender::class); @@ -385,7 +391,7 @@ class Message . ' object of type "%s" received', __METHOD__, Mime\Message::class, - get_class($body) + $body::class )); } } @@ -402,7 +408,7 @@ class Message // Multipart content headers if ($this->body->isMultiPart()) { - $mime = $this->body->getMime(); + $mime = $this->body->getMime(); /** @var ContentType $header */ $header = $this->getHeaderByName('content-type', ContentType::class); @@ -451,7 +457,7 @@ class Message * * @param string $headerName * @param string $headerClass - * @return Header\HeaderInterface|\ArrayIterator header instance or collection of headers + * @return Header\HeaderInterface|ArrayIterator header instance or collection of headers */ protected function getHeaderByName($headerName, $headerClass) { @@ -492,7 +498,7 @@ class Message if (! $header instanceof Header\AbstractAddressList) { throw new Exception\DomainException(sprintf( 'Cannot grab address list from header of type "%s"; not an AbstractAddressList implementation', - get_class($header) + $header::class )); } return $header->getAddressList(); @@ -503,7 +509,6 @@ class Message * * Proxied to this from addFrom, addTo, addCc, addBcc, and addReplyTo. * - * @param AddressList $addressList * @param string|Address\AddressInterface|array|AddressList|Traversable $emailOrAddressOrList * @param null|string $name * @param string $callingMethod @@ -526,7 +531,7 @@ class Message '%s expects a string, AddressInterface, array, AddressList, or Traversable as its first argument;' . ' received "%s"', $callingMethod, - (is_object($emailOrAddressOrList) ? get_class($emailOrAddressOrList) : gettype($emailOrAddressOrList)) + is_object($emailOrAddressOrList) ? $emailOrAddressOrList::class : gettype($emailOrAddressOrList) )); } @@ -566,9 +571,9 @@ class Message $headers = null; $content = null; Mime\Decode::splitMessage($rawMessage, $headers, $content, Headers::EOL); - if ($headers->has('mime-version')) { + // if ($headers->has('mime-version')) { // todo - restore body to mime\message - } + // } $message->setHeaders($headers); $message->setBody($content); return $message; diff --git a/lib/laminas/laminas-mail/src/MessageFactory.php b/lib/laminas/laminas-mail/src/MessageFactory.php index faf40fe76..e5ebcda11 100644 --- a/lib/laminas/laminas-mail/src/MessageFactory.php +++ b/lib/laminas/laminas-mail/src/MessageFactory.php @@ -4,6 +4,15 @@ namespace Laminas\Mail; use Traversable; +use function gettype; +use function is_array; +use function is_object; +use function method_exists; +use function sprintf; +use function str_replace; +use function strtr; +use function ucwords; + class MessageFactory { /** @@ -16,7 +25,7 @@ class MessageFactory throw new Exception\InvalidArgumentException(sprintf( '"%s" expects an array or Traversable; received "%s"', __METHOD__, - (is_object($options) ? get_class($options) : gettype($options)) + is_object($options) ? $options::class : gettype($options) )); } diff --git a/lib/laminas/laminas-mail/src/Protocol/AbstractProtocol.php b/lib/laminas/laminas-mail/src/Protocol/AbstractProtocol.php index 304dfe15e..9dfe67c33 100644 --- a/lib/laminas/laminas-mail/src/Protocol/AbstractProtocol.php +++ b/lib/laminas/laminas-mail/src/Protocol/AbstractProtocol.php @@ -3,6 +3,28 @@ namespace Laminas\Mail\Protocol; use Laminas\Validator; +use Laminas\Validator\ValidatorChain; + +use function array_shift; +use function count; +use function fclose; +use function fgets; +use function fwrite; +use function implode; +use function in_array; +use function is_array; +use function is_resource; +use function preg_split; +use function restore_error_handler; +use function set_error_handler; +use function sprintf; +use function str_starts_with; +use function stream_get_meta_data; +use function stream_set_timeout; +use function stream_socket_client; + +use const E_WARNING; +use const PREG_SPLIT_DELIM_CAPTURE; /** * Provides low-level methods for concrete adapters to communicate with a @@ -24,60 +46,57 @@ abstract class AbstractProtocol /** * Maximum of the transaction log + * * @var int */ protected $maximumLog = 64; /** * Hostname or IP address of remote server + * * @var string */ protected $host; - /** - * Port number of connection - * @var int - */ - protected $port; - /** * Instance of Laminas\Validator\ValidatorChain to check hostnames - * @var \Laminas\Validator\ValidatorChain + * + * @var ValidatorChain */ protected $validHost; /** * Socket connection resource + * * @var null|resource */ protected $socket; /** * Last request sent to server + * * @var string */ protected $request; /** * Array of server responses to last request + * * @var array */ protected $response; /** * Log of mail requests and server responses for a session - * @var array */ - private $log = []; + private array $log = []; /** - * Constructor. - * * @param string $host OPTIONAL Hostname of remote connection (default: 127.0.0.1) * @param int $port OPTIONAL Port number (default: null) * @throws Exception\RuntimeException */ - public function __construct($host = '127.0.0.1', $port = null) + public function __construct($host = '127.0.0.1', protected $port = null) { $this->validHost = new Validator\ValidatorChain(); $this->validHost->attach(new Validator\Hostname(Validator\Hostname::ALLOW_ALL)); @@ -87,12 +106,10 @@ abstract class AbstractProtocol } $this->host = $host; - $this->port = $port; } /** * Class destructor to cleanup open resources - * */ public function __destruct() { @@ -159,7 +176,6 @@ abstract class AbstractProtocol /** * Reset the transaction log - * */ public function resetLog() { @@ -187,6 +203,7 @@ abstract class AbstractProtocol * An example $remote string may be 'tcp://mail.example.com:25' or 'ssh://hostname.com:2222' * * @deprecated Since 1.12.0. Implementations should use the ProtocolTrait::setupSocket() method instead. + * * @todo Remove for 3.0.0. * @param string $remote Remote * @throws Exception\RuntimeException @@ -200,7 +217,7 @@ abstract class AbstractProtocol // open connection set_error_handler( - function ($error, $message = '') { + static function ($error, $message = '') { throw new Exception\RuntimeException(sprintf('Could not open socket: %s', $message), $error); }, E_WARNING @@ -224,7 +241,6 @@ abstract class AbstractProtocol /** * Disconnect from remote host and free resource - * */ // @codingStandardsIgnoreLine PSR2.Methods.MethodDeclaration.Underscore protected function _disconnect() @@ -316,15 +332,15 @@ abstract class AbstractProtocol protected function _expect($code, $timeout = null) { $this->response = []; - $errMsg = ''; + $errMsg = ''; if (! is_array($code)) { $code = [$code]; } do { - $this->response[] = $result = $this->_receive($timeout); - list($cmd, $more, $msg) = preg_split('/([\s-]+)/', $result, 2, PREG_SPLIT_DELIM_CAPTURE); + $this->response[] = $result = $this->_receive($timeout); + [$cmd, $more, $msg] = preg_split('/([\s-]+)/', $result, 2, PREG_SPLIT_DELIM_CAPTURE); if ($errMsg !== '') { $errMsg .= ' ' . $msg; @@ -333,7 +349,7 @@ abstract class AbstractProtocol } // The '-' message prefix indicates an information string instead of a response string. - } while (strpos($more, '-') === 0); + } while (str_starts_with($more, '-')); if ($errMsg !== '') { throw new Exception\RuntimeException($errMsg); diff --git a/lib/laminas/laminas-mail/src/Protocol/Imap.php b/lib/laminas/laminas-mail/src/Protocol/Imap.php index 8004e6140..d8b20724d 100644 --- a/lib/laminas/laminas-mail/src/Protocol/Imap.php +++ b/lib/laminas/laminas-mail/src/Protocol/Imap.php @@ -2,6 +2,40 @@ namespace Laminas\Mail\Protocol; +use Laminas\Mail\Protocol\Exception\ExceptionInterface; + +use function array_merge; +use function array_pop; +use function array_push; +use function array_search; +use function array_shift; +use function count; +use function current; +use function explode; +use function fclose; +use function fgets; +use function func_get_args; +use function func_num_args; +use function fwrite; +use function implode; +use function is_array; +use function is_numeric; +use function key; +use function next; +use function preg_match; +use function rtrim; +use function str_contains; +use function str_replace; +use function str_starts_with; +use function stream_socket_enable_crypto; +use function strlen; +use function strpos; +use function strtolower; +use function substr; +use function trim; + +use const INF; + class Imap { use ProtocolTrait; @@ -11,13 +45,12 @@ class Imap */ public const TIMEOUT_CONNECTION = 30; - /** - * @var null|resource - */ + /** @var null|resource */ protected $socket; /** * counter for request tag + * * @var int */ protected $tagCount = 0; @@ -29,7 +62,7 @@ class Imap * @param int|null $port port of IMAP server, null for default (143 or 993 for ssl) * @param string|bool $ssl use ssl? 'SSL', 'TLS' or false * @param bool $novalidatecert set to true to skip SSL certificate validation - * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function __construct($host = '', $port = null, $ssl = false, $novalidatecert = false) { @@ -60,7 +93,7 @@ class Imap public function connect($host, $port = null, $ssl = false) { $transport = 'tcp'; - $isTls = false; + $isTls = false; if ($ssl) { $ssl = strtolower($ssl); @@ -123,7 +156,7 @@ class Imap protected function assumedNextLine($start) { $line = $this->nextLine(); - return strpos($line, $start) === 0; + return str_starts_with($line, $start); } /** @@ -137,7 +170,7 @@ class Imap $line = $this->nextLine(); // separate tag from line - list($tag, $line) = explode(' ', $line, 2); + [$tag, $line] = explode(' ', $line, 2); return $line; } @@ -151,7 +184,7 @@ class Imap protected function decodeLine($line) { $tokens = []; - $stack = []; + $stack = []; /* We start to decode the response here. The understood tokens are: @@ -177,18 +210,18 @@ class Imap while ($token[0] == '(') { array_push($stack, $tokens); $tokens = []; - $token = substr($token, 1); + $token = substr($token, 1); } if ($token[0] == '"') { if (preg_match('%^\(*"((.|\\\\|\\")*?)" *%', $line, $matches)) { $tokens[] = $matches[1]; - $line = substr($line, strlen($matches[0])); + $line = substr($line, strlen($matches[0])); continue; } } if ($token[0] == '{') { $endPos = strpos($token, '}'); - $chars = substr($token, 1, $endPos - 1); + $chars = substr($token, 1, $endPos - 1); if (is_numeric($chars)) { $token = ''; while (strlen($token) < $chars) { @@ -196,43 +229,43 @@ class Imap } $line = ''; if (strlen($token) > $chars) { - $line = substr($token, $chars); + $line = substr($token, $chars); $token = substr($token, 0, $chars); } else { $line .= $this->nextLine(); } $tokens[] = $token; - $line = trim($line) . ' '; + $line = trim($line) . ' '; continue; } } if ($stack && $token[strlen($token) - 1] == ')') { // closing braces are not separated by spaces, so we need to count them $braces = strlen($token); - $token = rtrim($token, ')'); + $token = rtrim($token, ')'); // only count braces if more than one $braces -= strlen($token) + 1; // only add if token had more than just closing braces if (rtrim($token) != '') { $tokens[] = rtrim($token); } - $token = $tokens; + $token = $tokens; $tokens = array_pop($stack); // special handline if more than one closing brace while ($braces-- > 0) { $tokens[] = $token; - $token = $tokens; - $tokens = array_pop($stack); + $token = $tokens; + $tokens = array_pop($stack); } } $tokens[] = $token; - $line = substr($line, $pos + 1); + $line = substr($line, $pos + 1); } // maybe the server forgot to send some closing braces while ($stack) { - $child = $tokens; - $tokens = array_pop($stack); + $child = $tokens; + $tokens = array_pop($stack); $tokens[] = $child; } @@ -274,7 +307,7 @@ class Imap */ public function readResponse($tag, $dontParse = false) { - $lines = []; + $lines = []; $tokens = null; // define $tokens variable before first use while (! $this->readLine($tokens, $tag, $dontParse)) { $lines[] = $tokens; @@ -287,7 +320,7 @@ class Imap // last line has response code if ($tokens[0] == 'OK') { - return $lines ? $lines : true; + return $lines ?: true; } elseif ($tokens[0] == 'NO') { return false; } @@ -341,9 +374,7 @@ class Imap { $tag = null; // define $tag variable before first use $this->sendRequest($command, $tokens, $tag); - $response = $this->readResponse($tag, $dontParse); - - return $response; + return $this->readResponse($tag, $dontParse); } /** @@ -356,7 +387,7 @@ class Imap public function escapeString($string) { if (func_num_args() < 2) { - if (strpos($string, "\n") !== false) { + if (str_contains($string, "\n")) { return ['{' . strlen($string) . '}', $string]; } @@ -412,7 +443,7 @@ class Imap if ($this->socket) { try { $result = $this->requestAndResponse('LOGOUT', [], true); - } catch (Exception\ExceptionInterface $e) { + } catch (Exception\ExceptionInterface) { // ignoring exception } fclose($this->socket); @@ -425,7 +456,7 @@ class Imap * Get capabilities from IMAP server * * @return array list of capabilities - * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function capability() { @@ -450,7 +481,7 @@ class Imap * @param string $box which folder to change to or examine * @return bool|array false if error, array with returned information * otherwise (flags, exists, recent, uidvalidity) - * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function examineOrSelect($command = 'EXAMINE', $box = 'INBOX') { @@ -489,7 +520,7 @@ class Imap * * @param string $box change to this folder * @return bool|array see examineOrselect() - * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function select($box = 'INBOX') { @@ -501,7 +532,7 @@ class Imap * * @param string $box examine this folder * @return bool|array see examineOrselect() - * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function examine($box = 'INBOX') { @@ -535,7 +566,7 @@ class Imap $set = (int) $from . ':' . (int) $to; } - $items = (array) $items; + $items = (array) $items; $itemList = $this->escapeList($items); $tag = null; // define $tag variable before first use @@ -593,6 +624,7 @@ class Imap // if we want only one message we can ignore everything else and just return if ($to === null && ! is_array($from) && ($uid ? $tokens[2][$uidKey] == $from : $tokens[0] == $from)) { // we still need to read all lines + // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedWhile while (! $this->readLine($tokens, $tag)) { } return $data; @@ -615,12 +647,12 @@ class Imap * @param string $reference mailbox reference for list * @param string $mailbox mailbox name match with wildcards * @return array mailboxes that matched $mailbox as array(globalName => array('delim' => .., 'flags' => ..)) - * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function listMailbox($reference = '', $mailbox = '*') { $result = []; - $list = $this->requestAndResponse('LIST', $this->escapeString($reference, $mailbox)); + $list = $this->requestAndResponse('LIST', $this->escapeString($reference, $mailbox)); if (! $list || $list === true) { return $result; } @@ -645,7 +677,7 @@ class Imap * @param string|null $mode '+' to add flags, '-' to remove flags, everything else sets the flags as given * @param bool $silent if false the return values are the new flags for the wanted messages * @return bool|array new flags if $silent is false, else true or false depending on success - * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function store(array $flags, $from, $to = null, $mode = null, $silent = true) { @@ -658,7 +690,7 @@ class Imap } $flags = $this->escapeList($flags); - $set = (int) $from; + $set = (int) $from; if ($to !== null) { $set .= ':' . ($to == INF ? '*' : (int) $to); } @@ -689,11 +721,11 @@ class Imap * @param array $flags flags for new message * @param string $date date for new message * @return bool success - * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function append($folder, $message, $flags = null, $date = null) { - $tokens = []; + $tokens = []; $tokens[] = $this->escapeString($folder); if ($flags !== null) { $tokens[] = $this->escapeList($flags); @@ -710,14 +742,14 @@ class Imap * copy message set from current folder to other folder * * @param string $folder destination folder - * @param $from + * @param int $from * @param int|null $to if null only one message ($from) is fetched, else it's the * last message, INF means last message available * @return bool success */ public function copy($folder, $from, $to = null) { - $set = (int) $from; + $set = (string) $from; if ($to !== null) { $set .= ':' . ($to == INF ? '*' : (int) $to); } diff --git a/lib/laminas/laminas-mail/src/Protocol/Pop3.php b/lib/laminas/laminas-mail/src/Protocol/Pop3.php index 8675491a2..5c6ee46a9 100644 --- a/lib/laminas/laminas-mail/src/Protocol/Pop3.php +++ b/lib/laminas/laminas-mail/src/Protocol/Pop3.php @@ -2,8 +2,23 @@ namespace Laminas\Mail\Protocol; +use Laminas\Mail\Protocol\Pop3\Response; use Laminas\Stdlib\ErrorHandler; +use function explode; +use function fclose; +use function fgets; +use function fwrite; +use function is_string; +use function md5; +use function rtrim; +use function stream_socket_enable_crypto; +use function strpos; +use function strtok; +use function strtolower; +use function substr; +use function trim; + class Pop3 { use ProtocolTrait; @@ -15,17 +30,17 @@ class Pop3 /** * saves if server supports top + * * @var null|bool */ - public $hasTop = null; + public $hasTop; - /** - * @var null|resource - */ + /** @var null|resource */ protected $socket; /** * greeting timestamp for apop + * * @var null|string */ protected $timestamp; @@ -67,7 +82,7 @@ class Pop3 public function connect($host, $port = null, $ssl = false) { $transport = 'tcp'; - $isTls = false; + $isTls = false; if ($ssl) { $ssl = strtolower($ssl); @@ -136,6 +151,37 @@ class Pop3 * @return string response */ public function readResponse($multiline = false) + { + $response = $this->readRemoteResponse(); + + if ($response->status() != '+OK') { + throw new Exception\RuntimeException('last request failed'); + } + + $message = $response->message(); + + if ($multiline) { + $message = ''; + $line = fgets($this->socket); + while ($line && rtrim($line, "\r\n") != '.') { + if ($line[0] == '.') { + $line = substr($line, 1); + } + $message .= $line; + $line = fgets($this->socket); + } + } + + return $message; + } + + /** + * read a response + * return extracted status / message from response + + * @throws Exception\RuntimeException + */ + protected function readRemoteResponse(): Response { ErrorHandler::start(); $result = fgets($this->socket); @@ -146,29 +192,13 @@ class Pop3 $result = trim($result); if (strpos($result, ' ')) { - list($status, $message) = explode(' ', $result, 2); + [$status, $message] = explode(' ', $result, 2); } else { - $status = $result; + $status = $result; $message = ''; } - if ($status != '+OK') { - throw new Exception\RuntimeException('last request failed'); - } - - if ($multiline) { - $message = ''; - $line = fgets($this->socket); - while ($line && rtrim($line, "\r\n") != '.') { - if ($line[0] == '.') { - $line = substr($line, 1); - } - $message .= $line; - $line = fgets($this->socket); - } - } - - return $message; + return new Response($status, $message); } /** @@ -176,6 +206,7 @@ class Pop3 * * @see sendRequest() * @see readResponse() + * * @param string $request request * @param bool $multiline multiline response? * @return string result from readResponse() @@ -194,7 +225,7 @@ class Pop3 if ($this->socket) { try { $this->request('QUIT'); - } catch (Exception\ExceptionInterface $e) { + } catch (Exception\ExceptionInterface) { // ignore error - we're closing the socket anyway } @@ -227,7 +258,7 @@ class Pop3 try { $this->request("APOP $user " . md5($this->timestamp . $password)); return; - } catch (Exception\ExceptionInterface $e) { + } catch (Exception\ExceptionInterface) { // ignore } } @@ -245,10 +276,10 @@ class Pop3 public function status(&$messages, &$octets) { $messages = 0; - $octets = 0; - $result = $this->request('STAT'); + $octets = 0; + $result = $this->request('STAT'); - list($messages, $octets) = explode(' ', $result); + [$messages, $octets] = explode(' ', $result); } /** @@ -262,17 +293,17 @@ class Pop3 if ($msgno !== null) { $result = $this->request("LIST $msgno"); - list(, $result) = explode(' ', $result); + [, $result] = explode(' ', $result); return (int) $result; } - $result = $this->request('LIST', true); + $result = $this->request('LIST', true); $messages = []; - $line = strtok($result, "\n"); + $line = strtok($result, "\n"); while ($line) { - list($no, $size) = explode(' ', trim($line)); + [$no, $size] = explode(' ', trim($line)); $messages[(int) $no] = (int) $size; - $line = strtok("\n"); + $line = strtok("\n"); } return $messages; @@ -289,19 +320,19 @@ class Pop3 if ($msgno !== null) { $result = $this->request("UIDL $msgno"); - list(, $result) = explode(' ', $result); + [, $result] = explode(' ', $result); return $result; } $result = $this->request('UIDL', true); - $result = explode("\n", $result); + $result = explode("\n", $result); $messages = []; foreach ($result as $line) { if (! $line) { continue; } - list($no, $id) = explode(' ', trim($line), 2); + [$no, $id] = explode(' ', trim($line), 2); $messages[(int) $no] = $id; } @@ -333,7 +364,7 @@ class Pop3 } $this->hasTop = true; - $lines = (! $lines || $lines < 1) ? 0 : (int) $lines; + $lines = ! $lines || $lines < 1 ? 0 : (int) $lines; try { $result = $this->request("TOP $msgno $lines", true); @@ -357,8 +388,7 @@ class Pop3 */ public function retrieve($msgno) { - $result = $this->request("RETR $msgno", true); - return $result; + return $this->request("RETR $msgno", true); } /** @@ -372,7 +402,7 @@ class Pop3 /** * Make a DELE count to remove a message * - * @param $msgno + * @param int $msgno */ public function delete($msgno) { diff --git a/lib/laminas/laminas-mail/src/Protocol/Pop3/Response.php b/lib/laminas/laminas-mail/src/Protocol/Pop3/Response.php new file mode 100644 index 000000000..41c0eb5bb --- /dev/null +++ b/lib/laminas/laminas-mail/src/Protocol/Pop3/Response.php @@ -0,0 +1,35 @@ +status = $status; + $this->message = $message; + } + + public function status(): string + { + return $this->status; + } + + public function message(): string + { + return $this->message; + } +} diff --git a/lib/laminas/laminas-mail/src/Protocol/Pop3/Xoauth2/Microsoft.php b/lib/laminas/laminas-mail/src/Protocol/Pop3/Xoauth2/Microsoft.php new file mode 100644 index 000000000..74d093dc7 --- /dev/null +++ b/lib/laminas/laminas-mail/src/Protocol/Pop3/Xoauth2/Microsoft.php @@ -0,0 +1,34 @@ +sendRequest(self::AUTH_INITIALIZE_REQUEST); + + $response = $this->readRemoteResponse(); + + if ($response->status() != self::AUTH_RESPONSE_INITIALIZED_OK) { + throw new RuntimeException($response->message()); + } + + $this->request(Xoauth2::encodeXoauth2Sasl($user, $password)); + } +} diff --git a/lib/laminas/laminas-mail/src/Protocol/ProtocolTrait.php b/lib/laminas/laminas-mail/src/Protocol/ProtocolTrait.php index a562a9e91..60d246c42 100644 --- a/lib/laminas/laminas-mail/src/Protocol/ProtocolTrait.php +++ b/lib/laminas/laminas-mail/src/Protocol/ProtocolTrait.php @@ -4,6 +4,17 @@ namespace Laminas\Mail\Protocol; use Laminas\Stdlib\ErrorHandler; +use function defined; +use function sprintf; +use function stream_context_create; +use function stream_set_timeout; +use function stream_socket_client; + +use const STREAM_CLIENT_CONNECT; +use const STREAM_CRYPTO_METHOD_TLS_CLIENT; +use const STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; +use const STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; + /** * https://bugs.php.net/bug.php?id=69195 */ @@ -11,6 +22,7 @@ trait ProtocolTrait { /** * If set to true, do not validate the SSL certificate + * * @var null|bool */ protected $novalidatecert; @@ -45,8 +57,6 @@ trait ProtocolTrait /** * Should we validate SSL certificate? - * - * @return bool */ public function validateCert(): bool { @@ -94,7 +104,7 @@ trait ProtocolTrait STREAM_CLIENT_CONNECT, stream_context_create($this->prepareSocketOptions()) ); - $error = ErrorHandler::stop(); + $error = ErrorHandler::stop(); if (! $socket) { throw new Exception\RuntimeException(sprintf( diff --git a/lib/laminas/laminas-mail/src/Protocol/Smtp.php b/lib/laminas/laminas-mail/src/Protocol/Smtp.php index 0bbe3ee45..f35ca72c0 100644 --- a/lib/laminas/laminas-mail/src/Protocol/Smtp.php +++ b/lib/laminas/laminas-mail/src/Protocol/Smtp.php @@ -5,6 +5,23 @@ namespace Laminas\Mail\Protocol; use Generator; use Laminas\Mail\Headers; +use function array_key_exists; +use function array_replace_recursive; +use function chunk_split; +use function fclose; +use function fgets; +use function fopen; +use function fwrite; +use function implode; +use function ini_get; +use function is_array; +use function rewind; +use function rtrim; +use function stream_socket_enable_crypto; +use function strlen; +use function strtolower; +use function substr; + /** * SMTP implementation of Laminas\Mail\Protocol\AbstractProtocol * @@ -18,6 +35,7 @@ class Smtp extends AbstractProtocol /** * RFC 5322 section-2.2.3 specifies maximum of 998 bytes per line. * This may not be exceeded. + * * @see https://tools.ietf.org/html/rfc5322#section-2.2.3 */ public const SMTP_LINE_LIMIT = 998; @@ -69,7 +87,7 @@ class Smtp extends AbstractProtocol * * @var bool */ - protected $data = null; + protected $data; /** * Whether or not send QUIT command @@ -79,8 +97,6 @@ class Smtp extends AbstractProtocol protected $useCompleteQuit = true; /** - * Constructor. - * * The first argument may be an array of all options. If so, it must include * the 'host' and 'port' keys in order to ensure that all required values * are present. @@ -90,7 +106,7 @@ class Smtp extends AbstractProtocol * @param null|array $config * @throws Exception\InvalidArgumentException */ - public function __construct($host = '127.0.0.1', $port = null, array $config = null) + public function __construct($host = '127.0.0.1', $port = null, ?array $config = null) { // Did we receive a configuration array? if (is_array($host)) { @@ -129,7 +145,7 @@ class Smtp extends AbstractProtocol case 'ssl': $this->transport = 'ssl'; - $this->secure = 'ssl'; + $this->secure = 'ssl'; if ($port === null) { $port = 465; } @@ -177,10 +193,7 @@ class Smtp extends AbstractProtocol /** * Read $data as lines terminated by "\n" * - * @param string $data - * @param int $chunkSize * @return Generator|string[] - * @author Elan RuusamΓ€e */ private static function chunkedReader(string $data, int $chunkSize = 4096): Generator { @@ -305,7 +318,7 @@ class Smtp extends AbstractProtocol * Send EHLO or HELO depending on capabilities of smtp host * * @param string $host The client hostname or IP address (default: 127.0.0.1) - * @throws \Exception|Exception\ExceptionInterface + * @throws Exception\ExceptionInterface */ protected function ehlo($host) { @@ -313,7 +326,7 @@ class Smtp extends AbstractProtocol try { $this->_send('EHLO ' . $host); $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 - } catch (Exception\ExceptionInterface $e) { + } catch (Exception\ExceptionInterface) { $this->_send('HELO ' . $host); $this->_expect(250, 300); // Timeout set for 5 minutes as per RFC 2821 4.5.3.2 } @@ -388,7 +401,7 @@ class Smtp extends AbstractProtocol // Add "-1" to stay within limits, // because Headers::FOLDING includes a byte for space character after \r\n $chunks = chunk_split($line, self::SMTP_LINE_LIMIT - 1, Headers::FOLDING); - $line = substr($chunks, 0, -strlen(Headers::FOLDING)); + $line = substr($chunks, 0, -strlen(Headers::FOLDING)); } $this->_send($line); @@ -420,7 +433,6 @@ class Smtp extends AbstractProtocol * Issues the NOOP command end validates answer * * Not used by Laminas\Mail, could be used to keep a connection alive or check if it is still open. - * */ public function noop() { @@ -443,7 +455,6 @@ class Smtp extends AbstractProtocol /** * Issues the QUIT command and clears the current session - * */ public function quit() { @@ -475,7 +486,6 @@ class Smtp extends AbstractProtocol /** * Closes connection - * */ public function disconnect() { @@ -488,7 +498,6 @@ class Smtp extends AbstractProtocol // @codingStandardsIgnoreLine PSR2.Methods.MethodDeclaration.Underscore protected function _disconnect() { - // Make sure the session gets closed $this->quit(); parent::_disconnect(); @@ -496,7 +505,6 @@ class Smtp extends AbstractProtocol /** * Start mail session - * */ protected function startSession() { @@ -505,7 +513,6 @@ class Smtp extends AbstractProtocol /** * Stop mail session - * */ protected function stopSession() { diff --git a/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Crammd5.php b/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Crammd5.php index e5e2c7b32..3435cf7ce 100644 --- a/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Crammd5.php +++ b/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Crammd5.php @@ -5,24 +5,23 @@ namespace Laminas\Mail\Protocol\Smtp\Auth; use Laminas\Crypt\Hmac; use Laminas\Mail\Protocol\Smtp; +use function array_replace_recursive; +use function base64_decode; +use function base64_encode; +use function is_array; + /** * Performs CRAM-MD5 authentication */ class Crammd5 extends Smtp { - /** - * @var string - */ + /** @var string */ protected $username; - /** - * @var string - */ + /** @var string */ protected $password; /** - * Constructor. - * * All parameters may be passed as an array to the first argument of the * constructor. If so, * @@ -67,7 +66,7 @@ class Crammd5 extends Smtp $this->_send('AUTH CRAM-MD5'); $challenge = $this->_expect(334); $challenge = base64_decode($challenge); - $digest = $this->hmacMd5($this->getPassword(), $challenge); + $digest = $this->hmacMd5($this->getPassword(), $challenge); $this->_send(base64_encode($this->getUsername() . ' ' . $digest)); $this->_expect(235); $this->auth = true; diff --git a/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Login.php b/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Login.php index 66225d4a5..c7be3c6ed 100644 --- a/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Login.php +++ b/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Login.php @@ -4,6 +4,10 @@ namespace Laminas\Mail\Protocol\Smtp\Auth; use Laminas\Mail\Protocol\Smtp; +use function array_replace_recursive; +use function base64_encode; +use function is_array; + /** * Performs LOGIN authentication */ @@ -24,8 +28,6 @@ class Login extends Smtp protected $password; /** - * Constructor. - * * @param string $host (Default: 127.0.0.1) * @param int $port (Default: null) * @param array $config Auth-specific parameters @@ -58,7 +60,6 @@ class Login extends Smtp /** * Perform LOGIN authentication with supplied credentials - * */ public function auth() { diff --git a/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Plain.php b/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Plain.php index 0bd3c8a65..6e3091e5c 100644 --- a/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Plain.php +++ b/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Plain.php @@ -4,6 +4,10 @@ namespace Laminas\Mail\Protocol\Smtp\Auth; use Laminas\Mail\Protocol\Smtp; +use function array_replace_recursive; +use function base64_encode; +use function is_array; + /** * Performs PLAIN authentication */ @@ -24,8 +28,6 @@ class Plain extends Smtp protected $password; /** - * Constructor. - * * @param string $host (Default: 127.0.0.1) * @param int $port (Default: null) * @param array $config Auth-specific parameters @@ -58,7 +60,6 @@ class Plain extends Smtp /** * Perform PLAIN authentication with supplied credentials - * */ public function auth() { diff --git a/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Xoauth2.php b/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Xoauth2.php new file mode 100644 index 000000000..34b462970 --- /dev/null +++ b/lib/laminas/laminas-mail/src/Protocol/Smtp/Auth/Xoauth2.php @@ -0,0 +1,123 @@ +setUsername((string) $config['username']); + } + if (isset($config['access_token'])) { + $this->setAccessToken((string) $config['access_token']); + } + } + + // Call parent with original arguments + parent::__construct($host, $port, $origConfig); + } + + /** + * Perform XOAUTH2 authentication with supplied credentials + * + * @return void + */ + public function auth() + { + // Ensure AUTH has not already been initiated. + parent::auth(); + + $this->_send('AUTH XOAUTH2'); + $this->_expect('334'); + $this->_send(Xoauth2AuthEncoder::encodeXoauth2Sasl($this->getUsername(), $this->getAccessToken())); + $this->_expect('235'); + $this->auth = true; + } + + /** + * Set value for username + * + * @param string $username + * @return Xoauth2 + */ + public function setUsername($username) + { + $this->username = $username; + return $this; + } + + /** + * Get username + * + * @return string + */ + public function getUsername() + { + return $this->username; + } + + /** + * Set value for access token + * + * @param string $token + * @return Xoauth2 + */ + public function setAccessToken($token) + { + $this->accessToken = $token; + return $this; + } + + /** + * Get access token + * + * @return string + */ + public function getAccessToken() + { + return $this->accessToken; + } +} diff --git a/lib/laminas/laminas-mail/src/Protocol/SmtpPluginManager.php b/lib/laminas/laminas-mail/src/Protocol/SmtpPluginManager.php index 91c35dfa7..80225ca69 100644 --- a/lib/laminas/laminas-mail/src/Protocol/SmtpPluginManager.php +++ b/lib/laminas/laminas-mail/src/Protocol/SmtpPluginManager.php @@ -3,19 +3,33 @@ namespace Laminas\Mail\Protocol; use Laminas\ServiceManager\AbstractPluginManager; +use Laminas\ServiceManager\ConfigInterface; use Laminas\ServiceManager\Exception\InvalidServiceException; use Laminas\ServiceManager\Factory\InvokableFactory; +use function gettype; +use function is_object; +use function sprintf; + /** * Plugin manager implementation for SMTP extensions. * * Enforces that SMTP extensions retrieved are instances of Smtp. Additionally, * it registers a number of default extensions available. + * + * @link ConfigInterface + * + * @psalm-import-type FactoriesConfigurationType from ConfigInterface + * + * @extends AbstractPluginManager + * @final */ class SmtpPluginManager extends AbstractPluginManager { /** * Service aliases + * + * @var array */ protected $aliases = [ 'crammd5' => Smtp\Auth\Crammd5::class, @@ -27,61 +41,58 @@ class SmtpPluginManager extends AbstractPluginManager 'Login' => Smtp\Auth\Login::class, 'plain' => Smtp\Auth\Plain::class, 'Plain' => Smtp\Auth\Plain::class, + 'xoauth2' => Smtp\Auth\Xoauth2::class, + 'Xoauth2' => Smtp\Auth\Xoauth2::class, 'smtp' => Smtp::class, 'Smtp' => Smtp::class, 'SMTP' => Smtp::class, - // Legacy Zend Framework aliases - \Zend\Mail\Protocol\Smtp\Auth\Crammd5::class => Smtp\Auth\Crammd5::class, - \Zend\Mail\Protocol\Smtp\Auth\Login::class => Smtp\Auth\Login::class, - \Zend\Mail\Protocol\Smtp\Auth\Plain::class => Smtp\Auth\Plain::class, - \Zend\Mail\Protocol\Smtp::class => Smtp::class, - + 'Zend\Mail\Protocol\Smtp\Auth\Crammd5' => Smtp\Auth\Crammd5::class, + 'Zend\Mail\Protocol\Smtp\Auth\Login' => Smtp\Auth\Login::class, + 'Zend\Mail\Protocol\Smtp\Auth\Plain' => Smtp\Auth\Plain::class, + 'Zend\Mail\Protocol\Smtp' => Smtp::class, // v2 normalized FQCNs - 'zendmailprotocolsmtpauthcrammd5' => Smtp\Auth\Crammd5::class, - 'zendmailprotocolsmtpauthlogin' => Smtp\Auth\Login::class, - 'zendmailprotocolsmtpauthplain' => Smtp\Auth\Plain::class, - 'zendmailprotocolsmtp' => Smtp::class, + 'zendmailprotocolsmtpauthcrammd5' => Smtp\Auth\Crammd5::class, + 'zendmailprotocolsmtpauthlogin' => Smtp\Auth\Login::class, + 'zendmailprotocolsmtpauthplain' => Smtp\Auth\Plain::class, + 'zendmailprotocolsmtp' => Smtp::class, + 'laminasmailprotocolsmtpauthcrammd5' => Smtp\Auth\Crammd5::class, + 'laminasmailprotocolsmtpauthlogin' => Smtp\Auth\Login::class, + 'laminasmailprotocolsmtpauthplain' => Smtp\Auth\Plain::class, + 'laminasmailprotocolsmtp' => Smtp::class, ]; /** * Service factories * - * @var array + * @var FactoriesConfigurationType */ protected $factories = [ Smtp\Auth\Crammd5::class => InvokableFactory::class, Smtp\Auth\Login::class => InvokableFactory::class, Smtp\Auth\Plain::class => InvokableFactory::class, + Smtp\Auth\Xoauth2::class => InvokableFactory::class, Smtp::class => InvokableFactory::class, - - // v2 normalized service names - - 'laminasmailprotocolsmtpauthcrammd5' => InvokableFactory::class, - 'laminasmailprotocolsmtpauthlogin' => InvokableFactory::class, - 'laminasmailprotocolsmtpauthplain' => InvokableFactory::class, - 'laminasmailprotocolsmtp' => InvokableFactory::class, ]; /** * Plugins must be an instance of the Smtp class * - * @var string + * @var class-string */ protected $instanceOf = Smtp::class; /** * Validate a retrieved plugin instance (v3). * - * @param object|array $instance - * @throws InvalidServiceException + * {@inheritDoc} */ - public function validate($instance) + public function validate(mixed $instance) { if (! $instance instanceof $this->instanceOf) { throw new InvalidServiceException(sprintf( 'Plugin of type %s is invalid; must extend %s', - (is_object($instance) ? get_class($instance) : gettype($instance)), + is_object($instance) ? $instance::class : gettype($instance), $this->instanceOf )); } @@ -90,10 +101,12 @@ class SmtpPluginManager extends AbstractPluginManager /** * Validate a retrieved plugin instance (v2). * + * @deprecated + * * @param object $plugin * @throws Exception\InvalidArgumentException */ - public function validatePlugin($plugin) + public function validatePlugin(mixed $plugin) { try { $this->validate($plugin); diff --git a/lib/laminas/laminas-mail/src/Protocol/SmtpPluginManagerFactory.php b/lib/laminas/laminas-mail/src/Protocol/SmtpPluginManagerFactory.php index 0b0555fce..f63b85098 100644 --- a/lib/laminas/laminas-mail/src/Protocol/SmtpPluginManagerFactory.php +++ b/lib/laminas/laminas-mail/src/Protocol/SmtpPluginManagerFactory.php @@ -2,25 +2,34 @@ namespace Laminas\Mail\Protocol; +// phpcs:ignore WebimpressCodingStandard.PHP.CorrectClassNameCase.Invalid use Interop\Container\ContainerInterface; use Laminas\ServiceManager\FactoryInterface; use Laminas\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\ServiceManager; +/** + * @link ServiceManager + * + * @psalm-import-type ServiceManagerConfiguration from ServiceManager + */ class SmtpPluginManagerFactory implements FactoryInterface { /** * laminas-servicemanager v2 support for invocation options. * - * @param array + * @var array + * @psalm-var ServiceManagerConfiguration */ protected $creationOptions; /** * {@inheritDoc} * + * @psalm-param ServiceManagerConfiguration $options * @return SmtpPluginManager */ - public function __invoke(ContainerInterface $container, $name, array $options = null) + public function __invoke(ContainerInterface $container, $name, ?array $options = null) { return new SmtpPluginManager($container, $options ?: []); } @@ -38,7 +47,7 @@ class SmtpPluginManagerFactory implements FactoryInterface /** * laminas-servicemanager v2 support for invocation options. * - * @param array $options + * @psalm-param ServiceManagerConfiguration $options * @return void */ public function setCreationOptions(array $options) diff --git a/lib/laminas/laminas-mail/src/Protocol/Xoauth2/Xoauth2.php b/lib/laminas/laminas-mail/src/Protocol/Xoauth2/Xoauth2.php new file mode 100644 index 000000000..fa3d5b883 --- /dev/null +++ b/lib/laminas/laminas-mail/src/Protocol/Xoauth2/Xoauth2.php @@ -0,0 +1,32 @@ + */ protected $messageClass = Message::class; @@ -54,13 +63,13 @@ abstract class AbstractStorage implements * * @param string $var property name * @throws Exception\InvalidArgumentException - * @return bool supported or not + * @return null|bool supported or not */ public function __get($var) { - if (strpos($var, 'has') === 0) { + if (str_starts_with($var, 'has')) { $var = strtolower(substr($var, 3)); - return isset($this->has[$var]) ? $this->has[$var] : null; + return $this->has[$var] ?? null; } throw new Exception\InvalidArgumentException($var . ' not found'); @@ -95,8 +104,8 @@ abstract class AbstractStorage implements /** * Get a message with headers and body * - * @param $id int number of message - * @return Message + * @param int $id number of message + * @return Message\MessageInterface */ abstract public function getMessage($id); @@ -149,7 +158,7 @@ abstract class AbstractStorage implements /** * delete a message from current box/folder * - * @param $id + * @param int $id message number */ abstract public function removeMessage($id); @@ -202,7 +211,7 @@ abstract class AbstractStorage implements if ($this->getMessage($id)) { return true; } - } catch (Exception\ExceptionInterface $e) { + } catch (Exception\ExceptionInterface) { } return false; @@ -212,7 +221,7 @@ abstract class AbstractStorage implements * ArrayAccess::offsetGet() * * @param int $id - * @return \Laminas\Mail\Storage\Message message object + * @return Message message object */ #[ReturnTypeWillChange] public function offsetGet($id) @@ -223,12 +232,10 @@ abstract class AbstractStorage implements /** * ArrayAccess::offsetSet() * - * @param mixed $id - * @param mixed $value * @throws Exception\RuntimeException */ #[ReturnTypeWillChange] - public function offsetSet($id, $value) + public function offsetSet(mixed $id, mixed $value) { throw new Exception\RuntimeException('cannot write mail messages via array access'); } diff --git a/lib/laminas/laminas-mail/src/Storage/Folder.php b/lib/laminas/laminas-mail/src/Storage/Folder.php index 2d6dce0d7..ab89a1531 100644 --- a/lib/laminas/laminas-mail/src/Storage/Folder.php +++ b/lib/laminas/laminas-mail/src/Storage/Folder.php @@ -4,48 +4,39 @@ namespace Laminas\Mail\Storage; use RecursiveIterator; use ReturnTypeWillChange; +use Stringable; -class Folder implements RecursiveIterator +use function current; +use function key; +use function next; +use function reset; + +class Folder implements RecursiveIterator, Stringable { - /** - * subfolders of folder array(localName => \Laminas\Mail\Storage\Folder folder) - * @var array - */ - protected $folders; - - /** - * local name (name of folder in parent folder) - * @var string - */ - protected $localName; - /** * global name (absolute name of folder) + * * @var string */ protected $globalName; - /** - * folder is selectable if folder is able to hold messages, otherwise it is a parent folder - * @var bool - */ - protected $selectable = true; - /** * create a new mail folder instance * - * @param string $localName name of folder in current subdirectory + * @param string $localName local name (name of folder in parent folder) * @param string $globalName absolute name of folder * @param bool $selectable if true folder holds messages, if false it's * just a parent for subfolders (Default: true) - * @param array $folders init with given instances of Folder as subfolders + * @param array $folders subfolders of + * folder array(localName => \Laminas\Mail\Storage\Folder folder) */ - public function __construct($localName, $globalName = '', $selectable = true, array $folders = []) - { - $this->localName = $localName; - $this->globalName = $globalName ? $globalName : $localName; - $this->selectable = $selectable; - $this->folders = $folders; + public function __construct( + protected $localName, + $globalName = '', + protected $selectable = true, + protected array $folders = [] + ) { + $this->globalName = $globalName ?: $localName; } /** @@ -63,7 +54,7 @@ class Folder implements RecursiveIterator /** * implements RecursiveIterator::getChildren() * - * @return \Laminas\Mail\Storage\Folder same as self::current() + * @return Folder same as self::current() */ #[ReturnTypeWillChange] public function getChildren() @@ -105,7 +96,7 @@ class Folder implements RecursiveIterator /** * implements Iterator::current() * - * @return \Laminas\Mail\Storage\Folder current folder + * @return Folder current folder */ #[ReturnTypeWillChange] public function current() @@ -127,7 +118,7 @@ class Folder implements RecursiveIterator * * @param string $name wanted subfolder * @throws Exception\InvalidArgumentException - * @return \Laminas\Mail\Storage\Folder folder named $folder + * @return Folder folder named $folder */ public function __get($name) { @@ -142,7 +133,7 @@ class Folder implements RecursiveIterator * add or replace subfolder named $name * * @param string $name local name of subfolder - * @param \Laminas\Mail\Storage\Folder $folder instance for new subfolder + * @param Folder $folder instance for new subfolder */ public function __set($name, self $folder) { @@ -164,7 +155,7 @@ class Folder implements RecursiveIterator * * @return string global name of folder */ - public function __toString() + public function __toString(): string { return (string) $this->getGlobalName(); } diff --git a/lib/laminas/laminas-mail/src/Storage/Folder/FolderInterface.php b/lib/laminas/laminas-mail/src/Storage/Folder/FolderInterface.php index c26775b38..426ffc143 100644 --- a/lib/laminas/laminas-mail/src/Storage/Folder/FolderInterface.php +++ b/lib/laminas/laminas-mail/src/Storage/Folder/FolderInterface.php @@ -2,13 +2,16 @@ namespace Laminas\Mail\Storage\Folder; +use Laminas\Mail\Storage\Exception\ExceptionInterface; +use Laminas\Mail\Storage\Folder; + interface FolderInterface { /** * get root folder or given folder * * @param string $rootFolder get folder structure for given folder, else root - * @return FolderInterface root or wanted folder + * @return Folder root or wanted folder */ public function getFolders($rootFolder = null); @@ -17,16 +20,16 @@ interface FolderInterface * * folder must be selectable! * - * @param FolderInterface|string $globalName global name of folder or instance for subfolder - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @param Folder|string $globalName global name of folder or instance for subfolder + * @throws ExceptionInterface */ public function selectFolder($globalName); /** * get Laminas\Mail\Storage\Folder instance for current folder * - * @return FolderInterface instance of current folder - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @return string instance of current folder + * @throws ExceptionInterface */ public function getCurrentFolder(); } diff --git a/lib/laminas/laminas-mail/src/Storage/Folder/Maildir.php b/lib/laminas/laminas-mail/src/Storage/Folder/Maildir.php index eafc2f299..e31fcaf9d 100644 --- a/lib/laminas/laminas-mail/src/Storage/Folder/Maildir.php +++ b/lib/laminas/laminas-mail/src/Storage/Folder/Maildir.php @@ -4,31 +4,55 @@ namespace Laminas\Mail\Storage\Folder; use Laminas\Mail\Storage; use Laminas\Mail\Storage\Exception; +use Laminas\Mail\Storage\Exception\InvalidArgumentException; +use Laminas\Mail\Storage\Folder; use Laminas\Mail\Storage\ParamsNormalizer; use Laminas\Stdlib\ErrorHandler; +use function array_pop; +use function array_push; +use function closedir; +use function explode; +use function is_dir; +use function opendir; +use function readdir; +use function rtrim; +use function sort; +use function str_contains; +use function str_starts_with; +use function strlen; +use function substr; +use function trim; + +use const DIRECTORY_SEPARATOR; +use const E_WARNING; + class Maildir extends Storage\Maildir implements FolderInterface { /** * root folder for folder structure + * * @var Storage\Folder */ protected $rootFolder; /** * rootdir of folder structure + * * @var string */ protected $rootdir; /** * name of current folder + * * @var string */ protected $currentFolder; /** * delim char for subfolders + * * @var string */ protected $delim; @@ -42,7 +66,7 @@ class Maildir extends Storage\Maildir implements FolderInterface * - delim delim char for folder structure, default is '.' * - folder initial selected folder, default is 'INBOX' * - * @param $params array mail reader specific parameters + * @param object|array $params mail reader specific parameters * @throws Exception\InvalidArgumentException */ public function __construct($params) @@ -61,14 +85,14 @@ class Maildir extends Storage\Maildir implements FolderInterface $this->rootdir = rtrim($dirname, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; - $delim = $params['delim'] ?? '.'; + $delim = $params['delim'] ?? '.'; $this->delim = (string) $delim; $folder = $params['folder'] ?? 'INBOX'; $this->buildFolderTree(); $this->selectFolder((string) $folder); - $this->has['top'] = true; + $this->has['top'] = true; $this->has['flags'] = true; } @@ -82,7 +106,7 @@ class Maildir extends Storage\Maildir implements FolderInterface */ protected function buildFolderTree() { - $this->rootFolder = new Storage\Folder('/', '/', false); + $this->rootFolder = new Storage\Folder('/', '/', false); $this->rootFolder->INBOX = new Storage\Folder('INBOX', 'INBOX', true); ErrorHandler::start(E_WARNING); @@ -106,27 +130,27 @@ class Maildir extends Storage\Maildir implements FolderInterface closedir($dh); sort($dirs); - $stack = [null]; - $folderStack = [null]; + $stack = [null]; + $folderStack = [null]; $parentFolder = $this->rootFolder; - $parent = '.'; + $parent = '.'; foreach ($dirs as $dir) { do { - if (strpos($dir, $parent) === 0) { - $local = substr($dir, strlen($parent)); - if (strpos($local, $this->delim) !== false) { + if (str_starts_with($dir, $parent)) { + $local = substr($dir, strlen((string) $parent)); + if (str_contains($local, $this->delim)) { throw new Exception\RuntimeException('error while reading maildir'); } array_push($stack, $parent); - $parent = $dir . $this->delim; - $folder = new Storage\Folder($local, substr($dir, 1), true); + $parent = $dir . $this->delim; + $folder = new Storage\Folder($local, substr($dir, 1), true); $parentFolder->$local = $folder; array_push($folderStack, $parentFolder); $parentFolder = $folder; break; } elseif ($stack) { - $parent = array_pop($stack); + $parent = array_pop($stack); $parentFolder = array_pop($folderStack); } } while ($stack); @@ -140,8 +164,8 @@ class Maildir extends Storage\Maildir implements FolderInterface * get root folder or given folder * * @param string $rootFolder get folder structure for given folder, else root - * @throws \Laminas\Mail\Storage\Exception\InvalidArgumentException - * @return \Laminas\Mail\Storage\Folder root or wanted folder + * @throws InvalidArgumentException + * @return Folder root or wanted folder */ public function getFolders($rootFolder = null) { @@ -150,15 +174,15 @@ class Maildir extends Storage\Maildir implements FolderInterface } // rootdir is same as INBOX in maildir - if (strpos($rootFolder, 'INBOX' . $this->delim) === 0) { + if (str_starts_with($rootFolder, 'INBOX' . $this->delim)) { $rootFolder = substr($rootFolder, 6); } $currentFolder = $this->rootFolder; - $subname = trim($rootFolder, $this->delim); + $subname = trim($rootFolder, $this->delim); while ($currentFolder) { - if (false !== strpos($subname, $this->delim)) { - list($entry, $subname) = explode($this->delim, $subname, 2); + if (str_contains($subname, $this->delim)) { + [$entry, $subname] = explode($this->delim, $subname, 2); } else { $entry = $subname; $subname = null; @@ -214,7 +238,7 @@ class Maildir extends Storage\Maildir implements FolderInterface /** * get Storage\Folder instance for current folder * - * @return Storage\Folder instance of current folder + * @return string instance of current folder */ public function getCurrentFolder() { diff --git a/lib/laminas/laminas-mail/src/Storage/Folder/Mbox.php b/lib/laminas/laminas-mail/src/Storage/Folder/Mbox.php index 8fed65d89..3b6f540a0 100644 --- a/lib/laminas/laminas-mail/src/Storage/Folder/Mbox.php +++ b/lib/laminas/laminas-mail/src/Storage/Folder/Mbox.php @@ -7,22 +7,40 @@ use Laminas\Mail\Storage\Exception; use Laminas\Mail\Storage\ParamsNormalizer; use Laminas\Stdlib\ErrorHandler; +use function array_merge; +use function closedir; +use function explode; +use function is_dir; +use function is_file; +use function opendir; +use function readdir; +use function rtrim; +use function sprintf; +use function str_contains; +use function trim; + +use const DIRECTORY_SEPARATOR; +use const E_WARNING; + class Mbox extends Storage\Mbox implements FolderInterface { /** * Storage\Folder root folder for folder structure + * * @var Storage\Folder */ protected $rootFolder; /** * rootdir of folder structure + * * @var string */ protected $rootdir; /** * name of current folder + * * @var string */ protected $currentFolder; @@ -38,7 +56,7 @@ class Mbox extends Storage\Mbox implements FolderInterface * - dirname rootdir of mbox structure * - folder initial selected folder, default is 'INBOX' * - * @param $params array|object Array, iterable object, or stdClass object + * @param array|object $params Array, iterable object, or stdClass object * with reader specific parameters * @throws Exception\InvalidArgumentException */ @@ -61,7 +79,7 @@ class Mbox extends Storage\Mbox implements FolderInterface } $this->rootdir = rtrim($dirname, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; - $folder = $params['folder'] ?? 'INBOX'; + $folder = $params['folder'] ?? 'INBOX'; $this->buildFolderTree($this->rootdir); $this->selectFolder((string) $folder); @@ -84,7 +102,7 @@ class Mbox extends Storage\Mbox implements FolderInterface { if (! $parentFolder) { $this->rootFolder = new Storage\Folder('/', '/', false); - $parentFolder = $this->rootFolder; + $parentFolder = $this->rootFolder; } ErrorHandler::start(E_WARNING); @@ -99,15 +117,15 @@ class Mbox extends Storage\Mbox implements FolderInterface continue; } $absoluteEntry = $currentDir . $entry; - $globalName = $parentGlobalName . DIRECTORY_SEPARATOR . $entry; + $globalName = $parentGlobalName . DIRECTORY_SEPARATOR . $entry; if (is_file($absoluteEntry) && $this->isMboxFile($absoluteEntry)) { $parentFolder->$entry = new Storage\Folder($entry, $globalName); continue; } - if (! is_dir($absoluteEntry) /* || $entry == '.' || $entry == '..' */) { + if (! is_dir($absoluteEntry)) { /* || $entry == '.' || $entry == '..' */ continue; } - $folder = new Storage\Folder($entry, $globalName, false); + $folder = new Storage\Folder($entry, $globalName, false); $parentFolder->$entry = $folder; $this->buildFolderTree($absoluteEntry . DIRECTORY_SEPARATOR, $folder, $globalName); } @@ -129,10 +147,10 @@ class Mbox extends Storage\Mbox implements FolderInterface } $currentFolder = $this->rootFolder; - $subname = trim($rootFolder, DIRECTORY_SEPARATOR); + $subname = trim($rootFolder, DIRECTORY_SEPARATOR); while ($currentFolder) { - if (false !== strpos($subname, DIRECTORY_SEPARATOR)) { - list($entry, $subname) = explode(DIRECTORY_SEPARATOR, $subname, 2); + if (str_contains($subname, DIRECTORY_SEPARATOR)) { + [$entry, $subname] = explode(DIRECTORY_SEPARATOR, $subname, 2); } else { $entry = $subname; $subname = null; @@ -188,7 +206,7 @@ class Mbox extends Storage\Mbox implements FolderInterface /** * get Storage\Folder instance for current folder * - * @return Storage\Folder instance of current folder + * @return string instance of current folder * @throws Exception\ExceptionInterface */ public function getCurrentFolder() diff --git a/lib/laminas/laminas-mail/src/Storage/Imap.php b/lib/laminas/laminas-mail/src/Storage/Imap.php index 30196a5a7..25dc1b135 100644 --- a/lib/laminas/laminas-mail/src/Storage/Imap.php +++ b/lib/laminas/laminas-mail/src/Storage/Imap.php @@ -5,6 +5,20 @@ namespace Laminas\Mail\Storage; use Laminas\Mail; use Laminas\Mail\Protocol; +use function array_key_exists; +use function array_pop; +use function array_push; +use function count; +use function in_array; +use function is_string; +use function ksort; +use function str_starts_with; +use function strrpos; +use function substr; + +use const INF; +use const SORT_STRING; + class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\WritableInterface { // TODO: with an internal cache we could optimize this class, or create an extra class with @@ -12,24 +26,28 @@ class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\W /** * protocol handler + * * @var null|Protocol\Imap */ protected $protocol; /** * name of current folder + * * @var string */ protected $currentFolder = ''; /** * IMAP folder delimiter character + * * @var null|string */ protected $delimiter; /** * IMAP flags to constants translation + * * @var array */ protected static $knownFlags = [ @@ -44,6 +62,7 @@ class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\W /** * IMAP flags to search criteria + * * @var array */ protected static $searchFlags = [ @@ -110,7 +129,7 @@ class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\W */ public function getMessage($id) { - $data = $this->protocol->fetch(['FLAGS', 'RFC822.HEADER'], $id); + $data = $this->protocol->fetch(['FLAGS', 'RFC822.HEADER'], $id); $header = $data['RFC822.HEADER']; $flags = []; @@ -121,13 +140,12 @@ class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\W return new $this->messageClass(['handler' => $this, 'id' => $id, 'headers' => $header, 'flags' => $flags]); } - /* + /** * Get raw header of message or part * * @param int $id number of message * @param null|array|string $part path to part or null for message header * @param int $topLines include this many lines with header (after an empty line) - * @param int $topLines include this many lines with header (after an empty line) * @return string raw header * @throws Exception\RuntimeException * @throws Protocol\Exception\RuntimeException @@ -143,7 +161,7 @@ class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\W return $this->protocol->fetch('RFC822.HEADER', $id); } - /* + /** * Get raw content of message or part * * @param int $id number of message @@ -331,16 +349,16 @@ class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\W } ksort($folders, SORT_STRING); - $root = new Folder('/', '/', false); - $stack = [null]; - $folderStack = [null]; + $root = new Folder('/', '/', false); + $stack = [null]; + $folderStack = [null]; $parentFolder = $root; - $parent = ''; + $parent = ''; foreach ($folders as $globalName => $data) { do { - if (! $parent || strpos($globalName, $parent) === 0) { - $pos = strrpos($globalName, $data['delim']); + if (! $parent || str_starts_with($globalName, ! is_string($parent) ? (string) $parent : $parent)) { + $pos = strrpos($globalName, (string) $data['delim']); if ($pos === false) { $localName = $globalName; } else { @@ -349,15 +367,15 @@ class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\W $selectable = ! $data['flags'] || ! in_array('\\Noselect', $data['flags']); array_push($stack, $parent); - $parent = $globalName . $data['delim']; - $folder = new Folder($localName, $globalName, $selectable); + $parent = $globalName . $data['delim']; + $folder = new Folder($localName, $globalName, $selectable); $parentFolder->$localName = $folder; array_push($folderStack, $parentFolder); - $parentFolder = $folder; + $parentFolder = $folder; $this->delimiter = $data['delim']; break; } elseif ($stack) { - $parent = array_pop($stack); + $parent = array_pop($stack); $parentFolder = array_pop($folderStack); } } while ($stack); @@ -380,7 +398,7 @@ class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\W */ public function selectFolder($globalName) { - $this->currentFolder = $globalName; + $this->currentFolder = (string) $globalName; if (! $this->protocol->select($this->currentFolder)) { $this->currentFolder = ''; throw new Exception\RuntimeException('cannot change folder, maybe it does not exist'); @@ -390,7 +408,7 @@ class Imap extends AbstractStorage implements Folder\FolderInterface, Writable\W /** * get Folder instance for current folder * - * @return Folder instance of current folder + * @return string instance of current folder */ public function getCurrentFolder() { diff --git a/lib/laminas/laminas-mail/src/Storage/Maildir.php b/lib/laminas/laminas-mail/src/Storage/Maildir.php index ce1c8901b..4936d6999 100644 --- a/lib/laminas/laminas-mail/src/Storage/Maildir.php +++ b/lib/laminas/laminas-mail/src/Storage/Maildir.php @@ -3,18 +3,50 @@ namespace Laminas\Mail\Storage; use Laminas\Mail; +use Laminas\Mail\Storage\Exception\ExceptionInterface; +use Laminas\Mail\Storage\Message\File; use Laminas\Stdlib\ErrorHandler; +use function array_flip; +use function closedir; +use function count; +use function ctype_digit; +use function explode; +use function fclose; +use function feof; +use function fgets; +use function file_exists; +use function filesize; +use function fopen; +use function is_array; +use function is_dir; +use function is_file; +use function is_subclass_of; +use function opendir; +use function readdir; +use function sprintf; +use function str_contains; +use function strcmp; +use function stream_get_contents; +use function strlen; +use function substr; +use function trim; +use function usort; + +use const E_WARNING; + class Maildir extends AbstractStorage { /** * used message class, change it in an extended class to extend the returned message class - * @var string + * + * @var class-string */ - protected $messageClass = Message\File::class; + protected $messageClass = File::class; /** * data of found message files in maildir dir + * * @var array */ protected $files = []; @@ -121,14 +153,15 @@ class Maildir extends AbstractStorage * Fetch a message * * @param int $id number of message - * @return \Laminas\Mail\Storage\Message\File - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @return File + * @throws ExceptionInterface */ public function getMessage($id) { // TODO that's ugly, would be better to let the message class decide - if (\trim($this->messageClass, '\\') === Message\File::class - || is_subclass_of($this->messageClass, Message\File::class) + if ( + trim($this->messageClass, '\\') === File::class + || is_subclass_of($this->messageClass, File::class) ) { return new $this->messageClass([ 'file' => $this->getFileData($id, 'filename'), @@ -144,7 +177,7 @@ class Maildir extends AbstractStorage ]); } - /* + /** * Get raw header of message or part * * @param int $id number of message @@ -175,7 +208,7 @@ class Maildir extends AbstractStorage return $content; } - /* + /** * Get raw content of message or part * * @param int $id number of message @@ -209,7 +242,7 @@ class Maildir extends AbstractStorage * Supported parameters are: * - dirname dirname of mbox file * - * @param $params array|object Array, iterable object, or stdClass object + * @param array|object $params Array, iterable object, or stdClass object * with reader specific parameters * @throws Exception\InvalidArgumentException */ @@ -221,7 +254,7 @@ class Maildir extends AbstractStorage throw new Exception\InvalidArgumentException('no dirname provided in params'); } - $dirname = (string) $params['dirname'] ; + $dirname = (string) $params['dirname']; if (! is_dir($dirname)) { throw new Exception\InvalidArgumentException(sprintf('Maildir "%s" is not a directory', $dirname)); @@ -231,7 +264,7 @@ class Maildir extends AbstractStorage throw new Exception\InvalidArgumentException('invalid maildir given'); } - $this->has['top'] = true; + $this->has['top'] = true; $this->has['flags'] = true; $this->openMaildir($dirname); } @@ -299,15 +332,15 @@ class Maildir extends AbstractStorage continue; } - if (false !== strpos($entry, ':')) { - list($uniq, $info) = explode(':', $entry, 2); + if (str_contains($entry, ':')) { + [$uniq, $info] = explode(':', $entry, 2); } else { $uniq = $entry; $info = ''; } - if (false !== strpos($uniq, ',')) { - list(, $size) = explode(',', $uniq, 2); + if (str_contains($uniq, ',')) { + [, $size] = explode(',', $uniq, 2); } else { $size = ''; } @@ -320,8 +353,8 @@ class Maildir extends AbstractStorage $size = null; } - if (false !== strpos($info, ',')) { - list($version, $flags) = explode(',', $info, 2); + if (str_contains($info, ',')) { + [$version, $flags] = explode(',', $info, 2); } else { $version = $info; $flags = ''; @@ -332,9 +365,9 @@ class Maildir extends AbstractStorage } $namedFlags = $defaultFlags; - $length = strlen($flags); + $length = strlen($flags); for ($i = 0; $i < $length; ++$i) { - $flag = $flags[$i]; + $flag = $flags[$i]; $namedFlags[$flag] = static::$knownFlags[$flag] ?? $flag; } @@ -350,15 +383,12 @@ class Maildir extends AbstractStorage $this->files[] = $data; } - \usort($this->files, function ($a, $b): int { - return \strcmp($a['filename'], $b['filename']); - }); + usort($this->files, static fn($a, $b): int => strcmp($a['filename'], $b['filename'])); } /** * Close resource for mail lib. If you need to control, when the resource * is closed. Otherwise the destructor would call this. - * */ public function close() { @@ -378,7 +408,7 @@ class Maildir extends AbstractStorage /** * stub for not supported message deletion * - * @param $id + * @param int $id * @throws Exception\RuntimeException */ public function removeMessage($id) diff --git a/lib/laminas/laminas-mail/src/Storage/Mbox.php b/lib/laminas/laminas-mail/src/Storage/Mbox.php index 7e2ec748f..b4db7bd11 100644 --- a/lib/laminas/laminas-mail/src/Storage/Mbox.php +++ b/lib/laminas/laminas-mail/src/Storage/Mbox.php @@ -2,52 +2,81 @@ namespace Laminas\Mail\Storage; +use Laminas\Mail\Storage\Exception\ExceptionInterface; +use Laminas\Mail\Storage\Message\File; +use Laminas\Mail\Storage\Message\MessageInterface; use Laminas\Stdlib\ErrorHandler; +use function array_combine; +use function count; +use function fclose; +use function fgets; +use function filemtime; +use function fopen; +use function fseek; +use function ftell; +use function is_dir; +use function is_resource; +use function is_subclass_of; +use function range; +use function str_starts_with; +use function stream_get_contents; +use function strlen; +use function strtolower; +use function trim; + +use const E_WARNING; + class Mbox extends AbstractStorage { /** * file handle to mbox file + * * @var null|resource */ protected $fh; /** * filename of mbox file for __wakeup + * * @var string */ protected $filename; /** * modification date of mbox file for __wakeup + * * @var int */ protected $filemtime; /** * start and end position of messages as array('start' => start, 'separator' => headersep, 'end' => end) + * * @var array */ protected $positions; /** * used message class, change it in an extended class to extend the returned message class - * @var string + * + * @var class-string */ - protected $messageClass = Message\File::class; + protected $messageClass = File::class; /** * end of Line for messages * * @var string|null */ + // phpcs:ignore WebimpressCodingStandard.NamingConventions.ValidVariableName.NotCamelCapsProperty protected $messageEOL; /** * Count messages all messages in current box * * @return int number of messages - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function countMessages() { @@ -95,21 +124,23 @@ class Mbox extends AbstractStorage * Fetch a message * * @param int $id number of message - * @return \Laminas\Mail\Storage\Message\File - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @return File + * @throws ExceptionInterface */ public function getMessage($id) { // TODO that's ugly, would be better to let the message class decide - if (is_subclass_of($this->messageClass, Message\File::class) - || strtolower($this->messageClass) === strtolower(Message\File::class)) { + if ( + is_subclass_of($this->messageClass, File::class) + || strtolower($this->messageClass) === strtolower(File::class) + ) { // TODO top/body lines $messagePos = $this->getPos($id); $messageClassParams = [ - 'file' => $this->fh, + 'file' => $this->fh, 'startPos' => $messagePos['start'], - 'endPos' => $messagePos['end'], + 'endPos' => $messagePos['end'], ]; if (isset($this->messageEOL)) { @@ -138,7 +169,7 @@ class Mbox extends AbstractStorage return new $this->messageClass(['handler' => $this, 'id' => $id, 'headers' => $message]); } - /* + /** * Get raw header of message or part * * @param int $id number of message @@ -146,7 +177,7 @@ class Mbox extends AbstractStorage * @param int $topLines include this many lines with header (after an empty line) * @return string raw header * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function getRawHeader($id, $part = null, $topLines = 0) { @@ -159,14 +190,14 @@ class Mbox extends AbstractStorage return stream_get_contents($this->fh, $messagePos['separator'] - $messagePos['start'], $messagePos['start']); } - /* + /** * Get raw content of message or part * * @param int $id number of message * @param null|array|string $part path to part or null for message content * @return string raw content * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function getRawContent($id, $part = null) { @@ -183,7 +214,7 @@ class Mbox extends AbstractStorage * Supported parameters are: * - filename filename of mbox file * - * @param $params array|object|Config mail reader specific parameters + * @param array|object|Config $params mail reader specific parameters * @throws Exception\InvalidArgumentException */ public function __construct($params) @@ -228,7 +259,7 @@ class Mbox extends AbstractStorage $result = false; $line = fgets($file) ?: ''; - if (strpos($line, 'From ') === 0) { + if (str_starts_with($line, 'From ')) { $result = true; } @@ -260,11 +291,11 @@ class Mbox extends AbstractStorage ErrorHandler::start(); $this->fh = fopen($filename, 'r'); - $error = ErrorHandler::stop(); + $error = ErrorHandler::stop(); if (! $this->fh) { throw new Exception\RuntimeException('cannot open mbox file', 0, $error); } - $this->filename = $filename; + $this->filename = $filename; $this->filemtime = filemtime($this->filename); if (! $this->isMboxFile($this->fh, false)) { @@ -276,13 +307,13 @@ class Mbox extends AbstractStorage $messagePos = ['start' => ftell($this->fh), 'separator' => 0, 'end' => 0]; while (($line = fgets($this->fh)) !== false) { - if (strpos($line, 'From ') === 0) { + if (str_starts_with($line, 'From ')) { $messagePos['end'] = ftell($this->fh) - strlen($line) - 2; // + newline if (! $messagePos['separator']) { $messagePos['separator'] = $messagePos['end']; } $this->positions[] = $messagePos; - $messagePos = ['start' => ftell($this->fh), 'separator' => 0, 'end' => 0]; + $messagePos = ['start' => ftell($this->fh), 'separator' => 0, 'end' => 0]; } if (! $messagePos['separator'] && ! trim($line)) { $messagePos['separator'] = ftell($this->fh); @@ -299,7 +330,6 @@ class Mbox extends AbstractStorage /** * Close resource for mail lib. If you need to control, when the resource * is closed. Otherwise the destructor would call this. - * */ public function close() { @@ -322,7 +352,7 @@ class Mbox extends AbstractStorage /** * stub for not supported message deletion * - * @param $id + * @param int $id message number * @throws Exception\RuntimeException */ public function removeMessage($id) @@ -339,7 +369,7 @@ class Mbox extends AbstractStorage * * @param int|null $id message number * @return array|string message number for given message or all messages as array - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function getUniqueId($id = null) { @@ -361,7 +391,7 @@ class Mbox extends AbstractStorage * * @param string $id unique id * @return int message number - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function getNumberByUniqueId($id) { diff --git a/lib/laminas/laminas-mail/src/Storage/Message.php b/lib/laminas/laminas-mail/src/Storage/Message.php index d2307aed3..9cad04c84 100644 --- a/lib/laminas/laminas-mail/src/Storage/Message.php +++ b/lib/laminas/laminas-mail/src/Storage/Message.php @@ -4,10 +4,17 @@ namespace Laminas\Mail\Storage; use Laminas\Stdlib\ErrorHandler; +use function array_combine; +use function file_get_contents; +use function is_resource; +use function ltrim; +use function stream_get_contents; + class Message extends Part implements Message\MessageInterface { /** * flags for this message + * * @var array */ protected $flags = []; @@ -28,7 +35,7 @@ class Message extends Part implements Message\MessageInterface if (! is_resource($params['file'])) { ErrorHandler::start(); $params['raw'] = file_get_contents($params['file']); - $error = ErrorHandler::stop(); + $error = ErrorHandler::stop(); if ($params['raw'] === false) { throw new Exception\RuntimeException('could not open file', 0, $error); } diff --git a/lib/laminas/laminas-mail/src/Storage/Message/File.php b/lib/laminas/laminas-mail/src/Storage/Message/File.php index b5ce38990..72a0ebe2f 100644 --- a/lib/laminas/laminas-mail/src/Storage/Message/File.php +++ b/lib/laminas/laminas-mail/src/Storage/Message/File.php @@ -2,12 +2,16 @@ namespace Laminas\Mail\Storage\Message; +use Laminas\Mail\Storage\Exception\ExceptionInterface; use Laminas\Mail\Storage\Part; +use function array_combine; + class File extends Part\File implements MessageInterface { /** * flags for this message + * * @var array */ protected $flags = []; @@ -19,7 +23,7 @@ class File extends Part\File implements MessageInterface * - flags array with flags for message, keys are ignored, use constants defined in Laminas\Mail\Storage * * @param array $params - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function __construct(array $params) { diff --git a/lib/laminas/laminas-mail/src/Storage/ParamsNormalizer.php b/lib/laminas/laminas-mail/src/Storage/ParamsNormalizer.php index 91e5a548e..a6ad81c54 100644 --- a/lib/laminas/laminas-mail/src/Storage/ParamsNormalizer.php +++ b/lib/laminas/laminas-mail/src/Storage/ParamsNormalizer.php @@ -5,16 +5,22 @@ namespace Laminas\Mail\Storage; use Traversable; use Webmozart\Assert\Assert; +use function get_object_vars; +use function gettype; +use function is_array; +use function is_object; +use function iterator_to_array; +use function sprintf; + /** * @internal */ final class ParamsNormalizer { /** - * @param mixed $params * @return array */ - public static function normalizeParams($params): array + public static function normalizeParams(mixed $params): array { if ($params instanceof Traversable) { $params = iterator_to_array($params); diff --git a/lib/laminas/laminas-mail/src/Storage/Part.php b/lib/laminas/laminas-mail/src/Storage/Part.php index c1f2f4681..26b761c08 100644 --- a/lib/laminas/laminas-mail/src/Storage/Part.php +++ b/lib/laminas/laminas-mail/src/Storage/Part.php @@ -2,58 +2,81 @@ namespace Laminas\Mail\Storage; +use ArrayIterator; use Laminas\Mail\Header\HeaderInterface; use Laminas\Mail\Headers; use Laminas\Mime; +use Laminas\Mime\Exception\RuntimeException; use RecursiveIterator; use ReturnTypeWillChange; +use Stringable; -class Part implements RecursiveIterator, Part\PartInterface +use function array_map; +use function count; +use function current; +use function implode; +use function is_array; +use function iterator_to_array; +use function preg_replace; +use function stripos; +use function strlen; +use function strtolower; +use function trim; + +class Part implements RecursiveIterator, Part\PartInterface, Stringable { /** * Headers of the part + * * @var Headers|null */ protected $headers; /** * raw part body + * * @var null|string */ protected $content; /** * toplines as fetched with headers + * * @var string */ protected $topLines = ''; /** * parts of multipart message + * * @var array */ protected $parts = []; /** * count of parts of a multipart message + * * @var null|int */ protected $countParts; /** * current position of iterator + * * @var int */ protected $iterationPos = 1; /** * mail handler, if late fetch is active + * * @var null|AbstractStorage */ protected $mail; /** * message number for mail handler + * * @var int */ protected $messageNum = 0; @@ -87,7 +110,7 @@ class Part implements RecursiveIterator, Part\PartInterface $this->messageNum = $params['id']; } - $params['strict'] = $params['strict'] ?? false; + $params['strict'] ??= false; if (isset($params['raw'])) { Mime\Decode::splitMessage( @@ -124,7 +147,7 @@ class Part implements RecursiveIterator, Part\PartInterface { try { return stripos($this->contentType, 'multipart/') === 0; - } catch (Exception\ExceptionInterface $e) { + } catch (Exception\ExceptionInterface) { return false; } } @@ -211,10 +234,10 @@ class Part implements RecursiveIterator, Part\PartInterface throw new Exception\RuntimeException('part not found'); } - if ($this->mail && $this->mail->hasFetchPart) { + // if ($this->mail && $this->mail->hasFetchPart) { // TODO: fetch part // return - } + // } $this->cacheContent(); @@ -241,10 +264,10 @@ class Part implements RecursiveIterator, Part\PartInterface return $this->countParts; } - if ($this->mail && $this->mail->hasFetchPart) { + // if ($this->mail && $this->mail->hasFetchPart) { // TODO: fetch part // return - } + // } $this->cacheContent(); @@ -264,7 +287,7 @@ class Part implements RecursiveIterator, Part\PartInterface { if (null === $this->headers) { if ($this->mail) { - $part = $this->mail->getRawHeader($this->messageNum); + $part = $this->mail->getRawHeader($this->messageNum); $this->headers = Headers::fromString($part); } else { $this->headers = new Headers(); @@ -288,14 +311,14 @@ class Part implements RecursiveIterator, Part\PartInterface * @param string $name name of header, matches case-insensitive, but camel-case is replaced with dashes * @param string $format change type of return value to 'string' or 'array' * @throws Exception\InvalidArgumentException - * @return string|array|HeaderInterface|\ArrayIterator value of header in wanted or internal format + * @return string|array|HeaderInterface|ArrayIterator value of header in wanted or internal format */ public function getHeader($name, $format = null) { $header = $this->getHeaders()->get($name); if ($header === false) { $lowerName = strtolower(preg_replace('%([a-z])([A-Z])%', '\1-\2', $name)); - $header = $this->getHeaders()->get($lowerName); + $header = $this->getHeaders()->get($lowerName); if ($header === false) { throw new Exception\InvalidArgumentException( "Header with Name $name or $lowerName not found" @@ -310,9 +333,8 @@ class Part implements RecursiveIterator, Part\PartInterface } else { $return = trim(implode( Mime\Mime::LINEEND, - array_map(static function ($header): string { - return $header->getFieldValue(HeaderInterface::FORMAT_RAW); - }, iterator_to_array($header)) + array_map(static fn($header): string + => $header->getFieldValue(HeaderInterface::FORMAT_RAW), iterator_to_array($header)) ), Mime\Mime::LINEEND); } break; @@ -346,7 +368,7 @@ class Part implements RecursiveIterator, Part\PartInterface * @param string $wantedPart the wanted part, default is first, if null an array with all parts is returned * @param string $firstName key name for the first part * @return string|array wanted part or all parts as array($firstName => firstPart, partname => value) - * @throws \Laminas\Mime\Exception\RuntimeException + * @throws RuntimeException */ public function getHeaderField($name, $wantedPart = '0', $firstName = '0') { @@ -376,7 +398,7 @@ class Part implements RecursiveIterator, Part\PartInterface * * @see Part::hasHeader * - * @param string + * @param string $name * @return bool */ public function __isset($name) @@ -389,7 +411,7 @@ class Part implements RecursiveIterator, Part\PartInterface * * @return string content */ - public function __toString() + public function __toString(): string { return $this->getContent(); } diff --git a/lib/laminas/laminas-mail/src/Storage/Part/File.php b/lib/laminas/laminas-mail/src/Storage/Part/File.php index befdb576d..287ee94c3 100644 --- a/lib/laminas/laminas-mail/src/Storage/Part/File.php +++ b/lib/laminas/laminas-mail/src/Storage/Part/File.php @@ -5,10 +5,26 @@ namespace Laminas\Mail\Storage\Part; use Laminas\Mail\Headers; use Laminas\Mail\Storage\Part; +use function count; +use function feof; +use function fgets; +use function fopen; +use function fread; +use function fseek; +use function ftell; +use function is_resource; +use function stream_copy_to_stream; +use function trim; + +use const SEEK_END; + class File extends Part { + /** @var array */ protected $contentPos = []; + /** @var array */ protected $partPos = []; + /** @var resource */ protected $fh; /** @@ -31,13 +47,14 @@ class File extends Part } if (! is_resource($params['file'])) { - $this->fh = fopen($params['file'], 'r'); + $fh = fopen($params['file'], 'r'); } else { - $this->fh = $params['file']; + $fh = $params['file']; } - if (! $this->fh) { + if (! $fh) { throw new Exception\RuntimeException('could not open file'); } + $this->fh = $fh; if (isset($params['startPos'])) { fseek($this->fh, $params['startPos']); } @@ -70,7 +87,7 @@ class File extends Part } $part = []; - $pos = $this->contentPos[0]; + $pos = $this->contentPos[0]; fseek($this->fh, $pos); while (! feof($this->fh) && ($endPos === null || $pos < $endPos)) { $line = fgets($this->fh); @@ -82,18 +99,18 @@ class File extends Part } $lastPos = $pos; - $pos = ftell($this->fh); - $line = trim($line); + $pos = ftell($this->fh); + $line = trim($line); if ($line == '--' . $boundary) { if ($part) { // not first part - $part[1] = $lastPos; + $part[1] = $lastPos; $this->partPos[] = $part; } $part = [$pos]; } elseif ($line == '--' . $boundary . '--') { - $part[1] = $lastPos; + $part[1] = $lastPos; $this->partPos[] = $part; break; } @@ -146,9 +163,9 @@ class File extends Part } return new static([ - 'file' => $this->fh, + 'file' => $this->fh, 'startPos' => $this->partPos[$num][0], - 'endPos' => $this->partPos[$num][1], + 'endPos' => $this->partPos[$num][1], ]); } } diff --git a/lib/laminas/laminas-mail/src/Storage/Part/PartInterface.php b/lib/laminas/laminas-mail/src/Storage/Part/PartInterface.php index 6161112bb..1b8fe0855 100644 --- a/lib/laminas/laminas-mail/src/Storage/Part/PartInterface.php +++ b/lib/laminas/laminas-mail/src/Storage/Part/PartInterface.php @@ -102,6 +102,7 @@ interface PartInterface extends RecursiveIterator * This getter is short for PartInterface::getHeader($name, 'string') * * @see PartInterface::getHeader() + * * @param string $name header name * @return string value of header * @throws Exception\ExceptionInterface diff --git a/lib/laminas/laminas-mail/src/Storage/Pop3.php b/lib/laminas/laminas-mail/src/Storage/Pop3.php index def4f97a9..633f3161f 100644 --- a/lib/laminas/laminas-mail/src/Storage/Pop3.php +++ b/lib/laminas/laminas-mail/src/Storage/Pop3.php @@ -4,12 +4,23 @@ namespace Laminas\Mail\Storage; use Laminas\Mail\Exception as MailException; use Laminas\Mail\Protocol; +use Laminas\Mail\Protocol\Exception\RuntimeException; +use Laminas\Mail\Storage\Exception\ExceptionInterface; +use Laminas\Mail\Storage\Exception\InvalidArgumentException; +use Laminas\Mail\Storage\Message; use Laminas\Mime; +use function array_combine; +use function array_key_exists; +use function is_string; +use function range; +use function strtolower; + class Pop3 extends AbstractStorage { /** * protocol handler + * * @var null|\Laminas\Mail\Protocol\Pop3 */ protected $protocol; @@ -18,7 +29,7 @@ class Pop3 extends AbstractStorage * Count messages all messages in current box * * @return int number of messages - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface */ public function countMessages() @@ -38,7 +49,7 @@ class Pop3 extends AbstractStorage */ public function getSize($id = 0) { - $id = $id ? $id : null; + $id = $id ?: null; return $this->protocol->getList($id); } @@ -46,23 +57,23 @@ class Pop3 extends AbstractStorage * Fetch a message * * @param int $id number of message - * @return \Laminas\Mail\Storage\Message + * @return Message * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface */ public function getMessage($id) { $bodyLines = 0; - $message = $this->protocol->top($id, $bodyLines, true); + $message = $this->protocol->top($id, $bodyLines, true); return new $this->messageClass([ - 'handler' => $this, - 'id' => $id, - 'headers' => $message, + 'handler' => $this, + 'id' => $id, + 'headers' => $message, 'noToplines' => $bodyLines < 1, ]); } - /* + /** * Get raw header of message or part * * @param int $id number of message @@ -70,7 +81,7 @@ class Pop3 extends AbstractStorage * @param int $topLines include this many lines with header (after an empty line) * @return string raw header * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function getRawHeader($id, $part = null, $topLines = 0) { @@ -82,14 +93,14 @@ class Pop3 extends AbstractStorage return $this->protocol->top($id, 0, true); } - /* + /** * Get raw content of message or part * * @param int $id number of message * @param null|array|string $part path to part or null for message content * @return string raw content * @throws \Laminas\Mail\Protocol\Exception\ExceptionInterface - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function getRawContent($id, $part = null) { @@ -117,8 +128,8 @@ class Pop3 extends AbstractStorage * * @param array|object|Protocol\Pop3 $params mail reader specific * parameters or configured Pop3 protocol object - * @throws \Laminas\Mail\Storage\Exception\InvalidArgumentException - * @throws \Laminas\Mail\Protocol\Exception\RuntimeException + * @throws InvalidArgumentException + * @throws RuntimeException */ public function __construct($params) { @@ -134,7 +145,7 @@ class Pop3 extends AbstractStorage $params = ParamsNormalizer::normalizeParams($params); if (! isset($params['user'])) { - throw new Exception\InvalidArgumentException('need at least user in params'); + throw new InvalidArgumentException('need at least user in params'); } $host = $params['host'] ?? 'localhost'; @@ -172,7 +183,7 @@ class Pop3 extends AbstractStorage /** * Keep the server busy. * - * @throws \Laminas\Mail\Protocol\Exception\RuntimeException + * @throws RuntimeException */ public function noop() { @@ -185,7 +196,7 @@ class Pop3 extends AbstractStorage * identify the message. * * @param int $id number of message - * @throws \Laminas\Mail\Protocol\Exception\RuntimeException + * @throws RuntimeException */ public function removeMessage($id) { @@ -199,7 +210,7 @@ class Pop3 extends AbstractStorage * * @param int|null $id message number * @return array|string message number for given message or all messages as array - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @throws ExceptionInterface */ public function getUniqueId($id = null) { @@ -225,7 +236,7 @@ class Pop3 extends AbstractStorage * as parameter and use this method to translate it to message number right before calling removeMessage() * * @param string $id unique id - * @throws Exception\InvalidArgumentException + * @throws InvalidArgumentException * @return int message number */ public function getNumberByUniqueId($id) @@ -241,7 +252,7 @@ class Pop3 extends AbstractStorage } } - throw new Exception\InvalidArgumentException('unique id not found'); + throw new InvalidArgumentException('unique id not found'); } /** @@ -249,8 +260,9 @@ class Pop3 extends AbstractStorage * retrieved if Top wasn't needed/tried yet. * * @see AbstractStorage::__get() + * * @param string $var - * @return string + * @return null|string */ public function __get($var) { @@ -264,7 +276,7 @@ class Pop3 extends AbstractStorage // need to make a real call, because not all server are honest in their capas try { $this->protocol->top(1, 0, false); - } catch (MailException\ExceptionInterface $e) { + } catch (MailException\ExceptionInterface) { // ignoring error } } @@ -276,7 +288,7 @@ class Pop3 extends AbstractStorage $id = null; try { $id = $this->protocol->uniqueid(1); - } catch (MailException\ExceptionInterface $e) { + } catch (MailException\ExceptionInterface) { // ignoring error } $this->has['uniqueid'] = (bool) $id; diff --git a/lib/laminas/laminas-mail/src/Storage/Writable/Maildir.php b/lib/laminas/laminas-mail/src/Storage/Writable/Maildir.php index a8245b510..fe8a162a9 100644 --- a/lib/laminas/laminas-mail/src/Storage/Writable/Maildir.php +++ b/lib/laminas/laminas-mail/src/Storage/Writable/Maildir.php @@ -5,10 +5,64 @@ namespace Laminas\Mail\Storage\Writable; use Laminas\Mail\Exception as MailException; use Laminas\Mail\Storage; use Laminas\Mail\Storage\Exception as StorageException; +use Laminas\Mail\Storage\Exception\ExceptionInterface; +use Laminas\Mail\Storage\Exception\InvalidArgumentException; +use Laminas\Mail\Storage\Exception\RuntimeException; use Laminas\Mail\Storage\Folder; use Laminas\Stdlib\ErrorHandler; use RecursiveIteratorIterator; +use function array_flip; +use function array_keys; +use function array_search; +use function array_values; +use function closedir; +use function copy; +use function dirname; +use function explode; +use function fclose; +use function fgets; +use function file_exists; +use function file_put_contents; +use function filemtime; +use function filesize; +use function fopen; +use function fread; +use function fwrite; +use function get_resource_type; +use function getmypid; +use function implode; +use function is_array; +use function is_dir; +use function is_file; +use function is_numeric; +use function is_resource; +use function link; +use function microtime; +use function mkdir; +use function opendir; +use function php_uname; +use function readdir; +use function rename; +use function rmdir; +use function rtrim; +use function sleep; +use function str_contains; +use function str_starts_with; +use function stream_copy_to_stream; +use function strlen; +use function strpos; +use function strrpos; +use function strtok; +use function substr; +use function time; +use function trim; +use function unlink; + +use const DIRECTORY_SEPARATOR; +use const E_WARNING; +use const FILE_APPEND; + class Maildir extends Folder\Maildir implements WritableInterface { // TODO: init maildir (+ constructor option create if not found) @@ -26,8 +80,8 @@ class Maildir extends Folder\Maildir implements WritableInterface * If the given dir is already a valid maildir this will not fail. * * @param string $dir directory for the new maildir (may already exist) - * @throws \Laminas\Mail\Storage\Exception\RuntimeException - * @throws \Laminas\Mail\Storage\Exception\InvalidArgumentException + * @throws RuntimeException + * @throws InvalidArgumentException */ public static function initMaildir($dir) { @@ -69,8 +123,8 @@ class Maildir extends Folder\Maildir implements WritableInterface * Additional parameters are (see parent for more): * - create if true a new maildir is create if none exists * - * @param $params array mail reader specific parameters - * @throws \Laminas\Mail\Storage\Exception\ExceptionInterface + * @param array|object $params mail reader specific parameters + * @throws ExceptionInterface */ public function __construct($params) { @@ -78,7 +132,8 @@ class Maildir extends Folder\Maildir implements WritableInterface $params = (object) $params; } - if (! empty($params->create) + if ( + ! empty($params->create) && isset($params->dirname) && ! file_exists($params->dirname . DIRECTORY_SEPARATOR . 'cur') ) { @@ -95,8 +150,8 @@ class Maildir extends Folder\Maildir implements WritableInterface * may be used as parent or which chars may be used in the folder name * * @param string $name global name of folder, local name if $parentFolder is set - * @param string|\Laminas\Mail\Storage\Folder $parentFolder parent of new folder, else root folder is parent - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * @param string|Folder $parentFolder parent of new folder, else root folder is parent + * @throws RuntimeException * @return string only used internally (new created maildir) */ public function createFolder($name, $parentFolder = null) @@ -115,25 +170,26 @@ class Maildir extends Folder\Maildir implements WritableInterface $exists = null; try { $exists = $this->getFolders($folder); - } catch (MailException\ExceptionInterface $e) { + } catch (MailException\ExceptionInterface) { // ok } if ($exists) { throw new StorageException\RuntimeException('folder already exists'); } - if (strpos($folder, $this->delim . $this->delim) !== false) { + if (str_contains($folder, $this->delim . $this->delim)) { throw new StorageException\RuntimeException('invalid name - folder parts may not be empty'); } - if (strpos($folder, 'INBOX' . $this->delim) === 0) { + if (str_starts_with($folder, 'INBOX' . $this->delim)) { $folder = substr($folder, 6); } $fulldir = $this->rootdir . '.' . $folder; // check if we got tricked and would create a dir outside of the rootdir or not as direct child - if (strpos($folder, DIRECTORY_SEPARATOR) !== false || strpos($folder, '/') !== false + if ( + str_contains($folder, DIRECTORY_SEPARATOR) || str_contains($folder, '/') || dirname($fulldir) . DIRECTORY_SEPARATOR != $this->rootdir ) { throw new StorageException\RuntimeException('invalid name - no directory separator allowed in folder name'); @@ -146,7 +202,7 @@ class Maildir extends Folder\Maildir implements WritableInterface $parent = substr($folder, 0, strrpos($folder, $this->delim)); try { $this->getFolders($parent); - } catch (MailException\ExceptionInterface $e) { + } catch (MailException\ExceptionInterface) { // does not - create parent folder $this->createFolder($parent); } @@ -176,7 +232,7 @@ class Maildir extends Folder\Maildir implements WritableInterface * remove a folder * * @param string|Folder $name name or instance of folder - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * @throws RuntimeException */ public function removeFolder($name) { @@ -191,7 +247,7 @@ class Maildir extends Folder\Maildir implements WritableInterface } $name = trim($name, $this->delim); - if (strpos($name, 'INBOX' . $this->delim) === 0) { + if (str_starts_with($name, 'INBOX' . $this->delim)) { $name = substr($name, 6); } @@ -249,9 +305,9 @@ class Maildir extends Folder\Maildir implements WritableInterface * * The new name has the same restrictions as in createFolder() * - * @param string|\Laminas\Mail\Storage\Folder $oldName name or instance of folder + * @param string|Folder $oldName name or instance of folder * @param string $newName new global name of folder - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * @throws RuntimeException */ public function renameFolder($oldName, $newName) { @@ -262,16 +318,16 @@ class Maildir extends Folder\Maildir implements WritableInterface } $oldName = trim($oldName, $this->delim); - if (strpos($oldName, 'INBOX' . $this->delim) === 0) { + if (str_starts_with($oldName, 'INBOX' . $this->delim)) { $oldName = substr($oldName, 6); } $newName = trim($newName, $this->delim); - if (strpos($newName, 'INBOX' . $this->delim) === 0) { + if (str_starts_with($newName, 'INBOX' . $this->delim)) { $newName = substr($newName, 6); } - if (strpos($newName, $oldName . $this->delim) === 0) { + if (str_starts_with($newName, $oldName . $this->delim)) { throw new StorageException\RuntimeException('new folder cannot be a child of old folder'); } @@ -325,7 +381,7 @@ class Maildir extends Folder\Maildir implements WritableInterface */ protected function createUniqueId() { - $id = ''; + $id = ''; $id .= microtime(true); $id .= '.' . getmypid(); $id .= '.' . php_uname('n'); @@ -340,7 +396,7 @@ class Maildir extends Folder\Maildir implements WritableInterface * you should close the returned filehandle! * * @param string $folder name of current folder without leading . - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * @throws RuntimeException * @return array array('dirname' => dir of maildir folder, 'uniq' => unique id, 'filename' => name of create file * 'handle' => file opened for writing) */ @@ -385,10 +441,10 @@ class Maildir extends Folder\Maildir implements WritableInterface } return [ - 'dirname' => $this->rootdir . '.' . $folder, - 'uniq' => $uniq, + 'dirname' => $this->rootdir . '.' . $folder, + 'uniq' => $uniq, 'filename' => $tmpdir . $uniq, - 'handle' => $fh, + 'handle' => $fh, ]; } @@ -414,7 +470,7 @@ class Maildir extends Folder\Maildir implements WritableInterface if (! isset($wantedFlags[$flag])) { continue; } - $info .= $char; + $info .= $char; $flags[$char] = $flag; unset($wantedFlags[$flag]); } @@ -449,7 +505,7 @@ class Maildir extends Folder\Maildir implements WritableInterface $folder = $this->currentFolder; } - if (! ($folder instanceof Folder)) { + if (! $folder instanceof Folder) { $folder = $this->getFolders($folder); } @@ -472,7 +528,7 @@ class Maildir extends Folder\Maildir implements WritableInterface if ($size !== false) { $info = ',S=' . $size . $info; } - $newFilename = $tempFile['dirname'] . DIRECTORY_SEPARATOR; + $newFilename = $tempFile['dirname'] . DIRECTORY_SEPARATOR; $newFilename .= $recent ? 'new' : 'cur'; $newFilename .= DIRECTORY_SEPARATOR . $tempFile['uniq'] . $info; @@ -492,8 +548,8 @@ class Maildir extends Folder\Maildir implements WritableInterface } $this->files[] = [ - 'uniq' => $tempFile['uniq'], - 'flags' => $flags, + 'uniq' => $tempFile['uniq'], + 'flags' => $flags, 'filename' => $newFilename, ]; if ($this->quota) { @@ -505,8 +561,8 @@ class Maildir extends Folder\Maildir implements WritableInterface * copy an existing message * * @param int $id number of message - * @param string|\Laminas\Mail\Storage\Folder $folder name or instance of targer folder - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * @param string|Folder $folder name or instance of targer folder + * @throws RuntimeException */ public function copyMessage($id, $folder) { @@ -514,7 +570,7 @@ class Maildir extends Folder\Maildir implements WritableInterface throw new StorageException\RuntimeException('storage is over quota!'); } - if (! ($folder instanceof Folder)) { + if (! $folder instanceof Folder) { $folder = $this->getFolders($folder); } @@ -558,12 +614,13 @@ class Maildir extends Folder\Maildir implements WritableInterface throw $exception; } - if ($folder->getGlobalName() == $this->currentFolder + if ( + $folder->getGlobalName() == $this->currentFolder || ($this->currentFolder == 'INBOX' && $folder->getGlobalName() == '/') ) { $this->files[] = [ - 'uniq' => $tempFile['uniq'], - 'flags' => $flags, + 'uniq' => $tempFile['uniq'], + 'flags' => $flags, 'filename' => $newFile, ]; } @@ -577,16 +634,17 @@ class Maildir extends Folder\Maildir implements WritableInterface * move an existing message * * @param int $id number of message - * @param string|\Laminas\Mail\Storage\Folder $folder name or instance of targer folder - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * @param string|Folder $folder name or instance of targer folder + * @throws RuntimeException */ public function moveMessage($id, $folder) { - if (! ($folder instanceof Folder)) { + if (! $folder instanceof Folder) { $folder = $this->getFolders($folder); } - if ($folder->getGlobalName() == $this->currentFolder + if ( + $folder->getGlobalName() == $this->currentFolder || ($this->currentFolder == 'INBOX' && $folder->getGlobalName() == '/') ) { throw new StorageException\RuntimeException('target is current folder'); @@ -641,7 +699,7 @@ class Maildir extends Folder\Maildir implements WritableInterface * * @param int $id number of message * @param array $flags new flags for message - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * @throws RuntimeException */ public function setFlags($id, $flags) { @@ -672,8 +730,8 @@ class Maildir extends Folder\Maildir implements WritableInterface /** * stub for not supported message deletion * - * @param $id - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * @param int $id + * @throws RuntimeException */ public function removeMessage($id) { @@ -716,8 +774,9 @@ class Maildir extends Folder\Maildir implements WritableInterface * get currently set quota * * @see \Laminas\Mail\Storage\Writable\Maildir::setQuota() + * * @param bool $fromStorage - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * @throws RuntimeException * @return bool|array */ public function getQuota($fromStorage = false) @@ -748,7 +807,8 @@ class Maildir extends Folder\Maildir implements WritableInterface /** * @see http://www.inter7.com/courierimap/README.maildirquota.html "Calculating maildirsize" - * @throws \Laminas\Mail\Storage\Exception\RuntimeException + * + * @throws RuntimeException * @return array */ protected function calculateMaildirsize() @@ -842,7 +902,7 @@ class Maildir extends Folder\Maildir implements WritableInterface } return [ - 'size' => $totalSize, + 'size' => $totalSize, 'count' => $messages, 'quota' => $quota, ]; @@ -850,6 +910,7 @@ class Maildir extends Folder\Maildir implements WritableInterface /** * @see http://www.inter7.com/courierimap/README.maildirquota.html "Calculating the quota for a Maildir++" + * * @param bool $forceRecalc * @return array */ @@ -859,7 +920,8 @@ class Maildir extends Folder\Maildir implements WritableInterface $totalSize = 0; $messages = 0; $maildirsize = ''; - if (! $forceRecalc + if ( + ! $forceRecalc && file_exists($this->rootdir . 'maildirsize') && filesize($this->rootdir . 'maildirsize') < 5120 ) { @@ -874,10 +936,10 @@ class Maildir extends Folder\Maildir implements WritableInterface } } if (! $fh) { - $result = $this->calculateMaildirsize(); + $result = $this->calculateMaildirsize(); $totalSize = $result['size']; - $messages = $result['count']; - $quota = $result['quota']; + $messages = $result['count']; + $quota = $result['quota']; } else { $maildirsize = explode("\n", $maildirsize); if (is_array($this->quota)) { @@ -895,9 +957,9 @@ class Maildir extends Folder\Maildir implements WritableInterface } unset($maildirsize[0]); foreach ($maildirsize as $line) { - list($size, $count) = explode(' ', trim($line)); - $totalSize += $size; - $messages += $count; + [$size, $count] = explode(' ', trim($line)); + $totalSize += $size; + $messages += $count; } } @@ -909,10 +971,10 @@ class Maildir extends Folder\Maildir implements WritableInterface // Also we're using local time to calculate the 15 minute offset. Touching a file just for known the // local time of the file storage isn't worth the hassle. if ($overQuota && ($maildirsize || filemtime($this->rootdir . 'maildirsize') > time() - 900)) { - $result = $this->calculateMaildirsize(); - $totalSize = $result['size']; - $messages = $result['count']; - $quota = $result['quota']; + $result = $this->calculateMaildirsize(); + $totalSize = $result['size']; + $messages = $result['count']; + $quota = $result['quota']; $overQuota = false; $overQuota = $overQuota || (isset($quota['size']) && $totalSize > $quota['size']); $overQuota = $overQuota || (isset($quota['count']) && $messages > $quota['count']); @@ -924,20 +986,23 @@ class Maildir extends Folder\Maildir implements WritableInterface } return [ - 'size' => $totalSize, - 'count' => $messages, - 'quota' => $quota, + 'size' => $totalSize, + 'count' => $messages, + 'quota' => $quota, 'over_quota' => $overQuota, ]; } + /** + * @param int $size + * @param int $count + * @return void + */ protected function addQuotaEntry($size, $count = 1) { - if (! file_exists($this->rootdir . 'maildirsize')) { + // if (! file_exists($this->rootdir . 'maildirsize')) { // TODO: should get file handler from calculateQuota - } - $size = (int) $size; - $count = (int) $count; + // } file_put_contents($this->rootdir . 'maildirsize', "$size $count\n", FILE_APPEND); } @@ -945,6 +1010,7 @@ class Maildir extends Folder\Maildir implements WritableInterface * check if storage is currently over quota * * @see calculateQuota() + * * @param bool $detailedResponse return known data of quota and current size and message count * @param bool $forceRecalc * @return bool|array over quota state or detailed response diff --git a/lib/laminas/laminas-mail/src/Transport/Envelope.php b/lib/laminas/laminas-mail/src/Transport/Envelope.php index 1b046c614..a1e9bc517 100644 --- a/lib/laminas/laminas-mail/src/Transport/Envelope.php +++ b/lib/laminas/laminas-mail/src/Transport/Envelope.php @@ -6,14 +6,10 @@ use Laminas\Stdlib\AbstractOptions; class Envelope extends AbstractOptions { - /** - * @var string|null - */ + /** @var string|null */ protected $from; - /** - * @var string|null - */ + /** @var string|null */ protected $to; /** diff --git a/lib/laminas/laminas-mail/src/Transport/Factory.php b/lib/laminas/laminas-mail/src/Transport/Factory.php index b9e34b552..e2f10b69f 100644 --- a/lib/laminas/laminas-mail/src/Transport/Factory.php +++ b/lib/laminas/laminas-mail/src/Transport/Factory.php @@ -5,18 +5,24 @@ namespace Laminas\Mail\Transport; use Laminas\Stdlib\ArrayUtils; use Traversable; +use function class_exists; +use function gettype; +use function is_array; +use function is_object; +use function sprintf; +use function strtolower; + +// phpcs:ignore WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix abstract class Factory { - /** - * @var array Known transport types - */ + /** @var array Known transport types */ protected static $classMap = [ - 'file' => File::class, - 'inmemory' => InMemory::class, - 'memory' => InMemory::class, - 'null' => InMemory::class, - 'sendmail' => Sendmail::class, - 'smtp' => Smtp::class, + 'file' => File::class, + 'inmemory' => InMemory::class, + 'memory' => InMemory::class, + 'null' => InMemory::class, + 'sendmail' => Sendmail::class, + 'smtp' => Smtp::class, ]; /** @@ -35,7 +41,7 @@ abstract class Factory throw new Exception\InvalidArgumentException(sprintf( '%s expects an array or Traversable argument; received "%s"', __METHOD__, - (is_object($spec) ? get_class($spec) : gettype($spec)) + is_object($spec) ? $spec::class : gettype($spec) )); } diff --git a/lib/laminas/laminas-mail/src/Transport/File.php b/lib/laminas/laminas-mail/src/Transport/File.php index 7e772bb7f..aef7f15e1 100644 --- a/lib/laminas/laminas-mail/src/Transport/File.php +++ b/lib/laminas/laminas-mail/src/Transport/File.php @@ -4,6 +4,11 @@ namespace Laminas\Mail\Transport; use Laminas\Mail\Message; +use function file_put_contents; +use function sprintf; + +use const DIRECTORY_SEPARATOR; + /** * File transport * @@ -11,9 +16,7 @@ use Laminas\Mail\Message; */ class File implements TransportInterface { - /** - * @var FileOptions - */ + /** @var FileOptions */ protected $options; /** @@ -28,7 +31,7 @@ class File implements TransportInterface * * @param null|FileOptions $options OPTIONAL (Default: null) */ - public function __construct(FileOptions $options = null) + public function __construct(?FileOptions $options = null) { if (! $options instanceof FileOptions) { $options = new FileOptions(); @@ -46,8 +49,6 @@ class File implements TransportInterface /** * Sets options - * - * @param FileOptions $options */ public function setOptions(FileOptions $options) { @@ -57,9 +58,7 @@ class File implements TransportInterface /** * Saves e-mail message to a file * - * @param Message $message - * @throws Exception\RuntimeException on not writable target directory or - * on file_put_contents() failure + * @throws Exception\RuntimeException On not writable target directory or on file_put_contents() failure. */ public function send(Message $message) { diff --git a/lib/laminas/laminas-mail/src/Transport/FileOptions.php b/lib/laminas/laminas-mail/src/Transport/FileOptions.php index d6a811ed8..6f21cb878 100644 --- a/lib/laminas/laminas-mail/src/Transport/FileOptions.php +++ b/lib/laminas/laminas-mail/src/Transport/FileOptions.php @@ -3,25 +3,32 @@ namespace Laminas\Mail\Transport; use Laminas\Mail\Exception; +use Laminas\Mail\Exception\InvalidArgumentException; use Laminas\Stdlib\AbstractOptions; +use function gettype; +use function is_callable; +use function is_dir; +use function is_object; +use function is_writable; +use function mt_rand; +use function sprintf; +use function sys_get_temp_dir; +use function time; + class FileOptions extends AbstractOptions { - /** - * @var string Path to stored mail files - */ + /** @var string Path to stored mail files */ protected $path; - /** - * @var callable - */ + /** @var callable */ protected $callback; /** * Set path to stored mail files * * @param string $path - * @throws \Laminas\Mail\Exception\InvalidArgumentException + * @throws InvalidArgumentException * @return FileOptions */ public function setPath($path) @@ -56,7 +63,7 @@ class FileOptions extends AbstractOptions * Set callback used to generate a file name * * @param callable $callback - * @throws \Laminas\Mail\Exception\InvalidArgumentException + * @throws InvalidArgumentException * @return FileOptions */ public function setCallback($callback) @@ -65,7 +72,7 @@ class FileOptions extends AbstractOptions throw new Exception\InvalidArgumentException(sprintf( '%s expects a valid callback; received "%s"', __METHOD__, - (is_object($callback) ? get_class($callback) : gettype($callback)) + is_object($callback) ? $callback::class : gettype($callback) )); } $this->callback = $callback; @@ -80,9 +87,7 @@ class FileOptions extends AbstractOptions public function getCallback() { if (null === $this->callback) { - $this->setCallback(function () { - return 'LaminasMail_' . time() . '_' . mt_rand() . '.eml'; - }); + $this->setCallback(static fn() => 'LaminasMail_' . time() . '_' . mt_rand() . '.eml'); } return $this->callback; } diff --git a/lib/laminas/laminas-mail/src/Transport/InMemory.php b/lib/laminas/laminas-mail/src/Transport/InMemory.php index 49caf6adb..93be0d9a2 100644 --- a/lib/laminas/laminas-mail/src/Transport/InMemory.php +++ b/lib/laminas/laminas-mail/src/Transport/InMemory.php @@ -13,15 +13,11 @@ use Laminas\Mail\Message; */ class InMemory implements TransportInterface { - /** - * @var null|Message - */ + /** @var null|Message */ protected $lastMessage; /** * Takes the last message and saves it for testing. - * - * @param Message $message */ public function send(Message $message) { diff --git a/lib/laminas/laminas-mail/src/Transport/Sendmail.php b/lib/laminas/laminas-mail/src/Transport/Sendmail.php index 807282017..aae76f49b 100644 --- a/lib/laminas/laminas-mail/src/Transport/Sendmail.php +++ b/lib/laminas/laminas-mail/src/Transport/Sendmail.php @@ -5,8 +5,32 @@ namespace Laminas\Mail\Transport; use Laminas\Mail; use Laminas\Mail\Address\AddressInterface; use Laminas\Mail\Header\HeaderInterface; +use Laminas\Mail\Transport\Exception\InvalidArgumentException; +use Laminas\Mail\Transport\Exception\RuntimeException; use Traversable; +use function count; +use function escapeshellarg; +use function gettype; +use function implode; +use function is_array; +use function is_callable; +use function is_object; +use function is_string; +use function mail; +use function preg_match; +use function restore_error_handler; +use function set_error_handler; +use function sprintf; +use function str_contains; +use function str_replace; +use function strtoupper; +use function substr; +use function trim; + +use const PHP_OS; +use const PHP_VERSION_ID; + /** * Class for sending email via the PHP internal mail() function */ @@ -28,18 +52,15 @@ class Sendmail implements TransportInterface /** * error information + * * @var string */ protected $errstr; - /** - * @var string - */ + /** @var string */ protected $operatingSystem; /** - * Constructor. - * * @param null|string|array|Traversable $parameters OPTIONAL (Default: null) */ public function __construct($parameters = null) @@ -56,7 +77,7 @@ class Sendmail implements TransportInterface * Used to populate the additional_parameters argument to mail() * * @param null|string|array|Traversable $parameters - * @throws \Laminas\Mail\Transport\Exception\InvalidArgumentException + * @throws InvalidArgumentException * @return Sendmail */ public function setParameters($parameters) @@ -67,10 +88,10 @@ class Sendmail implements TransportInterface } if (! is_array($parameters) && ! $parameters instanceof Traversable) { - throw new Exception\InvalidArgumentException(sprintf( + throw new InvalidArgumentException(sprintf( '%s expects a string, array, or Traversable object of parameters; received "%s"', __METHOD__, - (is_object($parameters) ? get_class($parameters) : gettype($parameters)) + is_object($parameters) ? $parameters::class : gettype($parameters) )); } @@ -89,16 +110,16 @@ class Sendmail implements TransportInterface * Primarily for testing purposes, but could be used to curry arguments. * * @param callable $callable - * @throws \Laminas\Mail\Transport\Exception\InvalidArgumentException + * @throws InvalidArgumentException * @return Sendmail */ public function setCallable($callable) { if (! is_callable($callable)) { - throw new Exception\InvalidArgumentException(sprintf( + throw new InvalidArgumentException(sprintf( '%s expects a callable argument; received "%s"', __METHOD__, - (is_object($callable) ? get_class($callable) : gettype($callable)) + is_object($callable) ? $callable::class : gettype($callable) )); } $this->callable = $callable; @@ -107,8 +128,6 @@ class Sendmail implements TransportInterface /** * Send a message - * - * @param \Laminas\Mail\Message $message */ public function send(Mail\Message $message) { @@ -133,8 +152,7 @@ class Sendmail implements TransportInterface /** * Prepare recipients list * - * @param \Laminas\Mail\Message $message - * @throws \Laminas\Mail\Transport\Exception\RuntimeException + * @throws RuntimeException * @return string */ protected function prepareRecipients(Mail\Message $message) @@ -143,7 +161,7 @@ class Sendmail implements TransportInterface $hasTo = $headers->has('to'); if (! $hasTo && ! $headers->has('cc') && ! $headers->has('bcc')) { - throw new Exception\RuntimeException( + throw new RuntimeException( 'Invalid email; contains no at least one of "To", "Cc", and "Bcc" header' ); } @@ -156,7 +174,7 @@ class Sendmail implements TransportInterface $to = $headers->get('to'); $list = $to->getAddressList(); if (0 == count($list)) { - throw new Exception\RuntimeException('Invalid "To" header; contains no addresses'); + throw new RuntimeException('Invalid "To" header; contains no addresses'); } // If not on Windows, return normal string @@ -176,7 +194,6 @@ class Sendmail implements TransportInterface /** * Prepare the subject line string * - * @param \Laminas\Mail\Message $message * @return string */ protected function prepareSubject(Mail\Message $message) @@ -192,7 +209,6 @@ class Sendmail implements TransportInterface /** * Prepare the body string * - * @param \Laminas\Mail\Message $message * @return string */ protected function prepareBody(Mail\Message $message) @@ -211,7 +227,6 @@ class Sendmail implements TransportInterface /** * Prepare the textual representation of headers * - * @param \Laminas\Mail\Message $message * @return string */ protected function prepareHeaders(Mail\Message $message) @@ -225,8 +240,8 @@ class Sendmail implements TransportInterface $from = $headers->get('From'); if ($from) { foreach ($from->getAddressList() as $address) { - if (strpos($address->getEmail(), '\\"') !== false) { - throw new Exception\RuntimeException('Potential code injection in From header'); + if (str_contains($address->getEmail(), '\\"')) { + throw new RuntimeException('Potential code injection in From header'); } } } @@ -239,7 +254,6 @@ class Sendmail implements TransportInterface * Basically, overrides the MAIL FROM envelope with either the Sender or * From address. * - * @param \Laminas\Mail\Message $message * @return string */ protected function prepareParameters(Mail\Message $message) @@ -255,16 +269,14 @@ class Sendmail implements TransportInterface $sender = $message->getSender(); if ($sender instanceof AddressInterface) { - $parameters .= ' -f' . \escapeshellarg($sender->getEmail()); - return $parameters; + return $parameters . ' -f' . escapeshellarg($sender->getEmail()); } $from = $message->getFrom(); if (count($from)) { $from->rewind(); - $sender = $from->current(); - $parameters .= ' -f' . \escapeshellarg($sender->getEmail()); - return $parameters; + $sender = $from->current(); + return $parameters . ' -f' . escapeshellarg($sender->getEmail()); } return $parameters; @@ -277,8 +289,8 @@ class Sendmail implements TransportInterface * @param string $subject * @param string $message * @param string $headers - * @param $parameters - * @throws \Laminas\Mail\Transport\Exception\RuntimeException + * @param null|string $parameters + * @throws RuntimeException */ public function mailHandler($to, $subject, $message, $headers, $parameters) { @@ -295,7 +307,7 @@ class Sendmail implements TransportInterface if (empty($errstr)) { $errstr = 'Unknown error'; } - throw new Exception\RuntimeException('Unable to send mail: ' . $errstr); + throw new RuntimeException('Unable to send mail: ' . $errstr); } } @@ -309,7 +321,7 @@ class Sendmail implements TransportInterface * @param array $errcontext * @return bool always true */ - public function handleMailErrors($errno, $errstr, $errfile = null, $errline = null, array $errcontext = null) + public function handleMailErrors($errno, $errstr, $errfile = null, $errline = null, ?array $errcontext = null) { $this->errstr = $errstr; return true; @@ -325,6 +337,6 @@ class Sendmail implements TransportInterface if (! $this->operatingSystem) { $this->operatingSystem = strtoupper(substr(PHP_OS, 0, 3)); } - return ($this->operatingSystem == 'WIN'); + return $this->operatingSystem == 'WIN'; } } diff --git a/lib/laminas/laminas-mail/src/Transport/Smtp.php b/lib/laminas/laminas-mail/src/Transport/Smtp.php index 51e544697..2188b37f2 100644 --- a/lib/laminas/laminas-mail/src/Transport/Smtp.php +++ b/lib/laminas/laminas-mail/src/Transport/Smtp.php @@ -9,6 +9,11 @@ use Laminas\Mail\Protocol; use Laminas\Mail\Protocol\Exception as ProtocolException; use Laminas\ServiceManager\ServiceManager; +use function array_unique; +use function count; +use function sprintf; +use function time; + /** * SMTP connection object * @@ -16,29 +21,19 @@ use Laminas\ServiceManager\ServiceManager; */ class Smtp implements TransportInterface { - /** - * @var SmtpOptions - */ + /** @var SmtpOptions */ protected $options; - /** - * @var Envelope|null - */ + /** @var Envelope|null */ protected $envelope; - /** - * @var Protocol\Smtp - */ + /** @var null|Protocol\Smtp */ protected $connection; - /** - * @var bool - */ + /** @var bool */ protected $autoDisconnect = true; - /** - * @var Protocol\SmtpPluginManager - */ + /** @var Protocol\SmtpPluginManager */ protected $plugins; /** @@ -49,11 +44,9 @@ class Smtp implements TransportInterface protected $connectedTime; /** - * Constructor. - * * @param SmtpOptions $options Optional */ - public function __construct(SmtpOptions $options = null) + public function __construct(?SmtpOptions $options = null) { if (! $options instanceof SmtpOptions) { $options = new SmtpOptions(); @@ -64,7 +57,6 @@ class Smtp implements TransportInterface /** * Set options * - * @param SmtpOptions $options * @return Smtp */ public function setOptions(SmtpOptions $options) @@ -85,8 +77,6 @@ class Smtp implements TransportInterface /** * Set options - * - * @param Envelope $envelope */ public function setEnvelope(Envelope $envelope) { @@ -106,7 +96,6 @@ class Smtp implements TransportInterface /** * Set plugin manager for obtaining SMTP protocol connection * - * @param Protocol\SmtpPluginManager $plugins * @throws Exception\InvalidArgumentException * @return Smtp */ @@ -155,10 +144,9 @@ class Smtp implements TransportInterface * Return an SMTP connection * * @param string $name - * @param array|null $options * @return Protocol\Smtp */ - public function plugin($name, array $options = null) + public function plugin($name, ?array $options = null) { return $this->getPluginManager()->get($name, $options); } @@ -168,30 +156,30 @@ class Smtp implements TransportInterface */ public function __destruct() { - if (! $this->getConnection() instanceof Protocol\Smtp) { + $connection = $this->getConnection(); + if (! $connection instanceof Protocol\Smtp) { return; } try { - $this->getConnection()->quit(); - } catch (ProtocolException\ExceptionInterface $e) { + $connection->quit(); + } catch (ProtocolException\ExceptionInterface) { // ignore } if ($this->autoDisconnect) { - $this->getConnection()->disconnect(); + $connection->disconnect(); } } /** * Sets the connection protocol instance - * - * @param Protocol\AbstractProtocol $connection */ public function setConnection(Protocol\AbstractProtocol $connection) { $this->connection = $connection; - if (($connection instanceof Protocol\Smtp) + if ( + $connection instanceof Protocol\Smtp && ($this->getOptions()->getConnectionTimeLimit() !== null) ) { $connection->setUseCompleteQuit(false); @@ -201,12 +189,13 @@ class Smtp implements TransportInterface /** * Gets the connection protocol instance * - * @return Protocol\Smtp + * @return null|Protocol\Smtp */ public function getConnection() { $timeLimit = $this->getOptions()->getConnectionTimeLimit(); - if ($timeLimit !== null + if ( + $timeLimit !== null && $this->connectedTime !== null && ((time() - $this->connectedTime) > $timeLimit) ) { @@ -222,8 +211,9 @@ class Smtp implements TransportInterface */ public function disconnect() { - if ($this->getConnection() instanceof Protocol\Smtp) { - $this->getConnection()->disconnect(); + $connection = $this->getConnection(); + if ($connection instanceof Protocol\Smtp) { + $connection->disconnect(); $this->connectedTime = null; } } @@ -234,7 +224,6 @@ class Smtp implements TransportInterface * The connection via the protocol adapter is made just-in-time to allow a * developer to add a custom adapter if required before mail is sent. * - * @param Message $message * @throws Exception\RuntimeException */ public function send(Message $message) @@ -242,7 +231,7 @@ class Smtp implements TransportInterface // If sending multiple messages per session use existing adapter $connection = $this->getConnection(); - if (! ($connection instanceof Protocol\Smtp) || ! $connection->hasSession()) { + if (! $connection instanceof Protocol\Smtp || ! $connection->hasSession()) { $connection = $this->connect(); } else { // Reset connection to ensure reliable transaction @@ -260,7 +249,7 @@ class Smtp implements TransportInterface throw new Exception\RuntimeException( sprintf( '%s transport expects at least one recipient if the message has at least one header or body', - __CLASS__ + self::class ) ); } @@ -280,7 +269,6 @@ class Smtp implements TransportInterface /** * Retrieve email address for envelope FROM * - * @param Message $message * @throws Exception\RuntimeException * @return string */ @@ -300,7 +288,7 @@ class Smtp implements TransportInterface // Per RFC 2822 3.6 throw new Exception\RuntimeException(sprintf( '%s transport expects either a Sender or at least one From address in the Message; none provided', - __CLASS__ + self::class )); } @@ -312,7 +300,6 @@ class Smtp implements TransportInterface /** * Prepare array of email address recipients * - * @param Message $message * @return array */ protected function prepareRecipients(Message $message) @@ -339,7 +326,6 @@ class Smtp implements TransportInterface /** * Prepare header string from message * - * @param Message $message * @return string */ protected function prepareHeaders(Message $message) @@ -352,7 +338,6 @@ class Smtp implements TransportInterface /** * Prepare body string from message * - * @param Message $message * @return string */ protected function prepareBody(Message $message) @@ -368,10 +353,10 @@ class Smtp implements TransportInterface protected function lazyLoadConnection() { // Check if authentication is required and determine required class - $options = $this->getOptions(); - $config = $options->getConnectionConfig(); - $config['host'] = $options->getHost(); - $config['port'] = $options->getPort(); + $options = $this->getOptions(); + $config = $options->getConnectionConfig(); + $config['host'] = $options->getHost(); + $config['port'] = $options->getPort(); $this->setConnection($this->plugin($options->getConnectionClass(), $config)); diff --git a/lib/laminas/laminas-mail/src/Transport/SmtpOptions.php b/lib/laminas/laminas-mail/src/Transport/SmtpOptions.php index 268d2ba4f..599847064 100644 --- a/lib/laminas/laminas-mail/src/Transport/SmtpOptions.php +++ b/lib/laminas/laminas-mail/src/Transport/SmtpOptions.php @@ -3,18 +3,20 @@ namespace Laminas\Mail\Transport; use Laminas\Mail\Exception; +use Laminas\Mail\Exception\InvalidArgumentException; use Laminas\Stdlib\AbstractOptions; +use function gettype; +use function is_object; +use function is_string; +use function sprintf; + class SmtpOptions extends AbstractOptions { - /** - * @var string Local client hostname - */ + /** @var string Local client hostname */ protected $name = 'localhost'; - /** - * @var string - */ + /** @var string */ protected $connectionClass = 'smtp'; /** @@ -24,14 +26,10 @@ class SmtpOptions extends AbstractOptions */ protected $connectionConfig = []; - /** - * @var string Remote SMTP hostname or IP - */ + /** @var string Remote SMTP hostname or IP */ protected $host = '127.0.0.1'; - /** - * @var int - */ + /** @var int */ protected $port = 25; /** @@ -57,7 +55,7 @@ class SmtpOptions extends AbstractOptions * * @todo hostname/IP validation * @param string $name - * @throws \Laminas\Mail\Exception\InvalidArgumentException + * @throws InvalidArgumentException * @return SmtpOptions */ public function setName($name) @@ -65,7 +63,7 @@ class SmtpOptions extends AbstractOptions if (! is_string($name) && $name !== null) { throw new Exception\InvalidArgumentException(sprintf( 'Name must be a string or null; argument of type "%s" provided', - (is_object($name) ? get_class($name) : gettype($name)) + is_object($name) ? $name::class : gettype($name) )); } $this->name = $name; @@ -90,7 +88,7 @@ class SmtpOptions extends AbstractOptions * Set connection class * * @param string $connectionClass the value to be set - * @throws \Laminas\Mail\Exception\InvalidArgumentException + * @throws InvalidArgumentException * @return SmtpOptions */ public function setConnectionClass($connectionClass) @@ -98,7 +96,7 @@ class SmtpOptions extends AbstractOptions if (! is_string($connectionClass) && $connectionClass !== null) { throw new Exception\InvalidArgumentException(sprintf( 'Connection class must be a string or null; argument of type "%s" provided', - (is_object($connectionClass) ? get_class($connectionClass) : gettype($connectionClass)) + is_object($connectionClass) ? $connectionClass::class : gettype($connectionClass) )); } $this->connectionClass = $connectionClass; @@ -118,7 +116,6 @@ class SmtpOptions extends AbstractOptions /** * Set connection configuration array * - * @param array $connectionConfig * @return SmtpOptions */ public function setConnectionConfig(array $connectionConfig) @@ -164,7 +161,7 @@ class SmtpOptions extends AbstractOptions * Set the port the SMTP server runs on * * @param int $port - * @throws \Laminas\Mail\Exception\InvalidArgumentException + * @throws InvalidArgumentException * @return SmtpOptions */ public function setPort($port) diff --git a/lib/laminas/laminas-mail/src/Transport/TransportInterface.php b/lib/laminas/laminas-mail/src/Transport/TransportInterface.php index 274d44e40..7273d92a1 100644 --- a/lib/laminas/laminas-mail/src/Transport/TransportInterface.php +++ b/lib/laminas/laminas-mail/src/Transport/TransportInterface.php @@ -12,8 +12,7 @@ interface TransportInterface /** * Send a mail message * - * @param \Laminas\Mail\Message $message - * @return + * @return void */ public function send(Mail\Message $message); } diff --git a/lib/laminas/laminas-mime/.laminas-ci.json b/lib/laminas/laminas-mime/.laminas-ci.json deleted file mode 100644 index bce3fa21b..000000000 --- a/lib/laminas/laminas-mime/.laminas-ci.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "ignore_php_platform_requirements": { - "8.1": true - } -} diff --git a/lib/laminas/laminas-mime/.laminas-ci/pre-install.sh b/lib/laminas/laminas-mime/.laminas-ci/pre-install.sh new file mode 100644 index 000000000..47bb37be8 --- /dev/null +++ b/lib/laminas/laminas-mime/.laminas-ci/pre-install.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# Temporary workaround for cyclic dependencies - can be removed once 3.0 has been released + +echo "Branch as 2.99.x in Pre-Install" + +git checkout -b 2.99.x diff --git a/lib/laminas/laminas-mime/README.md b/lib/laminas/laminas-mime/README.md index a16037792..c26635f79 100644 --- a/lib/laminas/laminas-mime/README.md +++ b/lib/laminas/laminas-mime/README.md @@ -1,5 +1,21 @@ # laminas-mime +> ## πŸ‡·πŸ‡Ί Русским Π³Ρ€Π°ΠΆΠ΄Π°Π½Π°ΠΌ +> +> ΠœΡ‹, участники Laminas, Ρ€ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ ΠΈ ΠΆΠΈΠ²Π΅ΠΌ Π² Ρ€Π°Π·Π½Ρ‹Ρ… странах. Π£ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΈΠ· нас Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ·ΡŒΡ, родствСнники ΠΈ ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΊΠ°ΠΊ Π² России, Ρ‚Π°ΠΊ ΠΈ Π² Π£ΠΊΡ€Π°ΠΈΠ½Π΅. НСкоторыС ΠΈΠ· нас Ρ€ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ Π² России. НСкоторыС ΠΈΠ· нас ΠΆΠΈΠ²ΡƒΡ‚ Π² России. Π£ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π±Π°Π±ΡƒΡˆΠΊΠΈ ΠΈ Π΄Π΅Π΄ΡƒΡˆΠΊΠΈ ΡΡ€Π°ΠΆΠ°Π»ΠΈΡΡŒ с Ρ„Π°ΡˆΠΈΡΡ‚Π°ΠΌΠΈ Π²ΠΎ Π’Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΈΡ€ΠΎΠ²ΠΎΠΉ Π²ΠΎΠΉΠ½Π΅. Π—Π΄Π΅ΡΡŒ Π½ΠΈΠΊΡ‚ΠΎ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ„Π°ΡˆΠΈΠ·ΠΌ. +> +> Π£ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· нас Π΅ΡΡ‚ΡŒ украинская родствСнница, которая спаслась ΠΈΠ· Π΄ΠΎΠΌΠ° вмСстС с сыном. ПоСзд задСрТался ΠΈΠ·-Π·Π° Π±ΠΎΠΌΠ±Π΅ΠΆΠΊΠΈ Π½Π° Π΄ΠΎΡ€ΠΎΠ³Π΅ Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ. Π£ нас Π΅ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ·ΡŒΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прячутся Π² Π±ΠΎΠΌΠ±ΠΎΡƒΠ±Π΅ΠΆΠΈΡ‰Π°Ρ…. ΠœΡ‹ с Ρ‚Ρ€Π΅Π²ΠΎΠ³ΠΎΠΉ ΠΆΠ΄Π΅ΠΌ вСсточки ΠΎΡ‚ Π½ΠΈΡ… послС Π²ΠΎΠ·Π΄ΡƒΡˆΠ½Ρ‹Ρ… Π½Π°Π»Π΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ бСспорядочно наносят ΡƒΠ΄Π°Ρ€Ρ‹ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ ΠΏΠΎ Π±ΠΎΠ»ΡŒΠ½ΠΈΡ†Π°ΠΌ, школам, дСтским садам ΠΈ Π΄ΠΎΠΌΠ°ΠΌ. ΠœΡ‹ Π½Π΅ Π±Π΅Ρ€Π΅ΠΌ это ΠΈΠ· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ БМИ. ΠœΡ‹ наблюдаСм это Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ. +> +> Π’Ρ‹ довСряСтС Π½Π°ΠΌ достаточно, Ρ‡Ρ‚ΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ наши ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΌΡ‹ просим вас Π΄ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ Π½Π°ΠΌ вновь. ΠœΡ‹ нуТдаСмся Π² ΠΏΠΎΠΌΠΎΡ‰ΠΈ. Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈ протСстуйтС ΠΏΡ€ΠΎΡ‚ΠΈΠ² этой бСсполСзной Π²ΠΎΠΉΠ½Ρ‹. ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΡ€ΠΎΠ²ΠΎΠΏΡ€ΠΎΠ»ΠΈΡ‚ΠΈΠ΅. Π‘ΠΊΠ°ΠΆΠΈΡ‚Π΅ "НСт Π²ΠΎΠΉΠ½Π΅!" +> +> ## πŸ‡ΊπŸ‡Έ To Citizens of Russia +> +> We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism. +> +> One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences. +> +> You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!" + > This package is considered feature-complete, and is now in **security-only** maintenance mode, following a [decision by the Technical Steering Committee](https://github.com/laminas/technical-steering-committee/blob/2b55453e172a1b8c9c4c212be7cf7e7a58b9352c/meetings/minutes/2020-08-03-TSC-Minutes.md#vote-on-components-to-mark-as-security-only). > If you have a security issue, please [follow our security reporting guidelines](https://getlaminas.org/security/). > If you wish to take on the role of maintainer, please [nominate yourself](https://github.com/laminas/technical-steering-committee/issues/new?assignees=&labels=Nomination&template=Maintainer_Nomination.md&title=%5BNOMINATION%5D%5BMAINTAINER%5D%3A+%7Bname+of+person+being+nominated%7D) diff --git a/lib/laminas/laminas-mime/composer.json b/lib/laminas/laminas-mime/composer.json index abd18699a..76a631daa 100644 --- a/lib/laminas/laminas-mime/composer.json +++ b/lib/laminas/laminas-mime/composer.json @@ -16,16 +16,19 @@ "forum": "https://discourse.laminas.dev" }, "config": { - "sort-packages": true + "sort-packages": true, + "allow-plugins": { + "dealerdirect/phpcodesniffer-composer-installer": true + } }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "laminas/laminas-stdlib": "^2.7 || ^3.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-mail": "^2.12", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-mail": "^2.19.0", + "phpunit/phpunit": "~9.5.25" }, "suggest": { "laminas/laminas-mail": "Laminas\\Mail component" diff --git a/lib/laminas/laminas-mime/composer.lock b/lib/laminas/laminas-mime/composer.lock index aeeb2d372..0a1ca5f50 100644 --- a/lib/laminas/laminas-mime/composer.lock +++ b/lib/laminas/laminas-mime/composer.lock @@ -4,34 +4,34 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "77a8daa5c98d4a651b4fab53280b68e4", + "content-hash": "0bb344763a1f69884ddce40e96a68855", "packages": [ { "name": "laminas/laminas-stdlib", - "version": "3.6.0", + "version": "3.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "c53d8537f108fac3fae652677a19735db730ba46" + "reference": "63b66bd4b696f024f42616b9d95cdb10e5109c27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/c53d8537f108fac3fae652677a19735db730ba46", - "reference": "c53d8537f108fac3fae652677a19735db730ba46", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/63b66bd4b696f024f42616b9d95cdb10e5109c27", + "reference": "63b66bd4b696f024f42616b9d95cdb10e5109c27", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpbench/phpbench": "^0.17.1", - "phpunit/phpunit": "~9.3.7", - "psalm/plugin-phpunit": "^0.16.0", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "^2.4.0", + "phpbench/phpbench": "^1.2.6", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.28" }, "type": "library", "autoload": { @@ -63,69 +63,33 @@ "type": "community_bridge" } ], - "time": "2021-09-02T16:11:32+00:00" + "time": "2022-10-10T19:10:24+00:00" } ], "packages-dev": [ - { - "name": "container-interop/container-interop", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "shasum": "" - }, - "require": { - "psr/container": "^1.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop", - "support": { - "issues": "https://github.com/container-interop/container-interop/issues", - "source": "https://github.com/container-interop/container-interop/tree/master" - }, - "abandoned": "psr/container", - "time": "2017-02-14T19:40:03+00:00" - }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.1", + "version": "v0.7.2", "source": { "type": "git", "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c" + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c", - "reference": "fe390591e0241955f22eb9ba327d137e501c771c", + "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", + "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", "shasum": "" }, "require": { "composer-plugin-api": "^1.0 || ^2.0", "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0" + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { "composer/composer": "*", - "phpcompatibility/php-compatibility": "^9.0", - "sensiolabs/security-checker": "^4.1.0" + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0" }, "type": "composer-plugin", "extra": { @@ -146,6 +110,10 @@ "email": "franck.nijhof@dealerdirect.com", "homepage": "http://www.frenck.nl", "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", @@ -157,6 +125,7 @@ "codesniffer", "composer", "installer", + "phpcbf", "phpcs", "plugin", "qa", @@ -171,33 +140,34 @@ "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" }, - "time": "2020-12-07T18:04:37+00:00" + "time": "2022-02-04T12:51:07+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", + "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^9", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.22" }, "type": "library", "autoload": { @@ -224,7 +194,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "source": "https://github.com/doctrine/instantiator/tree/1.4.1" }, "funding": [ { @@ -240,28 +210,31 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-03-03T08:28:38+00:00" }, { "name": "laminas/laminas-coding-standard", - "version": "2.2.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-coding-standard.git", - "reference": "c953ecb1d37034f4aa326046e2c24a10fe0a2845" + "reference": "eb076dd86aa93dd424856b150c9b6f76c1fdfabc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/c953ecb1d37034f4aa326046e2c24a10fe0a2845", - "reference": "c953ecb1d37034f4aa326046e2c24a10fe0a2845", + "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/eb076dd86aa93dd424856b150c9b6f76c1fdfabc", + "reference": "eb076dd86aa93dd424856b150c9b6f76c1fdfabc", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.3 || ~8.0.0", - "slevomat/coding-standard": "^6.4.1", - "squizlabs/php_codesniffer": "^3.5.8", - "webimpress/coding-standard": "^1.1.6" + "dealerdirect/phpcodesniffer-composer-installer": "^0.7", + "php": "^7.4 || ^8.0", + "slevomat/coding-standard": "^7.0", + "squizlabs/php_codesniffer": "^3.6", + "webimpress/coding-standard": "^1.2" + }, + "conflict": { + "phpstan/phpdoc-parser": ">=1.6.0" }, "type": "phpcodesniffer-standard", "autoload": { @@ -293,31 +266,31 @@ "type": "community_bridge" } ], - "time": "2021-05-17T17:39:41+00:00" + "time": "2022-08-24T17:45:47+00:00" }, { "name": "laminas/laminas-loader", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b" + "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/d0589ec9dd48365fd95ad10d1c906efd7711c16b", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/51ed9c3fa42d1098a9997571730c0cbf42d078d3", + "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-loader": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "~9.5.25" }, "type": "library", "autoload": { @@ -349,48 +322,46 @@ "type": "community_bridge" } ], - "time": "2021-09-02T18:30:53+00:00" + "time": "2022-10-16T12:50:49+00:00" }, { "name": "laminas/laminas-mail", - "version": "2.14.1", + "version": "2.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-mail.git", - "reference": "180c6c7baa37cba16fe9fd34af0f346e796cf1a1" + "reference": "edf3832c05165775589af2fc698b5f9984d4c5f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/180c6c7baa37cba16fe9fd34af0f346e796cf1a1", - "reference": "180c6c7baa37cba16fe9fd34af0f346e796cf1a1", + "url": "https://api.github.com/repos/laminas/laminas-mail/zipball/edf3832c05165775589af2fc698b5f9984d4c5f1", + "reference": "edf3832c05165775589af2fc698b5f9984d4c5f1", "shasum": "" }, "require": { "ext-iconv": "*", - "laminas/laminas-loader": "^2.5", - "laminas/laminas-mime": "^2.5", - "laminas/laminas-stdlib": "^2.7 || ^3.0", - "laminas/laminas-validator": "^2.10.2", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.3 || ~8.0.0", - "symfony/polyfill-mbstring": "^1.12.0", - "true/punycode": "^2.1" - }, - "replace": { - "zendframework/zend-mail": "^2.10.0" + "laminas/laminas-loader": "^2.8.0", + "laminas/laminas-mime": "^2.10.0", + "laminas/laminas-stdlib": "^3.11.0", + "laminas/laminas-validator": "^2.23.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "symfony/polyfill-intl-idn": "^1.26.0", + "symfony/polyfill-mbstring": "^1.16.0", + "webmozart/assert": "^1.11.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~1.0.0", - "laminas/laminas-config": "^3.4", - "laminas/laminas-crypt": "^2.6 || ^3.0", - "laminas/laminas-servicemanager": "^3.2.1", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-crypt": "^3.8.0", + "laminas/laminas-db": "^2.15.0", + "laminas/laminas-servicemanager": "^3.19", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.17.0", + "symfony/process": "^6.0.11", + "vimeo/psalm": "^4.29" }, "suggest": { - "laminas/laminas-crypt": "Crammd5 support in SMTP Auth", - "laminas/laminas-servicemanager": "^2.7.10 || ^3.3.1 when using SMTP to deliver messages" + "laminas/laminas-crypt": "^3.8 Crammd5 support in SMTP Auth", + "laminas/laminas-servicemanager": "^3.16 when using SMTP to deliver messages" }, "type": "library", "extra": { @@ -428,57 +399,140 @@ "type": "community_bridge" } ], - "time": "2021-05-20T04:00:23+00:00" + "time": "2022-10-14T13:05:29+00:00" }, { - "name": "laminas/laminas-validator", - "version": "2.14.5", + "name": "laminas/laminas-servicemanager", + "version": "3.19.0", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-validator.git", - "reference": "4680bc4241cb5b3ff78954c421fe43105ca413b7" + "url": "https://github.com/laminas/laminas-servicemanager.git", + "reference": "ed160729bb8721127efdaac799f9a298963345b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/4680bc4241cb5b3ff78954c421fe43105ca413b7", - "reference": "4680bc4241cb5b3ff78954c421fe43105ca413b7", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/ed160729bb8721127efdaac799f9a298963345b1", + "reference": "ed160729bb8721127efdaac799f9a298963345b1", "shasum": "" }, "require": { - "container-interop/container-interop": "^1.1", - "laminas/laminas-stdlib": "^3.3", - "laminas/laminas-zendframework-bridge": "^1.0", - "php": "^7.3 || ~8.0.0" + "laminas/laminas-stdlib": "^3.2.1", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "psr/container": "^1.0" + }, + "conflict": { + "ext-psr": "*", + "laminas/laminas-code": "<3.3.1", + "zendframework/zend-code": "<3.3.1", + "zendframework/zend-servicemanager": "*" + }, + "provide": { + "psr/container-implementation": "^1.0" }, "replace": { - "zendframework/zend-validator": "^2.13.0" + "container-interop/container-interop": "^1.2.0" }, "require-dev": { - "laminas/laminas-cache": "^2.6.1", - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-config": "^2.6", - "laminas/laminas-db": "^2.7", - "laminas/laminas-filter": "^2.6", - "laminas/laminas-http": "^2.14.2", - "laminas/laminas-i18n": "^2.6", - "laminas/laminas-math": "^2.6", - "laminas/laminas-servicemanager": "^2.7.11 || ^3.0.3", - "laminas/laminas-session": "^2.8", - "laminas/laminas-uri": "^2.7", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.3", - "psalm/plugin-phpunit": "^0.15.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "vimeo/psalm": "^4.3" + "composer/package-versions-deprecated": "^1.11.99.5", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-container-config-test": "^0.7", + "laminas/laminas-dependency-plugin": "^2.2", + "mikey179/vfsstream": "^1.6.11@alpha", + "ocramius/proxy-manager": "^2.14.1", + "phpbench/phpbench": "^1.2.6", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.28" + }, + "suggest": { + "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" + }, + "bin": [ + "bin/generate-deps-for-config-factory", + "bin/generate-factory-for-class" + ], + "type": "library", + "autoload": { + "files": [ + "src/autoload.php" + ], + "psr-4": { + "Laminas\\ServiceManager\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "Factory-Driven Dependency Injection Container", + "homepage": "https://laminas.dev", + "keywords": [ + "PSR-11", + "dependency-injection", + "di", + "dic", + "laminas", + "service-manager", + "servicemanager" + ], + "support": { + "chat": "https://laminas.dev/chat", + "docs": "https://docs.laminas.dev/laminas-servicemanager/", + "forum": "https://discourse.laminas.dev", + "issues": "https://github.com/laminas/laminas-servicemanager/issues", + "rss": "https://github.com/laminas/laminas-servicemanager/releases.atom", + "source": "https://github.com/laminas/laminas-servicemanager" + }, + "funding": [ + { + "url": "https://funding.communitybridge.org/projects/laminas-project", + "type": "community_bridge" + } + ], + "time": "2022-10-10T20:59:22+00:00" + }, + { + "name": "laminas/laminas-validator", + "version": "2.26.0", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-validator.git", + "reference": "a995b21d18c63cd1f5d123d0d2cd31a1c2d828dc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/a995b21d18c63cd1f5d123d0d2cd31a1c2d828dc", + "reference": "a995b21d18c63cd1f5d123d0d2cd31a1c2d828dc", + "shasum": "" + }, + "require": { + "laminas/laminas-servicemanager": "^3.12.0", + "laminas/laminas-stdlib": "^3.13", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" + }, + "conflict": { + "zendframework/zend-validator": "*" + }, + "require-dev": { + "laminas/laminas-coding-standard": "^2.4.0", + "laminas/laminas-db": "^2.15.0", + "laminas/laminas-filter": "^2.22", + "laminas/laminas-http": "^2.16.0", + "laminas/laminas-i18n": "^2.19", + "laminas/laminas-session": "^2.13.0", + "laminas/laminas-uri": "^2.9.1", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.17.0", + "psr/http-client": "^1.0.1", + "psr/http-factory": "^1.0.1", + "psr/http-message": "^1.0.1", + "vimeo/psalm": "^4.28" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", "laminas/laminas-filter": "Laminas\\Filter component, required by the Digits validator", "laminas/laminas-i18n": "Laminas\\I18n component to allow translation of validation error messages", "laminas/laminas-i18n-resources": "Translations of validator messages", - "laminas/laminas-math": "Laminas\\Math component, required by the Csrf validator", "laminas/laminas-servicemanager": "Laminas\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", "laminas/laminas-session": "Laminas\\Session component, ^2.8; required by the Csrf validator", "laminas/laminas-uri": "Laminas\\Uri component, required by the Uri and Sitemap\\Loc validators", @@ -520,103 +574,42 @@ "type": "community_bridge" } ], - "time": "2021-07-14T13:59:23+00:00" - }, - { - "name": "laminas/laminas-zendframework-bridge", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-zendframework-bridge.git", - "reference": "13af2502d9bb6f7d33be2de4b51fb68c6cdb476e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/13af2502d9bb6f7d33be2de4b51fb68c6cdb476e", - "reference": "13af2502d9bb6f7d33be2de4b51fb68c6cdb476e", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3", - "psalm/plugin-phpunit": "^0.15.1", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.6" - }, - "type": "library", - "extra": { - "laminas": { - "module": "Laminas\\ZendFrameworkBridge" - } - }, - "autoload": { - "files": [ - "src/autoload.php" - ], - "psr-4": { - "Laminas\\ZendFrameworkBridge\\": "src//" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Alias legacy ZF class names to Laminas Project equivalents.", - "keywords": [ - "ZendFramework", - "autoloading", - "laminas", - "zf" - ], - "support": { - "forum": "https://discourse.laminas.dev/", - "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues", - "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom", - "source": "https://github.com/laminas/laminas-zendframework-bridge" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-06-24T12:49:22+00:00" + "time": "2022-10-11T12:58:36+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, "files": [ "src/DeepCopy/deep_copy.php" - ] + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -632,7 +625,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" }, "funding": [ { @@ -640,20 +633,20 @@ "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nikic/php-parser", - "version": "v4.12.0", + "version": "v4.15.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143" + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143", - "reference": "6608f01670c3cc5079e18c1dab1104e002579143", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", "shasum": "" }, "require": { @@ -694,9 +687,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" }, - "time": "2021-07-21T10:44:31+00:00" + "time": "2022-09-04T07:30:47+00:00" }, { "name": "phar-io/manifest", @@ -760,16 +753,16 @@ }, { "name": "phar-io/version", - "version": "3.1.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -805,270 +798,36 @@ "description": "Library for handling version information and constraints", "support": { "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "time": "2021-02-23T14:00:09+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "phpstan/phpdoc-parser", + "version": "1.5.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "981cc368a216c988e862a75e526b6076987d1b50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/981cc368a216c988e862a75e526b6076987d1b50", + "reference": "981cc368a216c988e862a75e526b6076987d1b50", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, "require-dev": { - "mockery/mockery": "~1.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "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/master" - }, - "time": "2020-09-03T19:13:55+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "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.4.0" - }, - "time": "2020-09-17T18:55:26+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "1.13.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" - }, - "time": "2021-03-17T13:42:18+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "0.4.9", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "98a088b17966bdf6ee25c8a4b634df313d8aa531" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/98a088b17966bdf6ee25c8a4b634df313d8aa531", - "reference": "98a088b17966bdf6ee25c8a4b634df313d8aa531", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "consistence/coding-standard": "^3.5", - "ergebnis/composer-normalize": "^2.0.2", - "jakub-onderka/php-parallel-lint": "^0.9.2", - "phing/phing": "^2.16.0", + "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.26", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^6.3", - "slevomat/coding-standard": "^4.7.2", - "symfony/process": "^4.0" + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", + "symfony/process": "^5.2" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.4-dev" - } - }, "autoload": { "psr-4": { "PHPStan\\PhpDocParser\\": [ @@ -1083,29 +842,29 @@ "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/master" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.5.1" }, - "time": "2020-08-03T20:32:43+00:00" + "time": "2022-05-05T11:32:40+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "version": "9.2.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aa94dc41e8661fe90c7316849907cba3007b10d8", + "reference": "aa94dc41e8661fe90c7316849907cba3007b10d8", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -1154,7 +913,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.17" }, "funding": [ { @@ -1162,20 +921,20 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2022-08-30T12:24:04+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -1214,7 +973,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -1222,7 +981,7 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -1407,16 +1166,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.9", + "version": "9.5.25", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b" + "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", - "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d", + "reference": "3e6f90ca7e3d02025b1d147bd8d4a89fd4ca8a1d", "shasum": "" }, "require": { @@ -1431,28 +1190,23 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3.4", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -1467,11 +1221,11 @@ } }, "autoload": { - "classmap": [ - "src/" - ], "files": [ "src/Framework/Assert/Functions.php" + ], + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1494,36 +1248,40 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.25" }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2021-08-31T06:47:40+00:00" + "time": "2022-09-25T03:44:45+00:00" }, { "name": "psr/container", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", "autoload": { @@ -1552,9 +1310,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "sebastian/cli-parser", @@ -1725,16 +1483,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -1787,7 +1545,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -1795,7 +1553,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -1922,16 +1680,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -1973,7 +1731,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" }, "funding": [ { @@ -1981,20 +1739,20 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -2043,14 +1801,14 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -2058,20 +1816,20 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.3", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49", - "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -2114,7 +1872,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" }, "funding": [ { @@ -2122,7 +1880,7 @@ "type": "github" } ], - "time": "2021-06-11T13:31:12+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -2413,28 +2171,28 @@ }, { "name": "sebastian/type", - "version": "2.3.4", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914", - "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -2457,7 +2215,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.4" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" }, "funding": [ { @@ -2465,7 +2223,7 @@ "type": "github" } ], - "time": "2021-06-15T12:49:02+00:00" + "time": "2022-09-12T14:47:03+00:00" }, { "name": "sebastian/version", @@ -2522,37 +2280,37 @@ }, { "name": "slevomat/coding-standard", - "version": "6.4.1", + "version": "7.2.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "696dcca217d0c9da2c40d02731526c1e25b65346" + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/696dcca217d0c9da2c40d02731526c1e25b65346", - "reference": "696dcca217d0c9da2c40d02731526c1e25b65346", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/aff06ae7a84e4534bf6f821dc982a93a5d477c90", + "reference": "aff06ae7a84e4534bf6f821dc982a93a5d477c90", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.1 || ^8.0", - "phpstan/phpdoc-parser": "0.4.5 - 0.4.9", - "squizlabs/php_codesniffer": "^3.5.6" + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.5.1", + "squizlabs/php_codesniffer": "^3.6.2" }, "require-dev": { - "phing/phing": "2.16.3", - "php-parallel-lint/php-parallel-lint": "1.2.0", - "phpstan/phpstan": "0.12.48", - "phpstan/phpstan-deprecation-rules": "0.12.5", - "phpstan/phpstan-phpunit": "0.12.16", - "phpstan/phpstan-strict-rules": "0.12.5", - "phpunit/phpunit": "7.5.20|8.5.5|9.4.0" + "phing/phing": "2.17.3", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.4.10|1.7.1", + "phpstan/phpstan-deprecation-rules": "1.0.0", + "phpstan/phpstan-phpunit": "1.0.0|1.1.1", + "phpstan/phpstan-strict-rules": "1.2.3", + "phpunit/phpunit": "7.5.20|8.5.21|9.5.20" }, "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "6.x-dev" + "dev-master": "7.x-dev" } }, "autoload": { @@ -2567,7 +2325,7 @@ "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/6.4.1" + "source": "https://github.com/slevomat/coding-standard/tree/7.2.1" }, "funding": [ { @@ -2579,20 +2337,20 @@ "type": "tidelift" } ], - "time": "2020-10-05T12:39:37+00:00" + "time": "2022-05-25T10:58:12+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.6.0", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625" + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625", - "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", + "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", "shasum": "" }, "require": { @@ -2635,32 +2393,34 @@ "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2021-04-09T00:54:41+00:00" + "time": "2022-06-18T07:21:10+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.23.0", + "name": "symfony/polyfill-intl-idn", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce" + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce", - "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.1", + "symfony/polyfill-intl-normalizer": "^1.10", + "symfony/polyfill-php72": "^1.10" }, "suggest": { - "ext-ctype": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -2668,12 +2428,12 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - }, "files": [ "bootstrap.php" - ] + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2681,24 +2441,30 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", + "idn", + "intl", "polyfill", - "portable" + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" }, "funding": [ { @@ -2714,32 +2480,32 @@ "type": "tidelift" } ], - "time": "2021-02-19T12:13:01+00:00" + "time": "2022-05-24T11:49:31+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.23.1", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.26.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6", - "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", + "reference": "219aa369ceff116e673852dce47c3a41794c14bd", "shasum": "" }, "require": { "php": ">=7.1" }, "suggest": { - "ext-mbstring": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.23-dev" + "dev-main": "1.26-dev" }, "thanks": { "name": "symfony/polyfill", @@ -2747,11 +2513,14 @@ } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2768,6 +2537,90 @@ "homepage": "https://symfony.com/contributors" } ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "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 for the Mbstring extension", "homepage": "https://symfony.com", "keywords": [ @@ -2778,7 +2631,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" }, "funding": [ { @@ -2794,7 +2647,83 @@ "type": "tidelift" } ], - "time": "2021-05-27T12:26:48+00:00" + "time": "2022-05-24T11:49:31+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.26.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", + "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + } + }, + "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 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2022-05-24T11:49:31+00:00" }, { "name": "theseer/tokenizer", @@ -2846,76 +2775,26 @@ ], "time": "2021-07-28T10:34:58+00:00" }, - { - "name": "true/punycode", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/true/php-punycode.git", - "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/true/php-punycode/zipball/a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", - "reference": "a4d0c11a36dd7f4e7cd7096076cab6d3378a071e", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "symfony/polyfill-mbstring": "^1.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.7", - "squizlabs/php_codesniffer": "~2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "TrueBV\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Renan GonΓ§alves", - "email": "renan.saddam@gmail.com" - } - ], - "description": "A Bootstring encoding of Unicode for Internationalized Domain Names in Applications (IDNA)", - "homepage": "https://github.com/true/php-punycode", - "keywords": [ - "idna", - "punycode" - ], - "support": { - "issues": "https://github.com/true/php-punycode/issues", - "source": "https://github.com/true/php-punycode/tree/master" - }, - "time": "2016-11-16T10:37:54+00:00" - }, { "name": "webimpress/coding-standard", - "version": "1.2.2", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/webimpress/coding-standard.git", - "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03" + "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/8f4a220de33f471a8101836f7ec72b852c3f9f03", - "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03", + "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", + "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", "shasum": "" }, "require": { "php": "^7.3 || ^8.0", - "squizlabs/php_codesniffer": "^3.6" + "squizlabs/php_codesniffer": "^3.6.2" }, "require-dev": { - "phpunit/phpunit": "^9.5.4" + "phpunit/phpunit": "^9.5.13" }, "type": "phpcodesniffer-standard", "extra": { @@ -2941,7 +2820,7 @@ ], "support": { "issues": "https://github.com/webimpress/coding-standard/issues", - "source": "https://github.com/webimpress/coding-standard/tree/1.2.2" + "source": "https://github.com/webimpress/coding-standard/tree/1.2.4" }, "funding": [ { @@ -2949,25 +2828,25 @@ "type": "github" } ], - "time": "2021-04-12T12:51:27+00:00" + "time": "2022-02-15T19:52:12+00:00" }, { "name": "webmozart/assert", - "version": "1.10.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" + "ext-ctype": "*", + "php": "^7.2 || ^8.0" }, "conflict": { "phpstan/phpstan": "<0.12.20", @@ -3005,9 +2884,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" + "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, - "time": "2021-03-09T10:59:23+00:00" + "time": "2022-06-03T18:03:27+00:00" } ], "aliases": [], @@ -3016,8 +2895,8 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" }, "platform-dev": [], - "plugin-api-version": "2.0.0" + "plugin-api-version": "2.6.0" } diff --git a/lib/laminas/laminas-mime/phpcs.xml.dist b/lib/laminas/laminas-mime/phpcs.xml.dist deleted file mode 100644 index 7f391d80a..000000000 --- a/lib/laminas/laminas-mime/phpcs.xml.dist +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - src - test - - - - diff --git a/lib/laminas/laminas-mime/src/Mime.php b/lib/laminas/laminas-mime/src/Mime.php index 70f08fa08..14f5ccee4 100644 --- a/lib/laminas/laminas-mime/src/Mime.php +++ b/lib/laminas/laminas-mime/src/Mime.php @@ -491,17 +491,22 @@ class Mime * Mail headers depend on an extended quoted printable algorithm otherwise * a range of bugs can occur. * - * @param string $str - * @param string $charset - * @param int $lineLength Defaults to {@link LINELENGTH} - * @param string $lineEnd Defaults to {@link LINEEND} + * @param string $str + * @param string $charset + * @param int $lineLength Defaults to {@link LINELENGTH} + * @param string $lineEnd Defaults to {@link LINEEND} + * @param positive-int|0 $headerNameSize When folding a line, it is necessary to calculate + * the length of the entire line (together with the header name). + * Therefore, you can specify the header name and colon length + * in this argument to fold the string properly. * @return string */ public static function encodeQuotedPrintableHeader( $str, $charset, $lineLength = self::LINELENGTH, - $lineEnd = self::LINEEND + $lineEnd = self::LINEEND, + $headerNameSize = 0 ) { // Reduce line-length by the length of the required delimiter, charsets and encoding $prefix = sprintf('=?%s?Q?', $charset); @@ -527,7 +532,14 @@ class Mime if ($token === '=20') { // only if we have a single char token or space, we can append the // tempstring it to the current line or start a new line if necessary. - $lineLimitReached = strlen($lines[$currentLine] . $tmp) > $lineLength; + if ($currentLine === 0) { + // The size of the first line should be calculated with the header name. + $currentLineLength = strlen($lines[$currentLine] . $tmp) + $headerNameSize; + } else { + $currentLineLength = strlen($lines[$currentLine] . $tmp); + } + + $lineLimitReached = $currentLineLength > $lineLength; $noCurrentLine = $lines[$currentLine] === ''; if ($noCurrentLine && $lineLimitReached) { $lines[$currentLine] = $tmp; diff --git a/lib/laminas/laminas-mime/src/Part.php b/lib/laminas/laminas-mime/src/Part.php index 541da9c0f..20f77fd91 100644 --- a/lib/laminas/laminas-mime/src/Part.php +++ b/lib/laminas/laminas-mime/src/Part.php @@ -3,7 +3,6 @@ namespace Laminas\Mime; use function array_key_exists; -use function get_class; use function gettype; use function is_object; use function is_resource; @@ -315,7 +314,7 @@ class Part if (! is_string($content) && ! is_resource($content)) { throw new Exception\InvalidArgumentException(sprintf( 'Content must be string or resource; received "%s"', - is_object($content) ? get_class($content) : gettype($content) + is_object($content) ? $content::class : gettype($content) )); } $this->content = $content; diff --git a/lib/laminas/laminas-stdlib/README.md b/lib/laminas/laminas-stdlib/README.md index 764f96573..ccfba3543 100644 --- a/lib/laminas/laminas-stdlib/README.md +++ b/lib/laminas/laminas-stdlib/README.md @@ -1,7 +1,7 @@ # laminas-stdlib [![Build Status](https://github.com/laminas/laminas-stdlib/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/laminas/laminas-stdlib/actions/workflows/continuous-integration.yml) -[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-stdlib/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-stdlib?branch=master) +[![Type Coverage](https://shepherd.dev/github/laminas/laminas-stdlib/coverage.svg)](https://shepherd.dev/github/laminas/laminas-stdlib) > ## πŸ‡·πŸ‡Ί Русским Π³Ρ€Π°ΠΆΠ΄Π°Π½Π°ΠΌ > diff --git a/lib/laminas/laminas-stdlib/composer.json b/lib/laminas/laminas-stdlib/composer.json index 711b3fc95..bb713ea8b 100644 --- a/lib/laminas/laminas-stdlib/composer.json +++ b/lib/laminas/laminas-stdlib/composer.json @@ -18,7 +18,7 @@ "config": { "sort-packages": true, "platform": { - "php": "7.4.99" + "php": "8.1.99" }, "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true @@ -27,15 +27,14 @@ "extra": { }, "require": { - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpbench/phpbench": "^1.2.6", - "phpunit/phpunit": "^9.5.23", - "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.26", - "phpstan/phpdoc-parser": "^0.5.4" + "laminas/laminas-coding-standard": "^2.5", + "phpbench/phpbench": "^1.2.15", + "phpunit/phpunit": "^10.5.8", + "psalm/plugin-phpunit": "^0.18.4", + "vimeo/psalm": "^5.20.0" }, "autoload": { "psr-4": { diff --git a/lib/laminas/laminas-stdlib/composer.lock b/lib/laminas/laminas-stdlib/composer.lock deleted file mode 100644 index c2f7beca3..000000000 --- a/lib/laminas/laminas-stdlib/composer.lock +++ /dev/null @@ -1,4852 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "6797353dc8a3d832ed036772471afd74", - "packages": [], - "packages-dev": [ - { - "name": "amphp/amp", - "version": "v2.6.2", - "source": { - "type": "git", - "url": "https://github.com/amphp/amp.git", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1", - "ext-json": "*", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "files": [ - "lib/functions.php", - "lib/Internal/functions.php" - ], - "psr-4": { - "Amp\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Lowrey", - "email": "rdlowrey@php.net" - }, - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Bob Weinand", - "email": "bobwei9@hotmail.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A non-blocking concurrency framework for PHP applications.", - "homepage": "https://amphp.org/amp", - "keywords": [ - "async", - "asynchronous", - "awaitable", - "concurrency", - "event", - "event-loop", - "future", - "non-blocking", - "promise" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.2" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2022-02-20T17:52:18+00:00" - }, - { - "name": "amphp/byte-stream", - "version": "v1.8.1", - "source": { - "type": "git", - "url": "https://github.com/amphp/byte-stream.git", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", - "shasum": "" - }, - "require": { - "amphp/amp": "^2", - "php": ">=7.1" - }, - "require-dev": { - "amphp/php-cs-fixer-config": "dev-master", - "amphp/phpunit-util": "^1.4", - "friendsofphp/php-cs-fixer": "^2.3", - "jetbrains/phpstorm-stubs": "^2019.3", - "phpunit/phpunit": "^6 || ^7 || ^8", - "psalm/phar": "^3.11.4" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "files": [ - "lib/functions.php" - ], - "psr-4": { - "Amp\\ByteStream\\": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Piotrowski", - "email": "aaron@trowski.com" - }, - { - "name": "Niklas Keller", - "email": "me@kelunik.com" - } - ], - "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", - "keywords": [ - "amp", - "amphp", - "async", - "io", - "non-blocking", - "stream" - ], - "support": { - "irc": "irc://irc.freenode.org/amphp", - "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" - }, - "funding": [ - { - "url": "https://github.com/amphp", - "type": "github" - } - ], - "time": "2021-03-30T17:13:30+00:00" - }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.5", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-01-17T14:14:24+00:00" - }, - { - "name": "composer/pcre", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.0.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T20:21:48+00:00" - }, - { - "name": "composer/semver", - "version": "3.3.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-04-01T19:23:25+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", - "shasum": "" - }, - "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T21:32:43+00:00" - }, - { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", - "source": { - "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" - }, - "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" - }, - "autoload": { - "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", - "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" - ], - "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" - }, - "time": "2022-02-04T12:51:07+00:00" - }, - { - "name": "dnoegel/php-xdg-base-dir", - "version": "v0.1.1", - "source": { - "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "XdgBaseDir\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "implementation of xdg base directory specification for php", - "support": { - "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", - "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" - }, - "time": "2019-12-04T15:06:13+00:00" - }, - { - "name": "doctrine/annotations", - "version": "1.13.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/648b0343343565c4a056bfc8392201385e8d89f0", - "reference": "648b0343343565c4a056bfc8392201385e8d89f0", - "shasum": "" - }, - "require": { - "doctrine/lexer": "1.*", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^6.0 || ^8.1", - "phpstan/phpstan": "^1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5", - "symfony/cache": "^4.4 || ^5.2", - "vimeo/psalm": "^4.10" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.13.3" - }, - "time": "2022-07-02T10:48:51+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-03-03T08:28:38+00:00" - }, - { - "name": "doctrine/lexer", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "reference": "c268e882d4dbdd85e36e4ad69e02dc284f89d229", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9.0", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.11" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.3" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-02-28T11:07:21+00:00" - }, - { - "name": "felixfbecker/advanced-json-rpc", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447", - "shasum": "" - }, - "require": { - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "php": "^7.1 || ^8.0", - "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "AdvancedJsonRpc\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "A more advanced JSONRPC implementation", - "support": { - "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues", - "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1" - }, - "time": "2021-06-11T22:34:44+00:00" - }, - { - "name": "felixfbecker/language-server-protocol", - "version": "v1.5.2", - "source": { - "type": "git", - "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "require-dev": { - "phpstan/phpstan": "*", - "squizlabs/php_codesniffer": "^3.1", - "vimeo/psalm": "^4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "LanguageServerProtocol\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "ISC" - ], - "authors": [ - { - "name": "Felix Becker", - "email": "felix.b@outlook.com" - } - ], - "description": "PHP classes for the Language Server Protocol", - "keywords": [ - "language", - "microsoft", - "php", - "server" - ], - "support": { - "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" - }, - "time": "2022-03-02T22:36:06+00:00" - }, - { - "name": "laminas/laminas-coding-standard", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-coding-standard.git", - "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/bcf6e07fe4690240be7beb6d884d0b0fafa6a251", - "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.7", - "php": "^7.3 || ^8.0", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.6", - "webimpress/coding-standard": "^1.2" - }, - "type": "phpcodesniffer-standard", - "autoload": { - "psr-4": { - "LaminasCodingStandard\\": "src/LaminasCodingStandard/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Laminas Coding Standard", - "homepage": "https://laminas.dev", - "keywords": [ - "Coding Standard", - "laminas" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-coding-standard/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-coding-standard/issues", - "rss": "https://github.com/laminas/laminas-coding-standard/releases.atom", - "source": "https://github.com/laminas/laminas-coding-standard" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2021-05-29T15:53:59+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2022-03-03T13:19:32+00:00" - }, - { - "name": "netresearch/jsonmapper", - "version": "v4.0.0", - "source": { - "type": "git", - "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=7.1" - }, - "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", - "squizlabs/php_codesniffer": "~3.5" - }, - "type": "library", - "autoload": { - "psr-0": { - "JsonMapper": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "OSL-3.0" - ], - "authors": [ - { - "name": "Christian Weiske", - "email": "cweiske@cweiske.de", - "homepage": "http://github.com/cweiske/jsonmapper/", - "role": "Developer" - } - ], - "description": "Map nested JSON structures onto PHP classes", - "support": { - "email": "cweiske@cweiske.de", - "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0" - }, - "time": "2020-12-01T19:48:11+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.14.0", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" - }, - "time": "2022-05-31T20:59:12+00:00" - }, - { - "name": "openlss/lib-array2xml", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/nullivex/lib-array2xml.git", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "type": "library", - "autoload": { - "psr-0": { - "LSS": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "Apache-2.0" - ], - "authors": [ - { - "name": "Bryan Tong", - "email": "bryan@nullivex.com", - "homepage": "https://www.nullivex.com" - }, - { - "name": "Tony Butler", - "email": "spudz76@gmail.com", - "homepage": "https://www.nullivex.com" - } - ], - "description": "Array2XML conversion library credit to lalit.org", - "homepage": "https://www.nullivex.com", - "keywords": [ - "array", - "array conversion", - "xml", - "xml conversion" - ], - "support": { - "issues": "https://github.com/nullivex/lib-array2xml/issues", - "source": "https://github.com/nullivex/lib-array2xml/tree/master" - }, - "time": "2019-03-29T20:06:56+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpbench/container", - "version": "2.2.1", - "source": { - "type": "git", - "url": "https://github.com/phpbench/container.git", - "reference": "6d555ff7174fca13f9b1ec0b4a089ed41d0ab392" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpbench/container/zipball/6d555ff7174fca13f9b1ec0b4a089ed41d0ab392", - "reference": "6d555ff7174fca13f9b1ec0b4a089ed41d0ab392", - "shasum": "" - }, - "require": { - "psr/container": "^1.0|^2.0", - "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.16", - "phpstan/phpstan": "^0.12.52", - "phpunit/phpunit": "^8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "PhpBench\\DependencyInjection\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Leech", - "email": "daniel@dantleech.com" - } - ], - "description": "Simple, configurable, service container.", - "support": { - "issues": "https://github.com/phpbench/container/issues", - "source": "https://github.com/phpbench/container/tree/2.2.1" - }, - "time": "2022-01-25T10:17:35+00:00" - }, - { - "name": "phpbench/dom", - "version": "0.3.2", - "source": { - "type": "git", - "url": "https://github.com/phpbench/dom.git", - "reference": "b013b717832ddbaadf2a40984b04bc66af9a7110" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpbench/dom/zipball/b013b717832ddbaadf2a40984b04bc66af9a7110", - "reference": "b013b717832ddbaadf2a40984b04bc66af9a7110", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "php": "^7.2||^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.18", - "phpstan/phpstan": "^0.12.83", - "phpunit/phpunit": "^8.0||^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpBench\\Dom\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Leech", - "email": "daniel@dantleech.com" - } - ], - "description": "DOM wrapper to simplify working with the PHP DOM implementation", - "support": { - "issues": "https://github.com/phpbench/dom/issues", - "source": "https://github.com/phpbench/dom/tree/0.3.2" - }, - "time": "2021-09-24T15:26:07+00:00" - }, - { - "name": "phpbench/phpbench", - "version": "1.2.6", - "source": { - "type": "git", - "url": "https://github.com/phpbench/phpbench.git", - "reference": "c30fac992e72b505a1f131790583647f4d3255c3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpbench/phpbench/zipball/c30fac992e72b505a1f131790583647f4d3255c3", - "reference": "c30fac992e72b505a1f131790583647f4d3255c3", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.13", - "ext-dom": "*", - "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "ext-tokenizer": "*", - "php": "^7.3 || ^8.0", - "phpbench/container": "^2.1", - "phpbench/dom": "~0.3.1", - "psr/log": "^1.1 || ^2.0 || ^3.0", - "seld/jsonlint": "^1.1", - "symfony/console": "^4.2 || ^5.0 || ^6.0", - "symfony/filesystem": "^4.2 || ^5.0 || ^6.0", - "symfony/finder": "^4.2 || ^5.0 || ^6.0", - "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0", - "symfony/process": "^4.2 || ^5.0 || ^6.0", - "webmozart/path-util": "^2.3" - }, - "require-dev": { - "dantleech/invoke": "^2.0", - "friendsofphp/php-cs-fixer": "^3.0", - "jangregor/phpstan-prophecy": "^0.8.1", - "phpspec/prophecy": "^1.12", - "phpstan/phpstan": "^0.12.7", - "phpunit/phpunit": "^8.5.8 || ^9.0", - "symfony/error-handler": "^5.2 || ^6.0", - "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0" - }, - "suggest": { - "ext-xdebug": "For Xdebug profiling extension." - }, - "bin": [ - "bin/phpbench" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, - "autoload": { - "files": [ - "lib/Report/Func/functions.php" - ], - "psr-4": { - "PhpBench\\": "lib/", - "PhpBench\\Extensions\\XDebug\\": "extensions/xdebug/lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Daniel Leech", - "email": "daniel@dantleech.com" - } - ], - "description": "PHP Benchmarking Framework", - "support": { - "issues": "https://github.com/phpbench/phpbench/issues", - "source": "https://github.com/phpbench/phpbench/tree/1.2.6" - }, - "funding": [ - { - "url": "https://github.com/dantleech", - "type": "github" - } - ], - "time": "2022-07-19T19:52:39+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "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.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "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.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "0.5.6", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "fac86158ffc7392e49636f77e63684c026df43b8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fac86158ffc7392e49636f77e63684c026df43b8", - "reference": "fac86158ffc7392e49636f77e63684c026df43b8", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^0.12.87", - "phpstan/phpstan-strict-rules": "^0.12.5", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.5-dev" - } - }, - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "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/0.5.6" - }, - "time": "2021-08-31T08:08:22+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.16", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2593003befdcc10db5e213f9f28814f5aa8ac073" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2593003befdcc10db5e213f9f28814f5aa8ac073", - "reference": "2593003befdcc10db5e213f9f28814f5aa8ac073", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.14", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.16" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-08-20T05:26:47+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.23", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "888556852e7e9bbeeedb9656afe46118765ade34" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/888556852e7e9bbeeedb9656afe46118765ade34", - "reference": "888556852e7e9bbeeedb9656afe46118765ade34", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", - "sebastian/version": "^3.0.2" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.23" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-08-22T14:01:36+00:00" - }, - { - "name": "psalm/plugin-phpunit", - "version": "0.17.0", - "source": { - "type": "git", - "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "45951541beef07e93e3ad197daf01da88e85c31d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/45951541beef07e93e3ad197daf01da88e85c31d", - "reference": "45951541beef07e93e3ad197daf01da88e85c31d", - "shasum": "" - }, - "require": { - "composer/package-versions-deprecated": "^1.10", - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "ext-simplexml": "*", - "php": "^7.1 || ^8.0", - "vimeo/psalm": "dev-master || dev-4.x || ^4.5" - }, - "conflict": { - "phpunit/phpunit": "<7.5" - }, - "require-dev": { - "codeception/codeception": "^4.0.3", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0", - "squizlabs/php_codesniffer": "^3.3.1", - "weirdan/codeception-psalm-module": "^0.11.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" - }, - "type": "psalm-plugin", - "extra": { - "psalm": { - "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin" - } - }, - "autoload": { - "psr-4": { - "Psalm\\PhpUnitPlugin\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matt Brown", - "email": "github@muglug.com" - } - ], - "description": "Psalm plugin for PHPUnit", - "support": { - "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", - "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.17.0" - }, - "time": "2022-06-14T17:05:57+00:00" - }, - { - "name": "psr/cache", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/master" - }, - "time": "2016-08-06T20:24:11+00:00" - }, - { - "name": "psr/container", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-04-03T09:37:03+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-02-14T08:28:10+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-03-15T09:54:48+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "seld/jsonlint", - "version": "1.9.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "4211420d25eba80712bff236a98960ef68b866b7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/4211420d25eba80712bff236a98960ef68b866b7", - "reference": "4211420d25eba80712bff236a98960ef68b866b7", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "support": { - "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.9.0" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", - "type": "tidelift" - } - ], - "time": "2022-04-01T13:37:23+00:00" - }, - { - "name": "slevomat/coding-standard", - "version": "7.0.15", - "source": { - "type": "git", - "url": "https://github.com/slevomat/coding-standard.git", - "reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80", - "reference": "cc80e59f9b4ca642f02dc1b615c37a9afc2a0f80", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.1 || ^8.0", - "phpstan/phpdoc-parser": "0.5.1 - 0.5.6", - "squizlabs/php_codesniffer": "^3.6.0" - }, - "require-dev": { - "phing/phing": "2.17.0", - "php-parallel-lint/php-parallel-lint": "1.3.1", - "phpstan/phpstan": "0.12.98", - "phpstan/phpstan-deprecation-rules": "0.12.6", - "phpstan/phpstan-phpunit": "0.12.22", - "phpstan/phpstan-strict-rules": "0.12.11", - "phpunit/phpunit": "7.5.20|8.5.5|9.5.9" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "autoload": { - "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", - "support": { - "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.0.15" - }, - "funding": [ - { - "url": "https://github.com/kukulich", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", - "type": "tidelift" - } - ], - "time": "2021-09-09T10:29:09+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.7.1", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2022-06-18T07:21:10+00:00" - }, - { - "name": "symfony/console", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "535846c7ee6bc4dd027ca0d93220601456734b10" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/535846c7ee6bc4dd027ca0d93220601456734b10", - "reference": "535846c7ee6bc4dd027ca0d93220601456734b10", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-22T10:42:43+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.5.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "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": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:53:40+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/6699fb0228d1bc35b12aed6dd5e7455457609ddd", - "reference": "6699fb0228d1bc35b12aed6dd5e7455457609ddd", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-20T13:00:38+00:00" - }, - { - "name": "symfony/finder", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", - "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-29T07:37:50+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/54f14e36aa73cb8f7261d7686691fd4d75ea2690", - "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-20T13:00:38+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "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 for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "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 for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "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 for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "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 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-10T07:21:04+00:00" - }, - { - "name": "symfony/process", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", - "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-06-27T16:58:25+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v1.1.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0", - "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0", - "shasum": "" - }, - "require": { - "php": "^7.1.3" - }, - "suggest": { - "psr/container": "", - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "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": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v1.1.2" - }, - "time": "2019-05-28T07:50:59+00:00" - }, - { - "name": "symfony/string", - "version": "v5.4.11", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322", - "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "conflict": { - "symfony/translation-contracts": ">=3.0" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "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": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v5.4.11" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-07-24T16:15:25+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "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.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - }, - { - "name": "vimeo/psalm", - "version": "4.26.0", - "source": { - "type": "git", - "url": "https://github.com/vimeo/psalm.git", - "reference": "6998fabb2bf528b65777bf9941920888d23c03ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/6998fabb2bf528b65777bf9941920888d23c03ac", - "reference": "6998fabb2bf528b65777bf9941920888d23c03ac", - "shasum": "" - }, - "require": { - "amphp/amp": "^2.4.2", - "amphp/byte-stream": "^1.5", - "composer/package-versions-deprecated": "^1.8.0", - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0", - "dnoegel/php-xdg-base-dir": "^0.1.1", - "ext-ctype": "*", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "ext-tokenizer": "*", - "felixfbecker/advanced-json-rpc": "^3.0.3", - "felixfbecker/language-server-protocol": "^1.5", - "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.13", - "openlss/lib-array2xml": "^1.0", - "php": "^7.1|^8", - "sebastian/diff": "^3.0 || ^4.0", - "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0", - "symfony/polyfill-php80": "^1.25", - "webmozart/path-util": "^2.3" - }, - "provide": { - "psalm/psalm": "self.version" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.2", - "brianium/paratest": "^4.0||^6.0", - "ext-curl": "*", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpdocumentor/reflection-docblock": "^5", - "phpmyadmin/sql-parser": "5.1.0||dev-master", - "phpspec/prophecy": ">=1.9.0", - "phpunit/phpunit": "^9.0", - "psalm/plugin-phpunit": "^0.16", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5", - "symfony/process": "^4.3 || ^5.0 || ^6.0", - "weirdan/prophecy-shim": "^1.0 || ^2.0" - }, - "suggest": { - "ext-curl": "In order to send data to shepherd", - "ext-igbinary": "^2.0.5 is required, used to serialize caching data" - }, - "bin": [ - "psalm", - "psalm-language-server", - "psalm-plugin", - "psalm-refactor", - "psalter" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev", - "dev-3.x": "3.x-dev", - "dev-2.x": "2.x-dev", - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "files": [ - "src/functions.php", - "src/spl_object_id.php" - ], - "psr-4": { - "Psalm\\": "src/Psalm/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Matthew Brown" - } - ], - "description": "A static analysis tool for finding errors in PHP applications", - "keywords": [ - "code", - "inspection", - "php" - ], - "support": { - "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.26.0" - }, - "time": "2022-07-31T13:10:26+00:00" - }, - { - "name": "webimpress/coding-standard", - "version": "1.2.4", - "source": { - "type": "git", - "url": "https://github.com/webimpress/coding-standard.git", - "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", - "reference": "cd0c4b0b97440c337c1f7da17b524674ca2f9ca9", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8.0", - "squizlabs/php_codesniffer": "^3.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^9.5.13" - }, - "type": "phpcodesniffer-standard", - "extra": { - "dev-master": "1.2.x-dev", - "dev-develop": "1.3.x-dev" - }, - "autoload": { - "psr-4": { - "WebimpressCodingStandard\\": "src/WebimpressCodingStandard/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "description": "Webimpress Coding Standard", - "keywords": [ - "Coding Standard", - "PSR-2", - "phpcs", - "psr-12", - "webimpress" - ], - "support": { - "issues": "https://github.com/webimpress/coding-standard/issues", - "source": "https://github.com/webimpress/coding-standard/tree/1.2.4" - }, - "funding": [ - { - "url": "https://github.com/michalbundyra", - "type": "github" - } - ], - "time": "2022-02-15T19:52:12+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "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" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" - }, - "time": "2022-06-03T18:03:27+00:00" - }, - { - "name": "webmozart/path-util", - "version": "2.3.0", - "source": { - "type": "git", - "url": "https://github.com/webmozart/path-util.git", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "webmozart/assert": "~1.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\PathUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", - "support": { - "issues": "https://github.com/webmozart/path-util/issues", - "source": "https://github.com/webmozart/path-util/tree/2.3.0" - }, - "abandoned": "symfony/filesystem", - "time": "2015-12-17T08:42:14+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^7.4 || ~8.0.0 || ~8.1.0" - }, - "platform-dev": [], - "platform-overrides": { - "php": "7.4.99" - }, - "plugin-api-version": "2.3.0" -} diff --git a/lib/laminas/laminas-stdlib/src/AbstractOptions.php b/lib/laminas/laminas-stdlib/src/AbstractOptions.php index d02221ab1..5db2ea95b 100644 --- a/lib/laminas/laminas-stdlib/src/AbstractOptions.php +++ b/lib/laminas/laminas-stdlib/src/AbstractOptions.php @@ -7,6 +7,7 @@ namespace Laminas\Stdlib; use Traversable; use function array_shift; +use function get_object_vars; use function is_array; use function is_callable; use function method_exists; @@ -16,6 +17,10 @@ use function str_replace; use function strtolower; use function ucwords; +/** + * @template TValue + * @implements ParameterObjectInterface + */ abstract class AbstractOptions implements ParameterObjectInterface { // phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore,WebimpressCodingStandard.NamingConventions.ValidVariableName.NotCamelCapsProperty @@ -33,7 +38,7 @@ abstract class AbstractOptions implements ParameterObjectInterface /** * Constructor * - * @param array|Traversable|null $options + * @param iterable|AbstractOptions|null $options */ public function __construct($options = null) { @@ -45,7 +50,7 @@ abstract class AbstractOptions implements ParameterObjectInterface /** * Set one or more configuration properties * - * @param array|Traversable|AbstractOptions $options + * @param iterable|AbstractOptions $options * @throws Exception\InvalidArgumentException * @return AbstractOptions Provides fluent interface */ @@ -77,19 +82,20 @@ abstract class AbstractOptions implements ParameterObjectInterface /** * Cast to array * - * @return array + * @return array */ public function toArray() { $array = []; - /** @param string[] $letters */ $transform = static function (array $letters): string { + /** @var list $letters */ $letter = array_shift($letters); return '_' . strtolower($letter); }; - foreach ($this as $key => $value) { + /** @psalm-var TValue $value */ + foreach (get_object_vars($this) as $key => $value) { if ($key === '__strictMode__') { continue; } @@ -106,7 +112,7 @@ abstract class AbstractOptions implements ParameterObjectInterface * @see ParameterObject::__set() * * @param string $key - * @param mixed $value + * @param TValue|null $value * @throws Exception\BadMethodCallException * @return void */ @@ -137,7 +143,7 @@ abstract class AbstractOptions implements ParameterObjectInterface * * @param string $key * @throws Exception\BadMethodCallException - * @return mixed + * @return TValue */ public function __get($key) { diff --git a/lib/laminas/laminas-stdlib/src/ArrayObject.php b/lib/laminas/laminas-stdlib/src/ArrayObject.php index 6cc195ddd..e0cdc7107 100644 --- a/lib/laminas/laminas-stdlib/src/ArrayObject.php +++ b/lib/laminas/laminas-stdlib/src/ArrayObject.php @@ -4,7 +4,9 @@ declare(strict_types=1); namespace Laminas\Stdlib; +use AllowDynamicProperties; use ArrayAccess; +use ArrayIterator; use Countable; use Iterator; use IteratorAggregate; @@ -17,7 +19,7 @@ use function array_keys; use function asort; use function class_exists; use function count; -use function get_class; +use function get_debug_type; use function get_object_vars; use function gettype; use function in_array; @@ -30,7 +32,7 @@ use function natcasesort; use function natsort; use function serialize; use function sprintf; -use function strpos; +use function str_starts_with; use function uasort; use function uksort; use function unserialize; @@ -39,7 +41,13 @@ use function unserialize; * Custom framework ArrayObject implementation * * Extends version-specific "abstract" implementation. + * + * @template TKey of array-key + * @template TValue + * @template-implements IteratorAggregate + * @template-implements ArrayAccess */ +#[AllowDynamicProperties] class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Countable { /** @@ -53,26 +61,24 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count */ public const ARRAY_AS_PROPS = 2; - /** @var array */ + /** @var array */ protected $storage; - /** @var int */ + /** @var self::STD_PROP_LIST|self::ARRAY_AS_PROPS */ protected $flag; - /** @var string */ + /** @var class-string */ protected $iteratorClass; - /** @var array */ + /** @var list */ protected $protectedProperties; /** - * Constructor - * - * @param array|object $input Object values must act like ArrayAccess - * @param int $flags - * @param string $iteratorClass + * @param array|object $input Object values must act like ArrayAccess + * @param self::STD_PROP_LIST|self::ARRAY_AS_PROPS $flags + * @param class-string $iteratorClass */ - public function __construct($input = [], $flags = self::STD_PROP_LIST, $iteratorClass = 'ArrayIterator') + public function __construct($input = [], $flags = self::STD_PROP_LIST, $iteratorClass = ArrayIterator::class) { $this->setFlags($flags); $this->storage = $input; @@ -83,10 +89,10 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Returns whether the requested key exists * - * @param mixed $key + * @param TKey $key * @return bool */ - public function __isset($key) + public function __isset(mixed $key) { if ($this->flag === self::ARRAY_AS_PROPS) { return $this->offsetExists($key); @@ -102,11 +108,11 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Sets the value at the specified key to value * - * @param mixed $key - * @param mixed $value + * @param TKey $key + * @param TValue $value * @return void */ - public function __set($key, $value) + public function __set(mixed $key, mixed $value) { if ($this->flag === self::ARRAY_AS_PROPS) { $this->offsetSet($key, $value); @@ -123,10 +129,10 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Unsets the value at the specified key * - * @param mixed $key + * @param TKey $key * @return void */ - public function __unset($key) + public function __unset(mixed $key) { if ($this->flag === self::ARRAY_AS_PROPS) { $this->offsetUnset($key); @@ -143,10 +149,10 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Returns the value at the specified key by reference * - * @param mixed $key - * @return mixed + * @param TKey $key + * @return TValue|null */ - public function &__get($key) + public function &__get(mixed $key) { if ($this->flag === self::ARRAY_AS_PROPS) { $ret = &$this->offsetGet($key); @@ -164,10 +170,10 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Appends the value * - * @param mixed $value + * @param TValue $value * @return void */ - public function append($value) + public function append(mixed $value) { $this->storage[] = $value; } @@ -185,7 +191,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Get the number of public properties in the ArrayObject * - * @return int + * @return positive-int|0 */ #[ReturnTypeWillChange] public function count() @@ -196,8 +202,8 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Exchange the array for another one. * - * @param array|ArrayObject|ArrayIterator|object $data - * @return array + * @param array|ArrayObject|ArrayIterator|object $data + * @return array */ public function exchangeArray($data) { @@ -224,7 +230,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Creates a copy of the ArrayObject. * - * @return array + * @return array */ public function getArrayCopy() { @@ -234,7 +240,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Gets the behavior flags. * - * @return int + * @return self::STD_PROP_LIST|self::ARRAY_AS_PROPS */ public function getFlags() { @@ -244,7 +250,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Create a new iterator from an ArrayObject instance * - * @return Iterator + * @return Iterator */ #[ReturnTypeWillChange] public function getIterator() @@ -257,7 +263,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Gets the iterator classname for the ArrayObject. * - * @return string + * @return class-string */ public function getIteratorClass() { @@ -297,23 +303,23 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Returns whether the requested key exists * - * @param mixed $key + * @param TKey $key * @return bool */ #[ReturnTypeWillChange] - public function offsetExists($key) + public function offsetExists(mixed $key) { return isset($this->storage[$key]); } /** - * Returns the value at the specified key + * {@inheritDoc} * - * @param mixed $key - * @return mixed + * @param TKey $key + * @return TValue|null */ #[ReturnTypeWillChange] - public function &offsetGet($key) + public function &offsetGet(mixed $key) { $ret = null; if (! $this->offsetExists($key)) { @@ -327,27 +333,27 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Sets the value at the specified key to value * - * @param mixed $key - * @param mixed $value + * @param TKey $offset + * @param TValue $value * @return void */ #[ReturnTypeWillChange] - public function offsetSet($key, $value) + public function offsetSet(mixed $offset, mixed $value) { - $this->storage[$key] = $value; + $this->storage[$offset] = $value; } /** * Unsets the value at the specified key * - * @param mixed $key + * @param TKey $offset * @return void */ #[ReturnTypeWillChange] - public function offsetUnset($key) + public function offsetUnset(mixed $offset) { - if ($this->offsetExists($key)) { - unset($this->storage[$key]); + if ($this->offsetExists($offset)) { + unset($this->storage[$offset]); } } @@ -364,7 +370,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Magic method used for serializing of an instance. * - * @return array + * @return array */ public function __serialize() { @@ -374,7 +380,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Sets the behavior flags * - * @param int $flags + * @param self::STD_PROP_LIST|self::ARRAY_AS_PROPS $flags * @return void */ public function setFlags($flags) @@ -385,7 +391,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Sets the iterator classname for the ArrayObject * - * @param string $class + * @param class-string $class * @return void */ public function setIteratorClass($class) @@ -396,7 +402,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count return; } - if (strpos($class, '\\') === 0) { + if (str_starts_with($class, '\\')) { $class = '\\' . $class; if (class_exists($class)) { $this->iteratorClass = $class; @@ -411,7 +417,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Sort the entries with a user-defined comparison function and maintain key association * - * @param callable $function + * @param callable(TValue, TValue): int $function * @return void */ public function uasort($function) @@ -424,7 +430,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count /** * Sort the entries by keys using a user-defined comparison function * - * @param callable $function + * @param callable(TKey, TKey): int $function * @return void */ public function uksort($function) @@ -486,9 +492,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Serializable, Count throw new UnexpectedValueException(sprintf( 'Cannot deserialize %s instance: invalid iteratorClass; expected string, received %s', self::class, - is_object($data['iteratorClass']) - ? get_class($data['iteratorClass']) - : gettype($data['iteratorClass']) + get_debug_type($data['iteratorClass']) )); } $this->setIteratorClass($data['iteratorClass']); diff --git a/lib/laminas/laminas-stdlib/src/ArraySerializableInterface.php b/lib/laminas/laminas-stdlib/src/ArraySerializableInterface.php index f2544535b..adb5231f2 100644 --- a/lib/laminas/laminas-stdlib/src/ArraySerializableInterface.php +++ b/lib/laminas/laminas-stdlib/src/ArraySerializableInterface.php @@ -9,7 +9,6 @@ interface ArraySerializableInterface /** * Exchange internal values from provided array * - * @param array $array * @return void */ public function exchangeArray(array $array); diff --git a/lib/laminas/laminas-stdlib/src/ArrayStack.php b/lib/laminas/laminas-stdlib/src/ArrayStack.php index d25ba5a6e..ea87244e3 100644 --- a/lib/laminas/laminas-stdlib/src/ArrayStack.php +++ b/lib/laminas/laminas-stdlib/src/ArrayStack.php @@ -12,6 +12,10 @@ use function array_reverse; /** * ArrayObject that acts as a stack with regards to iteration + * + * @template TKey of array-key + * @template TValue + * @template-extends PhpArrayObject */ class ArrayStack extends PhpArrayObject { @@ -21,7 +25,7 @@ class ArrayStack extends PhpArrayObject * Retrieve an array copy of the object, reverse its order, and return an * ArrayIterator with that reversed array. * - * @return ArrayIterator + * @return ArrayIterator */ #[ReturnTypeWillChange] public function getIterator() diff --git a/lib/laminas/laminas-stdlib/src/ArrayUtils.php b/lib/laminas/laminas-stdlib/src/ArrayUtils.php index 285e644dd..7bfa20dcb 100644 --- a/lib/laminas/laminas-stdlib/src/ArrayUtils.php +++ b/lib/laminas/laminas-stdlib/src/ArrayUtils.php @@ -35,22 +35,25 @@ abstract class ArrayUtils { /** * Compatibility Flag for ArrayUtils::filter + * + * @deprecated */ public const ARRAY_FILTER_USE_BOTH = 1; /** * Compatibility Flag for ArrayUtils::filter + * + * @deprecated */ public const ARRAY_FILTER_USE_KEY = 2; /** * Test whether an array contains one or more string keys * - * @param mixed $value * @param bool $allowEmpty Should an empty array() return true * @return bool */ - public static function hasStringKeys($value, $allowEmpty = false) + public static function hasStringKeys(mixed $value, $allowEmpty = false) { if (! is_array($value)) { return false; @@ -66,11 +69,10 @@ abstract class ArrayUtils /** * Test whether an array contains one or more integer keys * - * @param mixed $value * @param bool $allowEmpty Should an empty array() return true * @return bool */ - public static function hasIntegerKeys($value, $allowEmpty = false) + public static function hasIntegerKeys(mixed $value, $allowEmpty = false) { if (! is_array($value)) { return false; @@ -93,11 +95,10 @@ abstract class ArrayUtils * - a float: 2.2120, -78.150999 * - a string with float: '4000.99999', '-10.10' * - * @param mixed $value * @param bool $allowEmpty Should an empty array() return true * @return bool */ - public static function hasNumericKeys($value, $allowEmpty = false) + public static function hasNumericKeys(mixed $value, $allowEmpty = false) { if (! is_array($value)) { return false; @@ -126,11 +127,10 @@ abstract class ArrayUtils * ); * * - * @param mixed $value * @param bool $allowEmpty Is an empty list a valid list? * @return bool */ - public static function isList($value, $allowEmpty = false) + public static function isList(mixed $value, $allowEmpty = false) { if (! is_array($value)) { return false; @@ -168,11 +168,10 @@ abstract class ArrayUtils * ); * * - * @param mixed $value * @param bool $allowEmpty Is an empty array() a valid hash table? * @return bool */ - public static function isHashTable($value, $allowEmpty = false) + public static function isHashTable(mixed $value, $allowEmpty = false) { if (! is_array($value)) { return false; @@ -193,14 +192,15 @@ abstract class ArrayUtils * non-strict check is implemented. if $strict = -1, the default in_array * non-strict behaviour is used. * - * @param mixed $needle + * @deprecated This method will be removed in version 4.0 of this component + * * @param array $haystack * @param int|bool $strict * @return bool */ - public static function inArray($needle, array $haystack, $strict = false) + public static function inArray(mixed $needle, array $haystack, $strict = false) { - if (! $strict) { + if ((bool) $strict === false) { if (is_int($needle) || is_float($needle)) { $needle = (string) $needle; } @@ -318,7 +318,6 @@ abstract class ArrayUtils /** * @deprecated Since 3.2.0; use the native array_filter methods * - * @param array $data * @param callable $callback * @param null|int $flag * @return array diff --git a/lib/laminas/laminas-stdlib/src/ArrayUtils/MergeReplaceKey.php b/lib/laminas/laminas-stdlib/src/ArrayUtils/MergeReplaceKey.php index 6092747da..063e0681c 100644 --- a/lib/laminas/laminas-stdlib/src/ArrayUtils/MergeReplaceKey.php +++ b/lib/laminas/laminas-stdlib/src/ArrayUtils/MergeReplaceKey.php @@ -6,15 +6,8 @@ namespace Laminas\Stdlib\ArrayUtils; final class MergeReplaceKey implements MergeReplaceKeyInterface { - /** @var mixed */ - protected $data; - - /** - * @param mixed $data - */ - public function __construct($data) + public function __construct(protected mixed $data) { - $this->data = $data; } /** diff --git a/lib/laminas/laminas-stdlib/src/ErrorHandler.php b/lib/laminas/laminas-stdlib/src/ErrorHandler.php index 39aa8cd75..42f309401 100644 --- a/lib/laminas/laminas-stdlib/src/ErrorHandler.php +++ b/lib/laminas/laminas-stdlib/src/ErrorHandler.php @@ -23,7 +23,7 @@ abstract class ErrorHandler /** * Active stack * - * @var array + * @var list */ protected static $stack = []; diff --git a/lib/laminas/laminas-stdlib/src/FastPriorityQueue.php b/lib/laminas/laminas-stdlib/src/FastPriorityQueue.php index ae8f1d42a..63488ae89 100644 --- a/lib/laminas/laminas-stdlib/src/FastPriorityQueue.php +++ b/lib/laminas/laminas-stdlib/src/FastPriorityQueue.php @@ -30,6 +30,9 @@ use function unserialize; * elements from the queue and it also acts like an Iterator without removing * the elements. This behaviour can be used in mixed scenarios with high * performance boost. + * + * @template TValue of mixed + * @template-implements Iterator */ class FastPriorityQueue implements Iterator, Countable, Serializable { @@ -37,20 +40,20 @@ class FastPriorityQueue implements Iterator, Countable, Serializable public const EXTR_PRIORITY = PhpSplPriorityQueue::EXTR_PRIORITY; public const EXTR_BOTH = PhpSplPriorityQueue::EXTR_BOTH; - /** @var integer */ + /** @var self::EXTR_* */ protected $extractFlag = self::EXTR_DATA; /** * Elements of the queue, divided by priorities * - * @var array + * @var array> */ protected $values = []; /** * Array of priorities * - * @var array + * @var array */ protected $priorities = []; @@ -64,28 +67,28 @@ class FastPriorityQueue implements Iterator, Countable, Serializable /** * Max priority * - * @var integer|null + * @var int|null */ protected $maxPriority; /** * Total number of elements in the queue * - * @var integer + * @var int */ protected $count = 0; /** * Index of the current element in the queue * - * @var integer + * @var int */ protected $index = 0; /** * Sub index of the current element in the same priority level * - * @var integer + * @var int */ protected $subIndex = 0; @@ -112,11 +115,11 @@ class FastPriorityQueue implements Iterator, Countable, Serializable /** * Insert an element in the queue with a specified priority * - * @param mixed $value - * @param integer $priority + * @param TValue $value + * @param int $priority * @return void */ - public function insert($value, $priority) + public function insert(mixed $value, $priority) { if (! is_int($priority)) { throw new Exception\InvalidArgumentException('The priority must be an integer'); @@ -133,7 +136,7 @@ class FastPriorityQueue implements Iterator, Countable, Serializable * Extract an element in the queue according to the priority and the * order of insertion * - * @return mixed + * @return TValue|int|array{data: TValue, priority: int}|false */ public function extract() { @@ -155,10 +158,9 @@ class FastPriorityQueue implements Iterator, Countable, Serializable * the same item has been added multiple times, it will not remove other * instances. * - * @param mixed $datum * @return bool False if the item was not found, true otherwise. */ - public function remove($datum) + public function remove(mixed $datum) { $currentIndex = $this->index; $currentSubIndex = $this->subIndex; @@ -211,7 +213,7 @@ class FastPriorityQueue implements Iterator, Countable, Serializable /** * Get the current element in the queue * - * @return mixed + * @return TValue|int|array{data: TValue|false, priority: int|null}|false */ #[ReturnTypeWillChange] public function current() @@ -308,7 +310,7 @@ class FastPriorityQueue implements Iterator, Countable, Serializable * * Array will be priority => data pairs * - * @return array + * @return list */ public function toArray() { @@ -351,26 +353,21 @@ class FastPriorityQueue implements Iterator, Countable, Serializable /** * Set the extract flag * - * @param integer $flag + * @param self::EXTR_* $flag * @return void */ public function setExtractFlags($flag) { - switch ($flag) { - case self::EXTR_DATA: - case self::EXTR_PRIORITY: - case self::EXTR_BOTH: - $this->extractFlag = $flag; - break; - default: - throw new Exception\InvalidArgumentException("The extract flag specified is not valid"); - } + $this->extractFlag = match ($flag) { + self::EXTR_DATA, self::EXTR_PRIORITY, self::EXTR_BOTH => $flag, + default => throw new Exception\InvalidArgumentException("The extract flag specified is not valid"), + }; } /** * Check if the queue is empty * - * @return boolean + * @return bool */ public function isEmpty() { @@ -380,10 +377,9 @@ class FastPriorityQueue implements Iterator, Countable, Serializable /** * Does the queue contain the given datum? * - * @param mixed $datum * @return bool */ - public function contains($datum) + public function contains(mixed $datum) { foreach ($this->values as $values) { if (in_array($datum, $values)) { diff --git a/lib/laminas/laminas-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php b/lib/laminas/laminas-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php index 392a88d3e..692e9a7b0 100644 --- a/lib/laminas/laminas-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php +++ b/lib/laminas/laminas-stdlib/src/Guard/ArrayOrTraversableGuardTrait.php @@ -8,10 +8,8 @@ use Exception; use Laminas\Stdlib\Exception\InvalidArgumentException; use Traversable; -use function get_class; -use function gettype; +use function get_debug_type; use function is_array; -use function is_object; use function sprintf; /** @@ -29,7 +27,7 @@ trait ArrayOrTraversableGuardTrait * @throws Exception */ protected function guardForArrayOrTraversable( - $data, + mixed $data, $dataName = 'Argument', $exceptionClass = InvalidArgumentException::class ) { @@ -37,7 +35,7 @@ trait ArrayOrTraversableGuardTrait $message = sprintf( "%s must be an array or Traversable, [%s] given", $dataName, - is_object($data) ? get_class($data) : gettype($data) + get_debug_type($data) ); throw new $exceptionClass($message); } diff --git a/lib/laminas/laminas-stdlib/src/Guard/EmptyGuardTrait.php b/lib/laminas/laminas-stdlib/src/Guard/EmptyGuardTrait.php index bffaa38ae..e8d35cc15 100644 --- a/lib/laminas/laminas-stdlib/src/Guard/EmptyGuardTrait.php +++ b/lib/laminas/laminas-stdlib/src/Guard/EmptyGuardTrait.php @@ -24,7 +24,7 @@ trait EmptyGuardTrait * @throws Exception */ protected function guardAgainstEmpty( - $data, + mixed $data, $dataName = 'Argument', $exceptionClass = InvalidArgumentException::class ) { diff --git a/lib/laminas/laminas-stdlib/src/Guard/NullGuardTrait.php b/lib/laminas/laminas-stdlib/src/Guard/NullGuardTrait.php index 32ef3400f..763c36b3f 100644 --- a/lib/laminas/laminas-stdlib/src/Guard/NullGuardTrait.php +++ b/lib/laminas/laminas-stdlib/src/Guard/NullGuardTrait.php @@ -24,7 +24,7 @@ trait NullGuardTrait * @throws Exception */ protected function guardAgainstNull( - $data, + mixed $data, $dataName = 'Argument', $exceptionClass = InvalidArgumentException::class ) { diff --git a/lib/laminas/laminas-stdlib/src/Message.php b/lib/laminas/laminas-stdlib/src/Message.php index d4f161407..fad6e4b71 100644 --- a/lib/laminas/laminas-stdlib/src/Message.php +++ b/lib/laminas/laminas-stdlib/src/Message.php @@ -7,10 +7,8 @@ namespace Laminas\Stdlib; use Traversable; use function array_key_exists; -use function get_class; -use function gettype; +use function get_debug_type; use function is_array; -use function is_object; use function is_scalar; use function sprintf; @@ -42,7 +40,7 @@ class Message implements MessageInterface if (! is_array($spec) && ! $spec instanceof Traversable) { throw new Exception\InvalidArgumentException(sprintf( 'Expected a string, array, or Traversable argument in first position; received "%s"', - is_object($spec) ? get_class($spec) : gettype($spec) + get_debug_type($spec) )); } foreach ($spec as $key => $value) { diff --git a/lib/laminas/laminas-stdlib/src/ParameterObjectInterface.php b/lib/laminas/laminas-stdlib/src/ParameterObjectInterface.php index 60f531a68..39e5ffce3 100644 --- a/lib/laminas/laminas-stdlib/src/ParameterObjectInterface.php +++ b/lib/laminas/laminas-stdlib/src/ParameterObjectInterface.php @@ -4,29 +4,33 @@ declare(strict_types=1); namespace Laminas\Stdlib; +/** + * @template TKey of string + * @template TValue + */ interface ParameterObjectInterface { /** - * @param string $key - * @param mixed $value + * @param TKey $key + * @param TValue|null $value * @return void */ - public function __set($key, $value); + public function __set($key, mixed $value); /** - * @param string $key - * @return mixed + * @param TKey $key + * @return TValue */ public function __get($key); /** - * @param string $key + * @param TKey $key * @return bool */ public function __isset($key); /** - * @param string $key + * @param TKey $key * @return void */ public function __unset($key); diff --git a/lib/laminas/laminas-stdlib/src/Parameters.php b/lib/laminas/laminas-stdlib/src/Parameters.php index 940cccacc..4f1e0d438 100644 --- a/lib/laminas/laminas-stdlib/src/Parameters.php +++ b/lib/laminas/laminas-stdlib/src/Parameters.php @@ -10,6 +10,12 @@ use ReturnTypeWillChange; use function http_build_query; use function parse_str; +/** + * @template TKey of array-key + * @template TValue + * @template-extends PhpArrayObject + * @template-implements ParametersInterface + */ class Parameters extends PhpArrayObject implements ParametersInterface { /** @@ -18,7 +24,7 @@ class Parameters extends PhpArrayObject implements ParametersInterface * Enforces that we have an array, and enforces parameter access to array * elements. * - * @param array $values + * @param array|null $values */ public function __construct(?array $values = null) { @@ -31,7 +37,7 @@ class Parameters extends PhpArrayObject implements ParametersInterface /** * Populate from native PHP array * - * @param array $values + * @param array $values * @return void */ public function fromArray(array $values) @@ -55,7 +61,7 @@ class Parameters extends PhpArrayObject implements ParametersInterface /** * Serialize to native PHP array * - * @return array + * @return array */ public function toArray() { @@ -77,8 +83,8 @@ class Parameters extends PhpArrayObject implements ParametersInterface * * Returns null if the key does not exist. * - * @param string $name - * @return mixed + * @param TKey $name + * @return TValue|null */ #[ReturnTypeWillChange] public function offsetGet($name) @@ -91,9 +97,10 @@ class Parameters extends PhpArrayObject implements ParametersInterface } /** - * @param string $name - * @param mixed $default optional default value - * @return mixed + * @template TDefault + * @param TKey $name + * @param TDefault $default optional default value + * @return TValue|TDefault|null */ public function get($name, $default = null) { @@ -104,9 +111,9 @@ class Parameters extends PhpArrayObject implements ParametersInterface } /** - * @param string $name - * @param mixed $value - * @return Parameters + * @param TKey $name + * @param TValue $value + * @return $this */ public function set($name, $value) { diff --git a/lib/laminas/laminas-stdlib/src/ParametersInterface.php b/lib/laminas/laminas-stdlib/src/ParametersInterface.php index 8e07e070d..9b9a0c4cd 100644 --- a/lib/laminas/laminas-stdlib/src/ParametersInterface.php +++ b/lib/laminas/laminas-stdlib/src/ParametersInterface.php @@ -9,17 +9,22 @@ use Countable; use Serializable; use Traversable; -/* +/** * Basically, an ArrayObject. You could simply define something like: * class QueryParams extends ArrayObject implements Parameters {} * and have 90% of the functionality + * + * @template TKey + * @template TValue + * @template-extends ArrayAccess + * @template-extends Traversable */ interface ParametersInterface extends ArrayAccess, Countable, Serializable, Traversable { /** * Constructor * - * @param array $values + * @param array|null $values */ public function __construct(?array $values = null); @@ -28,7 +33,7 @@ interface ParametersInterface extends ArrayAccess, Countable, Serializable, Trav * * Allow deserialization from standard array * - * @param array $values + * @param array $values * @return mixed */ public function fromArray(array $values); @@ -48,7 +53,7 @@ interface ParametersInterface extends ArrayAccess, Countable, Serializable, Trav * * Allow serialization back to standard array * - * @return mixed + * @return array */ public function toArray(); @@ -57,24 +62,20 @@ interface ParametersInterface extends ArrayAccess, Countable, Serializable, Trav * * Allow serialization to query format; e.g., for PUT or POST requests * - * @return mixed + * @return string */ public function toString(); /** - * Get - * - * @param string $name - * @param mixed|null $default + * @param TKey $name + * @param TValue|null $default * @return mixed */ public function get($name, $default = null); /** - * Set - * - * @param string $name - * @param mixed $value + * @param TKey $name + * @param TValue $value * @return ParametersInterface */ public function set($name, $value); diff --git a/lib/laminas/laminas-stdlib/src/PriorityList.php b/lib/laminas/laminas-stdlib/src/PriorityList.php index f4ecf9c96..8e2c6e533 100644 --- a/lib/laminas/laminas-stdlib/src/PriorityList.php +++ b/lib/laminas/laminas-stdlib/src/PriorityList.php @@ -16,6 +16,11 @@ use function next; use function reset; use function uasort; +/** + * @template TKey of string + * @template TValue of mixed + * @template-implements Iterator + */ class PriorityList implements Iterator, Countable { public const EXTR_DATA = 0x00000001; @@ -25,14 +30,14 @@ class PriorityList implements Iterator, Countable /** * Internal list of all items. * - * @var array[] + * @var array */ protected $items = []; /** * Serial assigned to items to preserve LIFO. * - * @var int + * @var positive-int|0 */ protected $serial = 0; @@ -64,12 +69,12 @@ class PriorityList implements Iterator, Countable /** * Insert a new item. * - * @param string $name - * @param mixed $value - * @param int $priority + * @param TKey $name + * @param TValue $value + * @param int $priority * @return void */ - public function insert($name, $value, $priority = 0) + public function insert($name, mixed $value, $priority = 0) { if (! isset($this->items[$name])) { $this->count++; @@ -85,7 +90,7 @@ class PriorityList implements Iterator, Countable } /** - * @param string $name + * @param TKey $name * @param int $priority * @return $this * @throws Exception @@ -105,7 +110,7 @@ class PriorityList implements Iterator, Countable /** * Remove a item. * - * @param string $name + * @param TKey $name * @return void */ public function remove($name) @@ -133,8 +138,8 @@ class PriorityList implements Iterator, Countable /** * Get a item. * - * @param string $name - * @return mixed + * @param TKey $name + * @return TValue|null */ public function get($name) { @@ -162,7 +167,6 @@ class PriorityList implements Iterator, Countable * Compare the priority of two items. * * @param array $item1, - * @param array $item2 * @return int */ protected function compare(array $item1, array $item2) diff --git a/lib/laminas/laminas-stdlib/src/PriorityQueue.php b/lib/laminas/laminas-stdlib/src/PriorityQueue.php index 92af39223..b42580236 100644 --- a/lib/laminas/laminas-stdlib/src/PriorityQueue.php +++ b/lib/laminas/laminas-stdlib/src/PriorityQueue.php @@ -12,7 +12,6 @@ use UnexpectedValueException; use function array_map; use function count; -use function get_class; use function is_array; use function serialize; use function sprintf; @@ -30,9 +29,9 @@ use function unserialize; * "inner" iterator in the form of an SplPriorityQueue object for performing * the actual iteration. * - * @template T + * @template TValue * @template TPriority of int - * @implements IteratorAggregate + * @implements IteratorAggregate */ class PriorityQueue implements Countable, IteratorAggregate, Serializable { @@ -51,14 +50,14 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable * Actual items aggregated in the priority queue. Each item is an array * with keys "data" and "priority". * - * @var list + * @var list */ protected $items = []; /** * Inner queue object * - * @var \SplPriorityQueue|null + * @var \SplPriorityQueue|null */ protected $queue; @@ -67,7 +66,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable * * Priority defaults to 1 (low priority) if none provided. * - * @param T $data + * @param TValue $data * @param TPriority $priority * @return $this */ @@ -96,10 +95,9 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable * the same item has been added multiple times, it will not remove other * instances. * - * @param mixed $datum * @return bool False if the item was not found, true otherwise. */ - public function remove($datum) + public function remove(mixed $datum) { $found = false; $key = null; @@ -148,7 +146,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable /** * Peek at the top node in the queue, based on priority. * - * @return T + * @return TValue */ public function top() { @@ -160,7 +158,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable /** * Extract a node from the inner queue and sift up * - * @return T + * @return TValue */ public function extract() { @@ -204,7 +202,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable * retrieves the inner queue object, and clones it for purposes of * iteration. * - * @return \SplPriorityQueue + * @return \SplPriorityQueue */ #[ReturnTypeWillChange] public function getIterator() @@ -226,7 +224,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable /** * Magic method used for serializing of an instance. * - * @return list + * @return list */ public function __serialize() { @@ -251,7 +249,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable )); } - /** @psalm-var list $toUnserialize */ + /** @psalm-var list $toUnserialize */ $this->__unserialize($toUnserialize); } @@ -259,7 +257,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable /** * Magic method used to rebuild an instance. * - * @param list $data Data array. + * @param list $data Data array. * @return void */ public function __unserialize($data) @@ -278,23 +276,19 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable * @param int $flag * @return array * @psalm-return ($flag is self::EXTR_BOTH - * ? list + * ? list * : $flag is self::EXTR_PRIORITY * ? list - * : list + * : list * ) */ public function toArray($flag = self::EXTR_DATA) { - switch ($flag) { - case self::EXTR_BOTH: - return $this->items; - case self::EXTR_PRIORITY: - return array_map(static fn($item) => $item['priority'], $this->items); - case self::EXTR_DATA: - default: - return array_map(static fn($item) => $item['data'], $this->items); - } + return match ($flag) { + self::EXTR_BOTH => $this->items, + self::EXTR_PRIORITY => array_map(static fn($item): int => $item['priority'], $this->items), + default => array_map(static fn($item): mixed => $item['data'], $this->items), + }; } /** @@ -316,7 +310,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable /** * Does the queue contain the given datum? * - * @param T $datum + * @param TValue $datum * @return bool */ public function contains($datum) @@ -349,7 +343,7 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable * Get the inner priority queue instance * * @throws Exception\DomainException - * @return \SplPriorityQueue + * @return \SplPriorityQueue * @psalm-assert !null $this->queue */ protected function getQueue() @@ -357,13 +351,13 @@ class PriorityQueue implements Countable, IteratorAggregate, Serializable if (null === $this->queue) { /** @psalm-suppress UnsafeInstantiation */ $queue = new $this->queueClass(); - /** @psalm-var \SplPriorityQueue $queue */ + /** @psalm-var \SplPriorityQueue $queue */ $this->queue = $queue; - /** @psalm-suppress DocblockTypeContradiction, MixedArgument */ + /** @psalm-suppress DocblockTypeContradiction */ if (! $this->queue instanceof \SplPriorityQueue) { throw new Exception\DomainException(sprintf( 'PriorityQueue expects an internal queue of type SplPriorityQueue; received "%s"', - get_class($this->queue) + $queue::class )); } } diff --git a/lib/laminas/laminas-stdlib/src/SplPriorityQueue.php b/lib/laminas/laminas-stdlib/src/SplPriorityQueue.php index e55a0e9fd..0c5a80dc8 100644 --- a/lib/laminas/laminas-stdlib/src/SplPriorityQueue.php +++ b/lib/laminas/laminas-stdlib/src/SplPriorityQueue.php @@ -4,14 +4,13 @@ declare(strict_types=1); namespace Laminas\Stdlib; +use ReturnTypeWillChange; use Serializable; use UnexpectedValueException; use function array_key_exists; -use function get_class; -use function gettype; +use function get_debug_type; use function is_array; -use function is_object; use function serialize; use function sprintf; use function unserialize; @@ -24,9 +23,8 @@ use const PHP_INT_MAX; * Also, provides predictable heap order for datums added with the same priority * (i.e., they will be emitted in the same order they are enqueued). * - * @psalm-type InternalPriority = array{0: mixed, 1: int} * @template TValue - * @template TPriority of InternalPriority + * @template TPriority of int * @extends \SplPriorityQueue */ class SplPriorityQueue extends \SplPriorityQueue implements Serializable @@ -40,19 +38,18 @@ class SplPriorityQueue extends \SplPriorityQueue implements Serializable * Utilizes {@var $serial} to ensure that values of equal priority are * emitted in the same order in which they are inserted. * - * @param TValue $datum - * @param TPriority|mixed $priority + * @param TValue $value + * @param TPriority $priority * @return void */ - public function insert($datum, $priority) + #[ReturnTypeWillChange] // Inherited return type should be bool + public function insert($value, $priority) { if (! is_array($priority)) { $priority = [$priority, $this->serial--]; } - /** @psalm-var TPriority $priority */ - - parent::insert($datum, $priority); + parent::insert($value, $priority); } /** @@ -120,7 +117,7 @@ class SplPriorityQueue extends \SplPriorityQueue implements Serializable /** * Magic method used to rebuild an instance. * - * @param array $data Data array. + * @param array $data Data array. * @return void */ public function __unserialize($data) @@ -132,7 +129,7 @@ class SplPriorityQueue extends \SplPriorityQueue implements Serializable throw new UnexpectedValueException(sprintf( 'Cannot deserialize %s instance: corrupt item; expected array, received %s', self::class, - is_object($item) ? get_class($item) : gettype($item) + get_debug_type($item) )); } @@ -148,8 +145,6 @@ class SplPriorityQueue extends \SplPriorityQueue implements Serializable $priority = (int) $item['priority']; } - /** @psalm-var TValue $item['data'] */ - $this->insert($item['data'], $priority); } } diff --git a/lib/laminas/laminas-validator/composer.json b/lib/laminas/laminas-validator/composer.json index 3c552aa81..52aab145b 100644 --- a/lib/laminas/laminas-validator/composer.json +++ b/lib/laminas/laminas-validator/composer.json @@ -18,7 +18,7 @@ "config": { "sort-packages": true, "platform": { - "php": "7.4.99" + "php": "8.0.99" }, "allow-plugins": { "dealerdirect/phpcodesniffer-composer-installer": true @@ -31,25 +31,24 @@ } }, "require": { - "php": "^7.4 || ~8.0.0 || ~8.1.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "laminas/laminas-servicemanager": "^3.12.0", - "laminas/laminas-stdlib": "^3.10" + "laminas/laminas-stdlib": "^3.13" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-db": "^2.7", - "laminas/laminas-filter": "^2.14.0", - "laminas/laminas-http": "^2.14.2", - "laminas/laminas-i18n": "^2.15.0", - "laminas/laminas-session": "^2.12.1", - "laminas/laminas-uri": "^2.9.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.21", - "psalm/plugin-phpunit": "^0.17.0", - "psr/http-client": "^1.0", - "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", - "vimeo/psalm": "^4.24.0" + "laminas/laminas-coding-standard": "^2.4.0", + "laminas/laminas-db": "^2.15.0", + "laminas/laminas-filter": "^2.23.0", + "laminas/laminas-http": "^2.17.0", + "laminas/laminas-i18n": "^2.19", + "laminas/laminas-session": "^2.13.0", + "laminas/laminas-uri": "^2.10.0", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.18.0", + "psr/http-client": "^1.0.1", + "psr/http-factory": "^1.0.1", + "psr/http-message": "^1.0.1", + "vimeo/psalm": "^4.28" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", diff --git a/lib/laminas/laminas-validator/composer.lock b/lib/laminas/laminas-validator/composer.lock index 88be7a9da..395931f5e 100644 --- a/lib/laminas/laminas-validator/composer.lock +++ b/lib/laminas/laminas-validator/composer.lock @@ -4,25 +4,25 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "12f30984a08a09a9f205c4d8f7cef8a7", + "content-hash": "6e7995bf6995ad1fed5a115c0fcfc0b6", "packages": [ { "name": "laminas/laminas-servicemanager", - "version": "3.15.1", + "version": "3.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "216f972b179191b14c33a79337947b63bf7808ff" + "reference": "ed160729bb8721127efdaac799f9a298963345b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/216f972b179191b14c33a79337947b63bf7808ff", - "reference": "216f972b179191b14c33a79337947b63bf7808ff", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/ed160729bb8721127efdaac799f9a298963345b1", + "reference": "ed160729bb8721127efdaac799f9a298963345b1", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^3.2.1", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", "psr/container": "^1.0" }, "conflict": { @@ -38,17 +38,16 @@ "container-interop/container-interop": "^1.2.0" }, "require-dev": { - "composer/package-versions-deprecated": "^1.0", - "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-container-config-test": "^0.6", - "laminas/laminas-dependency-plugin": "^2.1.2", - "mikey179/vfsstream": "^1.6.10@alpha", - "ocramius/proxy-manager": "^2.11", - "phpbench/phpbench": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", + "composer/package-versions-deprecated": "^1.11.99.5", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-container-config-test": "^0.7", + "laminas/laminas-dependency-plugin": "^2.2", + "mikey179/vfsstream": "^1.6.11@alpha", + "ocramius/proxy-manager": "^2.14.1", + "phpbench/phpbench": "^1.2.6", + "phpunit/phpunit": "^9.5.25", "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.8" + "vimeo/psalm": "^4.28" }, "suggest": { "ocramius/proxy-manager": "ProxyManager ^2.1.1 to handle lazy initialization of services" @@ -95,34 +94,34 @@ "type": "community_bridge" } ], - "time": "2022-07-20T09:48:45+00:00" + "time": "2022-10-10T20:59:22+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.10.1", + "version": "3.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "0d669074845fc80a99add0f64025192f143ef836" + "reference": "63b66bd4b696f024f42616b9d95cdb10e5109c27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/0d669074845fc80a99add0f64025192f143ef836", - "reference": "0d669074845fc80a99add0f64025192f143ef836", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/63b66bd4b696f024f42616b9d95cdb10e5109c27", + "reference": "63b66bd4b696f024f42616b9d95cdb10e5109c27", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.3.0", - "phpbench/phpbench": "^1.0", - "phpunit/phpunit": "^9.3.7", - "psalm/plugin-phpunit": "^0.16.0", - "vimeo/psalm": "^4.7" + "laminas/laminas-coding-standard": "^2.4.0", + "phpbench/phpbench": "^1.2.6", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.17.0", + "vimeo/psalm": "^4.28" }, "type": "library", "autoload": { @@ -154,7 +153,7 @@ "type": "community_bridge" } ], - "time": "2022-06-10T14:49:09+00:00" + "time": "2022-10-10T19:10:24+00:00" }, { "name": "psr/container", @@ -447,16 +446,16 @@ }, { "name": "composer/pcre", - "version": "3.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd" + "reference": "4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/e300eb6c535192decd27a85bc72a9290f0d6b3bd", - "reference": "e300eb6c535192decd27a85bc72a9290f0d6b3bd", + "url": "https://api.github.com/repos/composer/pcre/zipball/4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb", + "reference": "4482b6409ca6bfc2af043a5711cd21ac3e7a8dfb", "shasum": "" }, "require": { @@ -498,7 +497,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.0.0" + "source": "https://github.com/composer/pcre/tree/3.0.2" }, "funding": [ { @@ -514,7 +513,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T20:21:48+00:00" + "time": "2022-11-03T20:24:16+00:00" }, { "name": "composer/semver", @@ -948,25 +947,28 @@ }, { "name": "laminas/laminas-coding-standard", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-coding-standard.git", - "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251" + "reference": "eb076dd86aa93dd424856b150c9b6f76c1fdfabc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/bcf6e07fe4690240be7beb6d884d0b0fafa6a251", - "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251", + "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/eb076dd86aa93dd424856b150c9b6f76c1fdfabc", + "reference": "eb076dd86aa93dd424856b150c9b6f76c1fdfabc", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.7", - "php": "^7.3 || ^8.0", + "php": "^7.4 || ^8.0", "slevomat/coding-standard": "^7.0", "squizlabs/php_codesniffer": "^3.6", "webimpress/coding-standard": "^1.2" }, + "conflict": { + "phpstan/phpdoc-parser": ">=1.6.0" + }, "type": "phpcodesniffer-standard", "autoload": { "psr-4": { @@ -997,7 +999,7 @@ "type": "community_bridge" } ], - "time": "2021-05-29T15:53:59+00:00" + "time": "2022-08-24T17:45:47+00:00" }, { "name": "laminas/laminas-db", @@ -1072,32 +1074,32 @@ }, { "name": "laminas/laminas-escaper", - "version": "2.10.0", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "58af67282db37d24e584a837a94ee55b9c7552be" + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/58af67282db37d24e584a837a94ee55b9c7552be", - "reference": "58af67282db37d24e584a837a94ee55b9c7552be", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", + "reference": "ee7a4c37bf3d0e8c03635d5bddb5bb3184ead490", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { "infection/infection": "^0.26.6", - "laminas/laminas-coding-standard": "~2.3.0", + "laminas/laminas-coding-standard": "~2.4.0", "maglnet/composer-require-checker": "^3.8.0", "phpunit/phpunit": "^9.5.18", - "psalm/plugin-phpunit": "^0.16.1", + "psalm/plugin-phpunit": "^0.17.0", "vimeo/psalm": "^4.22.0" }, "type": "library", @@ -1130,36 +1132,37 @@ "type": "community_bridge" } ], - "time": "2022-03-08T20:15:36+00:00" + "time": "2022-10-10T10:11:09+00:00" }, { "name": "laminas/laminas-eventmanager", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "41f7209428f37cab9573365e361f4078209aaafa" + "reference": "3f1afbad86cd34a431fdc069f265cfe6f8fc8308" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/41f7209428f37cab9573365e361f4078209aaafa", - "reference": "41f7209428f37cab9573365e361f4078209aaafa", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/3f1afbad86cd34a431fdc069f265cfe6f8fc8308", + "reference": "3f1afbad86cd34a431fdc069f265cfe6f8fc8308", "shasum": "" }, "require": { - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "container-interop/container-interop": "<1.2", "zendframework/zend-eventmanager": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "laminas/laminas-stdlib": "^3.6", - "phpbench/phpbench": "^1.1", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.5", - "psr/container": "^1.1.2 || ^2.0.2" + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-stdlib": "^3.15", + "phpbench/phpbench": "^1.2.6", + "phpunit/phpunit": "^9.5.25", + "psalm/plugin-phpunit": "^0.17.0", + "psr/container": "^1.1.2 || ^2.0.2", + "vimeo/psalm": "^4.28" }, "suggest": { "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature", @@ -1197,41 +1200,41 @@ "type": "community_bridge" } ], - "time": "2022-04-06T21:05:17+00:00" + "time": "2022-10-11T12:46:13+00:00" }, { "name": "laminas/laminas-filter", - "version": "2.17.0", + "version": "2.28.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-filter.git", - "reference": "7c78483f22e118fbc98be41dc24b39e8c17cdcae" + "reference": "b0290636e88083acb42dba7b883aeaa16a60244f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/7c78483f22e118fbc98be41dc24b39e8c17cdcae", - "reference": "7c78483f22e118fbc98be41dc24b39e8c17cdcae", + "url": "https://api.github.com/repos/laminas/laminas-filter/zipball/b0290636e88083acb42dba7b883aeaa16a60244f", + "reference": "b0290636e88083acb42dba7b883aeaa16a60244f", "shasum": "" }, "require": { + "ext-mbstring": "*", "laminas/laminas-servicemanager": "^3.14.0", - "laminas/laminas-stdlib": "^3.6.1", - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "laminas/laminas-stdlib": "^3.13.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "laminas/laminas-validator": "<2.10.1", "zendframework/zend-filter": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-crypt": "^3.5.1", - "laminas/laminas-uri": "^2.9.1", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-crypt": "^3.9", + "laminas/laminas-uri": "^2.10", "pear/archive_tar": "^1.4.14", - "phpspec/prophecy-phpunit": "^2.0.1", - "phpunit/phpunit": "^9.5.10", - "psalm/plugin-phpunit": "^0.17.0", + "phpunit/phpunit": "^9.5.26", + "psalm/plugin-phpunit": "^0.18.3", "psr/http-factory": "^1.0.1", - "vimeo/psalm": "^4.24.0" + "vimeo/psalm": "^4.30" }, "suggest": { "laminas/laminas-crypt": "Laminas\\Crypt component, for encryption filters", @@ -1275,20 +1278,20 @@ "type": "community_bridge" } ], - "time": "2022-07-17T11:58:06+00:00" + "time": "2022-11-07T20:46:55+00:00" }, { "name": "laminas/laminas-http", - "version": "2.15.1", + "version": "2.17.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-http.git", - "reference": "261f079c3dffcf6f123484db43c40e44c4bf1c79" + "reference": "ac4588d698c93b56bb7c0608d9a7537a3f057239" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-http/zipball/261f079c3dffcf6f123484db43c40e44c4bf1c79", - "reference": "261f079c3dffcf6f123484db43c40e44c4bf1c79", + "url": "https://api.github.com/repos/laminas/laminas-http/zipball/ac4588d698c93b56bb7c0608d9a7537a3f057239", + "reference": "ac4588d698c93b56bb7c0608d9a7537a3f057239", "shasum": "" }, "require": { @@ -1296,15 +1299,15 @@ "laminas/laminas-stdlib": "^3.6", "laminas/laminas-uri": "^2.9.1", "laminas/laminas-validator": "^2.15", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-http": "*" }, "require-dev": { "ext-curl": "*", - "laminas/laminas-coding-standard": "~2.2.1", - "phpunit/phpunit": "^9.5.5" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "^9.5.25" }, "suggest": { "paragonie/certainty": "For automated management of cacert.pem" @@ -1340,27 +1343,27 @@ "type": "community_bridge" } ], - "time": "2021-12-03T10:17:11+00:00" + "time": "2022-10-16T15:51:48+00:00" }, { "name": "laminas/laminas-i18n", - "version": "2.16.0", + "version": "2.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", - "reference": "e77c04c050b7744125d26e213b2639c86d4514ad" + "reference": "ebabca3a6398fc872127bc69a51bda5afc720d67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/e77c04c050b7744125d26e213b2639c86d4514ad", - "reference": "e77c04c050b7744125d26e213b2639c86d4514ad", + "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/ebabca3a6398fc872127bc69a51bda5afc720d67", + "reference": "ebabca3a6398fc872127bc69a51bda5afc720d67", "shasum": "" }, "require": { "ext-intl": "*", "laminas/laminas-servicemanager": "^3.14.0", "laminas/laminas-stdlib": "^2.7 || ^3.0", - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "laminas/laminas-view": "<2.20.0", @@ -1368,19 +1371,18 @@ "zendframework/zend-i18n": "*" }, "require-dev": { - "laminas/laminas-cache": "^3.1.2", - "laminas/laminas-cache-storage-adapter-memory": "^2.0.0", - "laminas/laminas-cache-storage-deprecated-factory": "^1.0.0", - "laminas/laminas-coding-standard": "~2.3.0", - "laminas/laminas-config": "^3.4.0", + "laminas/laminas-cache": "^3.6", + "laminas/laminas-cache-storage-adapter-memory": "^2.1", + "laminas/laminas-cache-storage-deprecated-factory": "^1.0.1", + "laminas/laminas-coding-standard": "~2.4.0", + "laminas/laminas-config": "^3.7", "laminas/laminas-eventmanager": "^3.5.0", - "laminas/laminas-filter": "^2.16.0", - "laminas/laminas-validator": "^2.17.0", - "laminas/laminas-view": "^2.21.0", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5.21", + "laminas/laminas-filter": "^2.21", + "laminas/laminas-validator": "^2.25", + "laminas/laminas-view": "^2.23", + "phpunit/phpunit": "^9.5.25", "psalm/plugin-phpunit": "^0.17.0", - "vimeo/psalm": "^4.24.0" + "vimeo/psalm": "^4.28" }, "suggest": { "laminas/laminas-cache": "You should install this package to cache the translations", @@ -1388,7 +1390,6 @@ "laminas/laminas-eventmanager": "You should install this package to use the events in the translator", "laminas/laminas-filter": "You should install this package to use the provided filters", "laminas/laminas-i18n-resources": "This package provides validator and captcha translations", - "laminas/laminas-servicemanager": "You should install this package to use the translator", "laminas/laminas-validator": "You should install this package to use the provided validators", "laminas/laminas-view": "You should install this package to use the provided view helpers" }, @@ -1428,31 +1429,31 @@ "type": "community_bridge" } ], - "time": "2022-07-12T22:15:49+00:00" + "time": "2022-10-10T15:48:56+00:00" }, { "name": "laminas/laminas-loader", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b" + "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/d0589ec9dd48365fd95ad10d1c906efd7711c16b", - "reference": "d0589ec9dd48365fd95ad10d1c906efd7711c16b", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/51ed9c3fa42d1098a9997571730c0cbf42d078d3", + "reference": "51ed9c3fa42d1098a9997571730c0cbf42d078d3", "shasum": "" }, "require": { - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-loader": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "phpunit/phpunit": "^9.3" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "~9.5.25" }, "type": "library", "autoload": { @@ -1484,7 +1485,7 @@ "type": "community_bridge" } ], - "time": "2021-09-02T18:30:53+00:00" + "time": "2022-10-16T12:50:49+00:00" }, { "name": "laminas/laminas-session", @@ -1571,29 +1572,29 @@ }, { "name": "laminas/laminas-uri", - "version": "2.9.1", + "version": "2.10.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-uri.git", - "reference": "7e837dc15c8fd3949df7d1213246fd7c8640032b" + "reference": "663b050294945c7345cc3a61f3ca661d5f9e1f80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/7e837dc15c8fd3949df7d1213246fd7c8640032b", - "reference": "7e837dc15c8fd3949df7d1213246fd7c8640032b", + "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/663b050294945c7345cc3a61f3ca661d5f9e1f80", + "reference": "663b050294945c7345cc3a61f3ca661d5f9e1f80", "shasum": "" }, "require": { "laminas/laminas-escaper": "^2.9", "laminas/laminas-validator": "^2.15", - "php": "^7.3 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "conflict": { "zendframework/zend-uri": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.2.1", - "phpunit/phpunit": "^9.5.5" + "laminas/laminas-coding-standard": "~2.4.0", + "phpunit/phpunit": "^9.5.25" }, "type": "library", "autoload": { @@ -1625,7 +1626,7 @@ "type": "community_bridge" } ], - "time": "2021-09-09T18:37:15+00:00" + "time": "2022-10-16T15:02:45+00:00" }, { "name": "myclabs/deep-copy", @@ -1739,16 +1740,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.14.0", + "version": "v4.15.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", + "reference": "0ef6c55a3f47f89d7a374e6f835197a0b5fcf900", "shasum": "" }, "require": { @@ -1789,9 +1790,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.1" }, - "time": "2022-05-31T20:59:12+00:00" + "time": "2022-09-04T07:30:47+00:00" }, { "name": "openlss/lib-array2xml", @@ -2069,25 +2070,30 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.6.1", + "version": "1.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d", + "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { "ext-tokenizer": "*", - "psalm/phar": "^4.8" + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { @@ -2113,141 +2119,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.6.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2" }, - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, - { - "name": "phpspec/prophecy-phpunit", - "version": "v2.0.1", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy-phpunit.git", - "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177", - "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8", - "phpspec/prophecy": "^1.3", - "phpunit/phpunit": "^9.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\PhpUnit\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - } - ], - "description": "Integrating the Prophecy mocking library in PHPUnit test cases", - "homepage": "http://phpspec.net", - "keywords": [ - "phpunit", - "prophecy" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy-phpunit/issues", - "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1" - }, - "time": "2020-07-09T08:33:42+00:00" + "time": "2022-10-14T12:47:21+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.6.4", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "135607f9ccc297d6923d49c2bcf309f509413215" + "reference": "981cc368a216c988e862a75e526b6076987d1b50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/135607f9ccc297d6923d49c2bcf309f509413215", - "reference": "135607f9ccc297d6923d49c2bcf309f509413215", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/981cc368a216c988e862a75e526b6076987d1b50", + "reference": "981cc368a216c988e862a75e526b6076987d1b50", "shasum": "" }, "require": { @@ -2257,7 +2144,6 @@ "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.0", "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" @@ -2277,29 +2163,29 @@ "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/1.6.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.5.1" }, - "time": "2022-06-26T13:09:08+00:00" + "time": "2022-05-05T11:32:40+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "9.2.18", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/12fddc491826940cf9b7e88ad9664cf51f0f6d0a", + "reference": "12fddc491826940cf9b7e88ad9664cf51f0f6d0a", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -2348,7 +2234,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.18" }, "funding": [ { @@ -2356,7 +2242,7 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2022-10-27T13:35:33+00:00" }, { "name": "phpunit/php-file-iterator", @@ -2601,16 +2487,16 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.21", + "version": "9.5.26", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" + "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/851867efcbb6a1b992ec515c71cdcf20d895e9d2", + "reference": "851867efcbb6a1b992ec515c71cdcf20d895e9d2", "shasum": "" }, "require": { @@ -2625,7 +2511,6 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", @@ -2633,19 +2518,16 @@ "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -2687,7 +2569,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.26" }, "funding": [ { @@ -2697,22 +2579,26 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-06-19T12:14:25+00:00" + "time": "2022-10-28T06:00:21+00:00" }, { "name": "psalm/plugin-phpunit", - "version": "0.17.0", + "version": "0.18.3", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "45951541beef07e93e3ad197daf01da88e85c31d" + "reference": "057c1cdf7546c1e427f6fd83b635d0cc18c252bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/45951541beef07e93e3ad197daf01da88e85c31d", - "reference": "45951541beef07e93e3ad197daf01da88e85c31d", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/057c1cdf7546c1e427f6fd83b635d0cc18c252bf", + "reference": "057c1cdf7546c1e427f6fd83b635d0cc18c252bf", "shasum": "" }, "require": { @@ -2720,7 +2606,7 @@ "composer/semver": "^1.4 || ^2.0 || ^3.0", "ext-simplexml": "*", "php": "^7.1 || ^8.0", - "vimeo/psalm": "dev-master || dev-4.x || ^4.5" + "vimeo/psalm": "dev-master || dev-4.x || ^4.5 || ^5@beta" }, "conflict": { "phpunit/phpunit": "<7.5" @@ -2757,9 +2643,9 @@ "description": "Psalm plugin for PHPUnit", "support": { "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", - "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.17.0" + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.18.3" }, - "time": "2022-06-14T17:05:57+00:00" + "time": "2022-11-03T18:17:28+00:00" }, { "name": "psr/http-client", @@ -2923,30 +2809,30 @@ }, { "name": "psr/log", - "version": "1.1.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2967,9 +2853,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2021-05-03T11:20:27+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { "name": "sebastian/cli-parser", @@ -3140,16 +3026,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -3202,7 +3088,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -3210,7 +3096,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -3400,16 +3286,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -3465,7 +3351,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -3473,7 +3359,7 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", @@ -3828,16 +3714,16 @@ }, { "name": "sebastian/type", - "version": "3.0.0", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { @@ -3849,7 +3735,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -3872,7 +3758,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" }, "funding": [ { @@ -3880,7 +3766,7 @@ "type": "github" } ], - "time": "2022-03-15T09:54:48+00:00" + "time": "2022-09-12T14:47:03+00:00" }, { "name": "sebastian/version", @@ -4054,46 +3940,42 @@ }, { "name": "symfony/console", - "version": "v5.4.10", + "version": "v6.0.15", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000" + "reference": "b0b910724a0a0326b4481e4f8a30abb2dd442efb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/4d671ab4ddac94ee439ea73649c69d9d200b5000", - "reference": "4d671ab4ddac94ee439ea73649c69d9d200b5000", + "url": "https://api.github.com/repos/symfony/console/zipball/b0b910724a0a0326b4481e4f8a30abb2dd442efb", + "reference": "b0b910724a0a0326b4481e4f8a30abb2dd442efb", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.0.2", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" + "symfony/string": "^5.4|^6.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/event-dispatcher": "^5.4|^6.0", + "symfony/lock": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0", + "symfony/var-dumper": "^5.4|^6.0" }, "suggest": { "psr/log": "For using the console logger", @@ -4133,7 +4015,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.10" + "source": "https://github.com/symfony/console/tree/v6.0.15" }, "funding": [ { @@ -4149,29 +4031,29 @@ "type": "tidelift" } ], - "time": "2022-06-26T13:00:04+00:00" + "time": "2022-10-26T21:42:20+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v3.0.2", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", + "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.0-dev" }, "thanks": { "name": "symfony/contracts", @@ -4200,7 +4082,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.2" }, "funding": [ { @@ -4216,20 +4098,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-01-02T09:55:41+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { @@ -4244,7 +4126,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4282,7 +4164,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -4298,20 +4180,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { @@ -4323,7 +4205,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4363,7 +4245,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -4379,20 +4261,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -4404,7 +4286,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4447,7 +4329,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -4463,20 +4345,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -4491,7 +4373,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4530,7 +4412,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -4546,99 +4428,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "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 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -4647,7 +4450,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4692,7 +4495,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -4708,7 +4511,7 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/service-contracts", @@ -4795,34 +4598,33 @@ }, { "name": "symfony/string", - "version": "v5.4.10", + "version": "v6.0.15", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097" + "reference": "51ac0fa0ccf132a00519b87c97e8f775fa14e771" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/4432bc7df82a554b3e413a8570ce2fea90e94097", - "reference": "4432bc7df82a554b3e413a8570ce2fea90e94097", + "url": "https://api.github.com/repos/symfony/string/zipball/51ac0fa0ccf132a00519b87c97e8f775fa14e771", + "reference": "51ac0fa0ccf132a00519b87c97e8f775fa14e771", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.0" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0", + "symfony/http-client": "^5.4|^6.0", + "symfony/translation-contracts": "^2.0|^3.0", + "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", "autoload": { @@ -4861,7 +4663,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.10" + "source": "https://github.com/symfony/string/tree/v6.0.15" }, "funding": [ { @@ -4877,7 +4679,7 @@ "type": "tidelift" } ], - "time": "2022-06-26T15:57:47+00:00" + "time": "2022-10-10T09:34:08+00:00" }, { "name": "theseer/tokenizer", @@ -4931,16 +4733,16 @@ }, { "name": "vimeo/psalm", - "version": "4.24.0", + "version": "4.30.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "06dd975cb55d36af80f242561738f16c5f58264f" + "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/06dd975cb55d36af80f242561738f16c5f58264f", - "reference": "06dd975cb55d36af80f242561738f16c5f58264f", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d0bc6e25d89f649e4f36a534f330f8bb4643dd69", + "reference": "d0bc6e25d89f649e4f36a534f330f8bb4643dd69", "shasum": "" }, "require": { @@ -4979,6 +4781,7 @@ "phpdocumentor/reflection-docblock": "^5", "phpmyadmin/sql-parser": "5.1.0||dev-master", "phpspec/prophecy": ">=1.9.0", + "phpstan/phpdoc-parser": "1.2.* || 1.6.4", "phpunit/phpunit": "^9.0", "psalm/plugin-phpunit": "^0.16", "slevomat/coding-standard": "^7.0", @@ -5032,9 +4835,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/4.24.0" + "source": "https://github.com/vimeo/psalm/tree/4.30.0" }, - "time": "2022-06-26T11:47:54+00:00" + "time": "2022-11-06T20:37:08+00:00" }, { "name": "webimpress/coding-standard", @@ -5207,11 +5010,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.4 || ~8.0.0 || ~8.1.0" + "php": "~8.0.0 || ~8.1.0 || ~8.2.0" }, "platform-dev": [], "platform-overrides": { - "php": "7.4.99" + "php": "8.0.99" }, "plugin-api-version": "2.3.0" } diff --git a/lib/laminas/laminas-validator/src/AbstractValidator.php b/lib/laminas/laminas-validator/src/AbstractValidator.php index d7f3ccd3c..0012126ce 100644 --- a/lib/laminas/laminas-validator/src/AbstractValidator.php +++ b/lib/laminas/laminas-validator/src/AbstractValidator.php @@ -9,7 +9,6 @@ use function array_key_exists; use function array_keys; use function array_unique; use function current; -use function get_class; use function implode; use function is_array; use function is_object; @@ -200,10 +199,9 @@ abstract class AbstractValidator implements /** * Invoke as command * - * @param mixed $value * @return bool */ - public function __invoke($value) + public function __invoke(mixed $value) { return $this->isValid($value); } @@ -330,7 +328,7 @@ abstract class AbstractValidator implements if (is_object($value)) { $value = method_exists($value, '__toString') ? (string) $value - : get_class($value) . ' object'; + : $value::class . ' object'; } elseif (is_array($value)) { $value = var_export($value, true); } else { @@ -401,10 +399,9 @@ abstract class AbstractValidator implements /** * Sets the value to be validated and clears the messages and errors arrays * - * @param mixed $value * @return void */ - protected function setValue($value) + protected function setValue(mixed $value) { $this->value = $value; $this->abstractOptions['messages'] = []; diff --git a/lib/laminas/laminas-validator/src/Barcode.php b/lib/laminas/laminas-validator/src/Barcode.php index 7ba7589af..f14cb8209 100644 --- a/lib/laminas/laminas-validator/src/Barcode.php +++ b/lib/laminas/laminas-validator/src/Barcode.php @@ -6,10 +6,8 @@ use Traversable; use function array_key_exists; use function class_exists; -use function get_class; -use function gettype; +use function get_debug_type; use function is_array; -use function is_object; use function is_string; use function property_exists; use function sprintf; @@ -114,7 +112,7 @@ class Barcode extends AbstractValidator throw new Exception\InvalidArgumentException( sprintf( 'Adapter %s does not implement Laminas\\Validator\\Barcode\\AdapterInterface', - is_object($adapter) ? get_class($adapter) : gettype($adapter) + get_debug_type($adapter) ) ); } diff --git a/lib/laminas/laminas-validator/src/Barcode/Code128.php b/lib/laminas/laminas-validator/src/Barcode/Code128.php index 44d7a537f..04d81c9cb 100644 --- a/lib/laminas/laminas-validator/src/Barcode/Code128.php +++ b/lib/laminas/laminas-validator/src/Barcode/Code128.php @@ -601,18 +601,12 @@ class Code128 extends AbstractAdapter protected function getCodingSet($value) { $value = $this->getUtf8StringWrapper()->substr($value, 0, 1); - switch ($value) { - case '‑': - return 'A'; - - case 'Λ†': - return 'B'; - - case '‰': - return 'C'; - } - - return ''; + return match ($value) { + '‑' => 'A', + 'Λ†' => 'B', + '‰' => 'C', + default => '', + }; } /** diff --git a/lib/laminas/laminas-validator/src/Barcode/Issn.php b/lib/laminas/laminas-validator/src/Barcode/Issn.php index 73a0fcc3f..e99321244 100644 --- a/lib/laminas/laminas-validator/src/Barcode/Issn.php +++ b/lib/laminas/laminas-validator/src/Barcode/Issn.php @@ -2,9 +2,9 @@ namespace Laminas\Validator\Barcode; +use function str_contains; use function str_split; use function strlen; -use function strpos; use function substr; class Issn extends AbstractAdapter @@ -28,7 +28,7 @@ class Issn extends AbstractAdapter public function hasValidCharacters($value) { if (strlen($value) !== 8) { - if (strpos($value, 'X') !== false) { + if (str_contains($value, 'X')) { return false; } } diff --git a/lib/laminas/laminas-validator/src/Between.php b/lib/laminas/laminas-validator/src/Between.php index 8a34f4ae6..40d474ebd 100644 --- a/lib/laminas/laminas-validator/src/Between.php +++ b/lib/laminas/laminas-validator/src/Between.php @@ -127,10 +127,9 @@ class Between extends AbstractValidator /** * Sets the min option * - * @param mixed $min * @return $this Provides a fluent interface */ - public function setMin($min) + public function setMin(mixed $min) { $this->options['min'] = $min; return $this; @@ -149,10 +148,9 @@ class Between extends AbstractValidator /** * Sets the max option * - * @param mixed $max * @return $this Provides a fluent interface */ - public function setMax($max) + public function setMax(mixed $max) { $this->options['max'] = $max; return $this; diff --git a/lib/laminas/laminas-validator/src/BusinessIdentifierCode.php b/lib/laminas/laminas-validator/src/BusinessIdentifierCode.php index f9df4feaa..4f42578f5 100644 --- a/lib/laminas/laminas-validator/src/BusinessIdentifierCode.php +++ b/lib/laminas/laminas-validator/src/BusinessIdentifierCode.php @@ -294,9 +294,7 @@ class BusinessIdentifierCode extends AbstractValidator */ private const KOSOVO_EXCEPTION = 'XK'; - /** - * @inheritDoc - */ + /** {@inheritDoc} */ public function isValid($value): bool { if (! is_string($value)) { diff --git a/lib/laminas/laminas-validator/src/Callback.php b/lib/laminas/laminas-validator/src/Callback.php index 7d2dc52a4..fc3fb9652 100644 --- a/lib/laminas/laminas-validator/src/Callback.php +++ b/lib/laminas/laminas-validator/src/Callback.php @@ -95,10 +95,9 @@ class Callback extends AbstractValidator /** * Sets options for the callback * - * @param mixed $options * @return $this Provides a fluent interface */ - public function setCallbackOptions($options) + public function setCallbackOptions(mixed $options) { $this->options['callbackOptions'] = (array) $options; return $this; @@ -140,7 +139,7 @@ class Callback extends AbstractValidator $this->error(self::INVALID_VALUE); return false; } - } catch (Exception $e) { + } catch (Exception) { $this->error(self::INVALID_CALLBACK); return false; } diff --git a/lib/laminas/laminas-validator/src/CreditCard.php b/lib/laminas/laminas-validator/src/CreditCard.php index 24030ed67..baa385bfc 100644 --- a/lib/laminas/laminas-validator/src/CreditCard.php +++ b/lib/laminas/laminas-validator/src/CreditCard.php @@ -19,8 +19,8 @@ use function in_array; use function is_array; use function is_callable; use function is_string; +use function str_starts_with; use function strlen; -use function strpos; use function strtoupper; class CreditCard extends AbstractValidator @@ -381,7 +381,7 @@ class CreditCard extends AbstractValidator $foundl = false; foreach ($types as $type) { foreach ($this->cardType[$type] as $prefix) { - if (0 === strpos($value, (string) $prefix)) { + if (str_starts_with($value, (string) $prefix)) { $foundp = true; if (in_array($length, $this->cardLength[$type])) { $foundl = true; @@ -425,7 +425,7 @@ class CreditCard extends AbstractValidator $this->error(self::SERVICE, $value); return false; } - } catch (Exception $e) { + } catch (Exception) { $this->error(self::SERVICEFAILURE, $value); return false; } diff --git a/lib/laminas/laminas-validator/src/Date.php b/lib/laminas/laminas-validator/src/Date.php index 2d85ade24..a74c12216 100644 --- a/lib/laminas/laminas-validator/src/Date.php +++ b/lib/laminas/laminas-validator/src/Date.php @@ -207,6 +207,10 @@ class Date extends AbstractValidator // Invalid dates can show up as warnings (ie. "2007-02-99") // and still return a DateTime object. $errors = DateTime::getLastErrors(); + if ($errors === false) { + return $date; + } + if ($errors['warning_count'] > 0) { if ($addErrors) { $this->error(self::FALSEFORMAT); @@ -220,7 +224,6 @@ class Date extends AbstractValidator /** * Implodes the array into a string and proxies to {@link convertString()}. * - * @param array $value * @param bool $addErrors * @return false|DateTime * @todo enhance the implosion diff --git a/lib/laminas/laminas-validator/src/DateStep.php b/lib/laminas/laminas-validator/src/DateStep.php index 2ec86dac0..ce28c1ed5 100644 --- a/lib/laminas/laminas-validator/src/DateStep.php +++ b/lib/laminas/laminas-validator/src/DateStep.php @@ -27,7 +27,7 @@ use function max; use function min; use function preg_match; use function sprintf; -use function strpos; +use function str_starts_with; use const PHP_INT_MAX; @@ -191,7 +191,7 @@ class DateStep extends Date { // Custom week format support if ( - strpos($this->format, 'Y-\WW') === 0 + str_starts_with($this->format, 'Y-\WW') && preg_match('/^([0-9]{4})\-W([0-9]{2})/', $value, $matches) ) { $date = new DateTime(); @@ -203,7 +203,7 @@ class DateStep extends Date // Invalid dates can show up as warnings (ie. "2007-02-99") // and still return a DateTime object. $errors = DateTime::getLastErrors(); - if ($errors['warning_count'] > 0) { + if (is_array($errors) && $errors['warning_count'] > 0) { if ($addErrors) { $this->error(self::FALSEFORMAT); } diff --git a/lib/laminas/laminas-validator/src/EmailAddress.php b/lib/laminas/laminas-validator/src/EmailAddress.php index e03070deb..65e27b22e 100644 --- a/lib/laminas/laminas-validator/src/EmailAddress.php +++ b/lib/laminas/laminas-validator/src/EmailAddress.php @@ -22,8 +22,8 @@ use function idn_to_utf8; use function is_array; use function is_string; use function preg_match; +use function str_contains; use function strlen; -use function strpos; use function trim; use const INTL_IDNA_VARIANT_UTS46; @@ -514,7 +514,7 @@ class EmailAddress extends AbstractValidator // Split email address up and disallow '..' if ( - strpos($value, '..') !== false + str_contains($value, '..') || ! preg_match('/^(.+)@([^@]+)$/', $value, $matches) ) { return false; diff --git a/lib/laminas/laminas-validator/src/File/Hash.php b/lib/laminas/laminas-validator/src/File/Hash.php index bf11570b8..ed5afde80 100644 --- a/lib/laminas/laminas-validator/src/File/Hash.php +++ b/lib/laminas/laminas-validator/src/File/Hash.php @@ -10,13 +10,11 @@ use function array_unique; use function array_values; use function func_get_arg; use function func_num_args; -use function get_class; -use function gettype; +use function get_debug_type; use function hash_algos; use function hash_file; use function in_array; use function is_array; -use function is_object; use function is_readable; use function is_scalar; use function is_string; @@ -129,7 +127,7 @@ class Hash extends AbstractValidator if (! is_string($value)) { throw new Exception\InvalidArgumentException(sprintf( 'Hash must be a string, %s received', - is_object($value) ? get_class($value) : gettype($value) + get_debug_type($value) )); } $this->options['hash'][$value] = $algorithm; diff --git a/lib/laminas/laminas-validator/src/File/MimeType.php b/lib/laminas/laminas-validator/src/File/MimeType.php index 8c2c43a04..8fea1d20a 100644 --- a/lib/laminas/laminas-validator/src/File/MimeType.php +++ b/lib/laminas/laminas-validator/src/File/MimeType.php @@ -165,7 +165,7 @@ class MimeType extends AbstractValidator foreach ($this->magicFiles as $file) { try { $this->setMagicFile($file); - } catch (Exception\ExceptionInterface $e) { + } catch (Exception\ExceptionInterface) { // suppressing errors which are thrown due to open_basedir restrictions continue; } diff --git a/lib/laminas/laminas-validator/src/GpsPoint.php b/lib/laminas/laminas-validator/src/GpsPoint.php index 7090a4590..0c7133ba1 100644 --- a/lib/laminas/laminas-validator/src/GpsPoint.php +++ b/lib/laminas/laminas-validator/src/GpsPoint.php @@ -6,8 +6,8 @@ use function explode; use function preg_match; use function preg_match_all; use function preg_replace; +use function str_contains; use function str_replace; -use function strpos; final class GpsPoint extends AbstractValidator { @@ -35,7 +35,7 @@ final class GpsPoint extends AbstractValidator */ public function isValid($value) { - if (strpos($value, ',') === false) { + if (! str_contains($value, ',')) { $this->error(self::INCOMPLETE_COORDINATE, $value); return false; } diff --git a/lib/laminas/laminas-validator/src/GreaterThan.php b/lib/laminas/laminas-validator/src/GreaterThan.php index bab3846ad..bc26c81e1 100644 --- a/lib/laminas/laminas-validator/src/GreaterThan.php +++ b/lib/laminas/laminas-validator/src/GreaterThan.php @@ -96,10 +96,9 @@ class GreaterThan extends AbstractValidator /** * Sets the min option * - * @param mixed $min * @return $this Provides a fluent interface */ - public function setMin($min) + public function setMin(mixed $min) { $this->min = $min; return $this; diff --git a/lib/laminas/laminas-validator/src/Hostname.php b/lib/laminas/laminas-validator/src/Hostname.php index a5fb700d5..bc3d0559f 100644 --- a/lib/laminas/laminas-validator/src/Hostname.php +++ b/lib/laminas/laminas-validator/src/Hostname.php @@ -21,8 +21,10 @@ use function ord; use function preg_match; use function prev; use function reset; +use function str_contains; +use function str_ends_with; +use function str_starts_with; use function strlen; -use function strpos; use function strrpos; use function strtolower; use function strtoupper; @@ -1968,8 +1970,8 @@ class Hostname extends AbstractValidator $this->setValue($value); // Check input against IP address schema if ( - ((preg_match('/^[0-9.]*$/', $value) && strpos($value, '.') !== false) - || (preg_match('/^[0-9a-f:.]*$/i', $value) && strpos($value, ':') !== false)) + ((preg_match('/^[0-9.]*$/', $value) && str_contains($value, '.')) + || (preg_match('/^[0-9a-f:.]*$/i', $value) && str_contains($value, ':'))) && $this->getIpValidator()->setTranslator($this->getTranslator())->isValid($value) ) { if (! ($this->getAllow() & self::ALLOW_IP)) { @@ -1983,16 +1985,16 @@ class Hostname extends AbstractValidator // Handle Regex compilation failure that may happen on .biz domain with has @ character, eg: tapi4457@hsoqvf.biz // Technically, hostname with '@' character is invalid, so mark as invalid immediately // @see https://github.com/laminas/laminas-validator/issues/8 - if (strpos($value, '@') !== false) { + if (str_contains($value, '@')) { $this->error(self::INVALID_HOSTNAME); return false; } // Local hostnames are allowed to be partial (ending '.') if ($this->getAllow() & self::ALLOW_LOCAL) { - if (substr($value, -1) === '.') { + if (str_ends_with($value, '.')) { $value = substr($value, 0, -1); - if (substr($value, -1) === '.') { + if (str_ends_with($value, '.')) { // Empty hostnames (ending '..') are not allowed $this->error(self::INVALID_LOCAL_NAME); return false; @@ -2036,7 +2038,7 @@ class Hostname extends AbstractValidator $this->tld = $matches[1]; // Decode Punycode TLD to IDN - if (strpos($this->tld, 'xn--') === 0) { + if (str_starts_with($this->tld, 'xn--')) { $this->tld = $this->decodePunycode(substr($this->tld, 4)); if ($this->tld === false) { return false; @@ -2085,7 +2087,7 @@ class Hostname extends AbstractValidator } foreach ($domainParts as $domainPart) { // Decode Punycode domain names to IDN - if (strpos($domainPart, 'xn--') === 0) { + if (str_starts_with($domainPart, 'xn--')) { $domainPart = $this->decodePunycode(substr($domainPart, 4)); if ($domainPart === false) { return false; diff --git a/lib/laminas/laminas-validator/src/Identical.php b/lib/laminas/laminas-validator/src/Identical.php index 4bf3c358c..ef766941d 100644 --- a/lib/laminas/laminas-validator/src/Identical.php +++ b/lib/laminas/laminas-validator/src/Identical.php @@ -7,11 +7,9 @@ use Laminas\Stdlib\ArrayUtils; use Traversable; use function array_key_exists; -use function get_class; -use function gettype; +use function get_debug_type; use function is_array; use function is_int; -use function is_object; use function is_string; use function key; use function sprintf; @@ -99,10 +97,9 @@ class Identical extends AbstractValidator /** * Set token against which to compare * - * @param mixed $token * @return $this */ - public function setToken($token) + public function setToken(mixed $token) { $this->tokenString = is_array($token) ? var_export($token, true) : (string) $token; $this->token = $token; @@ -173,7 +170,7 @@ class Identical extends AbstractValidator throw new Exception\InvalidArgumentException(sprintf( 'Context passed to %s must be array, ArrayObject or null; received "%s"', __METHOD__, - is_object($context) ? get_class($context) : gettype($context) + get_debug_type($context) )); } diff --git a/lib/laminas/laminas-validator/src/Ip.php b/lib/laminas/laminas-validator/src/Ip.php index 969faa5ef..903da7f63 100644 --- a/lib/laminas/laminas-validator/src/Ip.php +++ b/lib/laminas/laminas-validator/src/Ip.php @@ -10,6 +10,7 @@ use function ip2long; use function is_string; use function long2ip; use function preg_match; +use function str_contains; use function strlen; use function strpos; use function strrpos; @@ -145,7 +146,7 @@ class Ip extends AbstractValidator $value = substr($value, 0, $lastcolon) . ':0:0'; } - if (strpos($value, '::') === false) { + if (! str_contains($value, '::')) { return preg_match('/\A(?:[a-f0-9]{1,4}:){7}[a-f0-9]{1,4}\z/i', $value); } diff --git a/lib/laminas/laminas-validator/src/IsCountable.php b/lib/laminas/laminas-validator/src/IsCountable.php index e62ad6556..824fd3148 100644 --- a/lib/laminas/laminas-validator/src/IsCountable.php +++ b/lib/laminas/laminas-validator/src/IsCountable.php @@ -154,12 +154,11 @@ class IsCountable extends AbstractValidator } /** - * @param mixed $value * @return void * @throws Exception\InvalidArgumentException If either a min or max option * was previously set. */ - private function setCount($value) + private function setCount(mixed $value) { if (isset($this->options['min']) || isset($this->options['max'])) { throw new Exception\InvalidArgumentException( @@ -170,12 +169,11 @@ class IsCountable extends AbstractValidator } /** - * @param mixed $value * @return void * @throws Exception\InvalidArgumentException If either a count or max option * was previously set. */ - private function setMin($value) + private function setMin(mixed $value) { if (isset($this->options['count'])) { throw new Exception\InvalidArgumentException( @@ -186,12 +184,11 @@ class IsCountable extends AbstractValidator } /** - * @param mixed $value * @return void * @throws Exception\InvalidArgumentException If either a count or min option * was previously set. */ - private function setMax($value) + private function setMax(mixed $value) { if (isset($this->options['count'])) { throw new Exception\InvalidArgumentException( diff --git a/lib/laminas/laminas-validator/src/LessThan.php b/lib/laminas/laminas-validator/src/LessThan.php index c2a6fccc9..1a646c239 100644 --- a/lib/laminas/laminas-validator/src/LessThan.php +++ b/lib/laminas/laminas-validator/src/LessThan.php @@ -100,10 +100,9 @@ class LessThan extends AbstractValidator /** * Sets the max option * - * @param mixed $max * @return $this Provides a fluent interface */ - public function setMax($max) + public function setMax(mixed $max) { $this->max = $max; return $this; diff --git a/lib/laminas/laminas-validator/src/StaticValidator.php b/lib/laminas/laminas-validator/src/StaticValidator.php index aba395d4a..a99dded2e 100644 --- a/lib/laminas/laminas-validator/src/StaticValidator.php +++ b/lib/laminas/laminas-validator/src/StaticValidator.php @@ -48,14 +48,13 @@ class StaticValidator } /** - * @param mixed $value * @param class-string $classBaseName * @param array $options OPTIONAL associative array of options to pass as * the sole argument to the validator constructor. * @return bool * @throws Exception\InvalidArgumentException For an invalid $options argument. */ - public static function execute($value, $classBaseName, array $options = []) + public static function execute(mixed $value, $classBaseName, array $options = []) { if ($options && array_values($options) === $options) { throw new Exception\InvalidArgumentException( diff --git a/lib/laminas/laminas-validator/src/Step.php b/lib/laminas/laminas-validator/src/Step.php index 1892f5209..8ae925f28 100644 --- a/lib/laminas/laminas-validator/src/Step.php +++ b/lib/laminas/laminas-validator/src/Step.php @@ -64,10 +64,9 @@ class Step extends AbstractValidator /** * Sets the base value from which the step should be computed * - * @param mixed $baseValue * @return $this */ - public function setBaseValue($baseValue) + public function setBaseValue(mixed $baseValue) { $this->baseValue = $baseValue; return $this; @@ -86,10 +85,9 @@ class Step extends AbstractValidator /** * Sets the step value * - * @param mixed $step * @return $this */ - public function setStep($step) + public function setStep(mixed $step) { $this->step = (float) $step; return $this; diff --git a/lib/laminas/laminas-validator/src/Timezone.php b/lib/laminas/laminas-validator/src/Timezone.php index e262da225..5842adcc1 100644 --- a/lib/laminas/laminas-validator/src/Timezone.php +++ b/lib/laminas/laminas-validator/src/Timezone.php @@ -6,12 +6,10 @@ use DateTimeZone; use function array_key_exists; use function array_search; -use function get_class; use function gettype; use function in_array; use function is_array; use function is_int; -use function is_object; use function is_string; use function sprintf; @@ -91,8 +89,7 @@ class Timezone extends AbstractValidator throw new Exception\InvalidArgumentException(sprintf( 'Unknown type "%s" provided', is_string($type) || is_int($type) - ? $type - : (is_object($type) ? get_class($type) : gettype($type)) + ? $type : gettype($type) )); } diff --git a/lib/laminas/laminas-validator/src/UndisclosedPassword.php b/lib/laminas/laminas-validator/src/UndisclosedPassword.php index aa89e13ca..65a0bbaed 100644 --- a/lib/laminas/laminas-validator/src/UndisclosedPassword.php +++ b/lib/laminas/laminas-validator/src/UndisclosedPassword.php @@ -39,21 +39,13 @@ final class UndisclosedPassword extends AbstractValidator self::NOT_A_STRING => 'The provided password is not a string, please provide a correct password', ]; - private ClientInterface $httpClient; - - private RequestFactoryInterface $makeHttpRequest; - - public function __construct(ClientInterface $httpClient, RequestFactoryInterface $makeHttpRequest) + // phpcs:enable + public function __construct(private ClientInterface $httpClient, private RequestFactoryInterface $makeHttpRequest) { parent::__construct(); - - $this->httpClient = $httpClient; - $this->makeHttpRequest = $makeHttpRequest; } - /** - * @inheritDoc - */ + /** {@inheritDoc} */ public function isValid($value): bool { if (! is_string($value)) { @@ -124,7 +116,7 @@ final class UndisclosedPassword extends AbstractValidator private function hashInResponse(string $sha1Hash, string $resultStream): bool { $data = explode("\r\n", $resultStream); - $hashes = array_filter($data, static function ($value) use ($sha1Hash) { + $hashes = array_filter($data, static function ($value) use ($sha1Hash): bool { [$hash] = explode(':', $value); return strcmp($hash, substr($sha1Hash, self::HIBP_K_ANONYMITY_HASH_RANGE_LENGTH)) === 0; diff --git a/lib/laminas/laminas-validator/src/Uri.php b/lib/laminas/laminas-validator/src/Uri.php index ed2d3612e..cb719654f 100644 --- a/lib/laminas/laminas-validator/src/Uri.php +++ b/lib/laminas/laminas-validator/src/Uri.php @@ -175,7 +175,7 @@ class Uri extends AbstractValidator return true; } } - } catch (UriException $ex) { + } catch (UriException) { // Error parsing URI, it must be invalid } diff --git a/lib/laminas/laminas-validator/src/ValidatorChain.php b/lib/laminas/laminas-validator/src/ValidatorChain.php index 798c52f2b..d63141f5b 100644 --- a/lib/laminas/laminas-validator/src/ValidatorChain.php +++ b/lib/laminas/laminas-validator/src/ValidatorChain.php @@ -3,9 +3,11 @@ namespace Laminas\Validator; use Countable; +use IteratorAggregate; use Laminas\ServiceManager\ServiceManager; use Laminas\Stdlib\PriorityQueue; use ReturnTypeWillChange; +use Traversable; use function array_replace; use function assert; @@ -16,10 +18,10 @@ use const SORT_NUMERIC; /** * @psalm-type QueueElement = array{instance: ValidatorInterface, breakChainOnFailure: bool} + * @implements IteratorAggregate + * @final */ -class ValidatorChain implements - Countable, - ValidatorInterface +class ValidatorChain implements Countable, IteratorAggregate, ValidatorInterface { /** * Default priority at which validators are added @@ -248,7 +250,7 @@ class ValidatorChain implements { $this->messages = []; $result = true; - foreach ($this->validators as $element) { + foreach ($this as $element) { $validator = $element['instance']; assert($validator instanceof ValidatorInterface); if ($validator->isValid($value, $context)) { @@ -301,10 +303,9 @@ class ValidatorChain implements /** * Invoke chain as command * - * @param mixed $value * @return bool */ - public function __invoke($value) + public function __invoke(mixed $value) { return $this->isValid($value); } @@ -331,4 +332,10 @@ class ValidatorChain implements { return ['validators', 'messages']; } + + /** @return Traversable */ + public function getIterator(): Traversable + { + return clone $this->validators; + } } diff --git a/lib/laminas/laminas-validator/src/ValidatorPluginManager.php b/lib/laminas/laminas-validator/src/ValidatorPluginManager.php index 58517ebc4..0cae3baef 100644 --- a/lib/laminas/laminas-validator/src/ValidatorPluginManager.php +++ b/lib/laminas/laminas-validator/src/ValidatorPluginManager.php @@ -42,9 +42,7 @@ use Zend\Validator\Sitemap\Lastmod; use Zend\Validator\Sitemap\Loc; use Zend\Validator\Sitemap\Priority; -use function get_class; -use function gettype; -use function is_object; +use function get_debug_type; use function method_exists; use function sprintf; @@ -572,6 +570,9 @@ class ValidatorPluginManager extends AbstractPluginManager * Validate plugin instance * * {@inheritDoc} + * + * @param mixed $instance + * @psalm-assert InstanceType $instance */ public function validate($instance) { @@ -580,7 +581,7 @@ class ValidatorPluginManager extends AbstractPluginManager '%s expects only to create instances of %s; %s is invalid', static::class, $this->instanceOf, - is_object($instance) ? get_class($instance) : gettype($instance) + get_debug_type($instance) )); } } @@ -590,18 +591,17 @@ class ValidatorPluginManager extends AbstractPluginManager * * Proxies to `validate()`. * - * @param mixed $plugin * @return void * @throws Exception\RuntimeException */ - public function validatePlugin($plugin) + public function validatePlugin(mixed $plugin) { try { $this->validate($plugin); } catch (InvalidServiceException $e) { throw new Exception\RuntimeException(sprintf( 'Plugin of type %s is invalid; must implement %s', - is_object($plugin) ? get_class($plugin) : gettype($plugin), + get_debug_type($plugin), ValidatorInterface::class ), $e->getCode(), $e); }