diff --git a/composer.json b/composer.json index a74586b0..af31b1c2 100644 --- a/composer.json +++ b/composer.json @@ -39,13 +39,13 @@ }, "require-dev": { "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-i18n": "^2.25.0", + "laminas/laminas-i18n": "^2.26.0", "laminas/laminas-uri": "^2.11.0", "pear/archive_tar": "^1.4.14", - "phpunit/phpunit": "^10.5.5", - "psalm/plugin-phpunit": "^0.18.4", + "phpunit/phpunit": "^10.5.11", + "psalm/plugin-phpunit": "^0.19.0", "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.18.0" + "vimeo/psalm": "^5.22.2" }, "conflict": { "laminas/laminas-validator": "<2.10.1", diff --git a/composer.lock b/composer.lock index c80ad189..2f3b8916 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4ceacdd5c30994c19940a4943a8fc22e", + "content-hash": "e237294a9c029f74451de1f079cfa992", "packages": [ { "name": "laminas/laminas-servicemanager", @@ -98,16 +98,16 @@ }, { "name": "laminas/laminas-stdlib", - "version": "3.18.0", + "version": "3.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf" + "reference": "6a192dd0882b514e45506f533b833b623b78fff3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", - "reference": "e85b29076c6216e7fc98e72b42dbe1bbc3b95ecf", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/6a192dd0882b514e45506f533b833b623b78fff3", + "reference": "6a192dd0882b514e45506f533b833b623b78fff3", "shasum": "" }, "require": { @@ -118,10 +118,10 @@ }, "require-dev": { "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.14", - "phpunit/phpunit": "^10.3.3", + "phpbench/phpbench": "^1.2.15", + "phpunit/phpunit": "^10.5.8", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "vimeo/psalm": "^5.20.0" }, "type": "library", "autoload": { @@ -153,7 +153,7 @@ "type": "community_bridge" } ], - "time": "2023-09-19T10:15:21+00:00" + "time": "2024-01-19T12:39:49+00:00" }, { "name": "psr/container", @@ -207,16 +207,16 @@ "packages-dev": [ { "name": "amphp/amp", - "version": "v2.6.2", + "version": "v2.6.4", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", "shasum": "" }, "require": { @@ -228,8 +228,8 @@ "ext-json": "*", "jetbrains/phpstorm-stubs": "^2019.3", "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" + "react/promise": "^2", + "vimeo/psalm": "^3.12" }, "type": "library", "extra": { @@ -284,7 +284,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.2" + "source": "https://github.com/amphp/amp/tree/v2.6.4" }, "funding": [ { @@ -292,7 +292,7 @@ "type": "github" } ], - "time": "2022-02-20T17:52:18+00:00" + "time": "2024-03-21T18:52:26+00:00" }, { "name": "amphp/byte-stream", @@ -446,16 +446,16 @@ }, { "name": "composer/pcre", - "version": "3.1.1", + "version": "3.1.3", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", - "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", "shasum": "" }, "require": { @@ -497,7 +497,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.1" + "source": "https://github.com/composer/pcre/tree/3.1.3" }, "funding": [ { @@ -513,7 +513,7 @@ "type": "tidelift" } ], - "time": "2023-10-11T07:11:09+00:00" + "time": "2024-03-19T10:26:25+00:00" }, { "name": "composer/semver", @@ -598,16 +598,16 @@ }, { "name": "composer/xdebug-handler", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" + "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/4f988f8fdf580d53bdb2d1278fe93d1ed5462255", + "reference": "4f988f8fdf580d53bdb2d1278fe93d1ed5462255", "shasum": "" }, "require": { @@ -618,7 +618,7 @@ "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { @@ -642,9 +642,9 @@ "performance" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.4" }, "funding": [ { @@ -660,7 +660,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T21:32:43+00:00" + "time": "2024-03-26T18:29:49+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", @@ -877,16 +877,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077" + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077", - "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", "shasum": "" }, "require": { @@ -926,7 +926,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" }, "funding": [ { @@ -934,7 +934,7 @@ "type": "github" } ], - "time": "2023-09-17T21:38:23+00:00" + "time": "2024-02-07T09:43:46+00:00" }, { "name": "laminas/laminas-coding-standard", @@ -1056,16 +1056,16 @@ }, { "name": "laminas/laminas-i18n", - "version": "2.25.0", + "version": "2.26.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-i18n.git", - "reference": "4b6df8501bfe96648dadaf8de681cbbaea906e04" + "reference": "01738410cb263994d1d192861f642387e7e12ace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/4b6df8501bfe96648dadaf8de681cbbaea906e04", - "reference": "4b6df8501bfe96648dadaf8de681cbbaea906e04", + "url": "https://api.github.com/repos/laminas/laminas-i18n/zipball/01738410cb263994d1d192861f642387e7e12ace", + "reference": "01738410cb263994d1d192861f642387e7e12ace", "shasum": "" }, "require": { @@ -1079,18 +1079,18 @@ "zendframework/zend-i18n": "*" }, "require-dev": { - "laminas/laminas-cache": "^3.11.0", + "laminas/laminas-cache": "^3.12.0", "laminas/laminas-cache-storage-adapter-memory": "^2.3.0", - "laminas/laminas-cache-storage-deprecated-factory": "^1.1", + "laminas/laminas-cache-storage-deprecated-factory": "^1.2", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-config": "^3.9.0", - "laminas/laminas-eventmanager": "^3.12", - "laminas/laminas-filter": "^2.33", - "laminas/laminas-validator": "^2.41", - "laminas/laminas-view": "^2.32", - "phpunit/phpunit": "^10.4.2", + "laminas/laminas-eventmanager": "^3.13", + "laminas/laminas-filter": "^2.34", + "laminas/laminas-validator": "^2.46", + "laminas/laminas-view": "^2.33", + "phpunit/phpunit": "^10.5.5", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.15.0" + "vimeo/psalm": "^5.18.0" }, "suggest": { "laminas/laminas-cache": "You should install this package to cache the translations", @@ -1137,7 +1137,7 @@ "type": "community_bridge" } ], - "time": "2023-12-22T15:51:21+00:00" + "time": "2024-01-04T13:49:00+00:00" }, { "name": "laminas/laminas-uri", @@ -1199,16 +1199,16 @@ }, { "name": "laminas/laminas-validator", - "version": "2.46.0", + "version": "2.53.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "98330256f8d8a1357a93f6f7f1a987036aff6329" + "reference": "dbcfc19cb7f2e3eb3a27ba5d059c200e8404d72c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/98330256f8d8a1357a93f6f7f1a987036aff6329", - "reference": "98330256f8d8a1357a93f6f7f1a987036aff6329", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/dbcfc19cb7f2e3eb3a27ba5d059c200e8404d72c", + "reference": "dbcfc19cb7f2e3eb3a27ba5d059c200e8404d72c", "shasum": "" }, "require": { @@ -1222,16 +1222,16 @@ }, "require-dev": { "laminas/laminas-coding-standard": "^2.5", - "laminas/laminas-db": "^2.18", - "laminas/laminas-filter": "^2.33", - "laminas/laminas-i18n": "^2.24.1", - "laminas/laminas-session": "^2.17", + "laminas/laminas-db": "^2.19", + "laminas/laminas-filter": "^2.34", + "laminas/laminas-i18n": "^2.26.0", + "laminas/laminas-session": "^2.20", "laminas/laminas-uri": "^2.11.0", - "phpunit/phpunit": "^10.5.2", - "psalm/plugin-phpunit": "^0.18.4", + "phpunit/phpunit": "^10.5.15", + "psalm/plugin-phpunit": "^0.19.0", "psr/http-client": "^1.0.3", "psr/http-factory": "^1.0.2", - "vimeo/psalm": "^5.17" + "vimeo/psalm": "^5.23.1" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -1279,7 +1279,7 @@ "type": "community_bridge" } ], - "time": "2024-01-03T12:43:04+00:00" + "time": "2024-04-01T09:26:32+00:00" }, { "name": "myclabs/deep-copy", @@ -1342,16 +1342,16 @@ }, { "name": "netresearch/jsonmapper", - "version": "v4.2.0", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", - "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0", + "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0", "shasum": "" }, "require": { @@ -1362,7 +1362,7 @@ "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0", + "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0 || ~10.0", "squizlabs/php_codesniffer": "~3.5" }, "type": "library", @@ -1387,27 +1387,27 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1" }, - "time": "2023-04-09T17:37:40+00:00" + "time": "2024-01-31T06:18:54+00:00" }, { "name": "nikic/php-parser", - "version": "v4.18.0", + "version": "v4.19.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", - "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", + "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", @@ -1443,22 +1443,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" }, - "time": "2023-12-10T21:03:43+00:00" + "time": "2024-03-17T08:10:35+00:00" }, { "name": "pear/archive_tar", - "version": "1.4.14", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/pear/Archive_Tar.git", - "reference": "4d761c5334c790e45ef3245f0864b8955c562caa" + "reference": "b439c859564f5cbb0f64ad6002d0afe84a889602" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/4d761c5334c790e45ef3245f0864b8955c562caa", - "reference": "4d761c5334c790e45ef3245f0864b8955c562caa", + "url": "https://api.github.com/repos/pear/Archive_Tar/zipball/b439c859564f5cbb0f64ad6002d0afe84a889602", + "reference": "b439c859564f5cbb0f64ad6002d0afe84a889602", "shasum": "" }, "require": { @@ -1489,7 +1489,7 @@ "./" ], "license": [ - "BSD-3-Clause" + "BSD-2-Clause" ], "authors": [ { @@ -1515,17 +1515,7 @@ "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=Archive_Tar", "source": "https://github.com/pear/Archive_Tar" }, - "funding": [ - { - "url": "https://github.com/mrook", - "type": "github" - }, - { - "url": "https://www.patreon.com/michielrook", - "type": "patreon" - } - ], - "time": "2021-07-20T13:53:39+00:00" + "time": "2024-03-16T16:21:40+00:00" }, { "name": "pear/console_getopt", @@ -1580,16 +1570,16 @@ }, { "name": "pear/pear-core-minimal", - "version": "v1.10.14", + "version": "v1.10.15", "source": { "type": "git", "url": "https://github.com/pear/pear-core-minimal.git", - "reference": "a86fc145edb5caedbf96527214ce3cadc9de4a32" + "reference": "ce0adade8b97561656ace07cdaac4751c271ea8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/a86fc145edb5caedbf96527214ce3cadc9de4a32", - "reference": "a86fc145edb5caedbf96527214ce3cadc9de4a32", + "url": "https://api.github.com/repos/pear/pear-core-minimal/zipball/ce0adade8b97561656ace07cdaac4751c271ea8c", + "reference": "ce0adade8b97561656ace07cdaac4751c271ea8c", "shasum": "" }, "require": { @@ -1602,9 +1592,9 @@ }, "type": "library", "autoload": { - "psr-0": { - "": "src/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "include-path": [ @@ -1625,7 +1615,7 @@ "issues": "http://pear.php.net/bugs/search.php?cmd=display&package_name[]=PEAR", "source": "https://github.com/pear/pear-core-minimal" }, - "time": "2023-11-26T16:15:38+00:00" + "time": "2024-03-16T18:41:45+00:00" }, { "name": "pear/pear_exception", @@ -1688,20 +1678,21 @@ }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -1742,9 +1733,15 @@ "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" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -2008,16 +2005,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.1.11", + "version": "10.1.14", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "78c3b7625965c2513ee96569a4dbb62601784145" + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", - "reference": "78c3b7625965c2513ee96569a4dbb62601784145", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", "shasum": "" }, "require": { @@ -2074,7 +2071,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.14" }, "funding": [ { @@ -2082,7 +2079,7 @@ "type": "github" } ], - "time": "2023-12-21T15:38:30+00:00" + "time": "2024-03-12T15:33:41+00:00" }, { "name": "phpunit/php-file-iterator", @@ -2329,16 +2326,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.5", + "version": "10.5.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856" + "reference": "18f8d4a5f52b61fdd9370aaae3167daa0eeb69cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ed21115d505b4b4f7dc7b5651464e19a2c7f7856", - "reference": "ed21115d505b4b4f7dc7b5651464e19a2c7f7856", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/18f8d4a5f52b61fdd9370aaae3167daa0eeb69cd", + "reference": "18f8d4a5f52b61fdd9370aaae3167daa0eeb69cd", "shasum": "" }, "require": { @@ -2410,7 +2407,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.5" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.16" }, "funding": [ { @@ -2426,28 +2423,28 @@ "type": "tidelift" } ], - "time": "2023-12-27T15:13:52+00:00" + "time": "2024-03-28T10:08:10+00:00" }, { "name": "psalm/plugin-phpunit", - "version": "0.18.4", + "version": "0.19.0", "source": { "type": "git", "url": "https://github.com/psalm/psalm-plugin-phpunit.git", - "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc" + "reference": "e344eaaa27871e79c6cb97b9efe52a735f9d1966" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc", - "reference": "e4ab3096653d9eb6f6d0ea5f4461898d59ae4dbc", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/e344eaaa27871e79c6cb97b9efe52a735f9d1966", + "reference": "e344eaaa27871e79c6cb97b9efe52a735f9d1966", "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.7.1 || ^5@beta || ^5.0" + "php": "^7.4 || ^8.0", + "vimeo/psalm": "dev-master || ^5@beta || ^5.0" }, "conflict": { "phpunit/phpunit": "<7.5" @@ -2484,9 +2481,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.18.4" + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.19.0" }, - "time": "2022-12-03T07:47:07+00:00" + "time": "2024-03-15T10:43:15+00:00" }, { "name": "psr/http-factory", @@ -2648,16 +2645,16 @@ }, { "name": "sebastian/cli-parser", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/c34583b87e7b7a8055bf6c450c2c77ce32a24084", + "reference": "c34583b87e7b7a8055bf6c450c2c77ce32a24084", "shasum": "" }, "require": { @@ -2692,7 +2689,8 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.1" }, "funding": [ { @@ -2700,7 +2698,7 @@ "type": "github" } ], - "time": "2023-02-03T06:58:15+00:00" + "time": "2024-03-02T07:12:49+00:00" }, { "name": "sebastian/code-unit", @@ -2950,16 +2948,16 @@ }, { "name": "sebastian/diff", - "version": "5.1.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", - "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e", + "reference": "c41e007b4b62af48218231d6c2275e4c9b975b2e", "shasum": "" }, "require": { @@ -2967,7 +2965,7 @@ }, "require-dev": { "phpunit/phpunit": "^10.0", - "symfony/process": "^4.2 || ^5" + "symfony/process": "^6.4" }, "type": "library", "extra": { @@ -3005,7 +3003,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.1" }, "funding": [ { @@ -3013,20 +3011,20 @@ "type": "github" } ], - "time": "2023-12-22T10:55:06+00:00" + "time": "2024-03-02T07:15:17+00:00" }, { "name": "sebastian/environment", - "version": "6.0.1", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984", + "reference": "8074dbcd93529b357029f5cc5058fd3e43666984", "shasum": "" }, "require": { @@ -3041,7 +3039,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "6.1-dev" } }, "autoload": { @@ -3069,7 +3067,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/environment/tree/6.1.0" }, "funding": [ { @@ -3077,20 +3075,20 @@ "type": "github" } ], - "time": "2023-04-11T05:39:26+00:00" + "time": "2024-03-23T08:47:14+00:00" }, { "name": "sebastian/exporter", - "version": "5.1.1", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + "reference": "955288482d97c19a372d3f31006ab3f37da47adf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf", + "reference": "955288482d97c19a372d3f31006ab3f37da47adf", "shasum": "" }, "require": { @@ -3147,7 +3145,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.2" }, "funding": [ { @@ -3155,20 +3153,20 @@ "type": "github" } ], - "time": "2023-09-24T13:22:09+00:00" + "time": "2024-03-02T07:17:12+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.1", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", + "reference": "987bafff24ecc4c9ac418cab1145b96dd6e9cbd9", "shasum": "" }, "require": { @@ -3202,14 +3200,14 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.2" }, "funding": [ { @@ -3217,7 +3215,7 @@ "type": "github" } ], - "time": "2023-07-19T07:19:23+00:00" + "time": "2024-03-02T07:19:19+00:00" }, { "name": "sebastian/lines-of-code", @@ -3624,16 +3622,16 @@ }, { "name": "spatie/array-to-xml", - "version": "3.2.2", + "version": "3.2.3", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "96be97e664c87613121d073ea39af4c74e57a7f8" + "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/96be97e664c87613121d073ea39af4c74e57a7f8", - "reference": "96be97e664c87613121d073ea39af4c74e57a7f8", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/c95fd4db94ec199f798d4b5b4a81757bd20d88ab", + "reference": "c95fd4db94ec199f798d4b5b4a81757bd20d88ab", "shasum": "" }, "require": { @@ -3671,7 +3669,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.2.2" + "source": "https://github.com/spatie/array-to-xml/tree/3.2.3" }, "funding": [ { @@ -3683,20 +3681,20 @@ "type": "github" } ], - "time": "2023-11-14T14:08:51+00:00" + "time": "2024-02-07T10:39:02+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.8.0", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" + "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/267a4405fff1d9c847134db3a3c92f1ab7f77909", + "reference": "267a4405fff1d9c847134db3a3c92f1ab7f77909", "shasum": "" }, "require": { @@ -3706,11 +3704,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -3763,20 +3761,20 @@ "type": "open_collective" } ], - "time": "2023-12-08T12:32:31+00:00" + "time": "2024-03-31T21:03:09+00:00" }, { "name": "symfony/console", - "version": "v6.4.2", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", - "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", + "url": "https://api.github.com/repos/symfony/console/zipball/0d9e4eb5ad413075624378f474c4167ea202de78", + "reference": "0d9e4eb5ad413075624378f474c4167ea202de78", "shasum": "" }, "require": { @@ -3841,7 +3839,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.2" + "source": "https://github.com/symfony/console/tree/v6.4.4" }, "funding": [ { @@ -3857,7 +3855,7 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2024-02-22T20:27:10+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3928,16 +3926,16 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.0", + "version": "v6.4.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59" + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59", - "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", + "reference": "7f3b1755eb49297a0827a7575d5d2b2fd11cc9fb", "shasum": "" }, "require": { @@ -3971,7 +3969,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.0" + "source": "https://github.com/symfony/filesystem/tree/v6.4.3" }, "funding": [ { @@ -3987,20 +3985,20 @@ "type": "tidelift" } ], - "time": "2023-07-26T17:27:13+00:00" + "time": "2024-01-23T14:51:35+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", - "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", + "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", "shasum": "" }, "require": { @@ -4014,9 +4012,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4053,7 +4048,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" }, "funding": [ { @@ -4069,20 +4064,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "875e90aeea2777b6f135677f618529449334a612" + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", - "reference": "875e90aeea2777b6f135677f618529449334a612", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", "shasum": "" }, "require": { @@ -4093,9 +4088,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4134,7 +4126,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" }, "funding": [ { @@ -4150,20 +4142,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", - "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", + "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", "shasum": "" }, "require": { @@ -4174,9 +4166,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4218,7 +4207,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" }, "funding": [ { @@ -4234,20 +4223,20 @@ "type": "tidelift" } ], - "time": "2023-01-26T09:26:14+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.28.0", + "version": "v1.29.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "42292d99c55abe617799667f454222c54c60e229" + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", - "reference": "42292d99c55abe617799667f454222c54c60e229", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", "shasum": "" }, "require": { @@ -4261,9 +4250,6 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.28-dev" - }, "thanks": { "name": "symfony/polyfill", "url": "https://github.com/symfony/polyfill" @@ -4301,7 +4287,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" }, "funding": [ { @@ -4317,7 +4303,7 @@ "type": "tidelift" } ], - "time": "2023-07-28T09:04:16+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/service-contracts", @@ -4403,16 +4389,16 @@ }, { "name": "symfony/string", - "version": "v6.4.2", + "version": "v6.4.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", - "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "url": "https://api.github.com/repos/symfony/string/zipball/4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", + "reference": "4e465a95bdc32f49cf4c7f07f751b843bbd6dcd9", "shasum": "" }, "require": { @@ -4469,7 +4455,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.2" + "source": "https://github.com/symfony/string/tree/v6.4.4" }, "funding": [ { @@ -4485,20 +4471,20 @@ "type": "tidelift" } ], - "time": "2023-12-10T16:15:48+00:00" + "time": "2024-02-01T13:16:41+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.2", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", - "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -4527,7 +4513,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.2" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -4535,20 +4521,20 @@ "type": "github" } ], - "time": "2023-11-20T00:12:19+00:00" + "time": "2024-03-03T12:36:25+00:00" }, { "name": "vimeo/psalm", - "version": "5.18.0", + "version": "5.23.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19" + "reference": "8471a896ccea3526b26d082f4461eeea467f10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/b113f3ed0259fd6e212d87c3df80eec95a6abf19", - "reference": "b113f3ed0259fd6e212d87c3df80eec95a6abf19", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/8471a896ccea3526b26d082f4461eeea467f10a4", + "reference": "8471a896ccea3526b26d082f4461eeea467f10a4", "shasum": "" }, "require": { @@ -4571,7 +4557,7 @@ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", "nikic/php-parser": "^4.16", "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "sebastian/diff": "^4.0 || ^5.0", + "sebastian/diff": "^4.0 || ^5.0 || ^6.0", "spatie/array-to-xml": "^2.17.0 || ^3.0", "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0", "symfony/filesystem": "^5.4 || ^6.0 || ^7.0" @@ -4645,7 +4631,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2023-12-16T09:37:35+00:00" + "time": "2024-03-11T20:33:46+00:00" }, { "name": "webimpress/coding-standard", diff --git a/psalm-baseline.xml b/psalm-baseline.xml index ea983a29..88aa3368 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,76 +1,86 @@ - + - $value + - setNullOnAllEmpty - setNullOnEmpty + + + + + - gettype($options) + - [] + - $value + options]]> - is_object($options) + - setList - setStrict + + - (bool) $strict + - $typeOrOptions + + + + ]]> + options['translations'][$message]]]> - $flag - $message + + - $value + + + options['casting']]]> + options['type']]]> + - $type + options['casting']]]> - options['translations']]]> options['type']]]> - getTranslations + - $constants + - (bool) $flag + - is_int($value) + @@ -78,46 +88,46 @@ options['callback'], $params)]]> - array - callable + + - new $callback() + options['callback']]]> options['callback_params']]]> - $options + - $callbackOrOptions + - getCallback + - (array) $params + - ($option is null ? array : mixed) + getOptions($option)]]> - is_string($option) ? null : [] + - [] + - $option + options[$option]]]> @@ -125,49 +135,56 @@ - $compressed + - string + - $content - $content + + options['archive']]]> - options['blocksize']]]> - (int) $blocksize - (string) $archive + + - null !== $content - null !== $content + + - bzclose - bzclose - bzwrite + + + + + + + - $compressed + - string + - $size + - $size + + + options['level']]]> + options['mode']]]> + - $content - $content + + options['archive']]]> @@ -176,47 +193,46 @@ options['mode']]]> - (int) $level - (string) $archive + + - null !== $content - null !== $content - null !== $content + + + - - $result === false - - string + + - $content + - $file[] + - $content - $directory - $file[] - $info + + + + - isFile + getArchive()]]> + options['target']]]> - $content - $content + + - $content + getArchive()]]> @@ -225,40 +241,40 @@ options['target']]]> - $file - $file + + - (string) $target + - (string) $archive + - $res - $res - $res - $res - $res + + + + + - string + - $res + options['archive']]]> - $content - $content + + - strrpos($content, DIRECTORY_SEPARATOR) - strrpos($content, DIRECTORY_SEPARATOR) + + getArchive()]]> @@ -269,46 +285,40 @@ options['target']]]> - (string) $target + - (string) $archive + - $res !== true + - setMode - setPrecision - setPrefixes - setUnit + + + + - $prefixes[$index] + - - options['mode']]]> - options['precision']]]> - options['prefixes']]]> - options['unit']]]> - - isDecimalMode - setMode - setPrecision - setPrefixes - setUnit + + + + + - (int) $precision - (string) $unit + + - $result + getCode()]]> @@ -316,51 +326,42 @@ - $value + - $value + - $value + - setList - setStrict + + - (bool) $strict + - $value + - $uploadData + - is_array($options) - is_array($options) + + - - - - - $file - $this - $this + - - array - @@ -369,10 +370,10 @@ - $value + - $options + @@ -385,36 +386,37 @@ - $value - $value + + - string + + - $uploadData - $uploadData + + files]]> - is_string($file) + - $target === null - is_string($target) + + - string + options]]> @@ -435,15 +437,15 @@ ]]]> - $clientFilename - $sourceFile - $sourceFile - $sourceFile - $sourceFile - $sourceFile + + + + + + - $value + alreadyFiltered[$sourceFile]]]> @@ -451,14 +453,14 @@ alreadyFiltered[$sourceFile]]]> - $clientFilename - $sourceFile - $sourceFile + + + - UploadedFileInterface + ]]> - string + alreadyFiltered[$alreadyFilteredKey]]]> @@ -466,73 +468,64 @@ alreadyFiltered[$sourceFile]]]> - $fileData + alreadyFiltered[$sourceFile]]]> - $value + options['target']]]> - $sourceFile - $sourceFile + + - $sourceFile - $sourceFile + + - $clientFileName - $clientFileName - $clientFileName + + + - - options['overwrite']]]> - options['randomize']]]> - options['stream_factory']]]> - options['target']]]> - options['upload_file_factory']]]> - options['use_upload_extension']]]> - options['use_upload_name']]]> - - setOverwrite - setRandomize - setUseUploadExtension - setUseUploadName + + + + - bool + - (bool) $flag - (bool) $flag - (bool) $flag - (bool) $flag + + + + - $value + - $uploadData + - new PriorityQueue() + - $options + - plugin + - strtolower + @@ -541,55 +534,55 @@ InvokableFactory::class]]> - ($name is class-string ? InstanceType : callable(mixed): mixed) + - $factories + - $name + - validatePlugin + - $shareByDefault + - - $options ?: [] - - FilterPluginManagerFactory + - $name - $name - $requestedName + + + - $creationOptions + creationOptions]]> + + + - $container + - FilterProviderInterface + - is_array($options) + @@ -602,11 +595,11 @@ - $temp + - (bool) $doubleQuote - (string) $value + + @@ -614,10 +607,10 @@ - array_values($processedParts) + - $spec[0] + @@ -628,26 +621,26 @@ - $processedPart - $rule - $rules[$spec] - $spec - $value[$ruleName] + + + + + - $sourceName - $spec + + rules[$spec][]]]> - $processedPart - $processedPart - $rule - $ruleFilter - $ruleValue - $sourceValue + + + + + + @@ -655,11 +648,11 @@ - $ruleFilter($processedPart) + - FilterInterface|false - array|false + + @@ -672,42 +665,42 @@ - $value + - self + - $pluginManager - $target + + - (string) $targetReplacementIdentifier + - (bool) $throwTargetExceptionsOn - (string) $rule - (string) $spec - (string) $target - (string) $value + + + + + - $reference - $target + + - getConfig + - $moduleManager + - ModuleManager + - Module + @@ -716,18 +709,14 @@ - bool + - $args[0] - $args[1] + + - - options['pattern']]]> - options['replacement']]]> - - bool + @@ -738,47 +727,42 @@ ]]]> - $existsOrOptions - $existsOrOptions + + - - options['exists']]]> - options['exists']]]> - - (bool) $flag + - $existsOrOptions !== null + - is_string($prefix) + - is_string($suffix) + - $encodingOrOptions - $encodingOrOptions + + - $encodingOrOptions - $encodingOrOptions + + options['charlist']]]> options['charlist']]]> - options['charlist']]]> @@ -787,52 +771,49 @@ - $attribute - $element + + - $temp + - is_array($options) - is_string($attribute) + + - $typeOrOptions + - $type + - - options['type']]]> - - $constants + - is_int($value) + - $encodingOrOptions - $encodingOrOptions + + enforcedScheme && ! $uri->getScheme()) { + if ($this->enforcedScheme !== null && $uri->getScheme() === null) { $this->enforceScheme($uri); } } catch (UriException) { @@ -841,42 +822,42 @@ }]]> - $defaultScheme + - setDefaultScheme - setEnforcedScheme + + - $separator + - $separator + - getSeparator + - $matches - $matches - $matches - $matches + + + + - $matches[1] - $matches[1] - $matches[2] - $matches[2] + + + + - $matches[1] - $matches[1] - $matches[2] - $matches[2] + + + + @@ -892,98 +873,98 @@ - SeparatorToSeparatorFactory + - $creationOptions + - setCreationOptions + - __construct - setCreationOptions + + - $value + - static function ($value) { + - $value - $value - $value + + + - is_array($value) ? array_map($lowerCaseFirst, $value) : $lowerCaseFirst($value) + - class extends AbstractUnicode { + - encodingProvider + - $strict + - $expected - $value + + - $data - [$value, $expected] + + - defaultTestProvider - listTestProvider + + - returnUnfilteredDataProvider + - $type + - $value - $value - $value - $value + + + + - $expected - $expected - $value - $value + + + + - $data - $data - $type - [$value, $expected] - [$value, $expected] + + + + + - combinedTypeTestProvider - defaultTestProvider - duplicateProvider - noCastingTestProvider - typeTestProvider + + + + + @@ -994,182 +975,178 @@ - assertTrue - assertTrue + + - testBz2DecompressNullValueIsAccepted + - null - null + + - assertTrue + - null - null + + - $compressed + - returnUnfilteredDataProvider + - getArchive - getArchive + + - binaryBytesTestProvider - decimalBytesTestProvider + + - provideFilter + - returnUnfilteredDataProvider + - provideFilter + - $compressed + - returnUnfilteredDataProvider + - $expected - $value + + - $data - [$value, $expected] + + - defaultTestProvider - listTestProvider + + - returnUnfilteredDataProvider + - returnUnfilteredDataProvider + - $input + - returnUnfilteredDataProvider + - 1234 - 1234 + + - returnUnfilteredDataProvider + - 1234 + sourceFile)]]> sourceFile)]]> sourceFile)]]> sourceFile)]]> - $firstResult + - $firstResult + - - - - - returnUnfilteredDataProvider + - $input + - returnUnfilteredDataProvider + - staticUcaseFilter + - getServiceLocator + - $container - $value - $value + + + $value]]> $value]]> - testFactoryConfiguresPluginManagerUnderServiceManagerV2 + - $container + - returnUnfilteredDataProvider + - assertNull - assertSame + + - $rule - $rule + + - $inflector + - _testOptions + @@ -1178,47 +1155,47 @@ - $rule - $rule + + - $filtered - $filtered - $filtered - $rules + + + + - getPluginManager - getRules - getTarget - getTargetReplacementIdentifier - isThrowTargetExceptionsOn + + + + + - $rule + - $rules - $rules + + - $filtered - $rule - $target + + + - provideFilter + - PregReplaceFilter::hasPcreUnicodeSupport() + - returnNonStringScalarValues - returnUnfilteredDataProvider + + @@ -1226,25 +1203,25 @@ - returnUnfilteredDataProvider + - $prefix + - invalidPrefixesDataProvider + - $suffix + - invalidSuffixesDataProvider + @@ -1252,154 +1229,154 @@ getMessage()]]> - returnUnfilteredDataProvider + - returnUnfilteredDataProvider + - getNonStringValues + - returnNonStringScalarValues - returnUnfilteredDataProvider + + - $filtered + - $filtered + - badCommentProvider - returnUnfilteredDataProvider + + - $value + - objectCallbackWithParams + - $value + - $value + - filterableValuesProvider - unfilterableValuesProvider + + - returnUnfilteredDataProvider + - $type + - true + - $expected - $expected - $value - $value + + + + - $data - $data - $type - [$value, $expected] - [$value, $expected] + + + + + - combinedTypeTestProvider - defaultTestProvider - duplicateTypeProvider - typeTestProvider + + + + - returnUnfilteredDataProvider + - abnormalUriProvider - enforcedSchemeTestcaseProvider - returnUnfilteredDataProvider + + + - returnNonStringScalarValues - returnUnfilteredDataProvider + + - $filtered - $filtered + + - returnNonStringScalarValues - returnUnfilteredDataProvider + + - returnNonStringScalarValues - returnUnfilteredDataProvider + + - returnNonStringScalarValues - returnUnfilteredDataProvider + + - $filtered - $filtered - $filtered - $filtered - $filtered + + + + + - $filtered - $filtered - $filtered - $filtered - $filtered - $filtered + + + + + + diff --git a/src/Boolean.php b/src/Boolean.php index 99033d3f..249523f0 100644 --- a/src/Boolean.php +++ b/src/Boolean.php @@ -197,7 +197,7 @@ public function setTranslations($translations) */ public function getTranslations() { - return $this->options['translations']; + return $this->options['translations'] ?? []; } /** diff --git a/src/Compress/Bz2.php b/src/Compress/Bz2.php index 25153dbd..e40a80a5 100644 --- a/src/Compress/Bz2.php +++ b/src/Compress/Bz2.php @@ -28,6 +28,8 @@ */ final class Bz2 extends AbstractCompressionAlgorithm { + private const DEFAULT_BLOCK_SIZE = 4; + /** * Compression Options * array( @@ -38,7 +40,7 @@ final class Bz2 extends AbstractCompressionAlgorithm * @var Options */ protected $options = [ - 'blocksize' => 4, + 'blocksize' => self::DEFAULT_BLOCK_SIZE, 'archive' => null, ]; @@ -61,7 +63,7 @@ public function __construct($options = null) */ public function getBlocksize() { - return $this->options['blocksize']; + return $this->options['blocksize'] ?? self::DEFAULT_BLOCK_SIZE; } /** @@ -113,7 +115,7 @@ public function setArchive($archive) public function compress($content) { $archive = $this->getArchive(); - if (! empty($archive)) { + if ($archive !== null) { $file = bzopen($archive, 'w'); if (! $file) { throw new Exception\RuntimeException("Error opening the archive '" . $archive . "'"); diff --git a/src/Compress/Gz.php b/src/Compress/Gz.php index 42d8574a..f985b377 100644 --- a/src/Compress/Gz.php +++ b/src/Compress/Gz.php @@ -168,7 +168,7 @@ public function compress($content) $compressed = gzcompress($content, $this->getLevel()); } - if (! $compressed) { + if ($compressed === false) { throw new Exception\RuntimeException('Error during compression'); } diff --git a/src/Compress/Tar.php b/src/Compress/Tar.php index 37fd5aa1..8ecac0aa 100644 --- a/src/Compress/Tar.php +++ b/src/Compress/Tar.php @@ -215,10 +215,10 @@ public function compress($content) */ public function decompress($content) { - $archive = $this->getArchive(); + $archive = (string) $this->getArchive(); if (file_exists($content)) { $archive = str_replace(['/', '\\'], DIRECTORY_SEPARATOR, realpath($content)); - } elseif (empty($archive) || ! file_exists($archive)) { + } elseif ($archive === '' || ! file_exists($archive)) { throw new Exception\RuntimeException('Tar Archive not found'); } diff --git a/src/Compress/Zip.php b/src/Compress/Zip.php index 43862fcc..e6d4f1eb 100644 --- a/src/Compress/Zip.php +++ b/src/Compress/Zip.php @@ -211,15 +211,15 @@ public function decompress($content) $res = $zip->open($archive); $target = $this->getTarget(); - if (! empty($target) && ! is_dir($target)) { + if (is_string($target) && ! is_dir($target)) { $target = dirname($target); } - if (! empty($target)) { + if (is_string($target)) { $target = rtrim($target, '/\\') . DIRECTORY_SEPARATOR; } - if (empty($target) || ! is_dir($target)) { + if (! is_string($target) || ! is_dir($target)) { throw new Exception\RuntimeException('No target for ZIP decompression set'); } diff --git a/src/DataUnitFormatter.php b/src/DataUnitFormatter.php index 64a9dc73..2d5d90bb 100644 --- a/src/DataUnitFormatter.php +++ b/src/DataUnitFormatter.php @@ -31,6 +31,7 @@ final class DataUnitFormatter extends AbstractFilter public const BASE_BINARY = 1024; public const BASE_DECIMAL = 1000; + private const DEFAULT_PRECISION = 2; /** * A list of all possible filter modes: * @@ -63,7 +64,7 @@ final class DataUnitFormatter extends AbstractFilter protected $options = [ 'mode' => self::MODE_DECIMAL, 'unit' => '', - 'precision' => 2, + 'precision' => self::DEFAULT_PRECISION, 'prefixes' => [], ]; @@ -105,7 +106,7 @@ protected function setMode($mode) */ protected function getMode() { - return $this->options['mode']; + return $this->options['mode'] ?? self::MODE_DECIMAL; } /** @@ -145,7 +146,7 @@ protected function setUnit($unit) */ protected function getUnit() { - return $this->options['unit']; + return $this->options['unit'] ?? ''; } /** @@ -165,7 +166,7 @@ protected function setPrecision($precision) */ protected function getPrecision() { - return $this->options['precision']; + return $this->options['precision'] ?? self::DEFAULT_PRECISION; } /** @@ -185,8 +186,8 @@ protected function setPrefixes(array $prefixes) */ protected function getPrefixes() { - $prefixes = $this->options['prefixes']; - if ($prefixes) { + $prefixes = $this->options['prefixes'] ?? null; + if ($prefixes !== null && $prefixes !== []) { return $prefixes; } diff --git a/src/DateTimeFormatter.php b/src/DateTimeFormatter.php index 0d0b6174..adcfac73 100644 --- a/src/DateTimeFormatter.php +++ b/src/DateTimeFormatter.php @@ -34,7 +34,7 @@ final class DateTimeFormatter extends AbstractFilter */ public function __construct($options = null) { - if ($options) { + if ($options !== null) { $this->setOptions($options); } } diff --git a/src/File/LowerCase.php b/src/File/LowerCase.php index c348d948..1490b56e 100644 --- a/src/File/LowerCase.php +++ b/src/File/LowerCase.php @@ -57,14 +57,14 @@ public function filter(mixed $value): mixed } $content = file_get_contents($value); - if (! $content) { + if ($content === false) { throw new Exception\RuntimeException("Problem while reading file '$value'"); } $content = parent::filter($content); $result = file_put_contents($value, $content); - if (! $result) { + if ($result === false) { throw new Exception\RuntimeException("Problem while writing file '$value'"); } diff --git a/src/File/Rename.php b/src/File/Rename.php index 7aee66b6..5af90122 100644 --- a/src/File/Rename.php +++ b/src/File/Rename.php @@ -13,6 +13,7 @@ use function count; use function file_exists; use function is_array; +use function is_bool; use function is_dir; use function is_scalar; use function is_string; @@ -231,7 +232,7 @@ public function filter(mixed $value): mixed * Supports single and nested arrays * * @param array $options - * @return array + * @return $this */ // @codingStandardsIgnoreStart protected function _convertOptions($options) @@ -266,23 +267,23 @@ protected function _convertOptions($options) } } - if (empty($files)) { + if ($files === []) { return $this; } - if (empty($files['source'])) { + if (! is_string($files['source'] ?? null)) { $files['source'] = '*'; } - if (empty($files['target'])) { + if (! is_string($files['target'] ?? null)) { $files['target'] = '*'; } - if (empty($files['overwrite'])) { + if (! is_bool($files['overwrite'] ?? null)) { $files['overwrite'] = false; } - if (empty($files['randomize'])) { + if (! is_bool($files['randomize'] ?? null)) { $files['randomize'] = false; } diff --git a/src/File/RenameUpload.php b/src/File/RenameUpload.php index 94327df0..b08218c5 100644 --- a/src/File/RenameUpload.php +++ b/src/File/RenameUpload.php @@ -31,13 +31,13 @@ /** * @psalm-type Options = array{ - * target?: string|null, - * use_upload_name?: bool, - * use_upload_extension?: bool, - * overwrite?: bool, - * randomize?: bool, - * stream_factory?: StreamFactoryInterface|null, - * upload_file_factory?: UploadedFileFactoryInterface|null, + * target: string|null, + * use_upload_name: bool, + * use_upload_extension: bool, + * overwrite: bool, + * randomize: bool, + * stream_factory: StreamFactoryInterface|null, + * upload_file_factory: UploadedFileFactoryInterface|null, * ... * } * @template TOptions of Options diff --git a/src/File/UpperCase.php b/src/File/UpperCase.php index d7ad3e23..6aad9fc3 100644 --- a/src/File/UpperCase.php +++ b/src/File/UpperCase.php @@ -54,14 +54,14 @@ public function filter(mixed $value): mixed } $content = file_get_contents($value); - if (! $content) { + if ($content === false) { throw new Exception\RuntimeException("Problem while reading file '$value'"); } $content = parent::filter($content); $result = file_put_contents($value, $content); - if (! $result) { + if ($result === false) { throw new Exception\RuntimeException("Problem while writing file '$value'"); } diff --git a/src/FilterChain.php b/src/FilterChain.php index 0320feda..2e35ce5f 100644 --- a/src/FilterChain.php +++ b/src/FilterChain.php @@ -16,6 +16,7 @@ use function get_debug_type; use function is_array; use function is_callable; +use function is_string; use function sprintf; use function strtolower; @@ -85,7 +86,7 @@ public function setOptions($options) foreach ($value as $spec) { $callback = $spec['callback'] ?? false; $priority = $spec['priority'] ?? static::DEFAULT_PRIORITY; - if ($callback) { + if (is_callable($callback)) { $this->attach($callback, $priority); } } @@ -95,7 +96,7 @@ public function setOptions($options) $name = $spec['name'] ?? false; $options = $spec['options'] ?? []; $priority = $spec['priority'] ?? static::DEFAULT_PRIORITY; - if ($name) { + if (is_string($name) && $name !== '') { $this->attachByName($name, $options, $priority); } } diff --git a/src/FilterPluginManagerFactory.php b/src/FilterPluginManagerFactory.php index 8051d677..b7a5dfda 100644 --- a/src/FilterPluginManagerFactory.php +++ b/src/FilterPluginManagerFactory.php @@ -7,10 +7,14 @@ use Laminas\ServiceManager\Config; use Laminas\ServiceManager\FactoryInterface; use Laminas\ServiceManager\ServiceLocatorInterface; +use Laminas\ServiceManager\ServiceManager; use Psr\Container\ContainerInterface; use function is_array; +/** + * @psalm-import-type ServiceManagerConfiguration from ServiceManager + */ class FilterPluginManagerFactory implements FactoryInterface { /** @@ -23,11 +27,12 @@ class FilterPluginManagerFactory implements FactoryInterface /** * {@inheritDoc} * + * @param ServiceManagerConfiguration|null $options * @return FilterPluginManager */ public function __invoke(ContainerInterface $container, $name, ?array $options = null) { - $pluginManager = new FilterPluginManager($container, $options ?: []); + $pluginManager = new FilterPluginManager($container, $options ?? []); // If this is in a laminas-mvc application, the ServiceListener will inject // merged configuration during bootstrap. diff --git a/src/PregReplace.php b/src/PregReplace.php index faabc3ca..6ded15c3 100644 --- a/src/PregReplace.php +++ b/src/PregReplace.php @@ -19,8 +19,8 @@ /** * @psalm-type Options = array{ - * pattern?: non-empty-string|list|null, - * replacement?: string|list, + * pattern: non-empty-string|list|null, + * replacement: string|list, * } * @extends AbstractFilter */ diff --git a/src/RealPath.php b/src/RealPath.php index 17526379..dff15b3c 100644 --- a/src/RealPath.php +++ b/src/RealPath.php @@ -24,7 +24,7 @@ /** * @psalm-type Options = array{ - * exists?: bool, + * exists: bool, * ... * } * @template TOptions of Options @@ -98,7 +98,7 @@ public function filter(mixed $value): mixed ErrorHandler::start(); $realpath = realpath($path); ErrorHandler::stop(); - if ($realpath) { + if ($realpath !== false) { return $realpath; } diff --git a/src/StringTrim.php b/src/StringTrim.php index a6252d1f..69e91639 100644 --- a/src/StringTrim.php +++ b/src/StringTrim.php @@ -81,11 +81,13 @@ public function filter(mixed $value): mixed } $value = (string) $value; - if (null === $this->options['charlist']) { + $charlist = $this->options['charlist']; + + if ($charlist === null) { return $this->unicodeTrim($value); } - return $this->unicodeTrim($value, $this->options['charlist']); + return $this->unicodeTrim($value, $charlist); } /** diff --git a/src/ToNull.php b/src/ToNull.php index 2af0bd39..2d725919 100644 --- a/src/ToNull.php +++ b/src/ToNull.php @@ -18,7 +18,7 @@ /** * @psalm-type Options = array{ - * type?: int-mask-of, + * type: int-mask-of, * } * @extends AbstractFilter */ diff --git a/src/UriNormalize.php b/src/UriNormalize.php index 769e0058..a923a6f5 100644 --- a/src/UriNormalize.php +++ b/src/UriNormalize.php @@ -47,7 +47,7 @@ final class UriNormalize extends AbstractFilter */ public function __construct($options = null) { - if ($options) { + if ($options !== null) { $this->setOptions($options); } } @@ -97,16 +97,16 @@ public function filter(mixed $value): mixed } $value = (string) $value; - $defaultScheme = $this->defaultScheme ?: $this->enforcedScheme; + $defaultScheme = $this->defaultScheme ?? $this->enforcedScheme; // Reset default scheme if it is not a known scheme - if (! UriFactory::getRegisteredSchemeClass($defaultScheme)) { + if (UriFactory::getRegisteredSchemeClass($defaultScheme) === null) { $defaultScheme = null; } try { $uri = UriFactory::factory($value, $defaultScheme); - if ($this->enforcedScheme && ! $uri->getScheme()) { + if ($this->enforcedScheme !== null && $uri->getScheme() === null) { $this->enforceScheme($uri); } } catch (UriException) { diff --git a/test/Compress/ZipTest.php b/test/Compress/ZipTest.php index 47a1a86b..967387fa 100644 --- a/test/Compress/ZipTest.php +++ b/test/Compress/ZipTest.php @@ -15,6 +15,7 @@ use function file_put_contents; use function getenv; use function is_dir; +use function is_string; use function mkdir; use function rmdir; use function str_replace; @@ -106,7 +107,7 @@ public function tearDown(): void */ public function testBasicUsage(): void { - if (! getenv('TESTS_LAMINAS_FILTER_COMPRESS_ZIP_ENABLED')) { + if (! $this->zipEnabled()) { self::markTestSkipped('ZIP compression tests are currently disabled'); } @@ -177,7 +178,7 @@ public function testZipGetSetTarget(): void */ public function testZipCompressFile(): void { - if (! getenv('TESTS_LAMINAS_FILTER_COMPRESS_ZIP_ENABLED')) { + if (! $this->zipEnabled()) { self::markTestSkipped('ZIP compression tests are currently disabled'); } @@ -203,7 +204,7 @@ public function testZipCompressFile(): void */ public function testCompressNonExistingTargetFile(): void { - if (! getenv('TESTS_LAMINAS_FILTER_COMPRESS_ZIP_ENABLED')) { + if (! $this->zipEnabled()) { self::markTestSkipped('ZIP compression tests are currently disabled'); } @@ -228,7 +229,7 @@ public function testCompressNonExistingTargetFile(): void */ public function testZipCompressDirectory(): void { - if (! getenv('TESTS_LAMINAS_FILTER_COMPRESS_ZIP_ENABLED')) { + if (! $this->zipEnabled()) { self::markTestSkipped('ZIP compression tests are currently disabled'); } @@ -267,7 +268,7 @@ public function testZipToString(): void public function testDecompressWillThrowExceptionWhenDecompressingWithNoTarget(): void { - if (! getenv('TESTS_LAMINAS_FILTER_COMPRESS_ZIP_ENABLED')) { + if (! $this->zipEnabled()) { self::markTestSkipped('ZIP compression tests are currently disabled'); } @@ -296,7 +297,7 @@ public function testDecompressWillThrowExceptionWhenDecompressingWithNoTarget(): #[Group('6026')] public function testDecompressWhenNoArchieveInClass(): void { - if (! getenv('TESTS_LAMINAS_FILTER_COMPRESS_ZIP_ENABLED')) { + if (! $this->zipEnabled()) { self::markTestSkipped('ZIP compression tests are currently disabled'); } @@ -320,4 +321,14 @@ public function testDecompressWhenNoArchieveInClass(): void $content = file_get_contents($this->tmp . '/_compress'); self::assertSame('compress me', $content); } + + private function zipEnabled(): bool + { + /** + * PHPUnit casts true|false env vars to "1"|"" + */ + $value = getenv('TESTS_LAMINAS_FILTER_COMPRESS_ZIP_ENABLED'); + + return is_string($value) && (int) $value === 1; + } } diff --git a/test/File/RenameUploadTest.php b/test/File/RenameUploadTest.php index 730ffcdd..339eb65f 100644 --- a/test/File/RenameUploadTest.php +++ b/test/File/RenameUploadTest.php @@ -14,6 +14,7 @@ use Psr\Http\Message\UploadedFileInterface; use stdClass; +use function assert; use function basename; use function copy; use function glob; @@ -309,6 +310,7 @@ public function testGetFileWithOriginalExtension(): void ]); $oldFilePathInfo = pathinfo($this->sourceFile); + assert(isset($oldFilePathInfo['extension'])); self::assertMatchesRegularExpression( '#' . str_replace('\\', '\\\\', $fileNoExt) . '.' . $oldFilePathInfo['extension'] . '#', @@ -326,6 +328,7 @@ public function testGetRandomizedFileWithOriginalExtension(): void ]); $oldFilePathInfo = pathinfo($this->sourceFile); + assert(isset($oldFilePathInfo['extension'])); self::assertMatchesRegularExpression( '#' . str_replace('\\', '\\\\', $fileNoExt) . '_.{23}\.' . $oldFilePathInfo['extension'] . '#', diff --git a/test/FilterPluginManagerCompatibilityTest.php b/test/FilterPluginManagerCompatibilityTest.php index 262b1897..597b8386 100644 --- a/test/FilterPluginManagerCompatibilityTest.php +++ b/test/FilterPluginManagerCompatibilityTest.php @@ -46,12 +46,12 @@ public static function aliasProvider(): Generator self::assertIsString($alias); self::assertIsString($target); // Skipping as laminas-i18n is not required by this package - if (strpos($target, '\\I18n\\')) { + if (strpos($target, '\\I18n\\') !== false) { continue; } // Skipping as it has required options - if (strpos($target, 'DataUnitFormatter')) { + if (strpos($target, 'DataUnitFormatter') !== false) { continue; }