diff --git a/composer.json b/composer.json index 6b487a42c095f2a38ba334b7cb4e1d5e8ffa7afb..974e19d98212cb205979e750d90d74521ba242ef 100644 --- a/composer.json +++ b/composer.json @@ -27,14 +27,14 @@ "extra": { }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { "laminas/laminas-coding-standard": "^2.5", - "phpbench/phpbench": "^1.2.9", - "phpunit/phpunit": "^10.0.16", + "phpbench/phpbench": "^1.2.14", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.8" + "vimeo/psalm": "^5.15.0" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index ca794fc65f6b686f81a405ee7f2afcd51975e1cf..a8b5ec4455ae17d3fc431f0a1114df0e0be8275a 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": "bd4486def28039b677cccb423202f417", + "content-hash": "8e628fbb1d53887883bae250fe3b4691", "packages": [], "packages-dev": [ { @@ -319,16 +319,16 @@ }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -378,9 +378,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.0" }, "funding": [ { @@ -396,7 +396,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -1008,16 +1008,16 @@ }, { "name": "netresearch/jsonmapper", - "version": "v4.1.0", + "version": "v4.2.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f" + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", - "reference": "cfa81ea1d35294d64adb9c68aa4cb9e92400e53f", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/f60565f8c0566a31acf06884cdaa591867ecc956", + "reference": "f60565f8c0566a31acf06884cdaa591867ecc956", "shasum": "" }, "require": { @@ -1053,22 +1053,22 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.1.0" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.2.0" }, - "time": "2022-12-08T20:46:14+00:00" + "time": "2023-04-09T17:37:40+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -1109,9 +1109,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "phar-io/manifest", @@ -1328,16 +1328,16 @@ }, { "name": "phpbench/phpbench", - "version": "1.2.9", + "version": "1.2.14", "source": { "type": "git", "url": "https://github.com/phpbench/phpbench.git", - "reference": "7aaea137809603b1c4f46d1790ba0f009be15797" + "reference": "edbd1b7ecf704eb01f7a2bcd1b8aa8c189f9fa4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpbench/phpbench/zipball/7aaea137809603b1c4f46d1790ba0f009be15797", - "reference": "7aaea137809603b1c4f46d1790ba0f009be15797", + "url": "https://api.github.com/repos/phpbench/phpbench/zipball/edbd1b7ecf704eb01f7a2bcd1b8aa8c189f9fa4e", + "reference": "edbd1b7ecf704eb01f7a2bcd1b8aa8c189f9fa4e", "shasum": "" }, "require": { @@ -1406,7 +1406,7 @@ "description": "PHP Benchmarking Framework", "support": { "issues": "https://github.com/phpbench/phpbench/issues", - "source": "https://github.com/phpbench/phpbench/tree/1.2.9" + "source": "https://github.com/phpbench/phpbench/tree/1.2.14" }, "funding": [ { @@ -1414,7 +1414,7 @@ "type": "github" } ], - "time": "2023-03-08T08:56:01+00:00" + "time": "2023-07-09T09:16:08+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -1627,16 +1627,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "10.0.2", + "version": "10.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "20800e84296ea4732f9a125e08ce86b4004ae3e4" + "reference": "1df504e42a88044c27a90136910f0b3fe9e91939" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/20800e84296ea4732f9a125e08ce86b4004ae3e4", - "reference": "20800e84296ea4732f9a125e08ce86b4004ae3e4", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1df504e42a88044c27a90136910f0b3fe9e91939", + "reference": "1df504e42a88044c27a90136910f0b3fe9e91939", "shasum": "" }, "require": { @@ -1655,7 +1655,7 @@ "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -1664,7 +1664,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.0-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -1692,7 +1692,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.0.2" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.5" }, "funding": [ { @@ -1700,20 +1701,20 @@ "type": "github" } ], - "time": "2023-03-06T13:00:19+00:00" + "time": "2023-09-12T14:37:22+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.0.1", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "fd9329ab3368f59fe1fe808a189c51086bd4b6bd" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/fd9329ab3368f59fe1fe808a189c51086bd4b6bd", - "reference": "fd9329ab3368f59fe1fe808a189c51086bd4b6bd", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -1752,7 +1753,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.1" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -1760,7 +1762,7 @@ "type": "github" } ], - "time": "2023-02-10T16:53:14+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", @@ -1827,16 +1829,16 @@ }, { "name": "phpunit/php-text-template", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -1874,7 +1876,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -1882,7 +1885,7 @@ "type": "github" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", @@ -1945,16 +1948,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.0.16", + "version": "10.3.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "07d386a11ac7094032900f07cada1c8975d16607" + "reference": "b8d59476f19115c9774b3b447f78131781c6c32b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/07d386a11ac7094032900f07cada1c8975d16607", - "reference": "07d386a11ac7094032900f07cada1c8975d16607", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b8d59476f19115c9774b3b447f78131781c6c32b", + "reference": "b8d59476f19115c9774b3b447f78131781c6c32b", "shasum": "" }, "require": { @@ -1968,7 +1971,7 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.0", + "phpunit/php-code-coverage": "^10.1.5", "phpunit/php-file-iterator": "^4.0", "phpunit/php-invoker": "^4.0", "phpunit/php-text-template": "^3.0", @@ -1979,7 +1982,7 @@ "sebastian/diff": "^5.0", "sebastian/environment": "^6.0", "sebastian/exporter": "^5.0", - "sebastian/global-state": "^6.0", + "sebastian/global-state": "^6.0.1", "sebastian/object-enumerator": "^5.0", "sebastian/recursion-context": "^5.0", "sebastian/type": "^4.0", @@ -1994,7 +1997,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.0-dev" + "dev-main": "10.3-dev" } }, "autoload": { @@ -2025,7 +2028,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.0.16" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.3.4" }, "funding": [ { @@ -2041,7 +2045,7 @@ "type": "tidelift" } ], - "time": "2023-03-13T09:02:40+00:00" + "time": "2023-09-12T14:42:28+00:00" }, { "name": "psalm/plugin-phpunit", @@ -2424,16 +2428,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -2444,7 +2448,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { @@ -2488,7 +2492,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -2496,20 +2501,20 @@ "type": "github" } ], - "time": "2023-02-03T07:07:16+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/c70b73893e10757af9c6a48929fa6a333b56a97a", + "reference": "c70b73893e10757af9c6a48929fa6a333b56a97a", "shasum": "" }, "require": { @@ -2545,7 +2550,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.1" }, "funding": [ { @@ -2553,20 +2559,20 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-08-31T09:55:53+00:00" }, { "name": "sebastian/diff", - "version": "5.0.0", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "70dd1b20bc198da394ad542e988381b44e64e39f" + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/70dd1b20bc198da394ad542e988381b44e64e39f", - "reference": "70dd1b20bc198da394ad542e988381b44e64e39f", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", + "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", "shasum": "" }, "require": { @@ -2611,7 +2617,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" }, "funding": [ { @@ -2619,20 +2626,20 @@ "type": "github" } ], - "time": "2023-02-03T07:00:31+00:00" + "time": "2023-05-01T07:48:21+00:00" }, { "name": "sebastian/environment", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "b6f3694c6386c7959915a0037652e0c40f6f69cc" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/b6f3694c6386c7959915a0037652e0c40f6f69cc", - "reference": "b6f3694c6386c7959915a0037652e0c40f6f69cc", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { @@ -2674,7 +2681,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -2682,20 +2690,20 @@ "type": "github" } ], - "time": "2023-02-03T07:03:04+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/32ff03d078fed1279c4ec9a407d08c5e9febb480", + "reference": "32ff03d078fed1279c4ec9a407d08c5e9febb480", "shasum": "" }, "require": { @@ -2751,7 +2759,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.1" }, "funding": [ { @@ -2759,20 +2768,20 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2023-09-08T04:46:58+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "aab257c712de87b90194febd52e4d184551c2d44" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", - "reference": "aab257c712de87b90194febd52e4d184551c2d44", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { @@ -2812,7 +2821,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -2820,20 +2830,20 @@ "type": "github" } ], - "time": "2023-02-03T07:07:38+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", "shasum": "" }, "require": { @@ -2869,7 +2879,8 @@ "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/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" }, "funding": [ { @@ -2877,7 +2888,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-08-31T09:25:50+00:00" }, { "name": "sebastian/object-enumerator", @@ -3165,16 +3176,16 @@ }, { "name": "seld/jsonlint", - "version": "1.9.0", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "4211420d25eba80712bff236a98960ef68b866b7" + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/4211420d25eba80712bff236a98960ef68b866b7", - "reference": "4211420d25eba80712bff236a98960ef68b866b7", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/594fd6462aad8ecee0b45ca5045acea4776667f1", + "reference": "594fd6462aad8ecee0b45ca5045acea4776667f1", "shasum": "" }, "require": { @@ -3213,7 +3224,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.9.0" + "source": "https://github.com/Seldaek/jsonlint/tree/1.10.0" }, "funding": [ { @@ -3225,7 +3236,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T13:37:23+00:00" + "time": "2023-05-11T13:16:46+00:00" }, { "name": "slevomat/coding-standard", @@ -3290,16 +3301,16 @@ }, { "name": "spatie/array-to-xml", - "version": "3.1.5", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "13f76acef5362d15c71ae1ac6350cc3df5e25e43" + "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/13f76acef5362d15c71ae1ac6350cc3df5e25e43", - "reference": "13f76acef5362d15c71ae1ac6350cc3df5e25e43", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/f9ab39c808500c347d5a8b6b13310bd5221e39e7", + "reference": "f9ab39c808500c347d5a8b6b13310bd5221e39e7", "shasum": "" }, "require": { @@ -3337,7 +3348,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.1.5" + "source": "https://github.com/spatie/array-to-xml/tree/3.2.0" }, "funding": [ { @@ -3349,7 +3360,7 @@ "type": "github" } ], - "time": "2022-12-24T13:43:51+00:00" + "time": "2023-07-19T18:30:26+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -3410,23 +3421,23 @@ }, { "name": "symfony/console", - "version": "v6.2.7", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45" + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/cbad09eb8925b6ad4fb721c7a179344dc4a19d45", - "reference": "cbad09eb8925b6ad4fb721c7a179344dc4a19d45", + "url": "https://api.github.com/repos/symfony/console/zipball/eca495f2ee845130855ddf1cf18460c38966c8b6", + "reference": "eca495f2ee845130855ddf1cf18460c38966c8b6", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", + "symfony/service-contracts": "^2.5|^3", "symfony/string": "^5.4|^6.0" }, "conflict": { @@ -3448,12 +3459,6 @@ "symfony/process": "^5.4|^6.0", "symfony/var-dumper": "^5.4|^6.0" }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, "type": "library", "autoload": { "psr-4": { @@ -3481,12 +3486,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.2.7" + "source": "https://github.com/symfony/console/tree/v6.3.4" }, "funding": [ { @@ -3502,20 +3507,20 @@ "type": "tidelift" } ], - "time": "2023-02-25T17:00:03+00:00" + "time": "2023-08-16T10:10:12+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", + "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", "shasum": "" }, "require": { @@ -3524,7 +3529,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -3553,7 +3558,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" }, "funding": [ { @@ -3569,20 +3574,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:25:55+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/filesystem", - "version": "v6.2.7", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "82b6c62b959f642d000456f08c6d219d749215b3" + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/82b6c62b959f642d000456f08c6d219d749215b3", - "reference": "82b6c62b959f642d000456f08c6d219d749215b3", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", + "reference": "edd36776956f2a6fcf577edb5b05eb0e3bdc52ae", "shasum": "" }, "require": { @@ -3616,7 +3621,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.2.7" + "source": "https://github.com/symfony/filesystem/tree/v6.3.1" }, "funding": [ { @@ -3632,20 +3637,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2023-06-01T08:30:39+00:00" }, { "name": "symfony/finder", - "version": "v6.2.7", + "version": "v6.3.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", + "url": "https://api.github.com/repos/symfony/finder/zipball/9915db259f67d21eefee768c1abcf1cc61b1fc9e", + "reference": "9915db259f67d21eefee768c1abcf1cc61b1fc9e", "shasum": "" }, "require": { @@ -3680,7 +3685,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.7" + "source": "https://github.com/symfony/finder/tree/v6.3.3" }, "funding": [ { @@ -3696,25 +3701,25 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:57:23+00:00" + "time": "2023-07-31T08:31:44+00:00" }, { "name": "symfony/options-resolver", - "version": "v6.2.7", + "version": "v6.3.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629" + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/aa0e85b53bbb2b4951960efd61d295907eacd629", - "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/a10f19f5198d589d5c33333cffe98dc9820332dd", + "reference": "a10f19f5198d589d5c33333cffe98dc9820332dd", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3" + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -3747,7 +3752,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.2.7" + "source": "https://github.com/symfony/options-resolver/tree/v6.3.0" }, "funding": [ { @@ -3763,20 +3768,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:44:56+00:00" + "time": "2023-05-12T14:21:09+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -3791,7 +3796,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3829,7 +3834,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -3845,20 +3850,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -3870,7 +3875,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3910,7 +3915,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.28.0" }, "funding": [ { @@ -3926,20 +3931,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -3951,7 +3956,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3994,7 +3999,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.28.0" }, "funding": [ { @@ -4010,20 +4015,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -4038,7 +4043,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4077,7 +4082,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -4093,20 +4098,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/process", - "version": "v6.2.7", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902" + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/680e8a2ea6b3f87aecc07a6a65a203ae573d1902", - "reference": "680e8a2ea6b3f87aecc07a6a65a203ae573d1902", + "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", "shasum": "" }, "require": { @@ -4138,7 +4143,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.2.7" + "source": "https://github.com/symfony/process/tree/v6.3.4" }, "funding": [ { @@ -4154,20 +4159,20 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2023-08-07T10:39:22+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.2.1", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", + "reference": "40da9cc13ec349d9e4966ce18b5fbcd724ab10a4", "shasum": "" }, "require": { @@ -4177,13 +4182,10 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.3-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -4223,7 +4225,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.3.0" }, "funding": [ { @@ -4239,20 +4241,20 @@ "type": "tidelift" } ], - "time": "2023-03-01T10:32:47+00:00" + "time": "2023-05-23T14:45:45+00:00" }, { "name": "symfony/string", - "version": "v6.2.7", + "version": "v6.3.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "67b8c1eec78296b85dc1c7d9743830160218993d" + "reference": "53d1a83225002635bca3482fcbf963001313fb68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/67b8c1eec78296b85dc1c7d9743830160218993d", - "reference": "67b8c1eec78296b85dc1c7d9743830160218993d", + "url": "https://api.github.com/repos/symfony/string/zipball/53d1a83225002635bca3482fcbf963001313fb68", + "reference": "53d1a83225002635bca3482fcbf963001313fb68", "shasum": "" }, "require": { @@ -4263,13 +4265,13 @@ "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": "<2.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { "symfony/error-handler": "^5.4|^6.0", "symfony/http-client": "^5.4|^6.0", "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", + "symfony/translation-contracts": "^2.5|^3.0", "symfony/var-exporter": "^5.4|^6.0" }, "type": "library", @@ -4309,7 +4311,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.2.7" + "source": "https://github.com/symfony/string/tree/v6.3.2" }, "funding": [ { @@ -4325,7 +4327,7 @@ "type": "tidelift" } ], - "time": "2023-02-24T10:42:00+00:00" + "time": "2023-07-05T08:41:27+00:00" }, { "name": "theseer/tokenizer", @@ -4379,16 +4381,16 @@ }, { "name": "vimeo/psalm", - "version": "5.8.0", + "version": "5.15.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "9cf4f60a333f779ad3bc704a555920e81d4fdcda" + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/9cf4f60a333f779ad3bc704a555920e81d4fdcda", - "reference": "9cf4f60a333f779ad3bc704a555920e81d4fdcda", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352", + "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352", "shasum": "" }, "require": { @@ -4409,17 +4411,21 @@ "felixfbecker/language-server-protocol": "^1.5.2", "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1", "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0", - "nikic/php-parser": "^4.14", - "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.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", "spatie/array-to-xml": "^2.17.0 || ^3.0", "symfony/console": "^4.1.6 || ^5.0 || ^6.0", "symfony/filesystem": "^5.4 || ^6.0" }, + "conflict": { + "nikic/php-parser": "4.17.0" + }, "provide": { "psalm/psalm": "self.version" }, "require-dev": { + "amphp/phpunit-util": "^2.0", "bamarni/composer-bin-plugin": "^1.4", "brianium/paratest": "^6.9", "ext-curl": "*", @@ -4478,9 +4484,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/5.8.0" + "source": "https://github.com/vimeo/psalm/tree/5.15.0" }, - "time": "2023-03-09T04:14:35+00:00" + "time": "2023-08-20T23:07:30+00:00" }, { "name": "webimpress/coding-standard", @@ -4651,11 +4657,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "platform-dev": [], "platform-overrides": { "php": "8.1.99" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" } diff --git a/docs/book/console-helper.md b/docs/book/v3/console-helper.md similarity index 100% rename from docs/book/console-helper.md rename to docs/book/v3/console-helper.md diff --git a/docs/book/migration.md b/docs/book/v3/migration.md similarity index 100% rename from docs/book/migration.md rename to docs/book/v3/migration.md diff --git a/mkdocs.yml b/mkdocs.yml index b19b2f3eea607f084c83e57fb1dafe668708c533..fa4ffa0817c0961e02cb5c6bc33f82d304c821e0 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -2,11 +2,19 @@ docs_dir: docs/book site_dir: docs/html nav: - Home: index.md - - Reference: - - "Console Helper": console-helper.md - - Migration: migration.md + - v3: + - "Console Helper": v3/console-helper.md + - Migration: v3/migration.md site_name: laminas-stdlib site_description: Laminas\Stdlib repo_url: 'https://github.com/laminas/laminas-stdlib' extra: project: Components + current_version: v3 + versions: + - v3 +plugins: + - redirects: + redirect_maps: + migration.md: v3/migration.md + console-helper.md: v3/console-helper.md diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 120607b80334b420680863139be00478fb25b5d2..58595928970eb6f9a144e4efa0c7bc5e0ace1f2e 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -12,15 +12,14 @@ displayDetailsOnIncompleteTests="true" displayDetailsOnSkippedTests="true" > - <coverage> - <include> - <directory suffix=".php">./src</directory> - </include> - </coverage> - - <testsuites> - <testsuite name="laminas-stdlib Test Suite"> - <directory>./test</directory> - </testsuite> - </testsuites> + <testsuites> + <testsuite name="laminas-stdlib Test Suite"> + <directory>./test</directory> + </testsuite> + </testsuites> + <source> + <include> + <directory suffix=".php">./src</directory> + </include> + </source> </phpunit> diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 0d87178d7aab399028284d48e6508e09e75924a5..1fb24768f0e12edee59861baa751911155be8fb0 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,25 +1,21 @@ <?xml version="1.0" encoding="UTF-8"?> -<files psalm-version="5.8.0@9cf4f60a333f779ad3bc704a555920e81d4fdcda"> +<files psalm-version="5.15.0@5c774aca4746caf3d239d9c8cadb9f882ca29352"> <file src="src/AbstractOptions.php"> <DocblockTypeContradiction> <code><![CDATA[! is_array($options) && ! $options instanceof Traversable]]></code> </DocblockTypeContradiction> <MixedArgument> - <code>$key</code> - <code>$key</code> - <code>$letter</code> + <code>$value</code> </MixedArgument> <MixedAssignment> - <code>$array[$normalizedKey]</code> - <code>$key</code> - <code>$key</code> - <code>$letter</code> - <code>$value</code> <code>$value</code> </MixedAssignment> - <RawObjectIteration> - <code>$this</code> - </RawObjectIteration> + <MixedInferredReturnType> + <code>TValue</code> + </MixedInferredReturnType> + <MixedReturnStatement> + <code><![CDATA[$this->{$getter}()]]></code> + </MixedReturnStatement> </file> <file src="src/ArrayObject.php"> <ArgumentTypeCoercion> @@ -67,9 +63,9 @@ <code>is_callable($function)</code> <code>is_callable($function)</code> </RedundantConditionGivenDocblockType> - <UndefinedAttributeClass> - <code>AllowDynamicProperties</code> - </UndefinedAttributeClass> + <UnsupportedPropertyReferenceUsage> + <code><![CDATA[$ret = &$this->storage[$key]]]></code> + </UnsupportedPropertyReferenceUsage> <UnsupportedReferenceUsage> <code><![CDATA[$ret = &$this->offsetGet($key)]]></code> </UnsupportedReferenceUsage> @@ -107,6 +103,7 @@ <file src="src/FastPriorityQueue.php"> <DocblockTypeContradiction> <code>is_int($priority)</code> + <code><![CDATA[throw new Exception\InvalidArgumentException("The extract flag specified is not valid")]]></code> </DocblockTypeContradiction> <ImplementedReturnTypeMismatch> <code>TValue|int|array{data: TValue|false, priority: int|null}|false</code> @@ -147,6 +144,9 @@ </PossiblyNullArrayOffset> </file> <file src="src/Glob.php"> + <ArgumentTypeCoercion> + <code>$globFlags</code> + </ArgumentTypeCoercion> <PossiblyNullArrayOffset> <code>$pattern</code> </PossiblyNullArrayOffset> @@ -303,15 +303,9 @@ <code><![CDATA['Bacon']]></code> </InvalidArgument> <MissingClosureParamType> - <code>$a</code> <code>$a</code> <code>$b</code> - <code>$b</code> </MissingClosureParamType> - <MixedArgument> - <code>$a</code> - <code>$b</code> - </MixedArgument> <MixedAssignment> <code>$unserialized</code> </MixedAssignment> @@ -336,6 +330,10 @@ </UndefinedInterfaceMethod> </file> <file src="test/ArrayUtilsTest.php"> + <DeprecatedConstant> + <code>ArrayUtils::ARRAY_FILTER_USE_BOTH</code> + <code>ArrayUtils::ARRAY_FILTER_USE_KEY</code> + </DeprecatedConstant> <DeprecatedMethod> <code>ArrayUtils::filter($data, $callback, $flag)</code> <code><![CDATA[ArrayUtils::filter([], "INVALID")]]></code> @@ -343,9 +341,6 @@ <DuplicateArrayKey> <code><![CDATA['-10000' => null]]></code> </DuplicateArrayKey> - <MissingClosureParamType> - <code>$key</code> - </MissingClosureParamType> <MixedArgument> <code>$test</code> </MixedArgument> @@ -373,37 +368,15 @@ </UndefinedInterfaceMethod> </file> <file src="test/FastPriorityQueueTest.php"> - <InvalidArgument> - <code><![CDATA['foo']]></code> - </InvalidArgument> - <MissingClosureParamType> - <code>$e</code> - <code>$e</code> - </MissingClosureParamType> - <MixedArgument> - <code>$unserialized</code> - <code>$unserialized</code> - </MixedArgument> <MixedAssignment> <code>$datum</code> - <code>$expected[]</code> - <code>$item</code> <code>$item</code> - <code>$item</code> - <code>$item</code> - <code>$item</code> - <code>$test[]</code> - <code>$test[]</code> <code>$test[]</code> <code>$test[]</code> <code>$test[]</code> <code>$test[]</code> <code>$test[]</code> <code>$test[]</code> - <code>$test[]</code> - <code>$unserialized</code> - <code>$value</code> - <code>$value</code> <code>$value</code> <code>$value</code> <code>$value</code> @@ -412,33 +385,13 @@ </file> <file src="test/GlobTest.php"> <MixedArgument> - <code>$expectedFileName</code> <code>$result[$i]</code> </MixedArgument> - <MixedAssignment> - <code>$expectedFileName</code> - </MixedAssignment> <RedundantConditionGivenDocblockType> <code>assertIsArray</code> </RedundantConditionGivenDocblockType> </file> - <file src="test/OptionsTest.php"> - <InternalMethod> - <code>addToAssertionCount</code> - </InternalMethod> - <InvalidArgument> - <code><![CDATA['asd']]></code> - <code><![CDATA[new TestOptions(['test_field' => 1])]]></code> - </InvalidArgument> - </file> <file src="test/ParametersTest.php"> - <ArgumentTypeCoercion> - <code><![CDATA['ArrayAccess']]></code> - <code><![CDATA['ArrayObject']]></code> - <code><![CDATA['Countable']]></code> - <code><![CDATA['Serializable']]></code> - <code><![CDATA['Traversable']]></code> - </ArgumentTypeCoercion> <UndefinedPropertyFetch> <code><![CDATA[$parameters->bar]]></code> <code><![CDATA[$parameters->baz]]></code> @@ -448,66 +401,4 @@ <code><![CDATA[$parameters->foof]]></code> </UndefinedPropertyFetch> </file> - <file src="test/PriorityListTest.php"> - <NullArgument> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - <code>null</code> - </NullArgument> - <TypeDoesNotContainType> - <code>assertEmpty</code> - </TypeDoesNotContainType> - </file> - <file src="test/PriorityQueueTest.php"> - <MixedArgument> - <code>$unserialized</code> - <code>$unserialized</code> - <code>$unserialized</code> - </MixedArgument> - <MixedAssignment> - <code>$item</code> - <code>$test[]</code> - <code>$unserialized</code> - </MixedAssignment> - </file> - <file src="test/SplQueueTest.php"> - <MixedArgument> - <code>$unserialized</code> - <code>$unserialized</code> - </MixedArgument> - <MixedAssignment> - <code>$unserialized</code> - </MixedAssignment> - </file> - <file src="test/SplStackTest.php"> - <MixedArgument> - <code>$unserialized</code> - <code>$unserialized</code> - </MixedArgument> - <MixedAssignment> - <code>$unserialized</code> - </MixedAssignment> - </file> - <file src="test/StringUtilsTest.php"> - <MixedArgument> - <code>$str</code> - </MixedArgument> - </file> - <file src="test/StringWrapper/IconvTest.php"> - <TooManyArguments> - <code><![CDATA[new Iconv('utf-8')]]></code> - </TooManyArguments> - </file> - <file src="test/StringWrapper/IntlTest.php"> - <TooManyArguments> - <code><![CDATA[new Intl('utf-8')]]></code> - </TooManyArguments> - </file> - <file src="test/StringWrapper/MbStringTest.php"> - <TooManyArguments> - <code><![CDATA[new MbString('utf-8')]]></code> - </TooManyArguments> - </file> </files> diff --git a/src/AbstractOptions.php b/src/AbstractOptions.php index d02221ab163646ee03c0c5bc3a39b6bda5b0bc27..5db2ea95bd1d716d7e11bf2bf3b26bdb5ce5c4ad 100644 --- a/src/AbstractOptions.php +++ b/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<string, TValue> + */ 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<string, TValue>|AbstractOptions<TValue>|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<string, TValue>|AbstractOptions<TValue> $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<string, TValue> */ public function toArray() { $array = []; - /** @param string[] $letters */ $transform = static function (array $letters): string { + /** @var list<string> $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/src/ArrayUtils.php b/src/ArrayUtils.php index 75ddd529f041f84f3b1c0328aa99b344d9cef1d7..935d98894fa01f0e3f7bb8680b027f736f3abbcc 100644 --- a/src/ArrayUtils.php +++ b/src/ArrayUtils.php @@ -35,11 +35,15 @@ 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; diff --git a/src/ParameterObjectInterface.php b/src/ParameterObjectInterface.php index b091c107e2db6ede3842583c4fa5490f0724b8fd..39e5ffce36ec67b79f22a33dd4165353042f90e9 100644 --- a/src/ParameterObjectInterface.php +++ b/src/ParameterObjectInterface.php @@ -4,28 +4,33 @@ declare(strict_types=1); namespace Laminas\Stdlib; +/** + * @template TKey of string + * @template TValue + */ interface ParameterObjectInterface { /** - * @param string $key + * @param TKey $key + * @param TValue|null $value * @return void */ 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/test/ArrayObjectTest.php b/test/ArrayObjectTest.php index b8fd19c18391683cb125fc1fc288aa4cb7c7b64f..880288cdaf99cf283e96378a8aa84d8a252587e7 100644 --- a/test/ArrayObjectTest.php +++ b/test/ArrayObjectTest.php @@ -369,7 +369,7 @@ class ArrayObjectTest extends TestCase public function testUksort(): void { - $function = static function ($a, $b): int { + $function = static function (string $a, string $b): int { $a = preg_replace('@^(a|an|the) @', '', $a); $b = preg_replace('@^(a|an|the) @', '', $b); self::assertNotNull($a); diff --git a/test/ArrayUtilsTest.php b/test/ArrayUtilsTest.php index dcda16f1206cbd79125881ed878df4a961d510f7..5b3464d4cd724bfec47f75d8cc8e724104f253df 100644 --- a/test/ArrayUtilsTest.php +++ b/test/ArrayUtilsTest.php @@ -498,7 +498,7 @@ class ArrayUtilsTest extends TestCase /** * @psalm-return list<array{ * 0: array<string, string>, - * 1: callable(string):bool, + * 1: callable(string, int|string=):bool, * 2: null|int, * 3: array<string, string> * }> @@ -519,7 +519,7 @@ class ArrayUtilsTest extends TestCase ], [ ['foo' => 'bar', 'fiz' => 'buz'], - static function (string $value, $key): bool { + static function (string $value, int|string $key): bool { if ($value === 'buz') { return false; } diff --git a/test/FastPriorityQueueTest.php b/test/FastPriorityQueueTest.php index af5aa00af6dd77da249ce48a7b4b7ad206b94d3c..5f918de01aa0bf902cd1af3b707bdbe1357d478a 100644 --- a/test/FastPriorityQueueTest.php +++ b/test/FastPriorityQueueTest.php @@ -21,14 +21,15 @@ use function var_export; #[Group('Laminas_Stdlib')] class FastPriorityQueueTest extends TestCase { - /** @var FastPriorityQueue */ - protected $queue; + /** @var FastPriorityQueue<string> */ + private FastPriorityQueue $queue; /** @var string[] */ - protected $expected; + private array $expected; protected function setUp(): void { + /** @psalm-var FastPriorityQueue<string> $this->queue */ $this->queue = new FastPriorityQueue(); $this->insertDataQueue($this->queue); $this->expected = [ @@ -107,7 +108,8 @@ class FastPriorityQueueTest extends TestCase { $s = serialize($this->queue); $unserialized = unserialize($s); - $count = count($this->queue); + self::assertInstanceOf(FastPriorityQueue::class, $unserialized); + $count = count($this->queue); self::assertSame( $count, count($unserialized), @@ -168,6 +170,7 @@ class FastPriorityQueueTest extends TestCase { $this->expectException(InvalidArgumentException::class); $this->expectExceptionMessage('The extract flag specified is not valid'); + /** @psalm-suppress InvalidArgument */ $this->queue->setExtractFlags('foo'); } @@ -191,7 +194,7 @@ class FastPriorityQueueTest extends TestCase public function testHasPriority(): void { - foreach ($this->getDataPriorityQueue() as $value => $priority) { + foreach ($this->getDataPriorityQueue() as $priority) { self::assertTrue($this->queue->hasPriority($priority)); } self::assertFalse($this->queue->hasPriority(10000)); @@ -211,7 +214,7 @@ class FastPriorityQueueTest extends TestCase self::assertEquals($expected, $test); } - public function testRemoveOnlyTheFirstOccurenceFromQueue(): void + public function testRemoveOnlyTheFirstOccurrenceFromQueue(): void { $data = $this->getDataPriorityQueue(); $this->queue->insert('test2', $data['test2']); @@ -246,7 +249,7 @@ class FastPriorityQueueTest extends TestCase public function testRemoveShouldFindItemEvenIfMultipleItemsAreInQueue(): void { - $prototype = static function ($e): void { + $prototype = static function (): void { }; $queue = new FastPriorityQueue(); @@ -268,7 +271,7 @@ class FastPriorityQueueTest extends TestCase public function testIterativelyRemovingItemsShouldRemoveAllItems(): void { - $prototype = static function ($e): void { + $prototype = static function (): void { }; $queue = new FastPriorityQueue(); diff --git a/test/GlobTest.php b/test/GlobTest.php index b5932b0b6d6b85905af31aa33d3729097e9ef0a3..32895b8b0cdfdc2bfadfce5190d4d4543e185d79 100644 --- a/test/GlobTest.php +++ b/test/GlobTest.php @@ -60,6 +60,7 @@ class GlobTest extends TestCase Glob::glob($path); } + /** @param list<non-empty-string> $expectedSequence */ #[DataProvider('patternsProvider')] public function testPatterns(string $pattern, array $expectedSequence): void { @@ -75,7 +76,7 @@ class GlobTest extends TestCase /** * @psalm-return array<array-key, array{ * 0: string, - * 1: string[] + * 1: list<non-empty-string> * }> */ public static function patternsProvider(): array diff --git a/test/OptionsTest.php b/test/OptionsTest.php index 10f520df293047bf54af4bf33d8f6b979d192d67..0bcce63ba19e0ac3340f89f696d4d1bd24aa83aa 100644 --- a/test/OptionsTest.php +++ b/test/OptionsTest.php @@ -63,9 +63,9 @@ class OptionsTest extends TestCase { $options = new TestOptions(['test_field' => 1]); - self::assertEquals(true, isset($options->test_field)); + self::assertTrue(isset($options->test_field)); unset($options->testField); - self::assertEquals(false, isset($options->test_field)); + self::assertFalse(isset($options->test_field)); } public function testUnsetThrowsInvalidArgumentException(): void @@ -99,6 +99,7 @@ class OptionsTest extends TestCase { $this->expectException(InvalidArgumentException::class); $options = new TestOptions(); + /** @psalm-suppress InvalidArgument */ $options->setFromArray('asd'); } @@ -179,9 +180,7 @@ class OptionsTest extends TestCase { $options = new TestOptionsWithoutGetter(); - isset($options->foo); - - $this->addToAssertionCount(1); + self::assertFalse(isset($options->foo)); } #[Group('7287')] diff --git a/test/ParametersTest.php b/test/ParametersTest.php index ebd3f6bda19c2dc02c5b782786a2cc1c678f57a2..91923f2acec5b7818af22014f7f535f2e5212ee5 100644 --- a/test/ParametersTest.php +++ b/test/ParametersTest.php @@ -4,9 +4,14 @@ declare(strict_types=1); namespace LaminasTest\Stdlib; +use ArrayAccess; +use ArrayObject; +use Countable; use Laminas\Stdlib\Parameters; use Laminas\Stdlib\ParametersInterface; use PHPUnit\Framework\TestCase; +use Serializable; +use Traversable; class ParametersTest extends TestCase { @@ -14,11 +19,11 @@ class ParametersTest extends TestCase { $parameters = new Parameters(); self::assertInstanceOf(ParametersInterface::class, $parameters); - self::assertInstanceOf('ArrayObject', $parameters); - self::assertInstanceOf('ArrayAccess', $parameters); - self::assertInstanceOf('Countable', $parameters); - self::assertInstanceOf('Serializable', $parameters); - self::assertInstanceOf('Traversable', $parameters); + self::assertInstanceOf(ArrayObject::class, $parameters); + self::assertInstanceOf(ArrayAccess::class, $parameters); + self::assertInstanceOf(Countable::class, $parameters); + self::assertInstanceOf(Serializable::class, $parameters); + self::assertInstanceOf(Traversable::class, $parameters); } public function testParametersPersistNameAndValues(): void @@ -45,7 +50,7 @@ class ParametersTest extends TestCase self::assertEquals('barf', $parameters->foof); } - public function testParametersOffsetgetReturnsNullIfNonexistentKeyIsProvided(): void + public function testParametersOffsetGetReturnsNullIfNonexistentKeyIsProvided(): void { $parameters = new Parameters(); self::assertNull($parameters->foo); diff --git a/test/PriorityListTest.php b/test/PriorityListTest.php index 4484c36919f97bd278d04749139cddfd125e7bbc..1a15a9c9da7b90f378cf7455c493d7c680eba040 100644 --- a/test/PriorityListTest.php +++ b/test/PriorityListTest.php @@ -10,12 +10,11 @@ use PHPUnit\Framework\TestCase; use stdClass; use function array_keys; -use function count; use function iterator_to_array; class PriorityListTest extends TestCase { - /** @var PriorityList */ + /** @var PriorityList<string, mixed> */ protected $list; protected function setUp(): void @@ -27,7 +26,7 @@ class PriorityListTest extends TestCase { $this->list->insert('foo', new stdClass(), 0); - self::assertEquals(1, count($this->list)); + self::assertCount(1, $this->list); $values = $this->list->toArray(); self::assertArrayHasKey('foo', $values); @@ -38,17 +37,17 @@ class PriorityListTest extends TestCase $this->list->insert('foo', new stdClass()); $this->list->insert('bar', new stdClass()); - self::assertEquals(2, count($this->list)); + self::assertCount(2, $this->list); $this->list->insert('foo', new stdClass()); $this->list->insert('foo', new stdClass()); $this->list->insert('bar', new stdClass()); - self::assertEquals(2, count($this->list)); + self::assertCount(2, $this->list); $this->list->remove('foo'); - self::assertEquals(1, count($this->list)); + self::assertCount(1, $this->list); } public function testRemove(): void @@ -56,18 +55,18 @@ class PriorityListTest extends TestCase $this->list->insert('foo', new stdClass(), 0); $this->list->insert('bar', new stdClass(), 0); - self::assertEquals(2, count($this->list)); + self::assertCount(2, $this->list); $this->list->remove('foo'); - self::assertEquals(1, count($this->list)); + self::assertCount(1, $this->list); } public function testRemovingNonExistentRouteDoesNotYieldError(): void { $this->list->remove('foo'); - self::assertEmpty($this->list); + self::assertEmpty($this->list->toArray()); } public function testClear(): void @@ -75,11 +74,11 @@ class PriorityListTest extends TestCase $this->list->insert('foo', new stdClass(), 0); $this->list->insert('bar', new stdClass(), 0); - self::assertEquals(2, count($this->list)); + self::assertCount(2, $this->list); $this->list->clear(); - self::assertEquals(0, count($this->list)); + self::assertCount(0, $this->list); self::assertSame(false, $this->list->current()); } @@ -156,7 +155,7 @@ class PriorityListTest extends TestCase public function testPriorityWithNegativesAndNull(): void { - $this->list->insert('foo', new stdClass(), null); + $this->list->insert('foo', new stdClass()); $this->list->insert('bar', new stdClass(), 1); $this->list->insert('baz', new stdClass(), -1); @@ -167,7 +166,7 @@ class PriorityListTest extends TestCase public function testCurrent(): void { - $this->list->insert('foo', 'foo_value', null); + $this->list->insert('foo', 'foo_value'); $this->list->insert('bar', 'bar_value', 1); $this->list->insert('baz', 'baz_value', -1); @@ -187,7 +186,7 @@ class PriorityListTest extends TestCase public function testToArray(): void { - $this->list->insert('foo', 'foo_value', null); + $this->list->insert('foo', 'foo_value'); $this->list->insert('bar', 'bar_value', 1); $this->list->insert('baz', 'baz_value', -1); @@ -210,12 +209,13 @@ class PriorityListTest extends TestCase ); } + /** @psalm-suppress MixedAssignment */ #[Group('6768')] #[Group('6773')] public function testBooleanValuesAreValid(): void { - $this->list->insert('null', null, null); - $this->list->insert('false', false, null); + $this->list->insert('null', null); + $this->list->insert('false', false); $this->list->insert('string', 'test', 1); $this->list->insert('true', true, -1); diff --git a/test/PriorityQueueTest.php b/test/PriorityQueueTest.php index 2ea04bcf57583f1d03a88bb17388be7013f9ec0d..bae343f95386561a44998d12bc2ea68c929293bb 100644 --- a/test/PriorityQueueTest.php +++ b/test/PriorityQueueTest.php @@ -19,11 +19,12 @@ use function var_export; #[Group('Laminas_Stdlib')] class PriorityQueueTest extends TestCase { - /** @var PriorityQueue */ - protected $queue; + /** @var PriorityQueue<string, int> */ + private PriorityQueue $queue; protected function setUp(): void { + /** @psalm-var PriorityQueue<string, int> $this->queue */ $this->queue = new PriorityQueue(); $this->queue->insert('foo', 3); $this->queue->insert('bar', 4); @@ -35,7 +36,8 @@ class PriorityQueueTest extends TestCase { $s = serialize($this->queue); $unserialized = unserialize($s); - $count = count($this->queue); + self::assertInstanceOf(PriorityQueue::class, $unserialized); + $count = count($this->queue); self::assertSame( $count, count($unserialized), diff --git a/test/SplQueueTest.php b/test/SplQueueTest.php index 02cc1970e5aa736ad1e7ecbea55c4c6cc0a2b1c0..1e1d0f9cc591172fe4973b5683f001fa904bb2b7 100644 --- a/test/SplQueueTest.php +++ b/test/SplQueueTest.php @@ -31,8 +31,8 @@ class SplQueueTest extends TestCase { $s = serialize($this->queue); $unserialized = unserialize($s); - $count = count($this->queue); - self::assertSame($count, count($unserialized)); + self::assertInstanceOf(SplQueue::class, $unserialized); + self::assertSame(count($this->queue), count($unserialized)); $expected = iterator_to_array($this->queue); $test = iterator_to_array($unserialized); diff --git a/test/SplStackTest.php b/test/SplStackTest.php index c44f392342e8db66cde5d845b1f859b86b32ea45..9ac0b1f88e3a244b2caa57dbeb6ded32166a88d9 100644 --- a/test/SplStackTest.php +++ b/test/SplStackTest.php @@ -33,8 +33,8 @@ class SplStackTest extends TestCase { $s = serialize($this->stack); $unserialized = unserialize($s); - $count = count($this->stack); - self::assertSame($count, count($unserialized)); + self::assertInstanceOf(SplStack::class, $unserialized); + self::assertSame(count($this->stack), count($unserialized)); $expected = iterator_to_array($this->stack); $test = iterator_to_array($unserialized); diff --git a/test/StringUtilsTest.php b/test/StringUtilsTest.php index 3ccad892d7c418097417fc0937825a957d034ce5..f832a73cd54bcbdb33b2b671875d16bd28bbe891 100644 --- a/test/StringUtilsTest.php +++ b/test/StringUtilsTest.php @@ -154,12 +154,10 @@ class StringUtilsTest extends TestCase ]; } - /** - * @param bool $valid - */ #[DataProvider('getUtf8StringValidity')] - public function testIsValidUtf8(mixed $str, $valid): void + public function testIsValidUtf8(mixed $str, bool $valid): void { + /** @psalm-suppress MixedArgument */ self::assertSame($valid, StringUtils::isValidUtf8($str)); } diff --git a/test/StringWrapper/CommonStringWrapperTestCase.php b/test/StringWrapper/CommonStringWrapperTestCase.php index 9e4104b214f8b9796a35aac048c7b841e3b6b53b..acb171cd63e4f2d762241021a544126e93d0172e 100644 --- a/test/StringWrapper/CommonStringWrapperTestCase.php +++ b/test/StringWrapper/CommonStringWrapperTestCase.php @@ -17,12 +17,10 @@ use const STR_PAD_RIGHT; // phpcs:ignore WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix abstract class CommonStringWrapperTestCase extends TestCase { - /** - * @param null|string $encoding - * @param null|string $convertEncoding - * @return false|StringWrapperInterface - */ - abstract protected function getWrapper($encoding = null, $convertEncoding = null); + abstract protected function getWrapper( + string|null $encoding = null, + string|null $convertEncoding = null, + ): StringWrapperInterface|false; /** * @psalm-return array<array-key, array{ diff --git a/test/StringWrapper/IconvTest.php b/test/StringWrapper/IconvTest.php index 494f64dafe55bc10b51f98f4eed5cd8f5c01394f..1081eaa510e0674ff5f786b3febd22db18237c2f 100644 --- a/test/StringWrapper/IconvTest.php +++ b/test/StringWrapper/IconvTest.php @@ -6,7 +6,6 @@ namespace LaminasTest\Stdlib\StringWrapper; use Laminas\Stdlib\Exception; use Laminas\Stdlib\StringWrapper\Iconv; -use Laminas\Stdlib\StringWrapper\StringWrapperInterface; use function array_shift; use function extension_loaded; @@ -21,7 +20,7 @@ class IconvTest extends CommonStringWrapperTestCase { if (! extension_loaded('iconv')) { try { - new Iconv('utf-8'); + new Iconv(); $this->fail('Missing expected Laminas\Stdlib\Exception\ExtensionNotLoadedException'); } catch (Exception\ExtensionNotLoadedException) { $this->markTestSkipped('Missing ext/iconv'); @@ -45,13 +44,10 @@ class IconvTest extends CommonStringWrapperTestCase parent::setUp(); } - /** - * @param null|string $encoding - * @param null|string $convertEncoding - * @return false|StringWrapperInterface - */ - protected function getWrapper($encoding = null, $convertEncoding = null) - { + protected function getWrapper( + string|null $encoding = null, + string|null $convertEncoding = null, + ): Iconv|false { if ($encoding === null) { $supportedEncodings = Iconv::getSupportedEncodings(); $encoding = array_shift($supportedEncodings); diff --git a/test/StringWrapper/IntlTest.php b/test/StringWrapper/IntlTest.php index f6dbc2910b12ec47324c2a4da44d80382bb4db2e..94fef23d4e527f628f1f2763ffe20a62e38e9d1d 100644 --- a/test/StringWrapper/IntlTest.php +++ b/test/StringWrapper/IntlTest.php @@ -16,7 +16,7 @@ class IntlTest extends CommonStringWrapperTestCase { if (! extension_loaded('intl')) { try { - new Intl('utf-8'); + new Intl(); $this->fail('Missing expected Laminas\Stdlib\Exception\ExtensionNotLoadedException'); } catch (Exception\ExtensionNotLoadedException) { $this->markTestSkipped('Missing ext/intl'); @@ -26,13 +26,10 @@ class IntlTest extends CommonStringWrapperTestCase parent::setUp(); } - /** - * @param null|string $encoding - * @param null|string $convertEncoding - * @return Intl|false - */ - protected function getWrapper($encoding = null, $convertEncoding = null) - { + protected function getWrapper( + string|null $encoding = null, + string|null $convertEncoding = null, + ): Intl|false { if ($encoding === null) { $supportedEncodings = Intl::getSupportedEncodings(); $encoding = array_shift($supportedEncodings); diff --git a/test/StringWrapper/MbStringTest.php b/test/StringWrapper/MbStringTest.php index 6d0ee2f0cb28d4ea807c5fc4253606a7a61e813a..e0535168a100571ec7d4b291db17ec1497b28ee5 100644 --- a/test/StringWrapper/MbStringTest.php +++ b/test/StringWrapper/MbStringTest.php @@ -16,7 +16,7 @@ class MbStringTest extends CommonStringWrapperTestCase { if (! extension_loaded('mbstring')) { try { - new MbString('utf-8'); + new MbString(); $this->fail('Missing expected Laminas\Stdlib\Exception\ExtensionNotLoadedException'); } catch (Exception\ExtensionNotLoadedException) { $this->markTestSkipped('Missing ext/mbstring'); @@ -26,13 +26,10 @@ class MbStringTest extends CommonStringWrapperTestCase parent::setUp(); } - /** - * @param null|string $encoding - * @param null|string $convertEncoding - * @return MbString|false - */ - protected function getWrapper($encoding = null, $convertEncoding = null) - { + protected function getWrapper( + string|null $encoding = null, + string|null $convertEncoding = null, + ): MbString|false { if ($encoding === null) { $supportedEncodings = MbString::getSupportedEncodings(); $encoding = array_shift($supportedEncodings); diff --git a/test/StringWrapper/NativeTest.php b/test/StringWrapper/NativeTest.php index b554a1c8c6ff8483e99f962b6a46c0fce195b221..1c718f67ff70d7cc5096e66a1c4d65e2bc521c27 100644 --- a/test/StringWrapper/NativeTest.php +++ b/test/StringWrapper/NativeTest.php @@ -10,13 +10,10 @@ use function array_shift; class NativeTest extends CommonStringWrapperTestCase { - /** - * @param null|string $encoding - * @param null|string $convertEncoding - * @return Native|false - */ - protected function getWrapper($encoding = null, $convertEncoding = null) - { + protected function getWrapper( + string|null $encoding = null, + string|null $convertEncoding = null, + ): Native|false { if ($encoding === null) { $supportedEncodings = Native::getSupportedEncodings(); $encoding = array_shift($supportedEncodings); diff --git a/test/TestAsset/TestOptions.php b/test/TestAsset/TestOptions.php index 660a64d76ad0140b462d570e4c7cafe4068bab65..7ffa0284f310d7ba056948aeb1e07e2623bf08d8 100644 --- a/test/TestAsset/TestOptions.php +++ b/test/TestAsset/TestOptions.php @@ -8,28 +8,25 @@ use Laminas\Stdlib\AbstractOptions; /** * Dummy TestOptions used to test Stdlib\Options + * + * @extends AbstractOptions<mixed> */ class TestOptions extends AbstractOptions { - /** @var mixed */ - protected $testField; + protected mixed $testField; - /** @var mixed */ - private $parentPrivate; + private mixed $parentPrivate; - /** @var mixed */ - protected $parentProtected; + protected mixed $parentProtected; - /** @var mixed */ - protected $parentPublic; + protected mixed $parentPublic; public function setTestField(mixed $value): void { $this->testField = $value; } - /** @return mixed */ - public function getTestField() + public function getTestField(): mixed { return $this->testField; } @@ -44,10 +41,8 @@ class TestOptions extends AbstractOptions /** * Needed to test accessibility of getters / setters within deriving classes - * - * @return mixed */ - private function getParentPrivate() + private function getParentPrivate(): mixed { return $this->parentPrivate; } @@ -62,10 +57,8 @@ class TestOptions extends AbstractOptions /** * Needed to test accessibility of getters / setters within deriving classes - * - * @return mixed */ - protected function getParentProtected() + protected function getParentProtected(): mixed { return $this->parentProtected; } @@ -80,10 +73,8 @@ class TestOptions extends AbstractOptions /** * Needed to test accessibility of getters / setters within deriving classes - * - * @return mixed */ - public function getParentPublic() + public function getParentPublic(): mixed { return $this->parentPublic; } diff --git a/test/TestAsset/TestOptionsDerived.php b/test/TestAsset/TestOptionsDerived.php index 54215d22fe7a2a33fe966e8c7ab7f67825640fad..a8620ca2dd518c7742852f434633996601c12f70 100644 --- a/test/TestAsset/TestOptionsDerived.php +++ b/test/TestAsset/TestOptionsDerived.php @@ -9,14 +9,11 @@ namespace LaminasTest\Stdlib\TestAsset; */ class TestOptionsDerived extends TestOptions { - /** @var mixed */ - private $derivedPrivate; + private mixed $derivedPrivate; - /** @var mixed */ - protected $derivedProtected; + protected mixed $derivedProtected; - /** @var mixed */ - protected $derivedPublic; + protected mixed $derivedPublic; /** * Needed to test accessibility of getters / setters within deriving classes @@ -28,10 +25,8 @@ class TestOptionsDerived extends TestOptions /** * Needed to test accessibility of getters / setters within deriving classes - * - * @return mixed */ - private function getDerivedPrivate() + private function getDerivedPrivate(): mixed { return $this->derivedPrivate; } @@ -46,10 +41,8 @@ class TestOptionsDerived extends TestOptions /** * Needed to test accessibility of getters / setters within deriving classes - * - * @return mixed */ - protected function getDerivedProtected() + protected function getDerivedProtected(): mixed { return $this->derivedProtected; } @@ -64,10 +57,8 @@ class TestOptionsDerived extends TestOptions /** * Needed to test accessibility of getters / setters within deriving classes - * - * @return mixed */ - public function getDerivedPublic() + public function getDerivedPublic(): mixed { return $this->derivedPublic; } diff --git a/test/TestAsset/TestOptionsNoStrict.php b/test/TestAsset/TestOptionsNoStrict.php index 039d1095f6f7acafecfcfb7d15eb0a36262517d9..3e29705d0095d39a7b7315e54588c72fc2015ade 100644 --- a/test/TestAsset/TestOptionsNoStrict.php +++ b/test/TestAsset/TestOptionsNoStrict.php @@ -8,6 +8,8 @@ use Laminas\Stdlib\AbstractOptions; /** * Dummy TestOptions used to test Stdlib\Options + * + * @extends AbstractOptions<mixed> */ class TestOptionsNoStrict extends AbstractOptions { @@ -18,16 +20,14 @@ class TestOptionsNoStrict extends AbstractOptions // phpcs:enable - /** @var mixed */ - protected $testField; + protected mixed $testField; public function setTestField(mixed $value): void { $this->testField = $value; } - /** @return mixed */ - public function getTestField() + public function getTestField(): mixed { return $this->testField; } diff --git a/test/TestAsset/TestOptionsWithoutGetter.php b/test/TestAsset/TestOptionsWithoutGetter.php index e0cfd5aa7a6533d06ffd801989d9e0c50016de24..08824e90e293a4dd748a7baf9458dadf64a5c1b8 100644 --- a/test/TestAsset/TestOptionsWithoutGetter.php +++ b/test/TestAsset/TestOptionsWithoutGetter.php @@ -8,11 +8,12 @@ use Laminas\Stdlib\AbstractOptions; /** * Dummy TestOptions used to test Stdlib\Options + * + * @extends AbstractOptions<mixed> */ class TestOptionsWithoutGetter extends AbstractOptions { - /** @var mixed */ - protected $foo; + protected mixed $foo; public function setFoo(mixed $value): void {