"prepend-autoloader": false,
"optimize-autoloader": true,
"platform": {
- "php": "7.2.24",
+ "php": "8.1.2",
"ext-gd": "0"
}
},
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "da96a6eb84699802cec74c683a04a5b4",
+ "content-hash": "cbaa8c3c47e1df94e874c039e41e3a91",
"packages": [
{
"name": "chrisjean/php-ico",
},
{
"name": "laminas/laminas-diactoros",
- "version": "2.4.1",
+ "version": "2.10.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-diactoros.git",
- "reference": "36ef09b73e884135d2059cc498c938e90821bb57"
+ "reference": "a3f03b3c158a3a7014c6ba553b0cb83bf7da19c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/36ef09b73e884135d2059cc498c938e90821bb57",
- "reference": "36ef09b73e884135d2059cc498c938e90821bb57",
+ "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/a3f03b3c158a3a7014c6ba553b0cb83bf7da19c4",
+ "reference": "a3f03b3c158a3a7014c6ba553b0cb83bf7da19c4",
"shasum": ""
},
"require": {
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^7.1",
+ "php": "^7.3 || ~8.0.0 || ~8.1.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0"
},
"conflict": {
- "phpspec/prophecy": "<1.9.0"
+ "phpspec/prophecy": "<1.9.0",
+ "zendframework/zend-diactoros": "*"
},
"provide": {
"psr/http-factory-implementation": "1.0",
"psr/http-message-implementation": "1.0"
},
- "replace": {
- "zendframework/zend-diactoros": "^2.2.1"
- },
"require-dev": {
"ext-curl": "*",
"ext-dom": "*",
"ext-gd": "*",
"ext-libxml": "*",
- "http-interop/http-factory-tests": "^0.5.0",
+ "http-interop/http-factory-tests": "^0.8.0",
"laminas/laminas-coding-standard": "~1.0.0",
- "php-http/psr7-integration-tests": "^1.0",
- "phpunit/phpunit": "^7.5.18"
+ "php-http/psr7-integration-tests": "^1.1",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.1",
+ "psalm/plugin-phpunit": "^0.14.0",
+ "vimeo/psalm": "^4.3"
},
"type": "library",
"extra": {
"type": "community_bridge"
}
],
- "time": "2020-09-03T14:29:41+00:00"
+ "time": "2022-05-04T15:16:15+00:00"
},
{
"name": "laminas/laminas-httphandlerrunner",
- "version": "1.2.0",
+ "version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-httphandlerrunner.git",
- "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1"
+ "reference": "5f94e55d93f756e8ad07b9049aeb3d6d84582d0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
- "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
+ "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/5f94e55d93f756e8ad07b9049aeb3d6d84582d0e",
+ "reference": "5f94e55d93f756e8ad07b9049aeb3d6d84582d0e",
"shasum": ""
},
"require": {
"laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^7.1",
+ "php": "^7.3 || ~8.0.0 || ~8.1.0",
"psr/http-message": "^1.0",
"psr/http-message-implementation": "^1.0",
"psr/http-server-handler": "^1.0"
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
- "laminas/laminas-diactoros": "^1.7 || ^2.1.1",
- "phpunit/phpunit": "^7.0.2"
+ "laminas/laminas-diactoros": "^2.8.0",
+ "phpunit/phpunit": "^9.5.9",
+ "psalm/plugin-phpunit": "^0.16.1",
+ "vimeo/psalm": "^4.10.0"
},
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev",
- "dev-develop": "1.3.x-dev"
- },
"laminas": {
"config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider"
}
"type": "community_bridge"
}
],
- "time": "2020-06-03T15:52:17+00:00"
+ "time": "2021-09-22T09:17:54+00:00"
},
{
"name": "laminas/laminas-progressbar",
- "version": "2.7.0",
+ "version": "2.10.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-progressbar.git",
- "reference": "15f9e983276462f30d7d38660dc7488c6e3df34b"
+ "reference": "3efb7e1b4b36dcfc0a6e5580640d109ef57e56c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-progressbar/zipball/15f9e983276462f30d7d38660dc7488c6e3df34b",
- "reference": "15f9e983276462f30d7d38660dc7488c6e3df34b",
+ "url": "https://api.github.com/repos/laminas/laminas-progressbar/zipball/3efb7e1b4b36dcfc0a6e5580640d109ef57e56c9",
+ "reference": "3efb7e1b4b36dcfc0a6e5580640d109ef57e56c9",
"shasum": ""
},
"require": {
"laminas/laminas-stdlib": "^3.2.1",
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^5.6 || ^7.0"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
},
- "replace": {
- "zendframework/zend-progressbar": "self.version"
+ "conflict": {
+ "zendframework/zend-progressbar": "*"
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
- "laminas/laminas-json": "^2.6.1",
+ "laminas/laminas-json": "^3.0.0",
"laminas/laminas-session": "^2.8.5",
- "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
"laminas/laminas-json": "Laminas\\Json component",
"laminas/laminas-session": "To support progressbar persistent"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7.x-dev",
- "dev-develop": "2.8.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Laminas\\ProgressBar\\": "src/"
"rss": "https://github.com/laminas/laminas-progressbar/releases.atom",
"source": "https://github.com/laminas/laminas-progressbar"
},
- "time": "2019-12-31T17:38:44+00:00"
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2022-02-05T15:45:26+00:00"
},
{
"name": "laminas/laminas-stdlib",
- "version": "3.2.1",
+ "version": "3.7.1",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-stdlib.git",
- "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6"
+ "reference": "bcd869e2fe88d567800057c1434f2380354fe325"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/2b18347625a2f06a1a485acfbc870f699dbe51c6",
- "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6",
+ "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/bcd869e2fe88d567800057c1434f2380354fe325",
+ "reference": "bcd869e2fe88d567800057c1434f2380354fe325",
"shasum": ""
},
"require": {
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^5.6 || ^7.0"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
},
- "replace": {
- "zendframework/zend-stdlib": "self.version"
+ "conflict": {
+ "zendframework/zend-stdlib": "*"
},
"require-dev": {
- "laminas/laminas-coding-standard": "~1.0.0",
- "phpbench/phpbench": "^0.13",
- "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2"
+ "laminas/laminas-coding-standard": "~2.3.0",
+ "phpbench/phpbench": "^1.0",
+ "phpunit/phpunit": "^9.3.7",
+ "psalm/plugin-phpunit": "^0.16.0",
+ "vimeo/psalm": "^4.7"
},
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.2.x-dev",
- "dev-develop": "3.3.x-dev"
- }
- },
"autoload": {
"psr-4": {
"Laminas\\Stdlib\\": "src/"
"rss": "https://github.com/laminas/laminas-stdlib/releases.atom",
"source": "https://github.com/laminas/laminas-stdlib"
},
- "time": "2019-12-31T17:51:15+00:00"
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2022-01-21T15:50:46+00:00"
},
{
"name": "laminas/laminas-zendframework-bridge",
- "version": "1.1.1",
+ "version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
- "reference": "6ede70583e101030bcace4dcddd648f760ddf642"
+ "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642",
- "reference": "6ede70583e101030bcace4dcddd648f760ddf642",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/7f049390b756d34ba5940a8fb47634fbb51f79ab",
+ "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab",
"shasum": ""
},
"require": {
- "php": "^5.6 || ^7.0 || ^8.0"
+ "php": ">=7.4, <8.2"
},
"require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
- "squizlabs/php_codesniffer": "^3.5"
+ "phpunit/phpunit": "^9.5.14",
+ "psalm/plugin-phpunit": "^0.15.2",
+ "squizlabs/php_codesniffer": "^3.6.2",
+ "vimeo/psalm": "^4.21.0"
},
"type": "library",
"extra": {
"type": "community_bridge"
}
],
- "time": "2020-09-14T14:23:00+00:00"
+ "time": "2022-02-22T22:17:01+00:00"
},
{
"name": "paragonie/constant_time_encoding",
},
{
"name": "symfony/css-selector",
- "version": "v5.4.3",
+ "version": "v6.0.3",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e"
+ "reference": "1955d595c12c111629cc814d3f2a2ff13580508a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a",
+ "reference": "1955d595c12c111629cc814d3f2a2ff13580508a",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.0.2"
},
"type": "library",
"autoload": {
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.4.3"
+ "source": "https://github.com/symfony/css-selector/tree/v6.0.3"
},
"funding": [
{
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "v2.5.1",
+ "version": "v3.0.1",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=8.0.2"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1"
},
"funding": [
{
"type": "tidelift"
}
],
- "time": "2022-01-02T09:53:40+00:00"
+ "time": "2022-01-02T09:55:41+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"platform": [],
"platform-dev": [],
"platform-overrides": {
- "php": "7.2.24",
+ "php": "8.1.2",
"ext-gd": "0"
},
"plugin-api-version": "2.2.0"
'Laminas\\Diactoros\\Exception\\ExceptionInterface' => $vendorDir . '/laminas/laminas-diactoros/src/Exception/ExceptionInterface.php',
'Laminas\\Diactoros\\Exception\\InvalidArgumentException' => $vendorDir . '/laminas/laminas-diactoros/src/Exception/InvalidArgumentException.php',
'Laminas\\Diactoros\\Exception\\InvalidStreamPointerPositionException' => $vendorDir . '/laminas/laminas-diactoros/src/Exception/InvalidStreamPointerPositionException.php',
+ 'Laminas\\Diactoros\\Exception\\RuntimeException' => $vendorDir . '/laminas/laminas-diactoros/src/Exception/RuntimeException.php',
'Laminas\\Diactoros\\Exception\\SerializationException' => $vendorDir . '/laminas/laminas-diactoros/src/Exception/SerializationException.php',
'Laminas\\Diactoros\\Exception\\UnreadableStreamException' => $vendorDir . '/laminas/laminas-diactoros/src/Exception/UnreadableStreamException.php',
'Laminas\\Diactoros\\Exception\\UnrecognizedProtocolVersionException' => $vendorDir . '/laminas/laminas-diactoros/src/Exception/UnrecognizedProtocolVersionException.php',
$baseDir = $vendorDir;
return array(
- '7e9bd612cc444b3eed788ebbe46263a0' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/autoload.php',
'7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php',
- 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php',
+ '7e9bd612cc444b3eed788ebbe46263a0' => $vendorDir . '/laminas/laminas-zendframework-bridge/src/autoload.php',
'6e3fae29631ef280660b3cdad06f25a8' => $vendorDir . '/symfony/deprecation-contracts/function.php',
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
'2cffec82183ee1cea088009cef9a6fc3' => $vendorDir . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'751a5a3f463e4be759be31748b61737c' => $vendorDir . '/laminas/laminas-diactoros/src/functions/parse_cookie_header.legacy.php',
'0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php',
'b686b8e46447868025a15ce5d0cb2634' => $vendorDir . '/symfony/polyfill-php74/bootstrap.php',
+ 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php',
);
class ComposerStaticInita1f5f7c74275d47a45049a2936db1d0d
{
public static $files = array (
- '7e9bd612cc444b3eed788ebbe46263a0' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/autoload.php',
'7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php',
- 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php',
+ '7e9bd612cc444b3eed788ebbe46263a0' => __DIR__ . '/..' . '/laminas/laminas-zendframework-bridge/src/autoload.php',
'6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php',
'0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
'2cffec82183ee1cea088009cef9a6fc3' => __DIR__ . '/..' . '/ezyang/htmlpurifier/library/HTMLPurifier.composer.php',
'751a5a3f463e4be759be31748b61737c' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/functions/parse_cookie_header.legacy.php',
'0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php',
'b686b8e46447868025a15ce5d0cb2634' => __DIR__ . '/..' . '/symfony/polyfill-php74/bootstrap.php',
+ 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php',
);
public static $prefixLengthsPsr4 = array (
'Laminas\\Diactoros\\Exception\\ExceptionInterface' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/Exception/ExceptionInterface.php',
'Laminas\\Diactoros\\Exception\\InvalidArgumentException' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/Exception/InvalidArgumentException.php',
'Laminas\\Diactoros\\Exception\\InvalidStreamPointerPositionException' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/Exception/InvalidStreamPointerPositionException.php',
+ 'Laminas\\Diactoros\\Exception\\RuntimeException' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/Exception/RuntimeException.php',
'Laminas\\Diactoros\\Exception\\SerializationException' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/Exception/SerializationException.php',
'Laminas\\Diactoros\\Exception\\UnreadableStreamException' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/Exception/UnreadableStreamException.php',
'Laminas\\Diactoros\\Exception\\UnrecognizedProtocolVersionException' => __DIR__ . '/..' . '/laminas/laminas-diactoros/src/Exception/UnrecognizedProtocolVersionException.php',
},
{
"name": "laminas/laminas-diactoros",
- "version": "2.4.1",
- "version_normalized": "2.4.1.0",
+ "version": "2.10.0",
+ "version_normalized": "2.10.0.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-diactoros.git",
- "reference": "36ef09b73e884135d2059cc498c938e90821bb57"
+ "reference": "a3f03b3c158a3a7014c6ba553b0cb83bf7da19c4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/36ef09b73e884135d2059cc498c938e90821bb57",
- "reference": "36ef09b73e884135d2059cc498c938e90821bb57",
+ "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/a3f03b3c158a3a7014c6ba553b0cb83bf7da19c4",
+ "reference": "a3f03b3c158a3a7014c6ba553b0cb83bf7da19c4",
"shasum": ""
},
"require": {
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^7.1",
+ "php": "^7.3 || ~8.0.0 || ~8.1.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0"
},
"conflict": {
- "phpspec/prophecy": "<1.9.0"
+ "phpspec/prophecy": "<1.9.0",
+ "zendframework/zend-diactoros": "*"
},
"provide": {
"psr/http-factory-implementation": "1.0",
"psr/http-message-implementation": "1.0"
},
- "replace": {
- "zendframework/zend-diactoros": "^2.2.1"
- },
"require-dev": {
"ext-curl": "*",
"ext-dom": "*",
"ext-gd": "*",
"ext-libxml": "*",
- "http-interop/http-factory-tests": "^0.5.0",
+ "http-interop/http-factory-tests": "^0.8.0",
"laminas/laminas-coding-standard": "~1.0.0",
- "php-http/psr7-integration-tests": "^1.0",
- "phpunit/phpunit": "^7.5.18"
+ "php-http/psr7-integration-tests": "^1.1",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.1",
+ "psalm/plugin-phpunit": "^0.14.0",
+ "vimeo/psalm": "^4.3"
},
- "time": "2020-09-03T14:29:41+00:00",
+ "time": "2022-05-04T15:16:15+00:00",
"type": "library",
"extra": {
"laminas": {
},
{
"name": "laminas/laminas-httphandlerrunner",
- "version": "1.2.0",
- "version_normalized": "1.2.0.0",
+ "version": "1.5.0",
+ "version_normalized": "1.5.0.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-httphandlerrunner.git",
- "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1"
+ "reference": "5f94e55d93f756e8ad07b9049aeb3d6d84582d0e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
- "reference": "e1a5dad040e0043135e8095ee27d1fbf6fb640e1",
+ "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/5f94e55d93f756e8ad07b9049aeb3d6d84582d0e",
+ "reference": "5f94e55d93f756e8ad07b9049aeb3d6d84582d0e",
"shasum": ""
},
"require": {
"laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^7.1",
+ "php": "^7.3 || ~8.0.0 || ~8.1.0",
"psr/http-message": "^1.0",
"psr/http-message-implementation": "^1.0",
"psr/http-server-handler": "^1.0"
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
- "laminas/laminas-diactoros": "^1.7 || ^2.1.1",
- "phpunit/phpunit": "^7.0.2"
+ "laminas/laminas-diactoros": "^2.8.0",
+ "phpunit/phpunit": "^9.5.9",
+ "psalm/plugin-phpunit": "^0.16.1",
+ "vimeo/psalm": "^4.10.0"
},
- "time": "2020-06-03T15:52:17+00:00",
+ "time": "2021-09-22T09:17:54+00:00",
"type": "library",
"extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev",
- "dev-develop": "1.3.x-dev"
- },
"laminas": {
"config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider"
}
},
{
"name": "laminas/laminas-progressbar",
- "version": "2.7.0",
- "version_normalized": "2.7.0.0",
+ "version": "2.10.0",
+ "version_normalized": "2.10.0.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-progressbar.git",
- "reference": "15f9e983276462f30d7d38660dc7488c6e3df34b"
+ "reference": "3efb7e1b4b36dcfc0a6e5580640d109ef57e56c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-progressbar/zipball/15f9e983276462f30d7d38660dc7488c6e3df34b",
- "reference": "15f9e983276462f30d7d38660dc7488c6e3df34b",
+ "url": "https://api.github.com/repos/laminas/laminas-progressbar/zipball/3efb7e1b4b36dcfc0a6e5580640d109ef57e56c9",
+ "reference": "3efb7e1b4b36dcfc0a6e5580640d109ef57e56c9",
"shasum": ""
},
"require": {
"laminas/laminas-stdlib": "^3.2.1",
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^5.6 || ^7.0"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
},
- "replace": {
- "zendframework/zend-progressbar": "self.version"
+ "conflict": {
+ "zendframework/zend-progressbar": "*"
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
- "laminas/laminas-json": "^2.6.1",
+ "laminas/laminas-json": "^3.0.0",
"laminas/laminas-session": "^2.8.5",
- "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
"laminas/laminas-json": "Laminas\\Json component",
"laminas/laminas-session": "To support progressbar persistent"
},
- "time": "2019-12-31T17:38:44+00:00",
+ "time": "2022-02-05T15:45:26+00:00",
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.7.x-dev",
- "dev-develop": "2.8.x-dev"
- }
- },
"installation-source": "dist",
"autoload": {
"psr-4": {
"rss": "https://github.com/laminas/laminas-progressbar/releases.atom",
"source": "https://github.com/laminas/laminas-progressbar"
},
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
"install-path": "../laminas/laminas-progressbar"
},
{
"name": "laminas/laminas-stdlib",
- "version": "3.2.1",
- "version_normalized": "3.2.1.0",
+ "version": "3.7.1",
+ "version_normalized": "3.7.1.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-stdlib.git",
- "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6"
+ "reference": "bcd869e2fe88d567800057c1434f2380354fe325"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/2b18347625a2f06a1a485acfbc870f699dbe51c6",
- "reference": "2b18347625a2f06a1a485acfbc870f699dbe51c6",
+ "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/bcd869e2fe88d567800057c1434f2380354fe325",
+ "reference": "bcd869e2fe88d567800057c1434f2380354fe325",
"shasum": ""
},
"require": {
- "laminas/laminas-zendframework-bridge": "^1.0",
- "php": "^5.6 || ^7.0"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
},
- "replace": {
- "zendframework/zend-stdlib": "self.version"
+ "conflict": {
+ "zendframework/zend-stdlib": "*"
},
"require-dev": {
- "laminas/laminas-coding-standard": "~1.0.0",
- "phpbench/phpbench": "^0.13",
- "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2"
+ "laminas/laminas-coding-standard": "~2.3.0",
+ "phpbench/phpbench": "^1.0",
+ "phpunit/phpunit": "^9.3.7",
+ "psalm/plugin-phpunit": "^0.16.0",
+ "vimeo/psalm": "^4.7"
},
- "time": "2019-12-31T17:51:15+00:00",
+ "time": "2022-01-21T15:50:46+00:00",
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.2.x-dev",
- "dev-develop": "3.3.x-dev"
- }
- },
"installation-source": "dist",
"autoload": {
"psr-4": {
"rss": "https://github.com/laminas/laminas-stdlib/releases.atom",
"source": "https://github.com/laminas/laminas-stdlib"
},
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
"install-path": "../laminas/laminas-stdlib"
},
{
"name": "laminas/laminas-zendframework-bridge",
- "version": "1.1.1",
- "version_normalized": "1.1.1.0",
+ "version": "1.5.0",
+ "version_normalized": "1.5.0.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-zendframework-bridge.git",
- "reference": "6ede70583e101030bcace4dcddd648f760ddf642"
+ "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/6ede70583e101030bcace4dcddd648f760ddf642",
- "reference": "6ede70583e101030bcace4dcddd648f760ddf642",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/7f049390b756d34ba5940a8fb47634fbb51f79ab",
+ "reference": "7f049390b756d34ba5940a8fb47634fbb51f79ab",
"shasum": ""
},
"require": {
- "php": "^5.6 || ^7.0 || ^8.0"
+ "php": ">=7.4, <8.2"
},
"require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
- "squizlabs/php_codesniffer": "^3.5"
+ "phpunit/phpunit": "^9.5.14",
+ "psalm/plugin-phpunit": "^0.15.2",
+ "squizlabs/php_codesniffer": "^3.6.2",
+ "vimeo/psalm": "^4.21.0"
},
- "time": "2020-09-14T14:23:00+00:00",
+ "time": "2022-02-22T22:17:01+00:00",
"type": "library",
"extra": {
"laminas": {
},
{
"name": "symfony/css-selector",
- "version": "v5.4.3",
- "version_normalized": "5.4.3.0",
+ "version": "v6.0.3",
+ "version_normalized": "6.0.3.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/css-selector.git",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e"
+ "reference": "1955d595c12c111629cc814d3f2a2ff13580508a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/css-selector/zipball/b0a190285cd95cb019237851205b8140ef6e368e",
- "reference": "b0a190285cd95cb019237851205b8140ef6e368e",
+ "url": "https://api.github.com/repos/symfony/css-selector/zipball/1955d595c12c111629cc814d3f2a2ff13580508a",
+ "reference": "1955d595c12c111629cc814d3f2a2ff13580508a",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.0.2"
},
- "time": "2022-01-02T09:53:40+00:00",
+ "time": "2022-01-02T09:55:41+00:00",
"type": "library",
"installation-source": "dist",
"autoload": {
"description": "Converts CSS selectors to XPath expressions",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/css-selector/tree/v5.4.3"
+ "source": "https://github.com/symfony/css-selector/tree/v6.0.3"
},
"funding": [
{
},
{
"name": "symfony/deprecation-contracts",
- "version": "v2.5.1",
- "version_normalized": "2.5.1.0",
+ "version": "v3.0.1",
+ "version_normalized": "3.0.1.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66"
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
- "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
+ "reference": "26954b3d62a6c5fd0ea8a2a00c0353a14978d05c",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=8.0.2"
},
- "time": "2022-01-02T09:53:40+00:00",
+ "time": "2022-01-02T09:55:41+00:00",
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.1"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v3.0.1"
},
"funding": [
{
'dev_requirement' => false,
),
'laminas/laminas-diactoros' => array(
- 'pretty_version' => '2.4.1',
- 'version' => '2.4.1.0',
+ 'pretty_version' => '2.10.0',
+ 'version' => '2.10.0.0',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-diactoros',
'aliases' => array(),
- 'reference' => '36ef09b73e884135d2059cc498c938e90821bb57',
+ 'reference' => 'a3f03b3c158a3a7014c6ba553b0cb83bf7da19c4',
'dev_requirement' => false,
),
'laminas/laminas-httphandlerrunner' => array(
- 'pretty_version' => '1.2.0',
- 'version' => '1.2.0.0',
+ 'pretty_version' => '1.5.0',
+ 'version' => '1.5.0.0',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-httphandlerrunner',
'aliases' => array(),
- 'reference' => 'e1a5dad040e0043135e8095ee27d1fbf6fb640e1',
+ 'reference' => '5f94e55d93f756e8ad07b9049aeb3d6d84582d0e',
'dev_requirement' => false,
),
'laminas/laminas-progressbar' => array(
- 'pretty_version' => '2.7.0',
- 'version' => '2.7.0.0',
+ 'pretty_version' => '2.10.0',
+ 'version' => '2.10.0.0',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-progressbar',
'aliases' => array(),
- 'reference' => '15f9e983276462f30d7d38660dc7488c6e3df34b',
+ 'reference' => '3efb7e1b4b36dcfc0a6e5580640d109ef57e56c9',
'dev_requirement' => false,
),
'laminas/laminas-stdlib' => array(
- 'pretty_version' => '3.2.1',
- 'version' => '3.2.1.0',
+ 'pretty_version' => '3.7.1',
+ 'version' => '3.7.1.0',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-stdlib',
'aliases' => array(),
- 'reference' => '2b18347625a2f06a1a485acfbc870f699dbe51c6',
+ 'reference' => 'bcd869e2fe88d567800057c1434f2380354fe325',
'dev_requirement' => false,
),
'laminas/laminas-zendframework-bridge' => array(
- 'pretty_version' => '1.1.1',
- 'version' => '1.1.1.0',
+ 'pretty_version' => '1.5.0',
+ 'version' => '1.5.0.0',
'type' => 'library',
'install_path' => __DIR__ . '/../laminas/laminas-zendframework-bridge',
'aliases' => array(),
- 'reference' => '6ede70583e101030bcace4dcddd648f760ddf642',
+ 'reference' => '7f049390b756d34ba5940a8fb47634fbb51f79ab',
'dev_requirement' => false,
),
'paragonie/constant_time_encoding' => array(
'dev_requirement' => false,
),
'symfony/css-selector' => array(
- 'pretty_version' => 'v5.4.3',
- 'version' => '5.4.3.0',
+ 'pretty_version' => 'v6.0.3',
+ 'version' => '6.0.3.0',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/css-selector',
'aliases' => array(),
- 'reference' => 'b0a190285cd95cb019237851205b8140ef6e368e',
+ 'reference' => '1955d595c12c111629cc814d3f2a2ff13580508a',
'dev_requirement' => false,
),
'symfony/deprecation-contracts' => array(
- 'pretty_version' => 'v2.5.1',
- 'version' => '2.5.1.0',
+ 'pretty_version' => 'v3.0.1',
+ 'version' => '3.0.1.0',
'type' => 'library',
'install_path' => __DIR__ . '/../symfony/deprecation-contracts',
'aliases' => array(),
- 'reference' => 'e8b495ea28c1d97b5e0c121748d6f9b53d075c66',
+ 'reference' => '26954b3d62a6c5fd0ea8a2a00c0353a14978d05c',
'dev_requirement' => false,
),
'symfony/polyfill-mbstring' => array(
'reference' => 'a4d0c11a36dd7f4e7cd7096076cab6d3378a071e',
'dev_requirement' => false,
),
- 'zendframework/zend-diactoros' => array(
- 'dev_requirement' => false,
- 'replaced' => array(
- 0 => '^2.2.1',
- ),
- ),
'zendframework/zend-httphandlerrunner' => array(
'dev_requirement' => false,
'replaced' => array(
0 => '^1.1.0',
),
),
- 'zendframework/zend-progressbar' => array(
- 'dev_requirement' => false,
- 'replaced' => array(
- 0 => '2.7.0',
- ),
- ),
- 'zendframework/zend-stdlib' => array(
- 'dev_requirement' => false,
- 'replaced' => array(
- 0 => '3.2.1',
- ),
- ),
),
);
$issues = array();
-if (!(PHP_VERSION_ID >= 70205)) {
- $issues[] = 'Your Composer dependencies require a PHP version ">= 7.2.5". You are running ' . PHP_VERSION . '.';
+if (!(PHP_VERSION_ID >= 80002)) {
+ $issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.2". You are running ' . PHP_VERSION . '.';
}
if ($issues) {
--- /dev/null
+{
+ "extensions": [
+ "gd"
+ ],
+ "ignore_php_platform_requirements": {
+ "8.1": true
+ }
+}
+++ /dev/null
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 2.4.1 - 2020-09-03
-
-
-
------
-
-### Release Notes for [2.4.1](https://github.com/laminas/laminas-diactoros/milestone/6)
-
-2.4.x bugfix release (patch)
-
-### 2.4.1
-
-- Total issues resolved: **0**
-- Total pull requests resolved: **1**
-- Total contributors: **1**
-
-#### Bug
-
- - [50: gd is used by test suite](https://github.com/laminas/laminas-diactoros/pull/50) thanks to @remicollet
-## 2.4.0 - 2020-09-02
-
------
-
-### Release Notes for [2.4.0](https://github.com/laminas/laminas-diactoros/milestone/1)
-
-Feature release (minor)
-
-### 2.4.0
-
-- Total issues resolved: **0**
-- Total pull requests resolved: **2**
-- Total contributors: **2**
-
-
-
-
- - [49: Merge release 2.3.2 into 2.4.x](https://github.com/laminas/laminas-diactoros/pull/49) thanks to @github-actions[bot]
-
-#### Enhancement
-
- - [45: Allow Streams to be instantiated using GD resources](https://github.com/laminas/laminas-diactoros/pull/45) thanks to @settermjd
-## 2.3.2 - 2020-09-02
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#47](https://github.com/laminas/laminas-diactoros/pull/47) corrects the documented exception type thrown by `Laminas\Diactoros\Response\ArraySerializer::fromArray()` to indicate `Laminas\Diactoros\Exception\DeserializationException` is thrown by the method.
-
------
-
-### Release Notes for [2.3.2](https://github.com/laminas/laminas-diactoros/milestone/2)
-
-### 2.3.2
-
-- Total issues resolved: **0**
-- Total pull requests resolved: **1**
-- Total contributors: **1**
-
-#### Bug,Documentation
-
- - [47: Fixes docblock @throws in ArraySerializer::getValueFromKey()](https://github.com/laminas/laminas-diactoros/pull/47) thanks to @samsonasik
-
-## 2.3.1 - 2020-07-07
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#44](https://github.com/laminas/laminas-diactoros/pull/44) fixes an issue whereby the uploaded file size was being provided as an integer string, and causing type errors. The value is now cast to integer before creating an `UploadedFile` instance.
-
-## 2.3.0 - 2020-04-27
-
-### Added
-
-- [#37](https://github.com/laminas/laminas-diactoros/pull/37) adds a ConfigProvider and Module, allowing the package to be autoregistered within Mezzio and MVC applications. Each provides configuration mapping PSR-17 HTTP message factory interfaces to the Diactoros implementations of them.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.2.3 - 2020-03-29
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Fixed `replace` version constraint in composer.json so repository can be used as replacement of `zendframework/zend-diactoros:^2.2.1`.
-
-## 2.2.2 - 2020-01-07
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#30](https://github.com/laminas/laminas-diactoros/pull/30) adds missing `return` statements to the various `src/functions/*.legacy.php` function files to ensure they work correctly when used.
-
-## 2.2.1 - 2019-11-13
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [zendframework/zend-diactoros#379](https://github.com/zendframework/zend-diactoros/pull/379) removes extension of `SplFileInfo` by the `UploadedFile` class. The signatures of `getSize()` are potentially incompatible, and `UploadedFile` is intended to work with arbitrary PHP and PSR-7 streams, whereas `SplFileInfo` can only model files on the filesystem. While this is technically a BC break, we are treating it as a bugfix, as the class was broken for many use cases.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.2.0 - 2019-11-12
-
-### Added
-
-- [zendframework/zend-diactoros#376](https://github.com/zendframework/zend-diactoros/pull/376) adds support for using the X-Forwarded-Host header for determining the originally requested host name when marshaling the server request.
-
-### Changed
-
-- [zendframework/zend-diactoros#378](https://github.com/zendframework/zend-diactoros/pull/378) updates the `UploadedFile` class to extend `SplFileInfo`, allowing developers to make use of those features in their applications.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.2.0 - 2019-11-08
-
-### Added
-
-- [zendframework/zend-diactoros#377](https://github.com/zendframework/zend-diactoros/issues/377) enables UploadedFile to stand in and be used as an SplFileInfo object.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.1.5 - 2019-10-10
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#372](https://github.com/zendframework/zend-diactoros/pull/372) fixes issues that occur in the `Laminas\Diactoros\Uri` class when invalid UTF-8 characters are present the user-info, path, or query string, ensuring they are URL-encoded before being consumed. Previously, such characters could result in a fatal error, which was particularly problematic when marshaling the request URI for an application request cycle.
-
-## 2.1.4 - 2019-10-08
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#370](https://github.com/zendframework/zend-diactoros/pull/370) updates `Laminas\Diactoros\marshalHeadersFromSapi()` to ensure all underscores in header name keys are converted to dashes (fixing issues with header names such as `CONTENT_SECURITY_POLICY`, which would previously resolve improperly to `content-security_policy`).
-
-- [zendframework/zend-diactoros#370](https://github.com/zendframework/zend-diactoros/pull/370) updates `Laminas\Diactoros\marshalHeadersFromSapi()` to ignore header names from the `$server` array that resolve to integers; previously, it would raise a fatal error.
-
-## 2.1.3 - 2019-07-10
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#363](https://github.com/zendframework/zend-diactoros/issues/363) modifies detection of HTTPS schemas via the `$_SERVER['HTTPS']` value
- such that an empty HTTPS-key will result in a scheme of `http` and not
- `https`.
-
-## 2.1.2 - 2019-04-29
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#355](https://github.com/zendframework/zend-diactoros/pull/355) adds `phpdbg` to the list of accepted non-SAPI enviornments for purposes
- of calling `UploadedFile::moveTo()`.
-
-## 2.1.1 - 2019-01-05
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#349](https://github.com/zendframework/zend-diactoros/pull/349) fixes an issue when marshaling headers with values of `0` or `0` from the SAPI, ensuring they are detected and injected into the ServerRequest properly.
-
-## 2.1.0 - 2018-12-20
-
-### Added
-
-- [zendframework/zend-diactoros#345](https://github.com/zendframework/zend-diactoros/pull/345) adds support for PHP 7.3.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.0.3 - 2019-01-05
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#349](https://github.com/zendframework/zend-diactoros/pull/349) fixes an issue when marshaling headers with values of `0` or `0` from the
- SAPI, ensuring they are detected and injected into the ServerRequest properly.
-
-## 2.0.2 - 2018-12-20
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#344](https://github.com/zendframework/zend-diactoros/pull/344) provides a fix to ensure that headers with a value of "0" are retained.
-
-## 2.0.1 - 2018-12-03
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#337](https://github.com/zendframework/zend-diactoros/pull/337) ensures that the `ServerRequestFactory::createServerRequest()` method
- creates a `php://temp` stream instead of a `php::input` stream, in compliance
- with the PSR-17 specification.
-
-## 2.0.0 - 2018-09-27
-
-### Added
-
-- [zendframework/zend-diactoros#326](https://github.com/zendframework/zend-diactoros/pull/326) adds [PSR-17](https://www.php-fig.org/psr/psr-17/) HTTP Message Factory implementations, including:
-
- - `Laminas\Diactoros\RequestFactory`
- - `Laminas\Diactoros\ResponseFactory`
- - `Laminas\Diactoros\ServerRequestFactory`
- - `Laminas\Diactoros\StreamFactory`
- - `Laminas\Diactoros\UploadedFileFactory`
- - `Laminas\Diactoros\UriFactory`
-
- These factories may be used to produce the associated instances; we encourage
- users to rely on the PSR-17 factory interfaces to allow exchanging PSR-7
- implementations within their applications.
-
-- [zendframework/zend-diactoros#328](https://github.com/zendframework/zend-diactoros/pull/328) adds a package-level exception interface, `Laminas\Diactoros\Exception\ExceptionInterface`,
- and several implementations for specific exceptions raised within the package.
- These include:
-
- - `Laminas\Diactoros\Exception\DeserializationException` (extends `UnexpectedValueException`)
- - `Laminas\Diactoros\Exception\InvalidArgumentException` (extends `InvalidArgumentException`)
- - `Laminas\Diactoros\Exception\InvalidStreamPointerPositionException` (extends `RuntimeException`)
- - `Laminas\Diactoros\Exception\SerializationException` (extends `UnexpectedValueException`)
- - `Laminas\Diactoros\Exception\UnreadableStreamException` (extends `RuntimeException`)
- - `Laminas\Diactoros\Exception\UnrecognizedProtocolVersionException` (extends `UnexpectedValueException`)
- - `Laminas\Diactoros\Exception\UnrewindableStreamException` (extends `RuntimeException`)
- - `Laminas\Diactoros\Exception\UnseekableStreamException` (extends `RuntimeException`)
- - `Laminas\Diactoros\Exception\UntellableStreamException` (extends `RuntimeException`)
- - `Laminas\Diactoros\Exception\UnwritableStreamException` (extends `RuntimeException`)
- - `Laminas\Diactoros\Exception\UploadedFileAlreadyMovedException` (extends `RuntimeException`)
- - `Laminas\Diactoros\Exception\UploadedFileErrorException` (extends `RuntimeException`)
-
-### Changed
-
-- [zendframework/zend-diactoros#329](https://github.com/zendframework/zend-diactoros/pull/329) adds return type hints and scalar parameter type hints wherever possible.
- The changes were done to help improve code quality, in part by reducing manual
- type checking. If you are extending any classes, you may need to update your
- signatures; check the signatures of the class(es) you are extending for changes.
-
-- [zendframework/zend-diactoros#162](https://github.com/zendframework/zend-diactoros/pull/162) modifies `Serializer\Request` such that it now no longer raises an `UnexpectedValueException` via its `toString()` method
- when an unexpected HTTP method is encountered; this can be done safely, as the value can never
- be invalid due to other changes in the same patch.
-
-- [zendframework/zend-diactoros#162](https://github.com/zendframework/zend-diactoros/pull/162) modifies `RequestTrait` such that it now invalidates non-string method arguments to either
- the constructor or `withMethod()`, raising an `InvalidArgumentException` for any that do not validate.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [zendframework/zend-diactoros#308](https://github.com/zendframework/zend-diactoros/pull/308) removes the following methods from the `ServerRequestFactory` class:
- - `normalizeServer()` (use `Laminas\Diactoros\normalizeServer()` instead)
- - `marshalHeaders()` (use `Laminas\Diactoros\marshalHeadersFromSapi()` instead)
- - `marshalUriFromServer()` (use `Laminas\Diactoros\marshalUriFromSapi()` instead)
- - `marshalRequestUri()` (use `Uri::getPath()` from the `Uri` instance returned by `marshalUriFromSapi()` instead)
- - `marshalHostAndPortFromHeaders()` (use `Uri::getHost()` and `Uri::getPort()` from the `Uri` instances returned by `marshalUriFromSapi()` instead)
- - `stripQueryString()` (use `explode("?", $path, 2)[0]` instead)
- - `normalizeFiles()` (use `Laminas\Diactoros\normalizeUploadedFiles()` instead)
-
-- [zendframework/zend-diactoros#295](https://github.com/zendframework/zend-diactoros/pull/295) removes `Laminas\Diactoros\Server`. You can use the `RequestHandlerRunner` class from
- [laminas/laminas-httphandlerrunner](https://docs.laminas.dev/laminas-httphandlerrunner) to provide these capabilities instead.
-
-- [zendframework/zend-diactoros#295](https://github.com/zendframework/zend-diactoros/pull/295) removes `Laminas\Diactoros\Response\EmitterInterface` and the various emitter implementations.
- These can now be found in the package [laminas/laminas-httphandlerrunner](https://docs.laminas.dev/laminas-httphandlerrunner/), which also provides
- a PSR-7-implementation agnostic way of using them.
-
-### Fixed
-
-- Nothing.
-
-## 1.8.7 - 2019-08-06
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#364](https://github.com/zendframework/zend-diactoros/issues/364) modifies detection of HTTPS schemas via the `$_SERVER['HTTPS']` value
- such that an empty HTTPS-key will result in a scheme of `http` and not
- `https`.
-
-## 1.8.6 - 2018-09-05
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [zendframework/zend-diactoros#325](https://github.com/zendframework/zend-diactoros/pull/325) changes the behavior of `ServerRequest::withParsedBody()`. Per
-- PSR-7, it now no longer allows values other than `null`, arrays, or objects.
-
-- [zendframework/zend-diactoros#325](https://github.com/zendframework/zend-diactoros/pull/325) changes the behavior of each of `Request`, `ServerRequest`, and
- `Response` in relation to the validation of header values. Previously, we
- allowed empty arrays to be provided via `withHeader()`; however, this was
- contrary to the PSR-7 specification. Empty arrays are no longer allowed.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#325](https://github.com/zendframework/zend-diactoros/pull/325) ensures that `Uri::withUserInfo()` no longer ignores values of
- `0` (numeric zero).
-
-- [zendframework/zend-diactoros#325](https://github.com/zendframework/zend-diactoros/pull/325) fixes how header values are merged when calling
- `withAddedHeader()`, ensuring that array keys are ignored.
-
-## 1.8.5 - 2018-08-10
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#324](https://github.com/zendframework/zend-diactoros/pull/324) fixes a reference
- to an undefined variable in the `ServerRequestFactory`, which made it
- impossible to fetch a specific header by name.
-
-## 1.8.4 - 2018-08-01
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- This release modifies how `ServerRequestFactory` marshals the request URI. In
- prior releases, we would attempt to inspect the `X-Rewrite-Url` and
- `X-Original-Url` headers, using their values, if present. These headers are
- issued by the ISAPI_Rewrite module for IIS (developed by HeliconTech).
- However, we have no way of guaranteeing that the module is what issued the
- headers, making it an unreliable source for discovering the URI. As such, we
- have removed this feature in this release of Diactoros.
-
- If you are developing a middleware application, you can mimic the
- functionality via middleware as follows:
-
- ```php
- use Psr\Http\Message\ResponseInterface;
- use Psr\Http\Message\ServerRequestInterface;
- use Psr\Http\Server\RequestHandlerInterface;
- use Laminas\Diactoros\Uri;
-
- public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface
- {
- $requestUri = null;
-
- $httpXRewriteUrl = $request->getHeaderLine('X-Rewrite-Url');
- if ($httpXRewriteUrl !== null) {
- $requestUri = $httpXRewriteUrl;
- }
-
- $httpXOriginalUrl = $request->getHeaderLine('X-Original-Url');
- if ($httpXOriginalUrl !== null) {
- $requestUri = $httpXOriginalUrl;
- }
-
- if ($requestUri !== null) {
- $request = $request->withUri(new Uri($requestUri));
- }
-
- return $handler->handle($request);
- }
- ```
-
- If you use middleware such as the above, make sure you also instruct your web
- server to strip any incoming headers of the same name so that you can
- guarantee they are issued by the ISAPI_Rewrite module.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 1.8.3 - 2018-07-24
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#321](https://github.com/zendframework/zend-diactoros/pull/321) updates the logic in `Uri::withPort()` to ensure that it checks that the
- value provided is either an integer or a string integer, as only those values
- may be cast to integer without data loss.
-
-- [zendframework/zend-diactoros#320](https://github.com/zendframework/zend-diactoros/pull/320) adds checking within `Response` to ensure that the provided reason
- phrase is a string; an `InvalidArgumentException` is now raised if it is not. This change
- ensures the class adheres strictly to the PSR-7 specification.
-
-- [zendframework/zend-diactoros#319](https://github.com/zendframework/zend-diactoros/pull/319) provides a fix to `Laminas\Diactoros\Response` that ensures that the status
- code returned is _always_ an integer (and never a string containing an
- integer), thus ensuring it strictly adheres to the PSR-7 specification.
-
-## 1.8.2 - 2018-07-19
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#318](https://github.com/zendframework/zend-diactoros/pull/318) fixes the logic for discovering whether an HTTPS scheme is in play
- to be case insensitive when comparing header and SAPI values, ensuring no
- false negative lookups occur.
-
-- [zendframework/zend-diactoros#314](https://github.com/zendframework/zend-diactoros/pull/314) modifies error handling around opening a file resource within
- `Laminas\Diactoros\Stream::setStream()` to no longer use the second argument to
- `set_error_handler()`, and instead check the error type in the handler itself;
- this fixes an issue when the handler is nested inside another error handler,
- which currently has buggy behavior within the PHP engine.
-
-## 1.8.1 - 2018-07-09
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [zendframework/zend-diactoros#313](https://github.com/zendframework/zend-diactoros/pull/313) changes the reason phrase associated with the status code 425
- to "Too Early", corresponding to a new definition of the code as specified by the IANA.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#312](https://github.com/zendframework/zend-diactoros/pull/312) fixes how the `normalizeUploadedFiles()` utility function handles nested trees of
- uploaded files, ensuring it detects them properly.
-
-## 1.8.0 - 2018-06-27
-
-### Added
-
-- [zendframework/zend-diactoros#307](https://github.com/zendframework/zend-diactoros/pull/307) adds the following functions under the `Laminas\Diactoros` namespace, each of
- which may be used to derive artifacts from SAPI supergloabls for the purposes
- of generating a `ServerRequest` instance:
- - `normalizeServer(array $server, callable $apacheRequestHeaderCallback = null) : array`
- (main purpose is to aggregate the `Authorization` header in the SAPI params
- when under Apache)
- - `marshalProtocolVersionFromSapi(array $server) : string`
- - `marshalMethodFromSapi(array $server) : string`
- - `marshalUriFromSapi(array $server, array $headers) : Uri`
- - `marshalHeadersFromSapi(array $server) : array`
- - `parseCookieHeader(string $header) : array`
- - `createUploadedFile(array $spec) : UploadedFile` (creates the instance from
- a normal `$_FILES` entry)
- - `normalizeUploadedFiles(array $files) : UploadedFileInterface[]` (traverses
- a potentially nested array of uploaded file instances and/or `$_FILES`
- entries, including those aggregated under mod_php, php-fpm, and php-cgi in
- order to create a flat array of `UploadedFileInterface` instances to use in a
- request)
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- [zendframework/zend-diactoros#307](https://github.com/zendframework/zend-diactoros/pull/307) deprecates `ServerRequestFactory::normalizeServer()`; the method is
- no longer used internally, and users should instead use `Laminas\Diactoros\normalizeServer()`,
- to which it proxies.
-
-- [zendframework/zend-diactoros#307](https://github.com/zendframework/zend-diactoros/pull/307) deprecates `ServerRequestFactory::marshalHeaders()`; the method is
- no longer used internally, and users should instead use `Laminas\Diactoros\marshalHeadersFromSapi()`,
- to which it proxies.
-
-- [zendframework/zend-diactoros#307](https://github.com/zendframework/zend-diactoros/pull/307) deprecates `ServerRequestFactory::marshalUriFromServer()`; the method
- is no longer used internally. Users should use `marshalUriFromSapi()` instead.
-
-- [zendframework/zend-diactoros#307](https://github.com/zendframework/zend-diactoros/pull/307) deprecates `ServerRequestFactory::marshalRequestUri()`. the method is no longer
- used internally, and currently proxies to `marshalUriFromSapi()`, pulling the
- discovered path from the `Uri` instance returned by that function. Users
- should use `marshalUriFromSapi()` instead.
-
-- [zendframework/zend-diactoros#307](https://github.com/zendframework/zend-diactoros/pull/307) deprecates `ServerRequestFactory::marshalHostAndPortFromHeaders()`; the method
- is no longer used internally, and currently proxies to `marshalUriFromSapi()`,
- pulling the discovered host and port from the `Uri` instance returned by that
- function. Users should use `marshalUriFromSapi()` instead.
-
-- [zendframework/zend-diactoros#307](https://github.com/zendframework/zend-diactoros/pull/307) deprecates `ServerRequestFactory::getHeader()`; the method is no longer
- used internally. Users should copy and paste the functionality into their own
- applications if needed, or rely on headers from a fully-populated `Uri`
- instance instead.
-
-- [zendframework/zend-diactoros#307](https://github.com/zendframework/zend-diactoros/pull/307) deprecates `ServerRequestFactory::stripQueryString()`; the method is no longer
- used internally, and users can mimic the functionality via the expression
- `$path = explode('?', $path, 2)[0];`.
-
-- [zendframework/zend-diactoros#307](https://github.com/zendframework/zend-diactoros/pull/307) deprecates `ServerRequestFactory::normalizeFiles()`; the functionality
- is no longer used internally, and users can use `normalizeUploadedFiles()` as
- a replacement.
-
-- [zendframework/zend-diactoros#303](https://github.com/zendframework/zend-diactoros/pull/303) deprecates `Laminas\Diactoros\Response\EmitterInterface` and its various implementations. These are now provided via the
- [laminas/laminas-httphandlerrunner](https://docs.laminas.dev/laminas-httphandlerrunner) package as 1:1 substitutions.
-
-- [zendframework/zend-diactoros#303](https://github.com/zendframework/zend-diactoros/pull/303) deprecates the `Laminas\Diactoros\Server` class. Users are directed to the `RequestHandlerRunner` class from the
- [laminas/laminas-httphandlerrunner](https://docs.laminas.dev/laminas-httphandlerrunner) package as an alternative.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 1.7.2 - 2018-05-29
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#301](https://github.com/zendframework/zend-diactoros/pull/301) adds stricter comparisons within the `uri` class to ensure non-empty
- values are not treated as empty.
-
-## 1.7.1 - 2018-02-26
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [zendframework/zend-diactoros#293](https://github.com/zendframework/zend-diactoros/pull/293) updates
- `Uri::getHost()` to cast the value via `strtolower()` before returning it.
- While this represents a change, it is fixing a bug in our implementation:
- the PSR-7 specification for the method, which follows IETF RFC 3986 section
- 3.2.2, requires that the host name be normalized to lowercase.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#290](https://github.com/zendframework/zend-diactoros/pull/290) fixes
- `Stream::getSize()` such that it checks that the result of `fstat` was
- succesful before attempting to return its `size` member; in the case of an
- error, it now returns `null`.
-
-## 1.7.0 - 2018-01-04
-
-### Added
-
-- [zendframework/zend-diactoros#285](https://github.com/zendframework/zend-diactoros/pull/285) adds a new
- custom response type, `Laminas\Diactoros\Response\XmlResponse`, for generating
- responses representing XML. Usage is the same as with the `HtmlResponse` or
- `TextResponse`; the response generated will have a `Content-Type:
- application/xml` header by default.
-
-- [zendframework/zend-diactoros#280](https://github.com/zendframework/zend-diactoros/pull/280) adds the
- response status code/phrase pairing "103 Early Hints" to the
- `Response::$phrases` property. This is a new status proposed via
- [RFC 8297](https://datatracker.ietf.org/doc/rfc8297/).
-
-- [zendframework/zend-diactoros#279](https://github.com/zendframework/zend-diactoros/pull/279) adds explicit
- support for PHP 7.2; previously, we'd allowed build failures, though none
- occured; we now require PHP 7.2 builds to pass.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 1.6.1 - 2017-10-12
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [zendframework/zend-diactoros#273](https://github.com/zendframework/zend-diactoros/pull/273) updates each
- of the SAPI emitter implementations to emit the status line after emitting
- other headers; this is done to ensure that the status line is not overridden
- by PHP.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#273](https://github.com/zendframework/zend-diactoros/pull/273) modifies how
- the `SapiEmitterTrait` calls `header()` to ensure that a response code is
- _always_ passed as the third argument; this is done to prevent PHP from
- silently overriding it.
-
-## 1.6.0 - 2017-09-13
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [zendframework/zend-diactoros#270](https://github.com/zendframework/zend-diactoros/pull/270) changes the
- behavior of `Laminas\Diactoros\Server`: it no longer creates an output buffer.
-
-- [zendframework/zend-diactoros#270](https://github.com/zendframework/zend-diactoros/pull/270) changes the
- behavior of the two SAPI emitters in two backwards-incompatible ways:
-
- - They no longer auto-inject a `Content-Length` header. If you need this
- functionality, mezzio/mezzio-helpers 4.1+ provides it via
- `Mezzio\Helper\ContentLengthMiddleware`.
-
- - They no longer flush the output buffer. Instead, if headers have been sent,
- or the output buffer exists and has a non-zero length, the emitters raise an
- exception, as mixed PSR-7/output buffer content creates a blocking issue.
- If you are emitting content via `echo`, `print`, `var_dump`, etc., or not
- catching PHP errors or exceptions, you will need to either fix your
- application to always work with a PSR-7 response, or provide your own
- emitters that allow mixed output mechanisms.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 1.5.0 - 2017-08-22
-
-### Added
-
-- [zendframework/zend-diactoros#205](https://github.com/zendframework/zend-diactoros/pull/205) adds support
- for PHP 7.2.
-
-- [zendframework/zend-diactoros#250](https://github.com/zendframework/zend-diactoros/pull/250) adds a new
- API to `JsonResponse` to avoid the need for decoding the response body in
- order to make changes to the underlying content. New methods include:
- - `getPayload()`: retrieve the unencoded payload.
- - `withPayload($data)`: create a new instance with the given data.
- - `getEncodingOptions()`: retrieve the flags to use when encoding the payload
- to JSON.
- - `withEncodingOptions(int $encodingOptions)`: create a new instance that uses
- the provided flags when encoding the payload to JSON.
-
-### Changed
-
-- [zendframework/zend-diactoros#249](https://github.com/zendframework/zend-diactoros/pull/249) changes the
- behavior of the various `Uri::with*()` methods slightly: if the value
- represents no change, these methods will return the same instance instead of a
- new one.
-
-- [zendframework/zend-diactoros#248](https://github.com/zendframework/zend-diactoros/pull/248) changes the
- behavior of `Uri::getUserInfo()` slightly: it now (correctly) returns the
- percent-encoded values for the user and/or password, per RFC 3986 Section
- 3.2.1. `withUserInfo()` will percent-encode values, using a mechanism that
- prevents double-encoding.
-
-- [zendframework/zend-diactoros#243](https://github.com/zendframework/zend-diactoros/pull/243) changes the
- exception messages thrown by `UploadedFile::getStream()` and `moveTo()` when
- an upload error exists to include details about the upload error.
-
-- [zendframework/zend-diactoros#233](https://github.com/zendframework/zend-diactoros/pull/233) adds a new
- argument to `SapiStreamEmitter::emit`, `$maxBufferLevel` **between** the
- `$response` and `$maxBufferLength` arguments. This was done because the
- `Server::listen()` method passes only the response and `$maxBufferLevel` to
- emitters; previously, this often meant that streams were being chunked 2 bytes
- at a time versus the expected default of 8kb.
-
- If you were calling the `SapiStreamEmitter::emit()` method manually
- previously, you will need to update your code.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [zendframework/zend-diactoros#205](https://github.com/zendframework/zend-diactoros/pull/205) and
- [zendframework/zend-diactoros#243](https://github.com/zendframework/zend-diactoros/pull/243) **remove
- support for PHP versions prior to 5.6 as well as HHVM**.
-
-### Fixed
-
-- [zendframework/zend-diactoros#248](https://github.com/zendframework/zend-diactoros/pull/248) fixes how the
- `Uri` class provides user-info within the URI authority; the value is now
- correctly percent-encoded , per RFC 3986 Section 3.2.1.
-
-## 1.4.1 - 2017-08-17
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [zendframework/zend-diactoros#260](https://github.com/zendframework/zend-diactoros/pull/260) removes
- support for HHVM, as tests have failed against it for some time.
-
-### Fixed
-
-- [zendframework/zend-diactoros#247](https://github.com/zendframework/zend-diactoros/pull/247) fixes the
- `Stream` and `RelativeStream` `__toString()` method implementations to check
- if the stream `isSeekable()` before attempting to `rewind()` it, ensuring that
- the method does not raise exceptions (PHP does not allow exceptions in that
- method). In particular, this fixes an issue when using AWS S3 streams.
-
-- [zendframework/zend-diactoros#252](https://github.com/zendframework/zend-diactoros/pull/252) provides a
- fix to the `SapiEmitterTrait` to ensure that any `Set-Cookie` headers in the
- response instance do not override those set by PHP when a session is created
- and/or regenerated.
-
-- [zendframework/zend-diactoros#257](https://github.com/zendframework/zend-diactoros/pull/257) provides a
- fix for the `PhpInputStream::read()` method to ensure string content that
- evaluates as empty (including `0`) is still cached.
-
-- [zendframework/zend-diactoros#258](https://github.com/zendframework/zend-diactoros/pull/258) updates the
- `Uri::filterPath()` method to allow parens within a URI path, per [RFC 3986
- section 3.3](https://tools.ietf.org/html/rfc3986#section-3.3) (parens are
- within the character set "sub-delims").
-
-## 1.4.0 - 2017-04-06
-
-### Added
-
-- [zendframework/zend-diactoros#219](https://github.com/zendframework/zend-diactoros/pull/219) adds two new
- classes, `Laminas\Diactoros\Request\ArraySerializer` and
- `Laminas\Diactoros\Response\ArraySerializer`. Each exposes the static methods
- `toArray()` and `fromArray()`, allowing de/serialization of messages from and
- to arrays.
-
-- [zendframework/zend-diactoros#236](https://github.com/zendframework/zend-diactoros/pull/236) adds two new
- constants to the `Response` class: `MIN_STATUS_CODE_VALUE` and
- `MAX_STATUS_CODE_VALUE`.
-
-### Changes
-
-- [zendframework/zend-diactoros#240](https://github.com/zendframework/zend-diactoros/pull/240) changes the
- behavior of `ServerRequestFactory::fromGlobals()` when no `$cookies` argument
- is present. Previously, it would use `$_COOKIES`; now, if a `Cookie` header is
- present, it will parse and use that to populate the instance instead.
-
- This change allows utilizing cookies that contain period characters (`.`) in
- their names (PHP's built-in cookie handling renames these to replace `.` with
- `_`, which can lead to synchronization issues with clients).
-
-- [zendframework/zend-diactoros#235](https://github.com/zendframework/zend-diactoros/pull/235) changes the
- behavior of `Uri::__toString()` to better follow proscribed behavior in PSR-7.
- In particular, prior to this release, if a scheme was missing but an authority
- was present, the class was incorrectly returning a value that did not include
- a `//` prefix. As of this release, it now does this correctly.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 1.3.11 - 2017-04-06
-
-### Added
-
-- Nothing.
-
-### Changes
-
-- [zendframework/zend-diactoros#241](https://github.com/zendframework/zend-diactoros/pull/241) changes the
- constraint by which the package provides `psr/http-message-implementation` to
- simply `1.0` instead of `~1.0.0`, to follow how other implementations provide
- PSR-7.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#161](https://github.com/zendframework/zend-diactoros/pull/161) adds
- additional validations to header names and values to ensure no malformed values
- are provided.
-
-- [zendframework/zend-diactoros#234](https://github.com/zendframework/zend-diactoros/pull/234) fixes a
- number of reason phrases in the `Response` instance, and adds automation from
- the canonical IANA sources to ensure any new phrases added are correct.
-
-## 1.3.10 - 2017-01-23
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#226](https://github.com/zendframework/zend-diactoros/pull/226) fixed an
- issue with the `SapiStreamEmitter` causing the response body to be cast
- to `(string)` and also be read as a readable stream, potentially producing
- double output.
-
-## 1.3.9 - 2017-01-17
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#223](https://github.com/zendframework/zend-diactoros/issues/223)
- [zendframework/zend-diactoros#224](https://github.com/zendframework/zend-diactoros/pull/224) fixed an issue
- with the `SapiStreamEmitter` consuming too much memory when producing output
- for readable bodies.
-
-## 1.3.8 - 2017-01-05
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#222](https://github.com/zendframework/zend-diactoros/pull/222) fixes the
- `SapiStreamEmitter`'s handling of the `Content-Range` header to properly only
- emit a range of bytes if the header value is in the form `bytes {first-last}/length`.
- This allows using other range units, such as `items`, without incorrectly
- emitting truncated content.
-
-## 1.3.7 - 2016-10-11
-
-### Added
-
-- [zendframework/zend-diactoros#208](https://github.com/zendframework/zend-diactoros/pull/208) adds several
- missing response codes to `Laminas\Diactoros\Response`, including:
- - 226 ('IM used')
- - 308 ('Permanent Redirect')
- - 444 ('Connection Closed Without Response')
- - 499 ('Client Closed Request')
- - 510 ('Not Extended')
- - 599 ('Network Connect Timeout Error')
-- [zendframework/zend-diactoros#211](https://github.com/zendframework/zend-diactoros/pull/211) adds support
- for UTF-8 characters in query strings handled by `Laminas\Diactoros\Uri`.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 1.3.6 - 2016-09-07
-
-### Added
-
-- [zendframework/zend-diactoros#170](https://github.com/zendframework/zend-diactoros/pull/170) prepared
- documentation for publication at https://docs.laminas.dev/laminas-diactoros/
-- [zendframework/zend-diactoros#165](https://github.com/zendframework/zend-diactoros/pull/165) adds support
- for Apache `REDIRECT_HTTP_*` header detection in the `ServerRequestFactory`.
-- [zendframework/zend-diactoros#166](https://github.com/zendframework/zend-diactoros/pull/166) adds support
- for UTF-8 characters in URI paths.
-- [zendframework/zend-diactoros#204](https://github.com/zendframework/zend-diactoros/pull/204) adds testing
- against PHP 7.1 release-candidate builds.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#186](https://github.com/zendframework/zend-diactoros/pull/186) fixes a typo
- in a variable name within the `SapiStreamEmitter`.
-- [zendframework/zend-diactoros#200](https://github.com/zendframework/zend-diactoros/pull/200) updates the
- `SapiStreamEmitter` to implement a check for `isSeekable()` prior to attempts
- to rewind; this allows it to work with non-seekable streams such as the
- `CallbackStream`.
-- [zendframework/zend-diactoros#169](https://github.com/zendframework/zend-diactoros/pull/169) ensures that
- response serialization always provides a `\r\n\r\n` sequence following the
- headers, even when no message body is present, to ensure it conforms with RFC
- 7230.
-- [zendframework/zend-diactoros#175](https://github.com/zendframework/zend-diactoros/pull/175) updates the
- `Request` class to set the `Host` header from the URI host if no header is
- already present. (Ensures conformity with PSR-7 specification.)
-- [zendframework/zend-diactoros#197](https://github.com/zendframework/zend-diactoros/pull/197) updates the
- `Uri` class to ensure that string serialization does not include a colon after
- the host name if no port is present in the instance.
-
-## 1.3.5 - 2016-03-17
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#160](https://github.com/zendframework/zend-diactoros/pull/160) fixes HTTP
- protocol detection in the `ServerRequestFactory` to work correctly with HTTP/2.
-
-## 1.3.4 - 2016-03-17
-
-### Added
-
-- [zendframework/zend-diactoros#119](https://github.com/zendframework/zend-diactoros/pull/119) adds the 451
- (Unavailable for Legal Reasons) status code to the `Response` class.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#117](https://github.com/zendframework/zend-diactoros/pull/117) provides
- validation of the HTTP protocol version.
-- [zendframework/zend-diactoros#127](https://github.com/zendframework/zend-diactoros/pull/127) now properly
- removes attributes with `null` values when calling `withoutAttribute()`.
-- [zendframework/zend-diactoros#132](https://github.com/zendframework/zend-diactoros/pull/132) updates the
- `ServerRequestFactory` to marshal the request path fragment, if present.
-- [zendframework/zend-diactoros#142](https://github.com/zendframework/zend-diactoros/pull/142) updates the
- exceptions thrown by `HeaderSecurity` to include the header name and/or
- value.
-- [zendframework/zend-diactoros#148](https://github.com/zendframework/zend-diactoros/pull/148) fixes several
- stream operations to ensure they raise exceptions when the internal pointer
- is at an invalid position.
-- [zendframework/zend-diactoros#151](https://github.com/zendframework/zend-diactoros/pull/151) ensures
- URI fragments are properly encoded.
-
-## 1.3.3 - 2016-01-04
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#135](https://github.com/zendframework/zend-diactoros/pull/135) fixes the
- behavior of `ServerRequestFactory::marshalHeaders()` to no longer omit
- `Cookie` headers from the aggregated headers. While the values are parsed and
- injected into the cookie params, it's useful to have access to the raw headers
- as well.
-
-## 1.3.2 - 2015-12-22
-
-### Added
-
-- [zendframework/zend-diactoros#124](https://github.com/zendframework/zend-diactoros/pull/124) adds four
- more optional arguments to the `ServerRequest` constructor:
- - `array $cookies`
- - `array $queryParams`
- - `null|array|object $parsedBody`
- - `string $protocolVersion`
- `ServerRequestFactory` was updated to pass values for each of these parameters
- when creating an instance, instead of using the related `with*()` methods on
- an instance.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#122](https://github.com/zendframework/zend-diactoros/pull/122) updates the
- `ServerRequestFactory` to retrieve the HTTP protocol version and inject it in
- the generated `ServerRequest`, which previously was not performed.
-
-## 1.3.1 - 2015-12-16
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#113](https://github.com/zendframework/zend-diactoros/pull/113) fixes an
- issue in the response serializer, ensuring that the status code in the
- deserialized response is an integer.
-- [zendframework/zend-diactoros#115](https://github.com/zendframework/zend-diactoros/pull/115) fixes an
- issue in the various text-basd response types (`TextResponse`, `HtmlResponse`,
- and `JsonResponse`); due to the fact that the constructor was not
- rewinding the message body stream, `getContents()` was thus returning `null`,
- as the pointer was at the end of the stream. The constructor now rewinds the
- stream after populating it in the constructor.
-
-## 1.3.0 - 2015-12-15
-
-### Added
-
-- [zendframework/zend-diactoros#110](https://github.com/zendframework/zend-diactoros/pull/110) adds
- `Laminas\Diactoros\Response\SapiEmitterTrait`, which provides the following
- private method definitions:
- - `injectContentLength()`
- - `emitStatusLine()`
- - `emitHeaders()`
- - `flush()`
- - `filterHeader()`
- The `SapiEmitter` implementation has been updated to remove those methods and
- instead compose the trait.
-- [zendframework/zend-diactoros#111](https://github.com/zendframework/zend-diactoros/pull/111) adds
- a new emitter implementation, `SapiStreamEmitter`; this emitter type will
- loop through the stream instead of emitting it in one go, and supports content
- ranges.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 1.2.1 - 2015-12-15
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#101](https://github.com/zendframework/zend-diactoros/pull/101) fixes the
- `withHeader()` implementation to ensure that if the header existed previously
- but using a different casing strategy, the previous version will be removed
- in the cloned instance.
-- [zendframework/zend-diactoros#103](https://github.com/zendframework/zend-diactoros/pull/103) fixes the
- constructor of `Response` to ensure that null status codes are not possible.
-- [zendframework/zend-diactoros#99](https://github.com/zendframework/zend-diactoros/pull/99) fixes
- validation of header values submitted via request and response constructors as
- follows:
- - numeric (integer and float) values are now properly allowed (this solves
- some reported issues with setting Content-Length headers)
- - invalid header names (non-string values or empty strings) now raise an
- exception.
- - invalid individual header values (non-string, non-numeric) now raise an
- exception.
-
-## 1.2.0 - 2015-11-24
-
-### Added
-
-- [zendframework/zend-diactoros#88](https://github.com/zendframework/zend-diactoros/pull/88) updates the
- `SapiEmitter` to emit a `Content-Length` header with the content length as
- reported by the response body stream, assuming that
- `StreamInterface::getSize()` returns an integer.
-- [zendframework/zend-diactoros#77](https://github.com/zendframework/zend-diactoros/pull/77) adds a new
- response type, `Laminas\Diactoros\Response\TextResponse`, for returning plain
- text responses. By default, it sets the content type to `text/plain;
- charset=utf-8`; per the other response types, the signature is `new
- TextResponse($text, $status = 200, array $headers = [])`.
-- [zendframework/zend-diactoros#90](https://github.com/zendframework/zend-diactoros/pull/90) adds a new
- `Laminas\Diactoros\CallbackStream`, allowing you to back a stream with a PHP
- callable (such as a generator) to generate the message content. Its
- constructor accepts the callable: `$stream = new CallbackStream($callable);`
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#77](https://github.com/zendframework/zend-diactoros/pull/77) updates the
- `HtmlResponse` to set the charset to utf-8 by default (if no content type
- header is provided at instantiation).
-
-## 1.1.4 - 2015-10-16
-
-### Added
-
-- [zendframework/zend-diactoros#98](https://github.com/zendframework/zend-diactoros/pull/98) adds
- `JSON_UNESCAPED_SLASHES` to the default `json_encode` flags used by
- `Laminas\Diactoros\Response\JsonResponse`.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#96](https://github.com/zendframework/zend-diactoros/pull/96) updates
- `withPort()` to allow `null` port values (indicating usage of default for
- the given scheme).
-- [zendframework/zend-diactoros#91](https://github.com/zendframework/zend-diactoros/pull/91) fixes the
- logic of `withUri()` to do a case-insensitive check for an existing `Host`
- header, replacing it with the new one.
-
-## 1.1.3 - 2015-08-10
-
-### Added
-
-- [zendframework/zend-diactoros#73](https://github.com/zendframework/zend-diactoros/pull/73) adds caching of
- the vendor directory to the Travis-CI configuration, to speed up builds.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#71](https://github.com/zendframework/zend-diactoros/pull/71) fixes the
- docblock of the `JsonResponse` constructor to typehint the `$data` argument
- as `mixed`.
-- [zendframework/zend-diactoros#73](https://github.com/zendframework/zend-diactoros/pull/73) changes the
- behavior in `Request` such that if it marshals a stream during instantiation,
- the stream is marked as writeable (specifically, mode `wb+`).
-- [zendframework/zend-diactoros#85](https://github.com/zendframework/zend-diactoros/pull/85) updates the
- behavior of `Laminas\Diactoros\Uri`'s various `with*()` methods that are
- documented as accepting strings to raise exceptions on non-string input.
- Previously, several simply passed non-string input on verbatim, others
- normalized the input, and a few correctly raised the exceptions. Behavior is
- now consistent across each.
-- [zendframework/zend-diactoros#87](https://github.com/zendframework/zend-diactoros/pull/87) fixes
- `UploadedFile` to ensure that `moveTo()` works correctly in non-SAPI
- environments when the file provided to the constructor is a path.
-
-## 1.1.2 - 2015-07-12
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#67](https://github.com/zendframework/zend-diactoros/pull/67) ensures that
- the `Stream` class only accepts `stream` resources, not any resource.
-
-## 1.1.1 - 2015-06-25
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#64](https://github.com/zendframework/zend-diactoros/pull/64) fixes the
- behavior of `JsonResponse` with regards to serialization of `null` and scalar
- values; the new behavior is to serialize them verbatim, without any casting.
-
-## 1.1.0 - 2015-06-24
-
-### Added
-
-- [zendframework/zend-diactoros#52](https://github.com/zendframework/zend-diactoros/pull/52),
- [zendframework/zend-diactoros#58](https://github.com/zendframework/zend-diactoros/pull/58),
- [zendframework/zend-diactoros#59](https://github.com/zendframework/zend-diactoros/pull/59), and
- [zendframework/zend-diactoros#61](https://github.com/zendframework/zend-diactoros/pull/61) create several
- custom response types for simplifying response creation:
-
- - `Laminas\Diactoros\Response\HtmlResponse` accepts HTML content via its
- constructor, and sets the `Content-Type` to `text/html`.
- - `Laminas\Diactoros\Response\JsonResponse` accepts data to serialize to JSON via
- its constructor, and sets the `Content-Type` to `application/json`.
- - `Laminas\Diactoros\Response\EmptyResponse` allows creating empty, read-only
- responses, with a default status code of 204.
- - `Laminas\Diactoros\Response\RedirectResponse` allows specifying a URI for the
- `Location` header in the constructor, with a default status code of 302.
-
- Each also accepts an optional status code, and optional headers (which can
- also be used to provide an alternate `Content-Type` in the case of the HTML
- and JSON responses).
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [zendframework/zend-diactoros#43](https://github.com/zendframework/zend-diactoros/pull/43) removed both
- `ServerRequestFactory::marshalUri()` and `ServerRequestFactory::marshalHostAndPort()`,
- which were deprecated prior to the 1.0 release.
-
-### Fixed
-
-- [zendframework/zend-diactoros#29](https://github.com/zendframework/zend-diactoros/pull/29) fixes request
- method validation to allow any valid token as defined by [RFC
- 7230](http://tools.ietf.org/html/rfc7230#appendix-B). This allows usage of
- custom request methods, vs a static, hard-coded list.
-
-## 1.0.5 - 2015-06-24
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#60](https://github.com/zendframework/zend-diactoros/pull/60) fixes
- the behavior of `UploadedFile` when the `$errorStatus` provided at
- instantiation is not `UPLOAD_ERR_OK`. Prior to the fix, an
- `InvalidArgumentException` would occur at instantiation due to the fact that
- the upload file was missing or invalid. With the fix, no exception is raised
- until a call to `moveTo()` or `getStream()` is made.
-
-## 1.0.4 - 2015-06-23
-
-This is a security release.
-
-A patch has been applied to `Laminas\Diactoros\Uri::filterPath()` that ensures that
-paths can only begin with a single leading slash. This prevents the following
-potential security issues:
-
-- XSS vectors. If the URI path is used for links or form targets, this prevents
- cases where the first segment of the path resembles a domain name, thus
- creating scheme-relative links such as `//example.com/foo`. With the patch,
- the leading double slash is reduced to a single slash, preventing the XSS
- vector.
-- Open redirects. If the URI path is used for `Location` or `Link` headers,
- without a scheme and authority, potential for open redirects exist if clients
- do not prepend the scheme and authority. Again, preventing a double slash
- corrects the vector.
-
-If you are using `Laminas\Diactoros\Uri` for creating links, form targets, or
-redirect paths, and only using the path segment, we recommend upgrading
-immediately.
-
-### Added
-
-- [zendframework/zend-diactoros#25](https://github.com/zendframework/zend-diactoros/pull/25) adds
- documentation. Documentation is written in markdown, and can be converted to
- HTML using [bookdown](http://bookdown.io). New features now MUST include
- documentation for acceptance.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#51](https://github.com/zendframework/zend-diactoros/pull/51) fixes
- `MessageTrait::getHeaderLine()` to return an empty string instead of `null` if
- the header is undefined (which is the behavior specified in PSR-7).
-- [zendframework/zend-diactoros#57](https://github.com/zendframework/zend-diactoros/pull/57) fixes the
- behavior of how the `ServerRequestFactory` marshals upload files when they are
- represented as a nested associative array.
-- [zendframework/zend-diactoros#49](https://github.com/zendframework/zend-diactoros/pull/49) provides several
- fixes that ensure that Diactoros complies with the PSR-7 specification:
- - `MessageInterface::getHeaderLine()` MUST return a string (that string CAN be
- empty). Previously, Diactoros would return `null`.
- - If no `Host` header is set, the `$preserveHost` flag MUST be ignored when
- calling `withUri()` (previously, Diactoros would not set the `Host` header
- if `$preserveHost` was `true`, but no `Host` header was present).
- - The request method MUST be a string; it CAN be empty. Previously, Diactoros
- would return `null`.
- - The request MUST return a `UriInterface` instance from `getUri()`; that
- instance CAN be empty. Previously, Diactoros would return `null`; now it
- lazy-instantiates an empty `Uri` instance on initialization.
-- [ZF2015-05](https://getlaminas.org/security/advisory/ZF2015-05) was
- addressed by altering `Uri::filterPath()` to prevent emitting a path prepended
- with multiple slashes.
-
-## 1.0.3 - 2015-06-04
-
-### Added
-
-- [zendframework/zend-diactoros#48](https://github.com/zendframework/zend-diactoros/pull/48) drops the
- minimum supported PHP version to 5.4, to allow an easier upgrade path for
- Symfony 2.7 users, and potential Drupal 8 usage.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 1.0.2 - 2015-06-04
-
-### Added
-
-- [zendframework/zend-diactoros#27](https://github.com/zendframework/zend-diactoros/pull/27) adds phonetic
- pronunciation of "Diactoros" to the README file.
-- [zendframework/zend-diactoros#36](https://github.com/zendframework/zend-diactoros/pull/36) adds property
- annotations to the class-level docblock of `Laminas\Diactoros\RequestTrait` to
- ensure properties inherited from the `MessageTrait` are inherited by
- implementations.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
--
-### Fixed
-
-- [zendframework/zend-diactoros#41](https://github.com/zendframework/zend-diactoros/pull/41) fixes the
- namespace for test files to begin with `LaminasTest` instead of `Laminas`.
-- [zendframework/zend-diactoros#46](https://github.com/zendframework/zend-diactoros/pull/46) ensures that
- the cookie and query params for the `ServerRequest` implementation are
- initialized as arrays.
-- [zendframework/zend-diactoros#47](https://github.com/zendframework/zend-diactoros/pull/47) modifies the
- internal logic in `HeaderSecurity::isValid()` to use a regular expression
- instead of character-by-character comparisons, improving performance.
-
-## 1.0.1 - 2015-05-26
-
-### Added
-
-- [zendframework/zend-diactoros#10](https://github.com/zendframework/zend-diactoros/pull/10) adds
- `Laminas\Diactoros\RelativeStream`, which will return stream contents relative to
- a given offset (i.e., a subset of the stream). `AbstractSerializer` was
- updated to create a `RelativeStream` when creating the body of a message,
- which will prevent duplication of the stream in-memory.
-- [zendframework/zend-diactoros#21](https://github.com/zendframework/zend-diactoros/pull/21) adds a
- `.gitattributes` file that excludes directories and files not needed for
- production; this will further minify the package for production use cases.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-diactoros#9](https://github.com/zendframework/zend-diactoros/pull/9) ensures that
- attributes are initialized to an empty array, ensuring that attempts to
- retrieve single attributes when none are defined will not produce errors.
-- [zendframework/zend-diactoros#14](https://github.com/zendframework/zend-diactoros/pull/14) updates
- `Laminas\Diactoros\Request` to use a `php://temp` stream by default instead of
- `php://memory`, to ensure requests do not create an out-of-memory condition.
-- [zendframework/zend-diactoros#15](https://github.com/zendframework/zend-diactoros/pull/15) updates
- `Laminas\Diactoros\Stream` to ensure that write operations trigger an exception
- if the stream is not writeable. Additionally, it adds more robust logic for
- determining if a stream is writeable.
-
-## 1.0.0 - 2015-05-21
-
-First stable release, and first release as `laminas-diactoros`.
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
# laminas-diactoros
-Master:
-[![Build status][Master image]][Master]
-[![Coverage Status][Master coverage image]][Master coverage]
-Develop:
-[![Build status][Develop image]][Develop]
-[![Coverage Status][Develop coverage image]][Develop coverage]
+[![Build Status](https://github.com/laminas/laminas-diactoros/workflows/Continuous%20Integration/badge.svg)](https://github.com/laminas/laminas-diactoros/actions/workflows/continuous-integration.yml)
+
+> ## 🇷🇺 Русским гражданам
+>
+> Мы, участники Laminas, родились и живем в разных странах. У многих из нас есть друзья, родственники и коллеги как в России, так и в Украине. Некоторые из нас родились в России. Некоторые из нас живут в России. У некоторых бабушки и дедушки сражались с фашистами во Второй мировой войне. Здесь никто не поддерживает фашизм.
+>
+> У одного из нас есть украинская родственница, которая спаслась из дома вместе с сыном. Поезд задержался из-за бомбежки на дороге впереди. У нас есть друзья, которые прячутся в бомбоубежищах. Мы с тревогой ждем весточки от них после воздушных налетов, которые беспорядочно наносят удары и попадают по больницам, школам, детским садам и домам. Мы не берем это из каких-либо СМИ. Мы наблюдаем это напрямую.
+>
+> Вы доверяете нам достаточно, чтоб использовать наши программы, и мы просим вас довериться нам вновь. Мы нуждаемся в помощи. Выходите и протестуйте против этой бесполезной войны. Остановите кровопролитие. Скажите "Нет войне!"
+>
+> ## 🇺🇸 To Citizens of Russia
+>
+> We at Laminas come from all over the world. Many of us have friends, family and colleagues in both Russia and Ukraine. Some of us were born in Russia. Some of us currently live in Russia. Some have grandparents who fought Nazis in World War II. Nobody here supports fascism.
+>
+> One team member has a Ukrainian relative who fled her home with her son. The train was delayed due to bombing on the road ahead. We have friends who are hiding in bomb shelters. We anxiously follow up on them after the air raids, which indiscriminately fire at hospitals, schools, kindergartens and houses. We're not taking this from any media. These are our actual experiences.
+>
+> You trust us enough to use our software. We ask that you trust us to say the truth on this. We need your help. Go out and protest this unnecessary war. Stop the bloodshed. Say "stop the war!"
> Diactoros (pronunciation: `/dɪʌktɒrɒs/`): an epithet for Hermes, meaning literally, "the messenger."
[PSR-7 HTTP message interfaces](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-7-http-message.md)
and [PSR-17 HTTP message factory interfaces](https://www.php-fig.org/psr/psr-17).
-* File issues at https://github.com/laminas/laminas-diactoros/issues
-* Issue patches to https://github.com/laminas/laminas-diactoros/pulls
+- File issues at https://github.com/laminas/laminas-diactoros/issues
+- Issue patches to https://github.com/laminas/laminas-diactoros/pulls
## Documentation
Source files for documentation are [in the docs/ tree](docs/).
- [Master]: https://travis-ci.com/laminas/laminas-diactoros
- [Master image]: https://travis-ci.com/laminas/laminas-diactoros.svg?branch=master
- [Master coverage image]: https://img.shields.io/coveralls/laminas/laminas-diactoros/master.svg
- [Master coverage]: https://coveralls.io/r/laminas/laminas-diactoros?branch=master
- [Develop]: https://github.com/laminas/laminas-diactoros/tree/develop
- [Develop image]: https://travis-ci.com/laminas/laminas-diactoros.svg?branch=develop
- [Develop coverage image]: https://coveralls.io/repos/laminas/laminas-diactoros/badge.svg?branch=develop
- [Develop coverage]: https://coveralls.io/r/laminas/laminas-diactoros?branch=develop
+-----
+
+## Contributing and Support
+
+- If you need support with the project, read [the support documentation](https://github.com/laminas/.github/blob/main/SUPPORT.md).
+- If you wish to contribute to the project, read the [contributing guidelines](https://github.com/laminas/.github/blob/main/CONTRIBUTING.md) as well as the [Code of Conduct](https://github.com/laminas/.github/blob/main/CODE_OF_CONDUCT.md).
+- For reporting security issues, please review our [security policy](https://github.com/laminas/.github/blob/main/SECURITY.md).
"forum": "https://discourse.laminas.dev"
},
"config": {
- "sort-packages": true
+ "sort-packages": true,
+ "platform": {
+ "php": "7.3.99"
+ }
},
"extra": {
"laminas": {
}
},
"require": {
- "php": "^7.1",
- "laminas/laminas-zendframework-bridge": "^1.0",
+ "php": "^7.3 || ~8.0.0 || ~8.1.0",
"psr/http-factory": "^1.0",
"psr/http-message": "^1.0"
},
"ext-dom": "*",
"ext-gd": "*",
"ext-libxml": "*",
- "http-interop/http-factory-tests": "^0.5.0",
+ "http-interop/http-factory-tests": "^0.8.0",
"laminas/laminas-coding-standard": "~1.0.0",
- "php-http/psr7-integration-tests": "^1.0",
- "phpunit/phpunit": "^7.5.18"
+ "php-http/psr7-integration-tests": "^1.1",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.1",
+ "psalm/plugin-phpunit": "^0.14.0",
+ "vimeo/psalm": "^4.3"
},
"provide": {
"psr/http-factory-implementation": "1.0",
"psr/http-message-implementation": "1.0"
},
"conflict": {
- "phpspec/prophecy": "<1.9.0"
+ "phpspec/prophecy": "<1.9.0",
+ "zendframework/zend-diactoros": "*"
},
"autoload": {
"files": [
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"test": "phpunit --colors=always",
- "test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
- },
- "replace": {
- "zendframework/zend-diactoros": "^2.2.1"
+ "test-coverage": "phpunit --colors=always --coverage-clover clover.xml",
+ "static-analysis": "psalm --shepherd --stats"
}
}
--- /dev/null
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "764b8219d976768c2309b08663989ae9",
+ "packages": [
+ {
+ "name": "psr/http-factory",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-factory.git",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.0.0",
+ "psr/http-message": "^1.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interfaces for PSR-7 HTTP message factories",
+ "keywords": [
+ "factory",
+ "http",
+ "message",
+ "psr",
+ "psr-17",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-factory/tree/master"
+ },
+ "time": "2019-04-30T12:38:16+00:00"
+ },
+ {
+ "name": "psr/http-message",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/http-message.git",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Http\\Message\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for HTTP messages",
+ "homepage": "https://github.com/php-fig/http-message",
+ "keywords": [
+ "http",
+ "http-message",
+ "psr",
+ "psr-7",
+ "request",
+ "response"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/http-message/tree/master"
+ },
+ "time": "2016-08-06T14:39:51+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "amphp/amp",
+ "version": "v2.6.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/amp.git",
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1",
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^7 | ^8 | ^9",
+ "psalm/phar": "^3.11@dev",
+ "react/promise": "^2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/functions.php",
+ "lib/Internal/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\": "lib"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A non-blocking concurrency framework for PHP applications.",
+ "homepage": "https://amphp.org/amp",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "awaitable",
+ "concurrency",
+ "event",
+ "event-loop",
+ "future",
+ "non-blocking",
+ "promise"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/amp/issues",
+ "source": "https://github.com/amphp/amp/tree/v2.6.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-20T17:52:18+00:00"
+ },
+ {
+ "name": "amphp/byte-stream",
+ "version": "v1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/byte-stream.git",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1.4",
+ "friendsofphp/php-cs-fixer": "^2.3",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^6 || ^7 || ^8",
+ "psalm/phar": "^3.11.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\ByteStream\\": "lib"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "homepage": "http://amphp.org/byte-stream",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "non-blocking",
+ "stream"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/byte-stream/issues",
+ "source": "https://github.com/amphp/byte-stream/tree/v1.8.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2021-03-30T17:13:30+00:00"
+ },
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d",
+ "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13",
+ "phpunit/phpunit": "^6.5 || ^7"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PackageVersions\\Installer",
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "support": {
+ "issues": "https://github.com/composer/package-versions-deprecated/issues",
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-17T14:14:24+00:00"
+ },
+ {
+ "name": "composer/pcre",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/pcre/issues",
+ "source": "https://github.com/composer/pcre/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-21T20:24:37+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "3.2.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649",
+ "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.4",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/3.2.9"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-04T13:58:43+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/12f1b79476638a5615ed00ea6adbb269cec96fd8",
+ "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8",
+ "shasum": ""
+ },
+ "require": {
+ "composer/pcre": "^1",
+ "php": "^7.2.5 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-04T18:29:42+00:00"
+ },
+ {
+ "name": "dnoegel/php-xdg-base-dir",
+ "version": "v0.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "implementation of xdg base directory specification for php",
+ "support": {
+ "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues",
+ "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1"
+ },
+ "time": "2019-12-04T15:06:13+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
+ },
+ {
+ "name": "felixfbecker/advanced-json-rpc",
+ "version": "v3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "shasum": ""
+ },
+ "require": {
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "php": "^7.1 || ^8.0",
+ "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "A more advanced JSONRPC implementation",
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
+ "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
+ },
+ "time": "2021-06-11T22:34:44+00:00"
+ },
+ {
+ "name": "felixfbecker/language-server-protocol",
+ "version": "1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
+ "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
+ "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "*",
+ "squizlabs/php_codesniffer": "^3.1",
+ "vimeo/psalm": "^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "LanguageServerProtocol\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "PHP classes for the Language Server Protocol",
+ "keywords": [
+ "language",
+ "microsoft",
+ "php",
+ "server"
+ ],
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
+ "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1"
+ },
+ "time": "2021-02-22T14:02:09+00:00"
+ },
+ {
+ "name": "http-interop/http-factory-tests",
+ "version": "0.8.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/http-interop/http-factory-tests.git",
+ "reference": "7384d93cd4841647b16b3c9bfd56c0367a40fce1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/http-interop/http-factory-tests/zipball/7384d93cd4841647b16b3c9bfd56c0367a40fce1",
+ "reference": "7384d93cd4841647b16b3c9bfd56c0367a40fce1",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0",
+ "psr/http-factory": "^1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Interop\\Http\\Factory\\": "test/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Unit tests for HTTP factories",
+ "keywords": [
+ "factory",
+ "http",
+ "psr-17",
+ "psr-7",
+ "test"
+ ],
+ "support": {
+ "issues": "https://github.com/http-interop/http-factory-tests/issues",
+ "source": "https://github.com/http-interop/http-factory-tests/tree/0.8.0"
+ },
+ "time": "2020-11-02T14:43:36+00:00"
+ },
+ {
+ "name": "laminas/laminas-coding-standard",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-coding-standard.git",
+ "reference": "08880ce2fbfe62d471cd3cb766a91da630b32539"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/08880ce2fbfe62d471cd3cb766a91da630b32539",
+ "reference": "08880ce2fbfe62d471cd3cb766a91da630b32539",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-zendframework-bridge": "^1.0",
+ "squizlabs/php_codesniffer": "^2.7"
+ },
+ "replace": {
+ "zendframework/zend-coding-standard": "self.version"
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Laminas coding standard",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "Coding Standard",
+ "laminas"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-coding-standard/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-coding-standard/issues",
+ "rss": "https://github.com/laminas/laminas-coding-standard/releases.atom",
+ "source": "https://github.com/laminas/laminas-coding-standard"
+ },
+ "time": "2019-12-31T16:28:26+00:00"
+ },
+ {
+ "name": "laminas/laminas-zendframework-bridge",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-zendframework-bridge.git",
+ "reference": "88bf037259869891afce6504cacc4f8a07b24d0f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/88bf037259869891afce6504cacc4f8a07b24d0f",
+ "reference": "88bf037259869891afce6504cacc4f8a07b24d0f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "psalm/plugin-phpunit": "^0.15.1",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "laminas": {
+ "module": "Laminas\\ZendFrameworkBridge"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/autoload.php"
+ ],
+ "psr-4": {
+ "Laminas\\ZendFrameworkBridge\\": "src//"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Alias legacy ZF class names to Laminas Project equivalents.",
+ "keywords": [
+ "ZendFramework",
+ "autoloading",
+ "laminas",
+ "zf"
+ ],
+ "support": {
+ "forum": "https://discourse.laminas.dev/",
+ "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues",
+ "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom",
+ "source": "https://github.com/laminas/laminas-zendframework-bridge"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2021-12-21T14:34:37+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-13T09:40:50+00:00"
+ },
+ {
+ "name": "netresearch/jsonmapper",
+ "version": "v4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cweiske/jsonmapper.git",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
+ "squizlabs/php_codesniffer": "~3.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JsonMapper": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "OSL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Christian Weiske",
+ "email": "cweiske@cweiske.de",
+ "homepage": "http://github.com/cweiske/jsonmapper/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Map nested JSON structures onto PHP classes",
+ "support": {
+ "email": "cweiske@cweiske.de",
+ "issues": "https://github.com/cweiske/jsonmapper/issues",
+ "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
+ },
+ "time": "2020-12-01T19:48:11+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
+ },
+ "time": "2021-11-30T19:35:32+00:00"
+ },
+ {
+ "name": "openlss/lib-array2xml",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nullivex/lib-array2xml.git",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "LSS": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Bryan Tong",
+ "email": "bryan@nullivex.com",
+ "homepage": "https://www.nullivex.com"
+ },
+ {
+ "name": "Tony Butler",
+ "email": "spudz76@gmail.com",
+ "homepage": "https://www.nullivex.com"
+ }
+ ],
+ "description": "Array2XML conversion library credit to lalit.org",
+ "homepage": "https://www.nullivex.com",
+ "keywords": [
+ "array",
+ "array conversion",
+ "xml",
+ "xml conversion"
+ ],
+ "support": {
+ "issues": "https://github.com/nullivex/lib-array2xml/issues",
+ "source": "https://github.com/nullivex/lib-array2xml/tree/master"
+ },
+ "time": "2019-03-29T20:06:56+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ },
+ "time": "2021-07-20T11:28:43+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
+ },
+ "time": "2022-02-21T01:04:05+00:00"
+ },
+ {
+ "name": "php-http/psr7-integration-tests",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-http/psr7-integration-tests.git",
+ "reference": "dbc81e59655c3d927ba62b2cd38be9af334590fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-http/psr7-integration-tests/zipball/dbc81e59655c3d927ba62b2cd38be9af334590fc",
+ "reference": "dbc81e59655c3d927ba62b2cd38be9af334590fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpunit/phpunit": "^8.0 || ^9.3",
+ "psr/http-message": "^1.0"
+ },
+ "require-dev": {
+ "guzzlehttp/psr7": "^1.4",
+ "laminas/laminas-diactoros": "^2.1",
+ "nyholm/psr7": "^1.0",
+ "ringcentral/psr7": "^1.2",
+ "slim/psr7": "dev-master"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Http\\Psr7Test\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Tobias Nyholm",
+ "email": "tobias.nyholm@gmail.com"
+ }
+ ],
+ "description": "Test suite for PSR7",
+ "homepage": "http://php-http.org",
+ "keywords": [
+ "psr-7",
+ "test"
+ ],
+ "support": {
+ "issues": "https://github.com/php-http/psr7-integration-tests/issues",
+ "source": "https://github.com/php-http/psr7-integration-tests/tree/1.1.1"
+ },
+ "time": "2020-11-02T14:08:03+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ },
+ "time": "2021-10-19T17:43:47+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
+ },
+ "time": "2022-01-04T19:58:01+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.2",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0 || ^7.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
+ },
+ "time": "2021-12-08T12:19:24+00:00"
+ },
+ {
+ "name": "phpspec/prophecy-phpunit",
+ "version": "v2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy-phpunit.git",
+ "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177",
+ "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ^8",
+ "phpspec/prophecy": "^1.3",
+ "phpunit/phpunit": "^9.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\PhpUnit\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christophe Coevoet",
+ "email": "stof@notk.org"
+ }
+ ],
+ "description": "Integrating the Prophecy mocking library in PHPUnit test cases",
+ "homepage": "http://phpspec.net",
+ "keywords": [
+ "phpunit",
+ "prophecy"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy-phpunit/issues",
+ "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1"
+ },
+ "time": "2020-07-09T08:33:42+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/665a1ac0a763c51afc30d6d130dac0813092b17f",
+ "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.13.0",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.11"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-18T12:46:09+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-12-02T12:48:52+00:00"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:58:55+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T05:33:50+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "9.5.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "1883687169c017d6ae37c58883ca3994cfc34189"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1883687169c017d6ae37c58883ca3994cfc34189",
+ "reference": "1883687169c017d6ae37c58883ca3994cfc34189",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "php": ">=7.3",
+ "phpspec/prophecy": "^1.12.1",
+ "phpunit/php-code-coverage": "^9.2.7",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^2.3.4",
+ "sebastian/version": "^3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ],
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.14"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/sponsors.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-18T12:54:07+00:00"
+ },
+ {
+ "name": "psalm/plugin-phpunit",
+ "version": "0.14.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/psalm/psalm-plugin-phpunit.git",
+ "reference": "f5147be764449ff5a11bded483b622e1e868f8ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/f5147be764449ff5a11bded483b622e1e868f8ab",
+ "reference": "f5147be764449ff5a11bded483b622e1e868f8ab",
+ "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.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<7.5"
+ },
+ "require-dev": {
+ "codeception/codeception": "^4.0.3",
+ "php": "^7.3 || ^8.0",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.3.1",
+ "weirdan/codeception-psalm-module": "^0.11.0",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "type": "psalm-plugin",
+ "extra": {
+ "psalm": {
+ "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psalm\\PhpUnitPlugin\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matt Brown",
+ "email": "github@muglug.com"
+ }
+ ],
+ "description": "Psalm plugin for PHPUnit",
+ "support": {
+ "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues",
+ "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.14.0"
+ },
+ "time": "2020-12-08T22:25:25+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf",
+ "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/1.1.1"
+ },
+ "time": "2021-03-05T17:36:06+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
+ },
+ "time": "2021-05-03T11:20:27+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:08:49+00:00"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:08:54+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:52:27+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:52:38+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-11-11T14:18:36+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-14T08:28:10+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:42:11+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:17:30+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:45:17+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "2.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-06-15T12:49:02+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:39:44+00:00"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "2.9.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
+ "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "bin": [
+ "scripts/phpcs",
+ "scripts/phpcbf"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "CodeSniffer.php",
+ "CodeSniffer/CLI.php",
+ "CodeSniffer/Exception.php",
+ "CodeSniffer/File.php",
+ "CodeSniffer/Fixer.php",
+ "CodeSniffer/Report.php",
+ "CodeSniffer/Reporting.php",
+ "CodeSniffer/Sniff.php",
+ "CodeSniffer/Tokens.php",
+ "CodeSniffer/Reports/",
+ "CodeSniffer/Tokenizers/",
+ "CodeSniffer/DocGenerators/",
+ "CodeSniffer/Standards/AbstractPatternSniff.php",
+ "CodeSniffer/Standards/AbstractScopeSniff.php",
+ "CodeSniffer/Standards/AbstractVariableSniff.php",
+ "CodeSniffer/Standards/IncorrectPatternException.php",
+ "CodeSniffer/Standards/Generic/Sniffs/",
+ "CodeSniffer/Standards/MySource/Sniffs/",
+ "CodeSniffer/Standards/PEAR/Sniffs/",
+ "CodeSniffer/Standards/PSR1/Sniffs/",
+ "CodeSniffer/Standards/PSR2/Sniffs/",
+ "CodeSniffer/Standards/Squiz/Sniffs/",
+ "CodeSniffer/Standards/Zend/Sniffs/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "lead"
+ }
+ ],
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "http://www.squizlabs.com/php-codesniffer",
+ "keywords": [
+ "phpcs",
+ "standards"
+ ],
+ "support": {
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ },
+ "time": "2018-11-07T22:31:41+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "a2a86ec353d825c75856c6fd14fac416a7bdb6b8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/a2a86ec353d825c75856c6fd14fac416a7bdb6b8",
+ "reference": "a2a86ec353d825c75856c6fd14fac416a7bdb6b8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.9",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.1|^6.0"
+ },
+ "conflict": {
+ "psr/log": ">=3",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+ "symfony/lock": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.4.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T16:28:35+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8",
+ "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-12T14:48:14+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-20T20:35:02+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783",
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-23T21:10:46+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-30T18:21:41+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5",
+ "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-06-05T21:20:04+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9",
+ "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-13T13:58:33+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc",
+ "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.1",
+ "symfony/deprecation-contracts": "^2.1"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v2.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-04T16:48:04+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10",
+ "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "~1.15"
+ },
+ "conflict": {
+ "symfony/translation-contracts": ">=3.0"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0|^6.0",
+ "symfony/http-client": "^4.4|^5.0|^6.0",
+ "symfony/translation-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.4|^5.0|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v5.4.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:53:40+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-28T10:34:58+00:00"
+ },
+ {
+ "name": "vimeo/psalm",
+ "version": "4.21.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vimeo/psalm.git",
+ "reference": "d8bec4c7aaee111a532daec32fb09de5687053d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/d8bec4c7aaee111a532daec32fb09de5687053d1",
+ "reference": "d8bec4c7aaee111a532daec32fb09de5687053d1",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2.4.2",
+ "amphp/byte-stream": "^1.5",
+ "composer/package-versions-deprecated": "^1.8.0",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0",
+ "dnoegel/php-xdg-base-dir": "^0.1.1",
+ "ext-ctype": "*",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "felixfbecker/advanced-json-rpc": "^3.0.3",
+ "felixfbecker/language-server-protocol": "^1.5",
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "nikic/php-parser": "^4.13",
+ "openlss/lib-array2xml": "^1.0",
+ "php": "^7.1|^8",
+ "sebastian/diff": "^3.0 || ^4.0",
+ "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0",
+ "webmozart/path-util": "^2.3"
+ },
+ "provide": {
+ "psalm/psalm": "self.version"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.2",
+ "brianium/paratest": "^4.0||^6.0",
+ "ext-curl": "*",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpdocumentor/reflection-docblock": "^5",
+ "phpmyadmin/sql-parser": "5.1.0||dev-master",
+ "phpspec/prophecy": ">=1.9.0",
+ "phpunit/phpunit": "^9.0",
+ "psalm/plugin-phpunit": "^0.16",
+ "slevomat/coding-standard": "^7.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "symfony/process": "^4.3 || ^5.0 || ^6.0",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "suggest": {
+ "ext-curl": "In order to send data to shepherd",
+ "ext-igbinary": "^2.0.5 is required, used to serialize caching data"
+ },
+ "bin": [
+ "psalm",
+ "psalm-language-server",
+ "psalm-plugin",
+ "psalm-refactor",
+ "psalter"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev",
+ "dev-3.x": "3.x-dev",
+ "dev-2.x": "2.x-dev",
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php",
+ "src/spl_object_id.php"
+ ],
+ "psr-4": {
+ "Psalm\\": "src/Psalm/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Brown"
+ }
+ ],
+ "description": "A static analysis tool for finding errors in PHP applications",
+ "keywords": [
+ "code",
+ "inspection",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/vimeo/psalm/issues",
+ "source": "https://github.com/vimeo/psalm/tree/4.21.0"
+ },
+ "time": "2022-02-18T04:34:15+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ },
+ "time": "2021-03-09T10:59:23+00:00"
+ },
+ {
+ "name": "webmozart/path-util",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/path-util.git",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "webmozart/assert": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\PathUtil\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
+ "support": {
+ "issues": "https://github.com/webmozart/path-util/issues",
+ "source": "https://github.com/webmozart/path-util/tree/2.3.0"
+ },
+ "abandoned": "symfony/filesystem",
+ "time": "2015-12-17T08:42:14+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "platform-dev": {
+ "ext-curl": "*",
+ "ext-dom": "*",
+ "ext-gd": "*",
+ "ext-libxml": "*"
+ },
+ "platform-overrides": {
+ "php": "7.3.99"
+ },
+ "plugin-api-version": "2.2.0"
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.21.0@d8bec4c7aaee111a532daec32fb09de5687053d1">
+ <file src="src/CallbackStream.php">
+ <ImplementedReturnTypeMismatch occurrences="1">
+ <code>null|callable</code>
+ </ImplementedReturnTypeMismatch>
+ <MixedAssignment occurrences="1">
+ <code>$contents</code>
+ </MixedAssignment>
+ </file>
+ <file src="src/Exception/DeserializationException.php">
+ <InvalidScalarArgument occurrences="2">
+ <code>$previous->getCode()</code>
+ <code>$previous->getCode()</code>
+ </InvalidScalarArgument>
+ </file>
+ <file src="src/Exception/InvalidStreamPointerPositionException.php">
+ <MissingParamType occurrences="1">
+ <code>$code</code>
+ </MissingParamType>
+ <MixedArgument occurrences="1">
+ <code>$code</code>
+ </MixedArgument>
+ </file>
+ <file src="src/Exception/UploadedFileAlreadyMovedException.php">
+ <MissingParamType occurrences="1">
+ <code>$code</code>
+ </MissingParamType>
+ <MixedArgument occurrences="1">
+ <code>$code</code>
+ </MixedArgument>
+ </file>
+ <file src="src/MessageTrait.php">
+ <DocblockTypeContradiction occurrences="2">
+ <code>! is_string($name)</code>
+ <code>is_string($version)</code>
+ </DocblockTypeContradiction>
+ <InvalidArrayOffset occurrences="4">
+ <code>$new->headerNames[$normalized]</code>
+ <code>$this->headerNames[strtolower($header)]</code>
+ <code>$this->headerNames[strtolower($header)]</code>
+ <code>$this->headerNames[strtolower($name)]</code>
+ </InvalidArrayOffset>
+ <InvalidPropertyAssignmentValue occurrences="1">
+ <code>$headerNames</code>
+ </InvalidPropertyAssignmentValue>
+ <MissingParamType occurrences="1">
+ <code>$stream</code>
+ </MissingParamType>
+ <MixedArgumentTypeCoercion occurrences="2">
+ <code>$header</code>
+ <code>$header</code>
+ </MixedArgumentTypeCoercion>
+ <MixedAssignment occurrences="1">
+ <code>$value</code>
+ </MixedAssignment>
+ <MixedPropertyTypeCoercion occurrences="2">
+ <code>$headers</code>
+ <code>$new->headers</code>
+ </MixedPropertyTypeCoercion>
+ <ParamNameMismatch occurrences="2">
+ <code>$header</code>
+ <code>$header</code>
+ </ParamNameMismatch>
+ <PropertyTypeCoercion occurrences="2">
+ <code>$new->headerNames</code>
+ <code>$new->headers</code>
+ </PropertyTypeCoercion>
+ </file>
+ <file src="src/PhpInputStream.php">
+ <MissingParamType occurrences="1">
+ <code>$maxLength</code>
+ </MissingParamType>
+ <MixedArgument occurrences="1">
+ <code>$maxLength</code>
+ </MixedArgument>
+ <PossiblyNullArgument occurrences="1">
+ <code>$this->resource</code>
+ </PossiblyNullArgument>
+ <PropertyNotSetInConstructor occurrences="1">
+ <code>PhpInputStream</code>
+ </PropertyNotSetInConstructor>
+ </file>
+ <file src="src/RelativeStream.php">
+ <PossiblyNullOperand occurrences="1">
+ <code>$this->decoratedStream->getSize()</code>
+ </PossiblyNullOperand>
+ </file>
+ <file src="src/Request/ArraySerializer.php">
+ <LessSpecificReturnStatement occurrences="1"/>
+ <MixedArgument occurrences="6">
+ <code>$headers</code>
+ <code>$method</code>
+ <code>$protocolVersion</code>
+ <code>$requestTarget</code>
+ <code>$uri</code>
+ <code>self::getValueFromKey($serializedRequest, 'body')</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="5">
+ <code>$headers</code>
+ <code>$method</code>
+ <code>$protocolVersion</code>
+ <code>$requestTarget</code>
+ <code>$uri</code>
+ </MixedAssignment>
+ <MoreSpecificReturnType occurrences="1">
+ <code>Request</code>
+ </MoreSpecificReturnType>
+ </file>
+ <file src="src/Request/Serializer.php">
+ <LessSpecificReturnStatement occurrences="1"/>
+ <MixedArgument occurrences="5">
+ <code>$body</code>
+ <code>$headers</code>
+ <code>$method</code>
+ <code>$requestTarget</code>
+ <code>$version</code>
+ </MixedArgument>
+ <MixedArgumentTypeCoercion occurrences="1">
+ <code>$request->getHeaders()</code>
+ </MixedArgumentTypeCoercion>
+ <MoreSpecificReturnType occurrences="1">
+ <code>Request</code>
+ </MoreSpecificReturnType>
+ </file>
+ <file src="src/RequestTrait.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>is_string($method)</code>
+ </DocblockTypeContradiction>
+ <LessSpecificImplementedReturnType occurrences="3">
+ <code>RequestInterface</code>
+ <code>RequestInterface</code>
+ <code>RequestInterface</code>
+ </LessSpecificImplementedReturnType>
+ <MoreSpecificImplementedParamType occurrences="1">
+ <code>$requestTarget</code>
+ </MoreSpecificImplementedParamType>
+ <PossiblyNullOperand occurrences="2">
+ <code>$this->uri->getPort()</code>
+ <code>$uri->getPort()</code>
+ </PossiblyNullOperand>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>$uri === null</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="src/Response.php">
+ <DocblockTypeContradiction occurrences="5">
+ <code>! is_numeric($code)</code>
+ <code>gettype($code)</code>
+ <code>is_float($code)</code>
+ <code>is_string($reasonPhrase)</code>
+ </DocblockTypeContradiction>
+ <MixedArgument occurrences="2">
+ <code>static::MAX_STATUS_CODE_VALUE</code>
+ <code>static::MIN_STATUS_CODE_VALUE</code>
+ </MixedArgument>
+ <RedundantCastGivenDocblockType occurrences="1">
+ <code>(int) $code</code>
+ </RedundantCastGivenDocblockType>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>is_scalar($code)</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="src/Response/ArraySerializer.php">
+ <MixedArgument occurrences="5">
+ <code>$headers</code>
+ <code>$protocolVersion</code>
+ <code>$reasonPhrase</code>
+ <code>$statusCode</code>
+ <code>self::getValueFromKey($serializedResponse, 'body')</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="4">
+ <code>$headers</code>
+ <code>$protocolVersion</code>
+ <code>$reasonPhrase</code>
+ <code>$statusCode</code>
+ </MixedAssignment>
+ </file>
+ <file src="src/Response/EmptyResponse.php">
+ <UnsafeInstantiation occurrences="1">
+ <code>new static(204, $headers)</code>
+ </UnsafeInstantiation>
+ </file>
+ <file src="src/Response/HtmlResponse.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>is_string($html)</code>
+ </DocblockTypeContradiction>
+ </file>
+ <file src="src/Response/InjectContentTypeTrait.php">
+ <MixedArgument occurrences="1">
+ <code>$item</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="1">
+ <code>$hasContentType</code>
+ </MixedAssignment>
+ </file>
+ <file src="src/Response/JsonResponse.php">
+ <UnusedFunctionCall occurrences="1">
+ <code>json_encode</code>
+ </UnusedFunctionCall>
+ </file>
+ <file src="src/Response/RedirectResponse.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>gettype($uri)</code>
+ </DocblockTypeContradiction>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>is_object($uri)</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="src/Response/Serializer.php">
+ <MixedArgument occurrences="5">
+ <code>$body</code>
+ <code>$headers</code>
+ <code>$reasonPhrase</code>
+ <code>$status</code>
+ <code>$version</code>
+ </MixedArgument>
+ <MixedArgumentTypeCoercion occurrences="1">
+ <code>$response->getHeaders()</code>
+ </MixedArgumentTypeCoercion>
+ <RedundantCast occurrences="1">
+ <code>(int) $status</code>
+ </RedundantCast>
+ </file>
+ <file src="src/Response/TextResponse.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>is_string($text)</code>
+ </DocblockTypeContradiction>
+ </file>
+ <file src="src/Response/XmlResponse.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>is_string($xml)</code>
+ </DocblockTypeContradiction>
+ </file>
+ <file src="src/ServerRequest.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>! is_array($data) && ! is_object($data) && null !== $data</code>
+ </DocblockTypeContradiction>
+ <ParamNameMismatch occurrences="2">
+ <code>$attribute</code>
+ <code>$attribute</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="src/ServerRequestFactory.php">
+ <MixedArgument occurrences="1">
+ <code>$headers['cookie']</code>
+ </MixedArgument>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>is_callable(self::$apacheRequestHeaders)</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="src/Stream.php">
+ <InvalidArgument occurrences="1"/>
+ <MixedInferredReturnType occurrences="1">
+ <code>?int</code>
+ </MixedInferredReturnType>
+ <MixedReturnStatement occurrences="1">
+ <code>$stats['size']</code>
+ </MixedReturnStatement>
+ <PossiblyInvalidArgument occurrences="1">
+ <code>$resource</code>
+ </PossiblyInvalidArgument>
+ <PossiblyInvalidPropertyAssignmentValue occurrences="1">
+ <code>$resource</code>
+ </PossiblyInvalidPropertyAssignmentValue>
+ <PossiblyNullArgument occurrences="4">
+ <code>$resource</code>
+ <code>$this->resource</code>
+ <code>$this->resource</code>
+ <code>$this->resource</code>
+ </PossiblyNullArgument>
+ <PropertyNotSetInConstructor occurrences="1">
+ <code>$stream</code>
+ </PropertyNotSetInConstructor>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>is_resource($resource)</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="src/StreamFactory.php">
+ <ParamNameMismatch occurrences="1">
+ <code>$file</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="src/UploadedFile.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>! is_string($targetPath)</code>
+ </DocblockTypeContradiction>
+ <PossiblyNullArgument occurrences="1">
+ <code>$this->file</code>
+ </PossiblyNullArgument>
+ </file>
+ <file src="src/UploadedFileFactory.php">
+ <PossiblyNullArgument occurrences="1">
+ <code>$size</code>
+ </PossiblyNullArgument>
+ </file>
+ <file src="src/Uri.php">
+ <DocblockTypeContradiction occurrences="10">
+ <code>! is_numeric($port)</code>
+ <code>is_float($port)</code>
+ <code>is_object($port)</code>
+ <code>is_string($fragment)</code>
+ <code>is_string($host)</code>
+ <code>is_string($path)</code>
+ <code>is_string($query)</code>
+ <code>is_string($scheme)</code>
+ <code>is_string($user)</code>
+ <code>null !== $password && ! is_string($password)</code>
+ </DocblockTypeContradiction>
+ <MixedArgument occurrences="5">
+ <code>$key</code>
+ <code>$key</code>
+ <code>$matches[0]</code>
+ <code>$port</code>
+ <code>$value</code>
+ </MixedArgument>
+ <PossiblyNullOperand occurrences="1">
+ <code>$this->port</code>
+ </PossiblyNullOperand>
+ <RedundantCastGivenDocblockType occurrences="1">
+ <code>(int) $port</code>
+ </RedundantCastGivenDocblockType>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>gettype($port)</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="src/functions/create_uploaded_file.legacy.php">
+ <MixedArgument occurrences="1">
+ <code>func_get_args()</code>
+ </MixedArgument>
+ </file>
+ <file src="src/functions/create_uploaded_file.php">
+ <MixedArgument occurrences="4">
+ <code>$spec['error']</code>
+ <code>$spec['name'] ?? null</code>
+ <code>$spec['tmp_name']</code>
+ <code>$spec['type'] ?? null</code>
+ </MixedArgument>
+ </file>
+ <file src="src/functions/marshal_headers_from_sapi.legacy.php">
+ <MixedArgument occurrences="1">
+ <code>func_get_args()</code>
+ </MixedArgument>
+ </file>
+ <file src="src/functions/marshal_headers_from_sapi.php">
+ <MixedAssignment occurrences="3">
+ <code>$headers[$name]</code>
+ <code>$headers[$name]</code>
+ <code>$value</code>
+ </MixedAssignment>
+ </file>
+ <file src="src/functions/marshal_method_from_sapi.legacy.php">
+ <MixedArgument occurrences="1">
+ <code>func_get_args()</code>
+ </MixedArgument>
+ </file>
+ <file src="src/functions/marshal_method_from_sapi.php">
+ <MixedInferredReturnType occurrences="1">
+ <code>string</code>
+ </MixedInferredReturnType>
+ <MixedReturnStatement occurrences="1">
+ <code>$server['REQUEST_METHOD'] ?? 'GET'</code>
+ </MixedReturnStatement>
+ </file>
+ <file src="src/functions/marshal_protocol_version_from_sapi.legacy.php">
+ <MixedArgument occurrences="1">
+ <code>func_get_args()</code>
+ </MixedArgument>
+ </file>
+ <file src="src/functions/marshal_protocol_version_from_sapi.php">
+ <MixedArgument occurrences="1">
+ <code>$server['SERVER_PROTOCOL']</code>
+ </MixedArgument>
+ </file>
+ <file src="src/functions/marshal_uri_from_sapi.legacy.php">
+ <MixedArgument occurrences="1">
+ <code>func_get_args()</code>
+ </MixedArgument>
+ </file>
+ <file src="src/functions/marshal_uri_from_sapi.php">
+ <MissingClosureParamType occurrences="3">
+ <code>$default</code>
+ <code>$host</code>
+ <code>$https</code>
+ </MissingClosureParamType>
+ <MissingClosureReturnType occurrences="2">
+ <code>function ($host) {</code>
+ <code>function (string $name, array $headers, $default = null) {</code>
+ </MissingClosureReturnType>
+ <MixedArgument occurrences="8">
+ <code>$getHeaderFromArray('x-forwarded-proto', $headers, '')</code>
+ <code>$host</code>
+ <code>$host</code>
+ <code>$host</code>
+ <code>$host</code>
+ <code>$port</code>
+ <code>$requestUri</code>
+ <code>$server['QUERY_STRING']</code>
+ </MixedArgument>
+ <MixedArgumentTypeCoercion occurrences="2">
+ <code>$headers[$header]</code>
+ <code>$host</code>
+ </MixedArgumentTypeCoercion>
+ <MixedAssignment occurrences="5">
+ <code>$host</code>
+ <code>$iisUrlRewritten</code>
+ <code>$origPathInfo</code>
+ <code>$unencodedUrl</code>
+ <code>$value</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="2">
+ <code>array</code>
+ <code>string</code>
+ </MixedInferredReturnType>
+ <MixedOperand occurrences="1">
+ <code>$server['SERVER_ADDR']</code>
+ </MixedOperand>
+ <MixedReturnStatement occurrences="3">
+ <code>$defaults</code>
+ <code>$origPathInfo</code>
+ <code>$unencodedUrl</code>
+ </MixedReturnStatement>
+ <PossiblyFalseOperand occurrences="1">
+ <code>strrpos($host, ':')</code>
+ </PossiblyFalseOperand>
+ </file>
+ <file src="src/functions/normalize_server.legacy.php">
+ <MixedArgument occurrences="1">
+ <code>func_get_args()</code>
+ </MixedArgument>
+ </file>
+ <file src="src/functions/normalize_server.php">
+ <MixedArrayAccess occurrences="2">
+ <code>$apacheRequestHeaders['Authorization']</code>
+ <code>$apacheRequestHeaders['authorization']</code>
+ </MixedArrayAccess>
+ <MixedAssignment occurrences="3">
+ <code>$apacheRequestHeaders</code>
+ <code>$server['HTTP_AUTHORIZATION']</code>
+ <code>$server['HTTP_AUTHORIZATION']</code>
+ </MixedAssignment>
+ </file>
+ <file src="src/functions/normalize_uploaded_files.legacy.php">
+ <MixedArgument occurrences="1">
+ <code>func_get_args()</code>
+ </MixedArgument>
+ </file>
+ <file src="src/functions/normalize_uploaded_files.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$normalized</code>
+ </InvalidReturnStatement>
+ <InvalidReturnType occurrences="1">
+ <code>UploadedFileInterface[]</code>
+ </InvalidReturnType>
+ <MixedAssignment occurrences="3">
+ <code>$normalized[$key]</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MixedAssignment>
+ <MixedFunctionCall occurrences="2"/>
+ <MixedInferredReturnType occurrences="1">
+ <code>array</code>
+ </MixedInferredReturnType>
+ <MixedReturnStatement occurrences="1"/>
+ </file>
+ <file src="src/functions/parse_cookie_header.legacy.php">
+ <MissingParamType occurrences="1">
+ <code>$cookieHeader</code>
+ </MissingParamType>
+ <MixedArgument occurrences="1">
+ <code>func_get_args()</code>
+ </MixedArgument>
+ </file>
+ <file src="test/CallbackStreamTest.php">
+ <MissingClosureReturnType occurrences="1">
+ <code>function () {</code>
+ </MissingClosureReturnType>
+ <MissingParamType occurrences="2">
+ <code>$callback</code>
+ <code>$expected</code>
+ </MissingParamType>
+ <MixedArgument occurrences="1">
+ <code>$callback</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="2">
+ <code>$ret</code>
+ <code>$ret</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="1">
+ <code>array</code>
+ </MixedInferredReturnType>
+ </file>
+ <file src="test/HeaderSecurityTest.php">
+ <MissingParamType occurrences="5">
+ <code>$assertion</code>
+ <code>$expected</code>
+ <code>$value</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="6">
+ <code>assertValues</code>
+ <code>getFilterValues</code>
+ <code>testAssertValidRaisesExceptionForInvalidValue</code>
+ <code>testFiltersValuesPerRfc7230</code>
+ <code>testValidatesValuesPerRfc7230</code>
+ <code>validateValues</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="2">
+ <code>$value</code>
+ <code>$value</code>
+ </MixedArgument>
+ </file>
+ <file src="test/Integration/UploadedFileTest.php">
+ <PossiblyNullArgument occurrences="1">
+ <code>$stream->getSize()</code>
+ </PossiblyNullArgument>
+ </file>
+ <file src="test/MessageTraitTest.php">
+ <MixedArgument occurrences="4">
+ <code>$value</code>
+ <code>$value</code>
+ <code>$value</code>
+ <code>$version</code>
+ </MixedArgument>
+ <MixedArgumentTypeCoercion occurrences="2">
+ <code>[ $value ]</code>
+ <code>[ $value ]</code>
+ </MixedArgumentTypeCoercion>
+ </file>
+ <file src="test/PhpInputStreamTest.php">
+ <MissingParamType occurrences="2">
+ <code>$message</code>
+ <code>$test</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="8">
+ <code>assertStreamContents</code>
+ <code>getFileContents</code>
+ <code>testCanReadStreamIteratively</code>
+ <code>testCastingToStringReturnsFullContentsRegardlesOfPriorReads</code>
+ <code>testGetContentsReturnCacheWhenReachedEof</code>
+ <code>testGetContentsReturnsRemainingContentsOfStream</code>
+ <code>testMultipleCastsToStringReturnSameContentsEvenIfReadsOccur</code>
+ <code>testStreamIsNeverWritable</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="2">
+ <code>$contents</code>
+ <code>$message</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="2">
+ <code>$content</code>
+ <code>$contents</code>
+ </MixedAssignment>
+ </file>
+ <file src="test/RelativeStreamTest.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>assertSame</code>
+ </DocblockTypeContradiction>
+ <MissingReturnType occurrences="18">
+ <code>testCanReadContentFromNotSeekableResource</code>
+ <code>testClose</code>
+ <code>testDetach</code>
+ <code>testGetContents</code>
+ <code>testGetContentsRaisesExceptionWhenPointerIsBehindOffset</code>
+ <code>testGetMetadata</code>
+ <code>testGetSize</code>
+ <code>testIsReadable</code>
+ <code>testIsSeekable</code>
+ <code>testIsWritable</code>
+ <code>testRead</code>
+ <code>testReadRaisesExceptionWhenPointerIsBehindOffset</code>
+ <code>testRewind</code>
+ <code>testSeek</code>
+ <code>testTell</code>
+ <code>testToString</code>
+ <code>testWrite</code>
+ <code>testWriteRaisesExceptionWhenPointerIsBehindOffset</code>
+ </MissingReturnType>
+ </file>
+ <file src="test/Request/ArraySerializerTest.php">
+ <MissingReturnType occurrences="3">
+ <code>testDeserializeFromArray</code>
+ <code>testMissingBodyParamInSerializedRequestThrowsException</code>
+ <code>testSerializeToArray</code>
+ </MissingReturnType>
+ </file>
+ <file src="test/Request/SerializerTest.php">
+ <MissingClosureReturnType occurrences="1">
+ <code>function () use ($payload) {</code>
+ </MissingClosureReturnType>
+ <MissingParamType occurrences="10">
+ <code>$exceptionMessage</code>
+ <code>$expectations</code>
+ <code>$expectations</code>
+ <code>$line</code>
+ <code>$line</code>
+ <code>$line</code>
+ <code>$message</code>
+ <code>$requestTarget</code>
+ <code>$requestTarget</code>
+ <code>$text</code>
+ </MissingParamType>
+ <MixedArgument occurrences="3">
+ <code>$exceptionMessage</code>
+ <code>$message</code>
+ <code>$text</code>
+ </MixedArgument>
+ <MixedArrayOffset occurrences="1">
+ <code>$payload[$i++]</code>
+ </MixedArrayOffset>
+ <MixedAssignment occurrences="5">
+ <code>$expect</code>
+ <code>$expect</code>
+ <code>$i</code>
+ <code>$method</code>
+ <code>$method</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="5">
+ <code>array</code>
+ <code>array</code>
+ <code>array</code>
+ <code>array</code>
+ <code>array</code>
+ </MixedInferredReturnType>
+ <MixedOperand occurrences="4">
+ <code>$i</code>
+ <code>$line</code>
+ <code>$line</code>
+ <code>$line</code>
+ </MixedOperand>
+ </file>
+ <file src="test/RequestTest.php">
+ <DuplicateArrayKey occurrences="1">
+ <code>'UNLOCK' => ['UNLOCK']</code>
+ </DuplicateArrayKey>
+ <InvalidArgument occurrences="1">
+ <code>['TOTALLY INVALID']</code>
+ </InvalidArgument>
+ <MissingParamType occurrences="12">
+ <code>$body</code>
+ <code>$contains</code>
+ <code>$expected</code>
+ <code>$headers</code>
+ <code>$hostKey</code>
+ <code>$method</code>
+ <code>$method</code>
+ <code>$method</code>
+ <code>$request</code>
+ <code>$requestTarget</code>
+ <code>$uri</code>
+ <code>$value</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="48">
+ <code>customRequestMethods</code>
+ <code>headersWithInjectionVectors</code>
+ <code>hostHeaderKeys</code>
+ <code>invalidHeaderTypes</code>
+ <code>invalidMethod</code>
+ <code>invalidRequestBody</code>
+ <code>invalidRequestMethod</code>
+ <code>invalidRequestUri</code>
+ <code>requestsWithUri</code>
+ <code>testAllowsCustomRequestMethodsThatFollowSpec</code>
+ <code>testCanProvideARequestTarget</code>
+ <code>testConstructorCanAcceptAllMessageParts</code>
+ <code>testConstructorRaisesExceptionForHeadersWithCRLFVectors</code>
+ <code>testConstructorRaisesExceptionForInvalidBody</code>
+ <code>testConstructorRaisesExceptionForInvalidHeaders</code>
+ <code>testConstructorRaisesExceptionForInvalidMethod</code>
+ <code>testConstructorRaisesExceptionForInvalidStream</code>
+ <code>testConstructorRaisesExceptionForInvalidUri</code>
+ <code>testDefaultStreamIsWritable</code>
+ <code>testGetHeadersContainsHostHeaderIfUriWithHostIsDeleted</code>
+ <code>testGetHeadersContainsHostHeaderIfUriWithHostIsPresent</code>
+ <code>testGetHeadersContainsNoHostHeaderIfNoUriPresent</code>
+ <code>testGetHeadersContainsNoHostHeaderIfUriDoesNotContainHost</code>
+ <code>testGetHostHeaderLineReturnsEmptyStringIfNoUriPresent</code>
+ <code>testGetHostHeaderLineReturnsEmptyStringIfUriDoesNotContainHost</code>
+ <code>testGetHostHeaderLineReturnsUriHostWhenPresent</code>
+ <code>testGetHostHeaderReturnsEmptyArrayIfNoUriPresent</code>
+ <code>testGetHostHeaderReturnsEmptyArrayIfUriDoesNotContainHost</code>
+ <code>testGetHostHeaderReturnsUriHostWhenHostHeaderDeleted</code>
+ <code>testGetHostHeaderReturnsUriHostWhenPresent</code>
+ <code>testHostHeaderNotSetFromUriOnCreationIfHostHeaderSpecified</code>
+ <code>testHostHeaderSetFromUriOnCreationIfNoHostHeaderSpecified</code>
+ <code>testHostHeaderUpdatesToUriHostAndPortWhenPreserveHostDisabledAndNonStandardPort</code>
+ <code>testMethodIsGetByDefault</code>
+ <code>testMethodMutatorReturnsCloneWithChangedMethod</code>
+ <code>testNotPassingPreserveHostFlagWhenUpdatingUriWithoutHostDoesNotUpdateHostHeader</code>
+ <code>testPassingPreserveHostFlagWhenUpdatingUriDoesNotUpdateHostHeader</code>
+ <code>testRequestTargetCannotContainWhitespace</code>
+ <code>testRequestTargetDoesNotCacheBetweenInstances</code>
+ <code>testRequestTargetIsSlashWhenNoUriPresent</code>
+ <code>testRequestTargetIsSlashWhenUriHasNoPathOrQuery</code>
+ <code>testReturnsRequestTargetWhenUriIsPresent</code>
+ <code>testReturnsUnpopulatedUriByDefault</code>
+ <code>testSettingNewUriResetsRequestTarget</code>
+ <code>testWithInvalidMethod</code>
+ <code>testWithUriAndNoPreserveHostWillOverwriteHostHeaderRegardlessOfOriginalCase</code>
+ <code>testWithUriReturnsNewInstanceWithNewUri</code>
+ <code>validRequestTargets</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="10">
+ <code>$body</code>
+ <code>$contains</code>
+ <code>$headers</code>
+ <code>$hostKey</code>
+ <code>$hostKey</code>
+ <code>$method</code>
+ <code>$method</code>
+ <code>$method</code>
+ <code>$requestTarget</code>
+ <code>$uri</code>
+ </MixedArgument>
+ <MixedMethodCall occurrences="1">
+ <code>getRequestTarget</code>
+ </MixedMethodCall>
+ </file>
+ <file src="test/Response/ArraySerializerTest.php">
+ <MissingReturnType occurrences="5">
+ <code>createResponse</code>
+ <code>createSerializedResponse</code>
+ <code>testDeserializeFromArray</code>
+ <code>testMissingBodyParamInSerializedRequestThrowsException</code>
+ <code>testSerializeToArray</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="4">
+ <code>$response</code>
+ <code>$response</code>
+ <code>$serializedRequest</code>
+ <code>$serializedResponse</code>
+ </MixedArgument>
+ <MixedArrayAccess occurrences="1">
+ <code>$serializedRequest['body']</code>
+ </MixedArrayAccess>
+ <MixedAssignment occurrences="4">
+ <code>$response</code>
+ <code>$response</code>
+ <code>$serializedRequest</code>
+ <code>$serializedResponse</code>
+ </MixedAssignment>
+ </file>
+ <file src="test/Response/EmptyResponseTest.php">
+ <MissingReturnType occurrences="2">
+ <code>testConstructor</code>
+ <code>testHeaderConstructor</code>
+ </MissingReturnType>
+ </file>
+ <file src="test/Response/HtmlResponseTest.php">
+ <MissingParamType occurrences="1">
+ <code>$body</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="7">
+ <code>invalidHtmlContent</code>
+ <code>testAllowsStreamsForResponseBody</code>
+ <code>testConstructorAcceptsHtmlString</code>
+ <code>testConstructorAllowsPassingHeaders</code>
+ <code>testConstructorAllowsPassingStatus</code>
+ <code>testConstructorRewindsBodyStream</code>
+ <code>testRaisesExceptionforNonStringNonStreamBodyContent</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="1">
+ <code>$body</code>
+ </MixedArgument>
+ </file>
+ <file src="test/Response/JsonResponseTest.php">
+ <MissingParamType occurrences="2">
+ <code>$value</code>
+ <code>$value</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="15">
+ <code>scalarValuesForJSON</code>
+ <code>testCanProvideAlternateContentTypeViaHeadersPassedToConstructor</code>
+ <code>testCanProvideStatusCodeToConstructor</code>
+ <code>testConstructorAcceptsDataAndCreatesJsonEncodedMessageBody</code>
+ <code>testConstructorRewindsBodyStream</code>
+ <code>testEncodingOptionsGetter</code>
+ <code>testJsonErrorHandlingOfBadEmbeddedData</code>
+ <code>testJsonErrorHandlingOfResources</code>
+ <code>testModifyingThePayloadDoesntMutateResponseInstance</code>
+ <code>testPayloadGetter</code>
+ <code>testScalarValuePassedToConstructorJsonEncodesDirectly</code>
+ <code>testUsesSaneDefaultJsonEncodingFlags</code>
+ <code>testWithEncodingOptions</code>
+ <code>testWithPayload</code>
+ <code>valuesToJsonEncode</code>
+ </MissingReturnType>
+ </file>
+ <file src="test/Response/RedirectResponseTest.php">
+ <MissingParamType occurrences="1">
+ <code>$uri</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="6">
+ <code>invalidUris</code>
+ <code>testConstructorAcceptsStringUriAndProduces302ResponseWithLocationHeader</code>
+ <code>testConstructorAcceptsUriInstanceAndProduces302ResponseWithLocationHeader</code>
+ <code>testConstructorAllowsSpecifyingAlternateStatusCode</code>
+ <code>testConstructorAllowsSpecifyingHeaders</code>
+ <code>testConstructorRaisesExceptionOnInvalidUri</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="1">
+ <code>$uri</code>
+ </MixedArgument>
+ </file>
+ <file src="test/Response/SerializerTest.php">
+ <MissingParamType occurrences="3">
+ <code>$exceptionMessage</code>
+ <code>$message</code>
+ <code>$text</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="17">
+ <code>headersWithContinuationLines</code>
+ <code>messagesWithInvalidHeaders</code>
+ <code>testCanDeserializeBasicResponse</code>
+ <code>testCanDeserializeResponseWithHeaderContinuations</code>
+ <code>testCanDeserializeResponseWithMultipleHeadersOfSameName</code>
+ <code>testCanDeserializeResponseWithoutBody</code>
+ <code>testCanDeserializeResponseWithoutHeadersButContainingBody</code>
+ <code>testCanDeserializeResponseWithoutHeadersOrBody</code>
+ <code>testDeserializationRaisesExceptionForInvalidStatusLine</code>
+ <code>testDeserializationRaisesExceptionForMalformedHeaders</code>
+ <code>testDeserializeCorrectlyCastsStatusCodeToInteger</code>
+ <code>testFromStreamThrowsExceptionWhenStreamIsNotReadable</code>
+ <code>testFromStreamThrowsExceptionWhenStreamIsNotSeekable</code>
+ <code>testOmitsReasonPhraseFromStatusLineIfEmpty</code>
+ <code>testSerializesBasicResponse</code>
+ <code>testSerializesMultipleHeadersCorrectly</code>
+ <code>testSerializesResponseWithoutBodyCorrectly</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="3">
+ <code>$exceptionMessage</code>
+ <code>$message</code>
+ <code>$text</code>
+ </MixedArgument>
+ </file>
+ <file src="test/Response/TextResponseTest.php">
+ <MissingParamType occurrences="1">
+ <code>$body</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="7">
+ <code>invalidContent</code>
+ <code>testAllowsStreamsForResponseBody</code>
+ <code>testConstructorAcceptsBodyAsString</code>
+ <code>testConstructorAllowsPassingHeaders</code>
+ <code>testConstructorAllowsPassingStatus</code>
+ <code>testConstructorRewindsBodyStream</code>
+ <code>testRaisesExceptionforNonStringNonStreamBodyContent</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="1">
+ <code>$body</code>
+ </MixedArgument>
+ </file>
+ <file src="test/Response/XmlResponseTest.php">
+ <MissingParamType occurrences="1">
+ <code>$body</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="7">
+ <code>invalidContent</code>
+ <code>testAllowsStreamsForResponseBody</code>
+ <code>testConstructorAcceptsBodyAsString</code>
+ <code>testConstructorAllowsPassingHeaders</code>
+ <code>testConstructorAllowsPassingStatus</code>
+ <code>testConstructorRewindsBodyStream</code>
+ <code>testRaisesExceptionforNonStringNonStreamBodyContent</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="1">
+ <code>$body</code>
+ </MixedArgument>
+ </file>
+ <file src="test/ResponseTest.php">
+ <InvalidArgument occurrences="1">
+ <code>[ 'TOTALLY INVALID' ]</code>
+ </InvalidArgument>
+ <MissingParamType occurrences="9">
+ <code>$body</code>
+ <code>$code</code>
+ <code>$code</code>
+ <code>$code</code>
+ <code>$contains</code>
+ <code>$headers</code>
+ <code>$invalidReasonPhrase</code>
+ <code>$reasonPhrase</code>
+ <code>$value</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="21">
+ <code>headersWithInjectionVectors</code>
+ <code>ianaCodesReasonPhrasesProvider</code>
+ <code>invalidHeaderTypes</code>
+ <code>invalidReasonPhrases</code>
+ <code>invalidResponseBody</code>
+ <code>invalidStatusCodes</code>
+ <code>testCanSetCustomReasonPhrase</code>
+ <code>testCannotSetInvalidStatusCode</code>
+ <code>testConstructorCanAcceptAllMessageParts</code>
+ <code>testConstructorRaisesExceptionForHeadersWithCRLFVectors</code>
+ <code>testConstructorRaisesExceptionForInvalidBody</code>
+ <code>testConstructorRaisesExceptionForInvalidHeaders</code>
+ <code>testConstructorRaisesExceptionForInvalidStream</code>
+ <code>testCreateWithValidStatusCodes</code>
+ <code>testReasonPhraseCanBeEmpty</code>
+ <code>testReasonPhraseDefaultsAgainstIana</code>
+ <code>testReasonPhraseDefaultsToStandards</code>
+ <code>testStatusCodeIs200ByDefault</code>
+ <code>testStatusCodeMutatorReturnsCloneWithChanges</code>
+ <code>testWithStatusRaisesAnExceptionForNonStringReasonPhrases</code>
+ <code>validStatusCodes</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="7">
+ <code>$body</code>
+ <code>$code</code>
+ <code>$code</code>
+ <code>$code</code>
+ <code>$contains</code>
+ <code>$headers</code>
+ <code>$invalidReasonPhrase</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="1">
+ <code>$responseCode</code>
+ </MixedAssignment>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>assertIsInt</code>
+ </RedundantConditionGivenDocblockType>
+ <StringIncrement occurrences="1">
+ <code>$value</code>
+ </StringIncrement>
+ </file>
+ <file src="test/ServerRequestFactoryTest.php">
+ <InvalidArgument occurrences="1">
+ <code>$normalizedFiles['fooFiles']</code>
+ </InvalidArgument>
+ <MissingParamType occurrences="2">
+ <code>$expected</code>
+ <code>$protocol</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="39">
+ <code>cookieHeaderValues</code>
+ <code>marshalProtocolVersionProvider</code>
+ <code>testCanCreateServerRequestViaFromGlobalsMethod</code>
+ <code>testCookieHeaderVariations</code>
+ <code>testCreateFromGlobalsShouldNotPreserveKeysWhenCreatedWithAnEmptyValue</code>
+ <code>testCreateFromGlobalsShouldPreserveKeysWhenCreatedWithAZeroValue</code>
+ <code>testFromGlobalsUsesCookieHeaderInsteadOfCookieSuperGlobal</code>
+ <code>testFromGlobalsUsesCookieSuperGlobalWhenCookieHeaderIsNotSet</code>
+ <code>testMarshalHostAndPortReturnsEmptyValuesIfNoHostHeaderAndNoServerName</code>
+ <code>testMarshalHostAndPortReturnsServerAddrForHostIfPresentAndHostIsIpv6Address</code>
+ <code>testMarshalHostAndPortReturnsServerNameForHostIfServerAddrPresentButHostIsNotIpv6Address</code>
+ <code>testMarshalHostAndPortReturnsServerNameForHostWhenPresent</code>
+ <code>testMarshalHostAndPortReturnsServerPortForPortWhenPresentWithServerName</code>
+ <code>testMarshalHostAndPortUsesHostHeaderWhenPresent</code>
+ <code>testMarshalHostAndPortWillDetectPortInHostHeaderWhenPresent</code>
+ <code>testMarshalHostAndPortWillDetectPortInIpv6StyleHost</code>
+ <code>testMarshalInvalidHeadersStrippedFromServerArray</code>
+ <code>testMarshalProtocolReturnsDefaultValueIfHeaderIsNotPresent</code>
+ <code>testMarshalProtocolVersionReturnsHttpVersions</code>
+ <code>testMarshalProtocolVersionRisesExceptionIfVersionIsNotRecognized</code>
+ <code>testMarshalRequestUriFallsBackToRoot</code>
+ <code>testMarshalRequestUriPrefersRequestUriServerParamWhenXOriginalUrlButNoXRewriteUrlPresent</code>
+ <code>testMarshalRequestUriStripsSchemeHostAndPortInformationWhenPresent</code>
+ <code>testMarshalRequestUriUsesIISUnencodedUrlValueIfPresentAndUrlWasRewritten</code>
+ <code>testMarshalRequestUriUsesOrigPathInfoIfPresent</code>
+ <code>testMarshalUriDetectsHttpsSchemeFromServerValue</code>
+ <code>testMarshalUriDetectsHttpsSchemeFromXForwardedProtoValue</code>
+ <code>testMarshalUriInjectsFragmentFromServer</code>
+ <code>testMarshalUriInjectsQueryStringFromServer</code>
+ <code>testMarshalUriStripsQueryStringFromRequestUri</code>
+ <code>testMarshalUriUsesHttpSchemeIfHttpsServerValueEqualsOff</code>
+ <code>testMarshalsExpectedHeadersFromServerArray</code>
+ <code>testMarshalsVariablesPrefixedByApacheFromServerArray</code>
+ <code>testNormalizeFilesReturnsOnlyActualFilesWhenOriginalFilesContainsNestedAssociativeArrays</code>
+ <code>testNormalizeServerReturnsArrayUnalteredIfApacheHeadersDoNotContainAuthorization</code>
+ <code>testNormalizeServerUsesLowerCaseAuthorizationHeaderFromApacheWhenPresent</code>
+ <code>testNormalizeServerUsesMixedCaseAuthorizationHeaderFromApacheWhenPresent</code>
+ <code>testReturnsServerValueUnchangedIfHttpAuthorizationHeaderIsPresent</code>
+ <code>testServerRequestFactoryHasAWritableEmptyBody</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="1">
+ <code>$data</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="2">
+ <code>$data</code>
+ <code>$param</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="2">
+ <code>array</code>
+ <code>iterable</code>
+ </MixedInferredReturnType>
+ </file>
+ <file src="test/ServerRequestTest.php">
+ <InvalidArgument occurrences="1">
+ <code>$parsedBody</code>
+ </InvalidArgument>
+ <MissingParamType occurrences="3">
+ <code>$methodReturned</code>
+ <code>$parameterMethod</code>
+ <code>$request</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="21">
+ <code>provideMethods</code>
+ <code>testAllowsRemovingAttributeWithNullValue</code>
+ <code>testAllowsRemovingNonExistentAttribute</code>
+ <code>testAttributeMutatorReturnsCloneWithChanges</code>
+ <code>testAttributesAreEmptyByDefault</code>
+ <code>testCookieParamsAreAnEmptyArrayAtInitialization</code>
+ <code>testCookiesAreEmptyByDefault</code>
+ <code>testCookiesMutatorReturnsCloneWithChanges</code>
+ <code>testNestedUploadedFiles</code>
+ <code>testParsedBodyIsEmptyByDefault</code>
+ <code>testParsedBodyIsNullAtInitialization</code>
+ <code>testParsedBodyMutatorReturnsCloneWithChanges</code>
+ <code>testQueryParamsAreAnEmptyArrayAtInitialization</code>
+ <code>testQueryParamsAreEmptyByDefault</code>
+ <code>testQueryParamsMutatorReturnsCloneWithChanges</code>
+ <code>testRemovingAttributeReturnsCloneWithoutAttribute</code>
+ <code>testServerParamsAreEmptyByDefault</code>
+ <code>testSingleAttributesWhenEmptyByDefault</code>
+ <code>testTryToAddInvalidUploadedFiles</code>
+ <code>testUploadedFilesAreEmptyByDefault</code>
+ <code>testUsesProvidedConstructorArguments</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="1">
+ <code>$parameterMethod</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="1">
+ <code>$new</code>
+ </MixedAssignment>
+ <MixedMethodCall occurrences="2">
+ <code>getAttribute</code>
+ <code>withoutAttribute</code>
+ </MixedMethodCall>
+ </file>
+ <file src="test/StreamTest.php">
+ <DeprecatedMethod occurrences="1">
+ <code>setMethods</code>
+ </DeprecatedMethod>
+ <InvalidArgument occurrences="1">
+ <code>[' THIS WILL NOT WORK ']</code>
+ </InvalidArgument>
+ <MissingParamType occurrences="7">
+ <code>$fileShouldExist</code>
+ <code>$fileShouldExist</code>
+ <code>$flag</code>
+ <code>$flag</code>
+ <code>$mode</code>
+ <code>$mode</code>
+ <code>$resource</code>
+ </MissingParamType>
+ <MissingPropertyType occurrences="1">
+ <code>$tmpnam</code>
+ </MissingPropertyType>
+ <MissingReturnType occurrences="52">
+ <code>findNonExistentTempName</code>
+ <code>getResourceFor67</code>
+ <code>invalidResources</code>
+ <code>provideDataForIsReadable</code>
+ <code>provideDataForIsWritable</code>
+ <code>testAttachWithInvalidStringResourceRaisesException</code>
+ <code>testAttachWithNonStringNonResourceRaisesException</code>
+ <code>testAttachWithResourceAttachesResource</code>
+ <code>testAttachWithStringRepresentingResourceCreatesAndAttachesResource</code>
+ <code>testCanInstantiateWithGDResource</code>
+ <code>testCanInstantiateWithStreamIdentifier</code>
+ <code>testCanInstantiteWithStreamResource</code>
+ <code>testCanReadContentFromNotSeekableResource</code>
+ <code>testCloseClosesResource</code>
+ <code>testCloseDoesNothingAfterDetach</code>
+ <code>testCloseUnsetsResource</code>
+ <code>testDetachReturnsResource</code>
+ <code>testEofReportsFalseWhenNotAtEndOfStream</code>
+ <code>testEofReportsTrueWhenAtEndOfStream</code>
+ <code>testEofReportsTrueWhenStreamIsDetached</code>
+ <code>testGetContentsRisesExceptionIfStreamIsNotReadable</code>
+ <code>testGetContentsShouldGetFullStreamContents</code>
+ <code>testGetContentsShouldReturnStreamContentsFromCurrentPointer</code>
+ <code>testGetMetadataReturnsAllMetadataWhenNoKeyPresent</code>
+ <code>testGetMetadataReturnsDataForSpecifiedKey</code>
+ <code>testGetMetadataReturnsNullIfNoDataExistsForKey</code>
+ <code>testGetSizeReturnsStreamSize</code>
+ <code>testIsReadableReturnsCorrectFlagForMode</code>
+ <code>testIsReadableReturnsFalseIfStreamIsNotReadable</code>
+ <code>testIsReadableReturnsFalseWhenStreamIsDetached</code>
+ <code>testIsSeekableReturnsFalseForDetachedStreams</code>
+ <code>testIsSeekableReturnsTrueForReadableStreams</code>
+ <code>testIsWritableReturnsCorrectFlagForMode</code>
+ <code>testIsWritableReturnsFalseIfStreamIsNotWritable</code>
+ <code>testIsWritableReturnsFalseWhenStreamIsDetached</code>
+ <code>testIsWritableReturnsTrueForWritableMemoryStream</code>
+ <code>testPassingInvalidStreamResourceToConstructorRaisesException</code>
+ <code>testRaisesExceptionOnAttachForNonStreamResources</code>
+ <code>testRaisesExceptionOnConstructionForNonStreamResources</code>
+ <code>testReadRaisesExceptionWhenStreamIsDetached</code>
+ <code>testReadReturnsEmptyStringWhenAtEndOfFile</code>
+ <code>testRewindResetsToStartOfStream</code>
+ <code>testSeekAdvancesToGivenOffsetOfStream</code>
+ <code>testSeekRaisesExceptionWhenStreamIsDetached</code>
+ <code>testSizeReportsNullForPhpInputStreams</code>
+ <code>testSizeReportsNullWhenNoResourcePresent</code>
+ <code>testStringSerializationReturnsEmptyStringWhenStreamIsNotReadable</code>
+ <code>testTellRaisesExceptionIfResourceIsDetached</code>
+ <code>testTellReportsCurrentPositionInResource</code>
+ <code>testToStringRetrievesFullContentsOfStream</code>
+ <code>testWriteRaisesExceptionWhenStreamIsDetached</code>
+ <code>testWriteRaisesExceptionWhenStreamIsNotWritable</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="9">
+ <code>$mode</code>
+ <code>$mode</code>
+ <code>$resource</code>
+ <code>$resource</code>
+ <code>$resource</code>
+ <code>$this->tmpnam</code>
+ <code>$this->tmpnam</code>
+ <code>$this->tmpnam</code>
+ <code>$this->tmpnam</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="3">
+ <code>$resource</code>
+ <code>$resource</code>
+ <code>$test</code>
+ </MixedAssignment>
+ </file>
+ <file src="test/TestAsset/HeaderStack.php">
+ <MissingReturnType occurrences="2">
+ <code>push</code>
+ <code>reset</code>
+ </MissingReturnType>
+ </file>
+ <file src="test/UploadedFileTest.php">
+ <MissingParamType occurrences="6">
+ <code>$path</code>
+ <code>$status</code>
+ <code>$status</code>
+ <code>$status</code>
+ <code>$status</code>
+ <code>$streamOrFile</code>
+ </MissingParamType>
+ <MissingPropertyType occurrences="1">
+ <code>$tmpFile</code>
+ </MissingPropertyType>
+ <MissingReturnType occurrences="24">
+ <code>errorConstantsAndMessages</code>
+ <code>invalidErrorStatuses</code>
+ <code>invalidMovePaths</code>
+ <code>invalidStreams</code>
+ <code>nonOkErrorStatus</code>
+ <code>testCannotRetrieveStreamAfterMove</code>
+ <code>testConstructorDoesNotRaiseExceptionForInvalidStreamWhenErrorStatusPresent</code>
+ <code>testGetStreamRaisesExceptionWhenErrorStatusPresent</code>
+ <code>testGetStreamRaisesExceptionWithAppropriateMessageWhenUploadErrorDetected</code>
+ <code>testGetStreamReturnsOriginalStreamObject</code>
+ <code>testGetStreamReturnsStreamForFile</code>
+ <code>testGetStreamReturnsWrappedPhpStream</code>
+ <code>testMoveCannotBeCalledMoreThanOnce</code>
+ <code>testMoveRaisesExceptionForInvalidPath</code>
+ <code>testMoveToCreatesStreamIfOnlyAFilenameWasProvided</code>
+ <code>testMoveToRaisesExceptionWhenErrorStatusPresent</code>
+ <code>testMoveToRaisesExceptionWithAppropriateMessageWhenUploadErrorDetected</code>
+ <code>testMovesFileToDesignatedPath</code>
+ <code>testRaisesExceptionOnInvalidErrorStatus</code>
+ <code>testRaisesExceptionOnInvalidStreamOrFile</code>
+ <code>testValidClientFilename</code>
+ <code>testValidClientMediaType</code>
+ <code>testValidNullClientFilename</code>
+ <code>testValidSize</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="6">
+ <code>$path</code>
+ <code>$status</code>
+ <code>$status</code>
+ <code>$status</code>
+ <code>$status</code>
+ <code>$streamOrFile</code>
+ </MixedArgument>
+ <UndefinedThisPropertyAssignment occurrences="1">
+ <code>$this->tmpfile</code>
+ </UndefinedThisPropertyAssignment>
+ </file>
+ <file src="test/UriTest.php">
+ <InvalidScalarArgument occurrences="2">
+ <code>'3001'</code>
+ <code>1</code>
+ </InvalidScalarArgument>
+ <MissingParamType occurrences="25">
+ <code>$credential</code>
+ <code>$expected</code>
+ <code>$expected</code>
+ <code>$expected</code>
+ <code>$expected</code>
+ <code>$method</code>
+ <code>$method</code>
+ <code>$path</code>
+ <code>$port</code>
+ <code>$port</code>
+ <code>$port</code>
+ <code>$query</code>
+ <code>$query</code>
+ <code>$query</code>
+ <code>$result</code>
+ <code>$result</code>
+ <code>$scheme</code>
+ <code>$scheme</code>
+ <code>$scheme</code>
+ <code>$url</code>
+ <code>$url</code>
+ <code>$url</code>
+ <code>$user</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MissingParamType>
+ <MissingReturnType occurrences="68">
+ <code>authorityInfo</code>
+ <code>invalidPaths</code>
+ <code>invalidPorts</code>
+ <code>invalidQueryStrings</code>
+ <code>invalidSchemes</code>
+ <code>invalidStringComponentValues</code>
+ <code>mutations</code>
+ <code>queryStringsForEncoding</code>
+ <code>standardSchemePortCombinations</code>
+ <code>testAuthorityIsPrefixedByDoubleSlashIfPresent</code>
+ <code>testAuthorityOmitsPortForStandardSchemePortCombinations</code>
+ <code>testCanEmitOriginFormUrl</code>
+ <code>testCanSerializeToString</code>
+ <code>testConstructWithUnsupportedSchemeRaisesAnException</code>
+ <code>testConstructorRaisesExceptionForSeriouslyMalformedURI</code>
+ <code>testConstructorSetsAllProperties</code>
+ <code>testESchemeStripsOffDelimiter</code>
+ <code>testEmptyPathOnOriginFormRemainsAnEmptyPath</code>
+ <code>testEncodeFragmentPrefixIfPresent</code>
+ <code>testFragmentIsNotDoubleEncoded</code>
+ <code>testFragmentIsProperlyEncoded</code>
+ <code>testHostIsLowercase</code>
+ <code>testHostIsLowercaseWhenIsSetViwWithHost</code>
+ <code>testMutatingSchemeStripsOffDelimiter</code>
+ <code>testMutatingWithUnsupportedSchemeRaisesAnException</code>
+ <code>testMutationResetsUriStringPropertyInClone</code>
+ <code>testPassingInvalidValueToWithMethodRaisesException</code>
+ <code>testPathDoesNotBecomeDoubleEncoded</code>
+ <code>testPathIsNotPrefixedWithSlashIfSetWithoutOne</code>
+ <code>testPathIsProperlyEncoded</code>
+ <code>testPathNotSlashPrefixedIsEmittedWithSlashDelimiterWhenUriIsCastToString</code>
+ <code>testProperlyTrimsLeadingSlashesToPreventXSS</code>
+ <code>testQueryIsNotDoubleEncoded</code>
+ <code>testQueryIsProperlyEncoded</code>
+ <code>testReservedCharsInPathUnencoded</code>
+ <code>testRetrievingAuthorityReturnsExpectedValues</code>
+ <code>testSettingEmptyPathOnAbsoluteUriReturnsAnEmptyPath</code>
+ <code>testStringRepresentationOfAbsoluteUriWithNoPathSetsAnEmptyPath</code>
+ <code>testStringRepresentationOfOriginFormWithNoPathRetainsEmptyPath</code>
+ <code>testStripsQueryPrefixIfPresent</code>
+ <code>testUriDistinguishZeroFromEmptyString</code>
+ <code>testUriDoesNotAppendColonToHostIfPortIsEmpty</code>
+ <code>testUtf8Path</code>
+ <code>testUtf8Query</code>
+ <code>testUtf8Uri</code>
+ <code>testWithFragmentReturnsNewInstanceWithProvidedFragment</code>
+ <code>testWithFragmentReturnsSameInstanceWithProvidedFragmentSameAsBefore</code>
+ <code>testWithHostReturnsNewInstanceWithProvidedHost</code>
+ <code>testWithHostReturnsSameInstanceWithProvidedHostIsSameAsBefore</code>
+ <code>testWithPathRaisesExceptionForInvalidPaths</code>
+ <code>testWithPathReturnsNewInstanceWithProvidedPath</code>
+ <code>testWithPathReturnsSameInstanceWithProvidedPathSameAsBefore</code>
+ <code>testWithPortRaisesExceptionForInvalidPorts</code>
+ <code>testWithPortReturnsNewInstanceWithProvidedPort</code>
+ <code>testWithPortReturnsSameInstanceWithProvidedPortIsSameAsBefore</code>
+ <code>testWithQueryRaisesExceptionForInvalidQueryStrings</code>
+ <code>testWithQueryReturnsNewInstanceWithProvidedQuery</code>
+ <code>testWithSchemeReturnsNewInstanceWithNewScheme</code>
+ <code>testWithSchemeReturnsSameInstanceWithSameScheme</code>
+ <code>testWithUserInfoEncodesUsernameAndPassword</code>
+ <code>testWithUserInfoReturnsNewInstanceWithProvidedUser</code>
+ <code>testWithUserInfoReturnsNewInstanceWithProvidedUserAndPassword</code>
+ <code>testWithUserInfoReturnsSameInstanceIfUserAndPasswordAreSameAsBefore</code>
+ <code>testWithUserInfoThrowExceptionIfPasswordIsNotString</code>
+ <code>userInfoProvider</code>
+ <code>utf8PathsDataProvider</code>
+ <code>utf8QueryStringsDataProvider</code>
+ <code>validPorts</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="15">
+ <code>$credential</code>
+ <code>$expected</code>
+ <code>$path</code>
+ <code>$port</code>
+ <code>$port</code>
+ <code>$port</code>
+ <code>$query</code>
+ <code>$query</code>
+ <code>$scheme</code>
+ <code>$scheme</code>
+ <code>$test</code>
+ <code>$url</code>
+ <code>$url</code>
+ <code>$url</code>
+ <code>$user</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="1">
+ <code>$test</code>
+ </MixedAssignment>
+ <MixedOperand occurrences="2">
+ <code>$port</code>
+ <code>$scheme</code>
+ </MixedOperand>
+ </file>
+ <file src="test/functions/MarshalUriFromSapiTest.php">
+ <MixedInferredReturnType occurrences="2">
+ <code>array</code>
+ <code>array</code>
+ </MixedInferredReturnType>
+ </file>
+ <file src="test/functions/NormalizeUploadedFilesTest.php">
+ <MissingReturnType occurrences="4">
+ <code>testCreatesUploadedFileFromFlatFileSpecification</code>
+ <code>testTraversesDenormalizedNestedTreeOfIndicesToExtractUploadedFiles</code>
+ <code>testTraversesNestedFileSpecificationContainingNumericIndicesToExtractUploadedFiles</code>
+ <code>testTraversesNestedFileSpecificationToExtractUploadedFile</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="2">
+ <code>$normalised['my-form']['details']['avatars']</code>
+ <code>$normalised['slide-shows'][0]['slides']</code>
+ </MixedArgument>
+ <MixedArrayAccess occurrences="8">
+ <code>$normalised['my-form']['details']['avatar']</code>
+ <code>$normalised['my-form']['details']['avatars']</code>
+ <code>$normalised['my-form']['details']['avatars']</code>
+ <code>$normalised['my-form']['details']['avatars']</code>
+ <code>$normalised['my-form']['details']['avatars']</code>
+ <code>$normalised['slide-shows'][0]['slides']</code>
+ <code>$normalised['slide-shows'][0]['slides']</code>
+ <code>$normalised['slide-shows'][0]['slides']</code>
+ </MixedArrayAccess>
+ <MixedMethodCall occurrences="6">
+ <code>getClientFilename</code>
+ <code>getClientFilename</code>
+ <code>getClientFilename</code>
+ <code>getClientFilename</code>
+ <code>getClientFilename</code>
+ <code>getClientFilename</code>
+ </MixedMethodCall>
+ <UndefinedInterfaceMethod occurrences="8">
+ <code>$normalised['my-form']</code>
+ <code>$normalised['my-form']</code>
+ <code>$normalised['my-form']</code>
+ <code>$normalised['my-form']</code>
+ <code>$normalised['my-form']</code>
+ <code>$normalised['slide-shows']</code>
+ <code>$normalised['slide-shows']</code>
+ <code>$normalised['slide-shows']</code>
+ </UndefinedInterfaceMethod>
+ </file>
+</files>
--- /dev/null
+<?xml version="1.0"?>
+<psalm
+ errorLevel="1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ errorBaseline="psalm-baseline.xml"
+>
+ <projectFiles>
+ <directory name="src"/>
+ <directory name="test"/>
+ <ignoreFiles>
+ <directory name="vendor"/>
+ </ignoreFiles>
+ </projectFiles>
+
+ <issueHandlers>
+ <InternalMethod>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::method"/>
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::willReturn"/>
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::with"/>
+ </errorLevel>
+ </InternalMethod>
+
+ <UndefinedClass>
+ <errorLevel type="suppress">
+ <referencedClass name="GdImage" />
+ </errorLevel>
+ </UndefinedClass>
+ </issueHandlers>
+ <plugins>
+ <pluginClass class="Psalm\PhpUnitPlugin\Plugin"/>
+ </plugins>
+</psalm>
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
use function array_pop;
use function implode;
-use function ltrim;
use function preg_match;
use function sprintf;
use function str_replace;
+use function trim;
use function ucwords;
/**
*/
abstract class AbstractSerializer
{
- const CR = "\r";
- const EOL = "\r\n";
- const LF = "\n";
+ public const CR = "\r";
+ public const EOL = "\r\n";
+ public const LF = "\n";
/**
* Retrieve a single line from the stream.
if (! isset($headers[$currentHeader])) {
$headers[$currentHeader] = [];
}
- $headers[$currentHeader][] = ltrim($matches['value']);
+ $headers[$currentHeader][] = trim($matches['value'], "\t ");
continue;
}
// Append continuation to last header value found
$value = array_pop($headers[$currentHeader]);
- $headers[$currentHeader][] = $value . ltrim($line);
+ $headers[$currentHeader][] = $value . ' ' . trim($line, "\t ");
}
// use RelativeStream to avoid copying initial stream into memory
/**
* Serialize headers to string values.
+ *
+ * @psalm-param array<string, string[]> $headers
*/
protected static function serializeHeaders(array $headers) : string
{
/**
* Filter a header name to wordcase
+ *
+ * @param string $header
*/
protected static function filterHeader($header) : string
{
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
/**
* {@inheritdoc}
+ * @return null|callable
*/
public function detach() : ?callable
{
/**
* {@inheritdoc}
+ * @param int $offset
+ * @param int $whence
+ * @return void
*/
public function seek($offset, $whence = SEEK_SET)
{
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
--- /dev/null
+<?php
+
+declare(strict_types=1);
+
+namespace Laminas\Diactoros\Exception;
+
+class RuntimeException extends \RuntimeException implements ExceptionInterface
+{
+}
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
*/
public static function filter(string $value) : string
{
- $value = (string) $value;
$length = strlen($value);
$string = '';
for ($i = 0; $i < $length; $i += 1) {
* @param mixed $value Value to be tested. This method asserts it is a string or number.
* @throws Exception\InvalidArgumentException for invalid values
*/
- public static function assertValid($value)
+ public static function assertValid($value) : void
{
if (! is_string($value) && ! is_numeric($value)) {
throw new Exception\InvalidArgumentException(sprintf(
* @param mixed $name
* @throws Exception\InvalidArgumentException
*/
- public static function assertValidName($name)
+ public static function assertValidName($name) : void
{
if (! is_string($name)) {
throw new Exception\InvalidArgumentException(sprintf(
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
use function is_string;
use function preg_match;
use function sprintf;
+use function str_replace;
use function strtolower;
+use function trim;
/**
* Trait implementing the various methods defined in MessageInterface.
* List of all registered headers, as key => array of values.
*
* @var array
+ *
+ * @psalm-var array<non-empty-string, list<string>>
*/
protected $headers = [];
* Map of normalized header name to original name used to register header.
*
* @var array
+ *
+ * @psalm-var array<non-empty-string, non-empty-string>
*/
protected $headerNames = [];
*
* @return array Returns an associative array of the message's headers. Each
* key MUST be a header name, and each value MUST be an array of strings.
+ *
+ * @psalm-return array<non-empty-string, list<string>>
*/
public function getHeaders() : array
{
* immutability of the message, and MUST return an instance that has the
* new and/or updated header and value.
*
- * @param string $header Case-insensitive header field name.
+ * @param string $name Case-insensitive header field name.
* @param string|string[] $value Header value(s).
* @return static
* @throws Exception\InvalidArgumentException for invalid header names or values.
*/
- public function withHeader($header, $value) : MessageInterface
+ public function withHeader($name, $value) : MessageInterface
{
- $this->assertHeader($header);
+ $this->assertHeader($name);
- $normalized = strtolower($header);
+ $normalized = strtolower($name);
$new = clone $this;
- if ($new->hasHeader($header)) {
+ if ($new->hasHeader($name)) {
unset($new->headers[$new->headerNames[$normalized]]);
}
$value = $this->filterHeaderValue($value);
- $new->headerNames[$normalized] = $header;
- $new->headers[$header] = $value;
+ $new->headerNames[$normalized] = $name;
+ $new->headers[$name] = $value;
return $new;
}
* immutability of the message, and MUST return an instance that has the
* new header and/or value.
*
- * @param string $header Case-insensitive header field name to add.
+ * @param string $name Case-insensitive header field name to add.
* @param string|string[] $value Header value(s).
* @return static
* @throws Exception\InvalidArgumentException for invalid header names or values.
*/
- public function withAddedHeader($header, $value) : MessageInterface
+ public function withAddedHeader($name, $value) : MessageInterface
{
- $this->assertHeader($header);
+ $this->assertHeader($name);
- if (! $this->hasHeader($header)) {
- return $this->withHeader($header, $value);
+ if (! $this->hasHeader($name)) {
+ return $this->withHeader($name, $value);
}
- $header = $this->headerNames[strtolower($header)];
+ $header = $this->headerNames[strtolower($name)];
$new = clone $this;
$value = $this->filterHeaderValue($value);
* immutability of the message, and MUST return an instance that removes
* the named header.
*
- * @param string $header Case-insensitive header field name to remove.
+ * @param string $name Case-insensitive header field name to remove.
* @return static
*/
- public function withoutHeader($header) : MessageInterface
+ public function withoutHeader($name) : MessageInterface
{
- if (! $this->hasHeader($header)) {
+ if (! is_string($name) || $name === '' || ! $this->hasHeader($name)) {
return clone $this;
}
- $normalized = strtolower($header);
+ $normalized = strtolower($name);
$original = $this->headerNames[$normalized];
$new = clone $this;
// HTTP/1 uses a "<major>.<minor>" numbering scheme to indicate
// versions of the protocol, while HTTP/2 does not.
- if (! preg_match('#^(1\.[01]|2)$#', $version)) {
+ if (! preg_match('#^(1\.[01]|2(\.0)?)$#', $version)) {
throw new Exception\InvalidArgumentException(sprintf(
'Unsupported HTTP protocol version "%s" provided',
$version
return array_map(function ($value) {
HeaderSecurity::assertValid($value);
- return (string) $value;
+ $value = (string)$value;
+
+ // Normalize line folding to a single space (RFC 7230#3.2.4).
+ $value = str_replace(["\r\n\t", "\r\n "], ' ', $value);
+
+ // Remove optional whitespace (OWS, RFC 7230#3.2.3) around the header value.
+ return trim($value, "\t ");
}, array_values($values));
}
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
/**
* {@inheritdoc}
*/
- public function getHeader($header) : array
+ public function getHeader($name) : array
{
- if (! $this->hasHeader($header)) {
- if (strtolower($header) === 'host'
+ if (empty($name) || ! $this->hasHeader($name)) {
+ if (strtolower($name) === 'host'
&& $this->uri->getHost()
) {
return [$this->getHostFromUri()];
return [];
}
- $header = $this->headerNames[strtolower($header)];
+ $header = $this->headerNames[strtolower($name)];
return $this->headers[$header];
}
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Request;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Request;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
{
use MessageTrait;
- const MIN_STATUS_CODE_VALUE = 100;
- const MAX_STATUS_CODE_VALUE = 599;
+ public const MIN_STATUS_CODE_VALUE = 100;
+ public const MAX_STATUS_CODE_VALUE = 599;
/**
* Map of standard HTTP status code/reason phrases
*
* @var array
+ *
+ * @psalm-var array<positive-int, non-empty-string>
*/
private $phrases = [
// INFORMATIONAL CODES
410 => 'Gone',
411 => 'Length Required',
412 => 'Precondition Failed',
- 413 => 'Payload Too Large',
+ 413 => 'Content Too Large',
414 => 'URI Too Long',
415 => 'Unsupported Media Type',
416 => 'Range Not Satisfiable',
417 => 'Expectation Failed',
418 => 'I\'m a teapot',
421 => 'Misdirected Request',
- 422 => 'Unprocessable Entity',
+ 422 => 'Unprocessable Content',
423 => 'Locked',
424 => 'Failed Dependency',
425 => 'Too Early',
506 => 'Variant Also Negotiates',
507 => 'Insufficient Storage',
508 => 'Loop Detected',
- 510 => 'Not Extended',
+ 510 => 'Not Extended (OBSOLETED)',
511 => 'Network Authentication Required',
599 => 'Network Connect Timeout Error',
];
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Response;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Response;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Response;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Response;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Response;
*
* @const int
*/
- const DEFAULT_JSON_FLAGS = 79;
+ public const DEFAULT_JSON_FLAGS = 79;
/**
* @var mixed
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Response;
throw new Exception\InvalidArgumentException(sprintf(
'Uri provided to %s MUST be a string or Psr\Http\Message\UriInterface instance; received "%s"',
__CLASS__,
- (is_object($uri) ? get_class($uri) : gettype($uri))
+ is_object($uri) ? get_class($uri) : gettype($uri)
));
}
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Response;
throw Exception\SerializationException::forInvalidStatusLine();
}
- return [$matches['version'], (int) $matches['status'], isset($matches['reason']) ? $matches['reason'] : ''];
+ return [$matches['version'], (int) $matches['status'], $matches['reason'] ?? ''];
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Response;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros\Response;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
/**
* {@inheritdoc}
*/
- public function withoutAttribute($attribute) : ServerRequest
+ public function withoutAttribute($name) : ServerRequest
{
$new = clone $this;
- unset($new->attributes[$attribute]);
+ unset($new->attributes[$name]);
return $new;
}
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
}
if ($error) {
- throw new Exception\InvalidArgumentException('Invalid stream reference provided');
+ throw new Exception\RuntimeException('Invalid stream reference provided');
}
if (! $this->isValidStreamResourceType($resource)) {
*/
private function isValidStreamResourceType($resource): bool
{
- return (
- is_resource($resource) &&
- in_array(get_resource_type($resource), self::ALLOWED_STREAM_RESOURCE_TYPES, true)
- );
+ if (is_resource($resource)) {
+ return in_array(get_resource_type($resource), self::ALLOWED_STREAM_RESOURCE_TYPES, true);
+ }
+
+ if (PHP_VERSION_ID >= 80000 && $resource instanceof \GdImage) {
+ return true;
+ }
+
+ return false;
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
class UploadedFile implements UploadedFileInterface
{
- const ERROR_MESSAGES = [
+ public const ERROR_MESSAGES = [
UPLOAD_ERR_OK => 'There is no error, the file uploaded with success',
UPLOAD_ERR_INI_SIZE => 'The uploaded file exceeds the upload_max_filesize directive in php.ini',
UPLOAD_ERR_FORM_SIZE => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was '
private $stream;
/**
- * @param string|resource $streamOrFile
+ * @param string|resource|StreamInterface $streamOrFile
* @param int $size
* @param int $errorStatus
* @param string|null $clientFilename
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
*
* @const string
*/
- const CHAR_SUB_DELIMS = '!\$&\'\(\)\*\+,;=';
+ public const CHAR_SUB_DELIMS = '!\$&\'\(\)\*\+,;=';
/**
* Unreserved characters used in user info, paths, query strings, and fragments.
*
* @const string
*/
- const CHAR_UNRESERVED = 'a-zA-Z0-9_\-\.~\pL';
+ public const CHAR_UNRESERVED = 'a-zA-Z0-9_\-\.~\pL';
/**
* @var int[] Array indexed by valid scheme names to their corresponding ports.
private $host = '';
/**
- * @var int
+ * @var int|null
*/
private $port;
$this->scheme = isset($parts['scheme']) ? $this->filterScheme($parts['scheme']) : '';
$this->userInfo = isset($parts['user']) ? $this->filterUserInfoPart($parts['user']) : '';
$this->host = isset($parts['host']) ? strtolower($parts['host']) : '';
- $this->port = isset($parts['port']) ? $parts['port'] : null;
+ $this->port = $parts['port'] ?? null;
$this->path = isset($parts['path']) ? $this->filterPath($parts['path']) : '';
$this->query = isset($parts['query']) ? $this->filterQuery($parts['query']) : '';
$this->fragment = isset($parts['fragment']) ? $this->filterFragment($parts['fragment']) : '';
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Zend\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Zend\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
*/
function marshalHeadersFromSapi(array $server) : array
{
+ $contentHeaderLookup = isset($server['LAMINAS_DIACTOROS_STRICT_CONTENT_HEADER_LOOKUP'])
+ ? static function (string $key) : bool {
+ static $contentHeaders = [
+ 'CONTENT_TYPE' => true,
+ 'CONTENT_LENGTH' => true,
+ 'CONTENT_MD5' => true,
+ ];
+ return isset($contentHeaders[$key]);
+ }
+ : static function (string $key): bool {
+ return strpos($key, 'CONTENT_') === 0;
+ };
+
$headers = [];
foreach ($server as $key => $value) {
if (! is_string($key)) {
continue;
}
- if (strpos($key, 'CONTENT_') === 0) {
+ if ($contentHeaderLookup($key)) {
$name = strtr(strtolower($key), '_', '-');
$headers[$name] = $value;
continue;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Zend\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Zend\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Zend\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Zend\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Zend\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Zend\Diactoros;
<?php
-/**
- * @see https://github.com/laminas/laminas-diactoros for the canonical source repository
- * @copyright https://github.com/laminas/laminas-diactoros/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-diactoros/blob/master/LICENSE.md New BSD License
- */
-
declare(strict_types=1);
namespace Laminas\Diactoros;
All notable changes to this project will be documented in this file, in reverse chronological order by release.
+## 1.5.0 - 2021-09-22
+
+
+-----
+
+### Release Notes for [1.5.0](https://github.com/laminas/laminas-httphandlerrunner/milestone/6)
+
+Feature release (minor)
+
+### 1.5.0
+
+- Total issues resolved: **0**
+- Total pull requests resolved: **1**
+- Total contributors: **1**
+
+#### Enhancement
+
+ - [24: Support PHP 8.1](https://github.com/laminas/laminas-httphandlerrunner/pull/24) thanks to @Ocramius
+
+## 1.4.0 - 2021-04-08
+
+
+-----
+
+### Release Notes for [1.4.0](https://github.com/laminas/laminas-httphandlerrunner/milestone/3)
+
+Feature release (minor)
+
+### 1.4.0
+
+- Total issues resolved: **0**
+- Total pull requests resolved: **1**
+- Total contributors: **1**
+
+#### Enhancement
+
+ - [8: Initial migration to github ci workflows and psalm integration](https://github.com/laminas/laminas-httphandlerrunner/pull/8) thanks to @gsteel
+
+## 1.3.0 - 2020-11-19
+
+### Added
+
+- [#7](https://github.com/laminas/laminas-httphandlerrunner/pull/7) adds support for PHP 8.0.
+
+### Removed
+
+- [#7](https://github.com/laminas/laminas-httphandlerrunner/pull/7) drops support for the 1.x series of laminas/laminas-diactoros.
+
+- [#7](https://github.com/laminas/laminas-httphandlerrunner/pull/7) drops support for PHP versions prior to 7.3.
+
+
+-----
+
+### Release Notes for [1.3.0](https://github.com/laminas/laminas-httphandlerrunner/milestone/1)
+
+
+
+### 1.3.0
+
+- Total issues resolved: **1**
+- Total pull requests resolved: **1**
+- Total contributors: **2**
+
+#### Enhancement
+
+ - [7: Bump up PHP version constraint.](https://github.com/laminas/laminas-httphandlerrunner/pull/7) thanks to @ADmad
+
+#### Enhancement,Help Wanted,hacktoberfest-accepted
+
+ - [6: PHP 8.0 support](https://github.com/laminas/laminas-httphandlerrunner/issues/6) thanks to @boesing
+
## 1.2.0 - 2020-06-03
### Added
# laminas-httphandlerrunner
-[![Build Status](https://travis-ci.com/laminas/laminas-httphandlerrunner.svg?branch=master)](https://travis-ci.com/laminas/laminas-httphandlerrunner)
-[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-httphandlerrunner/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-httphandlerrunner?branch=master)
+[![Build Status](https://github.com/laminas/laminas-httphandlerrunner/workflows/Continuous%20Integration/badge.svg)](https://github.com/laminas/laminas-httphandlerrunner/actions?query=workflow%3A"Continuous+Integration")
This library provides utilities for:
"sort-packages": true
},
"extra": {
- "branch-alias": {
- "dev-master": "1.2.x-dev",
- "dev-develop": "1.3.x-dev"
- },
"laminas": {
"config-provider": "Laminas\\HttpHandlerRunner\\ConfigProvider"
}
},
"require": {
- "php": "^7.1",
+ "php": "^7.3 || ~8.0.0 || ~8.1.0",
"laminas/laminas-zendframework-bridge": "^1.0",
"psr/http-message": "^1.0",
"psr/http-message-implementation": "^1.0",
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
- "laminas/laminas-diactoros": "^1.7 || ^2.1.1",
- "phpunit/phpunit": "^7.0.2"
+ "laminas/laminas-diactoros": "^2.8.0",
+ "phpunit/phpunit": "^9.5.9",
+ "psalm/plugin-phpunit": "^0.16.1",
+ "vimeo/psalm": "^4.10.0"
},
"autoload": {
"psr-4": {
"cs-check": "phpcs",
"cs-fix": "phpcbf",
"test": "phpunit --colors=always",
- "test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
+ "test-coverage": "phpunit --colors=always --coverage-clover clover.xml",
+ "static-analysis": "psalm --shepherd --stats"
},
"replace": {
"zendframework/zend-httphandlerrunner": "^1.1.0"
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.10.0@916b098b008f6de4543892b1e0651c1c3b92cbfa">
+ <file src="src/Emitter/EmitterStack.php">
+ <MixedArgument occurrences="1">
+ <code>$index</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="1">
+ <code>$emitter</code>
+ </MixedAssignment>
+ <MixedMethodCall occurrences="1">
+ <code>emit</code>
+ </MixedMethodCall>
+ <UndefinedAttributeClass occurrences="3">
+ <code>ReturnTypeWillChange</code>
+ <code>ReturnTypeWillChange</code>
+ <code>ReturnTypeWillChange</code>
+ </UndefinedAttributeClass>
+ <UndefinedDocblockClass occurrences="3">
+ <code>InvalidArgumentException</code>
+ <code>InvalidArgumentException</code>
+ <code>InvalidArgumentException</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/Emitter/SapiEmitterTrait.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>headers_sent()</code>
+ </DocblockTypeContradiction>
+ <MixedArgumentTypeCoercion occurrences="1">
+ <code>$header</code>
+ </MixedArgumentTypeCoercion>
+ </file>
+ <file src="src/Emitter/SapiStreamEmitter.php">
+ <MixedArgument occurrences="4">
+ <code>$first</code>
+ <code>$first</code>
+ <code>$length</code>
+ <code>$remaining</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="3">
+ <code>$length</code>
+ <code>$remaining</code>
+ <code>$remaining</code>
+ </MixedAssignment>
+ <MixedOperand occurrences="2">
+ <code>$last</code>
+ <code>$remaining</code>
+ </MixedOperand>
+ <UnusedVariable occurrences="2">
+ <code>$length</code>
+ <code>$unit</code>
+ </UnusedVariable>
+ </file>
+ <file src="src/RequestHandlerRunner.php">
+ <MixedArgument occurrences="2">
+ <code>$request</code>
+ <code>$response</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="2">
+ <code>$request</code>
+ <code>$response</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="2">
+ <code>ResponseInterface</code>
+ <code>ServerRequestInterface</code>
+ </MixedInferredReturnType>
+ <MixedReturnStatement occurrences="2">
+ <code>$serverRequestErrorResponseGenerator($exception)</code>
+ <code>$serverRequestFactory()</code>
+ </MixedReturnStatement>
+ </file>
+ <file src="test/Emitter/EmitterStackTest.php">
+ <MixedArgument occurrences="3">
+ <code>$value</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MixedArgument>
+ </file>
+ <file src="test/Emitter/SapiStreamEmitterTest.php">
+ <InvalidPropertyAssignmentValue occurrences="1">
+ <code>new SapiStreamEmitter()</code>
+ </InvalidPropertyAssignmentValue>
+ <MissingClosureParamType occurrences="5">
+ <code>$bufferLength</code>
+ <code>$bufferLength</code>
+ <code>$bufferLength</code>
+ <code>$length</code>
+ <code>$position</code>
+ </MissingClosureParamType>
+ <MissingClosureReturnType occurrences="4">
+ <code>function ($bufferLength) use (& $peakBufferLength) {</code>
+ <code>function ($bufferLength) use (& $peakBufferLength) {</code>
+ <code>function ($position, $length = null) use (& $sizeBytes) {</code>
+ <code>function () use (& $peakMemoryUsage) {</code>
+ </MissingClosureReturnType>
+ <MixedArgument occurrences="6">
+ <code>$first</code>
+ <code>$last - $first + 1</code>
+ <code>$length</code>
+ <code>$position</code>
+ <code>$sizeBytes</code>
+ <code>$startPosition</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="9">
+ <code>$first</code>
+ <code>$last</code>
+ <code>$length</code>
+ <code>$peakBufferLength</code>
+ <code>$peakBufferLength</code>
+ <code>$peakBufferLength</code>
+ <code>$peakMemoryUsage</code>
+ <code>$position</code>
+ <code>$startPosition</code>
+ </MixedAssignment>
+ <MixedFunctionCall occurrences="1">
+ <code>$closureTrackMemoryUsage()</code>
+ </MixedFunctionCall>
+ <MixedOperand occurrences="11">
+ <code>$first</code>
+ <code>$first</code>
+ <code>$last</code>
+ <code>$last</code>
+ <code>$last</code>
+ <code>$maxBufferLength * $rangeBlocks[1]</code>
+ <code>$peakMemoryUsage</code>
+ <code>$rangeBlocks[0]</code>
+ <code>$rangeBlocks[1]</code>
+ <code>$sizeBytes</code>
+ <code>($maxBufferLength * $rangeBlocks[1]) + $maxBufferLength</code>
+ </MixedOperand>
+ <PossiblyUndefinedVariable occurrences="2">
+ <code>$first</code>
+ <code>$last</code>
+ </PossiblyUndefinedVariable>
+ <UnusedVariable occurrences="2">
+ <code>$length</code>
+ <code>$unit</code>
+ </UnusedVariable>
+ </file>
+ <file src="test/RequestHandlerRunnerTest.php">
+ <MissingClosureParamType occurrences="2">
+ <code>$e</code>
+ <code>$e</code>
+ </MissingClosureParamType>
+ <MissingClosureReturnType occurrences="8">
+ <code>function ($e) use ($exception, $response) {</code>
+ <code>function ($e) {</code>
+ <code>function () use ($exception) {</code>
+ <code>function () use ($request) {</code>
+ <code>function () {</code>
+ <code>function () {</code>
+ <code>function (Throwable $e) use ($response) {</code>
+ <code>function (Throwable $e) {</code>
+ </MissingClosureReturnType>
+ <UnusedClosureParam occurrences="1">
+ <code>$e</code>
+ </UnusedClosureParam>
+ </file>
+ <file src="test/TestAsset/MockStreamHelper.php">
+ <MixedArgument occurrences="2">
+ <code>$data</code>
+ <code>$remainingContents</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="2">
+ <code>$data</code>
+ <code>$remainingContents</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="1">
+ <code>string</code>
+ </MixedInferredReturnType>
+ <MixedReturnStatement occurrences="1">
+ <code>is_callable($this->contents) ? ($this->contents)(0) : $this->contents</code>
+ </MixedReturnStatement>
+ </file>
+ <file src="test/TestAsset/SapiResponse.php">
+ <InvalidScalarArgument occurrences="1"/>
+ <MissingReturnType occurrences="1">
+ <code>header</code>
+ </MissingReturnType>
+ </file>
+</files>
--- /dev/null
+<?xml version="1.0"?>
+<psalm
+ totallyTyped="true"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ errorBaseline="psalm-baseline.xml"
+>
+ <projectFiles>
+ <directory name="src"/>
+ <directory name="test"/>
+ <ignoreFiles>
+ <directory name="vendor"/>
+ </ignoreFiles>
+ </projectFiles>
+
+ <issueHandlers>
+ <InternalMethod>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::method"/>
+ </errorLevel>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::willReturn"/>
+ </errorLevel>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::with"/>
+ </errorLevel>
+ </InternalMethod>
+ </issueHandlers>
+ <plugins>
+ <pluginClass class="Psalm\PhpUnitPlugin\Plugin"/>
+ </plugins>
+</psalm>
use Laminas\HttpHandlerRunner\Exception;
use Psr\Http\Message\ResponseInterface;
+use ReturnTypeWillChange;
use SplStack;
/**
* @return void
* @throws InvalidArgumentException if not an EmitterInterface instance
*/
+ #[ReturnTypeWillChange]
public function offsetSet($index, $emitter)
{
$this->validateEmitter($emitter);
* @return void
* @throws InvalidArgumentException if not an EmitterInterface instance
*/
+ #[ReturnTypeWillChange]
public function push($emitter)
{
$this->validateEmitter($emitter);
* @return void
* @throws InvalidArgumentException if not an EmitterInterface instance
*/
+ #[ReturnTypeWillChange]
public function unshift($emitter)
{
$this->validateEmitter($emitter);
* @throws EmitterException if headers have already been sent.
* @throws EmitterException if output is present in the output buffer.
*/
- private function assertNoPreviousOutput()
+ private function assertNoPreviousOutput(): void
{
if (headers_sent()) {
throw EmitterException::forHeadersSent();
*
* @see \Laminas\HttpHandlerRunner\Emitter\SapiEmitterTrait::emitHeaders()
*/
- private function emitStatusLine(ResponseInterface $response) : void
+ private function emitStatusLine(ResponseInterface $response): void
{
$reasonPhrase = $response->getReasonPhrase();
$statusCode = $response->getStatusCode();
* in such a way as to create aggregate headers (instead of replace
* the previous).
*/
- private function emitHeaders(ResponseInterface $response) : void
+ private function emitHeaders(ResponseInterface $response): void
{
$statusCode = $response->getStatusCode();
/**
* Filter a header name to wordcase
*/
- private function filterHeader(string $header) : string
+ private function filterHeader(string $header): string
{
return ucwords($header, '-');
}
class InvalidEmitterException extends InvalidArgumentException implements ExceptionInterface
{
/**
- * @var mixed $emitter Invalid emitter type
+ * @param mixed $emitter Invalid emitter type
*/
public static function forEmitter($emitter) : self
{
+++ /dev/null
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 2.7.0 - 2019-10-17
-
-### Added
-
-- [zendframework/zend-progressbar#27](https://github.com/zendframework/zend-progressbar/pull/27) adds support for PHP 7.3.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [zendframework/zend-progressbar#27](https://github.com/zendframework/zend-progressbar/pull/27) removes support for laminas-stdlib v2 releases.
-
-### Fixed
-
-- Nothing.
-
-## 2.6.0 - 2018-04-30
-
-### Added
-
-- [zendframework/zend-progressbar#25](https://github.com/zendframework/zend-progressbar/pull/25) adds support for PHP 7.1 and 7.2.
-
-- [zendframework/zend-progressbar#17](https://github.com/zendframework/zend-progressbar/pull/17) adds and
- publishes the documentation to https://docs.laminas.dev/laminas-progressbar/
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [zendframework/zend-progressbar#25](https://github.com/zendframework/zend-progressbar/pull/25) removes support for PHP 5.5.
-
-- [zendframework/zend-progressbar#25](https://github.com/zendframework/zend-progressbar/pull/25) removes support for HHVM.
-
-### Fixed
-
-- Nothing.
-
-## 2.5.2 - 2016-03-01
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-progressbar#10](https://github.com/zendframework/zend-progressbar/pull/10) updates
- dependencies to allow forward-compatibility with laminas-stdlib 3.
-Copyright (c) 2019, Laminas Foundation.
-All rights reserved. (https://getlaminas.org/)
+Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. (https://getlaminas.org/)
-Copyright (c) 2019, Laminas Foundation
-All rights reserved.
+Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
# laminas-progressbar
-[![Build Status](https://travis-ci.org/laminas/laminas-progressbar.svg?branch=master)](https://travis-ci.org/laminas/laminas-progressbar)
-[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-progressbar/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-progressbar?branch=master)
+> This package is considered feature-complete, and is now in **security-only** maintenance mode, following a [decision by the Technical Steering Committee](https://github.com/laminas/technical-steering-committee/blob/2b55453e172a1b8c9c4c212be7cf7e7a58b9352c/meetings/minutes/2020-08-03-TSC-Minutes.md#vote-on-components-to-mark-as-security-only).
+> If you have a security issue, please [follow our security reporting guidelines](https://getlaminas.org/security/).
+> If you wish to take on the role of maintainer, please [nominate yourself](https://github.com/laminas/technical-steering-committee/issues/new?assignees=&labels=Nomination&template=Maintainer_Nomination.md&title=%5BNOMINATION%5D%5BMAINTAINER%5D%3A+%7Bname+of+person+being+nominated%7D)
+
+
+[![Build Status](https://github.com/laminas/laminas-progressbar/workflows/Continuous%20Integration/badge.svg)](https://github.com/laminas/laminas-progressbar/actions?query=workflow%3A"Continuous+Integration")
laminas-progressbar is a component to create and update progress bars in different
environments. It consists of a single backend, which outputs the progress through
## Support
-* [Issues](https://github.com/laminas/laminas-progressbar/issues/)
-* [Chat](https://laminas.dev/chat/)
-* [Forum](https://discourse.laminas.dev/)
+- [Issues](https://github.com/laminas/laminas-progressbar/issues/)
+- [Chat](https://laminas.dev/chat/)
+- [Forum](https://discourse.laminas.dev/)
"config": {
"sort-packages": true
},
- "extra": {
- "branch-alias": {
- "dev-master": "2.7.x-dev",
- "dev-develop": "2.8.x-dev"
- }
- },
"require": {
- "php": "^5.6 || ^7.0",
- "laminas/laminas-stdlib": "^3.2.1",
- "laminas/laminas-zendframework-bridge": "^1.0"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0",
+ "laminas/laminas-stdlib": "^3.2.1"
},
"require-dev": {
"laminas/laminas-coding-standard": "~1.0.0",
- "laminas/laminas-json": "^2.6.1",
+ "laminas/laminas-json": "^3.0.0",
"laminas/laminas-session": "^2.8.5",
- "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4"
+ "phpunit/phpunit": "^9.3"
},
"suggest": {
"laminas/laminas-json": "Laminas\\Json component",
"test": "phpunit --colors=always",
"test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
},
- "replace": {
- "zendframework/zend-progressbar": "self.version"
+ "conflict": {
+ "zendframework/zend-progressbar": "*"
}
}
--- /dev/null
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "80e26081d63e914a22ac1bb2ea06bbb8",
+ "packages": [
+ {
+ "name": "laminas/laminas-stdlib",
+ "version": "3.7.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-stdlib.git",
+ "reference": "bcd869e2fe88d567800057c1434f2380354fe325"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/bcd869e2fe88d567800057c1434f2380354fe325",
+ "reference": "bcd869e2fe88d567800057c1434f2380354fe325",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "conflict": {
+ "zendframework/zend-stdlib": "*"
+ },
+ "require-dev": {
+ "laminas/laminas-coding-standard": "~2.3.0",
+ "phpbench/phpbench": "^1.0",
+ "phpunit/phpunit": "^9.3.7",
+ "psalm/plugin-phpunit": "^0.16.0",
+ "vimeo/psalm": "^4.7"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Laminas\\Stdlib\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "SPL extensions, array utilities, error handlers, and more",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "laminas",
+ "stdlib"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-stdlib/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-stdlib/issues",
+ "rss": "https://github.com/laminas/laminas-stdlib/releases.atom",
+ "source": "https://github.com/laminas/laminas-stdlib"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2022-01-21T15:50:46+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
+ },
+ {
+ "name": "laminas/laminas-coding-standard",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-coding-standard.git",
+ "reference": "08880ce2fbfe62d471cd3cb766a91da630b32539"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/08880ce2fbfe62d471cd3cb766a91da630b32539",
+ "reference": "08880ce2fbfe62d471cd3cb766a91da630b32539",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-zendframework-bridge": "^1.0",
+ "squizlabs/php_codesniffer": "^2.7"
+ },
+ "replace": {
+ "zendframework/zend-coding-standard": "self.version"
+ },
+ "type": "library",
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Laminas coding standard",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "Coding Standard",
+ "laminas"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-coding-standard/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-coding-standard/issues",
+ "rss": "https://github.com/laminas/laminas-coding-standard/releases.atom",
+ "source": "https://github.com/laminas/laminas-coding-standard"
+ },
+ "time": "2019-12-31T16:28:26+00:00"
+ },
+ {
+ "name": "laminas/laminas-eventmanager",
+ "version": "3.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-eventmanager.git",
+ "reference": "a93fd278c97b2d41ebbce5ba048a24e3e6f580ba"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/a93fd278c97b2d41ebbce5ba048a24e3e6f580ba",
+ "reference": "a93fd278c97b2d41ebbce5ba048a24e3e6f580ba",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "conflict": {
+ "zendframework/zend-eventmanager": "*"
+ },
+ "require-dev": {
+ "container-interop/container-interop": "^1.1",
+ "laminas/laminas-coding-standard": "~2.2.1",
+ "laminas/laminas-stdlib": "^3.6",
+ "phpbench/phpbench": "^1.1",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.5.5"
+ },
+ "suggest": {
+ "container-interop/container-interop": "^1.1, to use the lazy listeners feature",
+ "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Laminas\\EventManager\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Trigger and listen to events within a PHP application",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "event",
+ "eventmanager",
+ "events",
+ "laminas"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-eventmanager/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-eventmanager/issues",
+ "rss": "https://github.com/laminas/laminas-eventmanager/releases.atom",
+ "source": "https://github.com/laminas/laminas-eventmanager"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2021-09-07T22:35:32+00:00"
+ },
+ {
+ "name": "laminas/laminas-json",
+ "version": "3.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-json.git",
+ "reference": "9a0ce9f330b7d11e70c4acb44d67e8c4f03f437f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-json/zipball/9a0ce9f330b7d11e70c4acb44d67e8c4f03f437f",
+ "reference": "9a0ce9f330b7d11e70c4acb44d67e8c4f03f437f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "conflict": {
+ "zendframework/zend-json": "*"
+ },
+ "require-dev": {
+ "laminas/laminas-coding-standard": "~2.2.1",
+ "laminas/laminas-stdlib": "^2.7.7 || ^3.1",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "laminas/laminas-json-server": "For implementing JSON-RPC servers",
+ "laminas/laminas-xml2json": "For converting XML documents to JSON"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Laminas\\Json\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "json",
+ "laminas"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-json/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-json/issues",
+ "rss": "https://github.com/laminas/laminas-json/releases.atom",
+ "source": "https://github.com/laminas/laminas-json"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2021-09-02T18:02:31+00:00"
+ },
+ {
+ "name": "laminas/laminas-session",
+ "version": "2.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-session.git",
+ "reference": "fc538bba5196e3b5937ae7db3c713fc7c0829881"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-session/zipball/fc538bba5196e3b5937ae7db3c713fc7c0829881",
+ "reference": "fc538bba5196e3b5937ae7db3c713fc7c0829881",
+ "shasum": ""
+ },
+ "require": {
+ "laminas/laminas-eventmanager": "^3.4",
+ "laminas/laminas-stdlib": "^3.6",
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "conflict": {
+ "zendframework/zend-session": "*"
+ },
+ "require-dev": {
+ "container-interop/container-interop": "^1.1",
+ "laminas/laminas-cache": "3.0.x-dev",
+ "laminas/laminas-cache-storage-adapter-memory": "2.0.x-dev",
+ "laminas/laminas-coding-standard": "~2.2.1",
+ "laminas/laminas-db": "^2.13.4",
+ "laminas/laminas-http": "^2.15",
+ "laminas/laminas-servicemanager": "^3.7",
+ "laminas/laminas-validator": "^2.15",
+ "mongodb/mongodb": "v1.9.x-dev",
+ "php-mock/php-mock-phpunit": "^1.1.2 || ^2.0",
+ "phpspec/prophecy-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.5.9"
+ },
+ "suggest": {
+ "laminas/laminas-cache": "Laminas\\Cache component",
+ "laminas/laminas-db": "Laminas\\Db component",
+ "laminas/laminas-http": "Laminas\\Http component",
+ "laminas/laminas-servicemanager": "Laminas\\ServiceManager component",
+ "laminas/laminas-validator": "Laminas\\Validator component",
+ "mongodb/mongodb": "If you want to use the MongoDB session save handler"
+ },
+ "type": "library",
+ "extra": {
+ "laminas": {
+ "component": "Laminas\\Session",
+ "config-provider": "Laminas\\Session\\ConfigProvider"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Laminas\\Session\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Object-oriented interface to PHP sessions and storage",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "laminas",
+ "session"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-session/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-session/issues",
+ "rss": "https://github.com/laminas/laminas-session/releases.atom",
+ "source": "https://github.com/laminas/laminas-session"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2021-09-21T19:25:14+00:00"
+ },
+ {
+ "name": "laminas/laminas-zendframework-bridge",
+ "version": "1.4.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-zendframework-bridge.git",
+ "reference": "88bf037259869891afce6504cacc4f8a07b24d0f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-zendframework-bridge/zipball/88bf037259869891afce6504cacc4f8a07b24d0f",
+ "reference": "88bf037259869891afce6504cacc4f8a07b24d0f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "psalm/plugin-phpunit": "^0.15.1",
+ "squizlabs/php_codesniffer": "^3.5",
+ "vimeo/psalm": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "laminas": {
+ "module": "Laminas\\ZendFrameworkBridge"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/autoload.php"
+ ],
+ "psr-4": {
+ "Laminas\\ZendFrameworkBridge\\": "src//"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Alias legacy ZF class names to Laminas Project equivalents.",
+ "keywords": [
+ "ZendFramework",
+ "autoloading",
+ "laminas",
+ "zf"
+ ],
+ "support": {
+ "forum": "https://discourse.laminas.dev/",
+ "issues": "https://github.com/laminas/laminas-zendframework-bridge/issues",
+ "rss": "https://github.com/laminas/laminas-zendframework-bridge/releases.atom",
+ "source": "https://github.com/laminas/laminas-zendframework-bridge"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2021-12-21T14:34:37+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "replace": {
+ "myclabs/deep-copy": "self.version"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-13T09:40:50+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.10.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e",
+ "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4"
+ },
+ "time": "2020-12-20T10:01:03+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/master"
+ },
+ "time": "2020-06-27T14:33:11+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "e4782611070e50613683d2b9a57730e9a3ba5451"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451",
+ "reference": "e4782611070e50613683d2b9a57730e9a3ba5451",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.0.4"
+ },
+ "time": "2020-12-13T23:18:30+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
+ },
+ "time": "2020-09-03T19:13:55+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
+ },
+ "time": "2020-09-17T18:55:26+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "1.14.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
+ "reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.2",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0 || ^7.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/1.14.0"
+ },
+ "time": "2021-09-10T09:02:12+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1",
+ "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.10.2",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:44:49+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:57:25+00:00"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:58:55+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T05:33:50+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "9.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "05c76e25f90e40af2cf2b1b39e6d49c5e74aa84c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05c76e25f90e40af2cf2b1b39e6d49c5e74aa84c",
+ "reference": "05c76e25f90e40af2cf2b1b39e6d49c5e74aa84c",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.1",
+ "phar-io/version": "^3.0.2",
+ "php": "^7.3 || ^8.0",
+ "phpspec/prophecy": "^1.11.1",
+ "phpunit/php-code-coverage": "^9.0",
+ "phpunit/php-file-iterator": "^3.0.4",
+ "phpunit/php-invoker": "^3.1",
+ "phpunit/php-text-template": "^2.0.2",
+ "phpunit/php-timer": "^5.0.1",
+ "sebastian/code-unit": "^1.0.5",
+ "sebastian/comparator": "^4.0.3",
+ "sebastian/diff": "^4.0.2",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/exporter": "^4.0.2",
+ "sebastian/global-state": "^5.0",
+ "sebastian/object-enumerator": "^4.0.2",
+ "sebastian/resource-operations": "^3.0.2",
+ "sebastian/type": "^2.2.1",
+ "sebastian/version": "^3.0.1"
+ },
+ "require-dev": {
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ],
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.3"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/donate.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-08-07T04:24:24+00:00"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:08:54+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:52:27+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:52:38+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:24:23+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "a90ccbddffa067b51f574dea6eb25d5680839455"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455",
+ "reference": "a90ccbddffa067b51f574dea6eb25d5680839455",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:55:19+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:42:11+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:17:30+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:45:17+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "2.3.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
+ "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:18:59+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:39:44+00:00"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "2.9.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "2acf168de78487db620ab4bc524135a13cfe6745"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745",
+ "reference": "2acf168de78487db620ab4bc524135a13cfe6745",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.0"
+ },
+ "bin": [
+ "scripts/phpcs",
+ "scripts/phpcbf"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "CodeSniffer.php",
+ "CodeSniffer/CLI.php",
+ "CodeSniffer/Exception.php",
+ "CodeSniffer/File.php",
+ "CodeSniffer/Fixer.php",
+ "CodeSniffer/Report.php",
+ "CodeSniffer/Reporting.php",
+ "CodeSniffer/Sniff.php",
+ "CodeSniffer/Tokens.php",
+ "CodeSniffer/Reports/",
+ "CodeSniffer/Tokenizers/",
+ "CodeSniffer/DocGenerators/",
+ "CodeSniffer/Standards/AbstractPatternSniff.php",
+ "CodeSniffer/Standards/AbstractScopeSniff.php",
+ "CodeSniffer/Standards/AbstractVariableSniff.php",
+ "CodeSniffer/Standards/IncorrectPatternException.php",
+ "CodeSniffer/Standards/Generic/Sniffs/",
+ "CodeSniffer/Standards/MySource/Sniffs/",
+ "CodeSniffer/Standards/PEAR/Sniffs/",
+ "CodeSniffer/Standards/PSR1/Sniffs/",
+ "CodeSniffer/Standards/PSR2/Sniffs/",
+ "CodeSniffer/Standards/Squiz/Sniffs/",
+ "CodeSniffer/Standards/Zend/Sniffs/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "lead"
+ }
+ ],
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "http://www.squizlabs.com/php-codesniffer",
+ "keywords": [
+ "phpcs",
+ "standards"
+ ],
+ "support": {
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ },
+ "time": "2018-11-07T22:31:41+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.22.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "c6c942b1ac76c82448322025e084cadc56048b4e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e",
+ "reference": "c6c942b1ac76c82448322025e084cadc56048b4e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.22-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-01-07T16:49:33+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a",
+ "reference": "75a63c33a8577608444246075ea0af0d052e452a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2020-07-12T23:59:07+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.9.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<3.9.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.36 || ^7.5.13"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.9.1"
+ },
+ "time": "2020-07-08T17:02:28+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": true,
+ "platform": {
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "platform-dev": [],
+ "plugin-api-version": "2.2.0"
+}
--- /dev/null
+<?xml version="1.0"?>
+<ruleset name="Laminas coding standard">
+ <rule ref="./vendor/laminas/laminas-coding-standard/ruleset.xml"/>
+
+ <!-- Paths to check -->
+ <file>src</file>
+ <file>test</file>
+</ruleset>
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Adapter;
use Laminas\Stdlib\ArrayUtils;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Adapter;
+use Laminas\ProgressBar\Adapter\Exception\RuntimeException;
use Laminas\Stdlib\ErrorHandler;
use Laminas\Stdlib\StringUtils;
+use ValueError;
/**
* Laminas\ProgressBar\Adapter\Console offers a text-based progressbar for console
*
* @param string $resource
* @throws Exception\RuntimeException
- * @return \Laminas\ProgressBar\Adapter\Console
*/
public function setOutputStream($resource)
{
- ErrorHandler::start();
- $stream = fopen($resource, 'w');
- $error = ErrorHandler::stop();
+ $fileOpenError = null;
+ ErrorHandler::start(E_DEPRECATED);
+ try {
+ $stream = fopen($resource, 'w');
+ } catch (ValueError $fileOpenError) {
+ $stream = false;
+ } finally {
+ $error = ErrorHandler::stop();
+ }
if ($stream === false) {
- throw new Exception\RuntimeException('Unable to open stream', 0, $error);
+ $previous = $fileOpenError ?: $error;
+ throw new Exception\RuntimeException('Unable to open stream', 0, $previous);
}
if ($this->outputStream !== null) {
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Adapter\Exception;
use Laminas\ProgressBar\Exception\ExceptionInterface as ProgressBarException;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Adapter\Exception;
use Laminas\ProgressBar\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Adapter\Exception;
use Laminas\ProgressBar\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Adapter;
use Laminas\Json\Json;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Adapter;
use Laminas\Json\Json;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Exception;
/**
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Exception;
/**
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Exception;
/**
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Exception;
class PhpEnvironmentException extends RuntimeException
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Exception;
/**
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar;
use Laminas\Session;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Upload;
use Laminas\ProgressBar\Adapter\AbstractAdapter as AbstractProgressAdapter;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Upload;
use Laminas\ProgressBar\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Upload;
use Laminas\ProgressBar\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Upload;
/**
<?php
-/**
- * @see https://github.com/laminas/laminas-progressbar for the canonical source repository
- * @copyright https://github.com/laminas/laminas-progressbar/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-progressbar/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ProgressBar\Upload;
use Laminas\ProgressBar\Exception;
+++ /dev/null
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 3.2.1 - 2018-08-28
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-stdlib#92](https://github.com/zendframework/zend-stdlib/pull/92) fixes serialization of `SplPriorityQueue` by ensuring its `$serial`
- property is also serialized.
-
-- [zendframework/zend-stdlib#91](https://github.com/zendframework/zend-stdlib/pull/91) fixes behavior in the `ArrayObject` implementation that was not
- compatible with PHP 7.3.
-
-## 3.2.0 - 2018-04-30
-
-### Added
-
-- [zendframework/zend-stdlib#87](https://github.com/zendframework/zend-stdlib/pull/87) adds support for PHP 7.2.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [zendframework/zend-stdlib#87](https://github.com/zendframework/zend-stdlib/pull/87) removes support for HHVM.
-
-### Fixed
-
-- Nothing.
-
-## 3.1.1 - 2018-04-12
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [zendframework/zend-stdlib#67](https://github.com/zendframework/zend-stdlib/pull/67) changes the typehint of the `$content` property
- of the `Message` class to indicate it is a string. All known implementations
- already assumed this.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-stdlib#60](https://github.com/zendframework/zend-stdlib/pull/60) fixes an issue whereby calling `remove()` would
- incorrectly re-calculate the maximum priority stored in the queue.
-
-- [zendframework/zend-stdlib#60](https://github.com/zendframework/zend-stdlib/pull/60) fixes an infinite loop condition that can occur when
- inserting an item at 0 priority.
-
-## 3.1.0 - 2016-09-13
-
-### Added
-
-- [zendframework/zend-stdlib#63](https://github.com/zendframework/zend-stdlib/pull/63) adds a new
- `Laminas\Stdlib\ConsoleHelper` class, providing minimal support for writing
- output to `STDOUT` and `STDERR`, with optional colorization, when the console
- supports that feature.
-
-### Deprecated
-
-- [zendframework/zend-stdlib#38](https://github.com/zendframework/zend-stdlib/pull/38) deprecates
- `Laminas\Stdlib\JsonSerializable`, as all supported version of PHP now support
- it.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 3.0.1 - 2016-04-12
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-stdlib#59](https://github.com/zendframework/zend-stdlib/pull/59) fixes a notice
- when defining the `Laminas\Json\Json::GLOB_BRACE` constant on systems using
- non-gcc glob implementations.
-
-## 3.0.0 - 2016-02-03
-
-### Added
-
-- [zendframework/zend-stdlib#51](https://github.com/zendframework/zend-stdlib/pull/51) adds PHP 7 as a
- supported PHP version.
-- [zendframework/zend-stdlib#51](https://github.com/zendframework/zend-stdlib/pull/51) adds a migration
- document from v2 to v3. Hint: if you use hydrators, you need to be using
- laminas-hydrator instead!
-- [zendframework/zend-stdlib#51](https://github.com/zendframework/zend-stdlib/pull/51) adds automated
- documentation builds to gh-pages.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [zendframework/zend-stdlib#33](https://github.com/zendframework/zend-stdlib/pull/33) - removed
- deprecated classes
- - *All Hydrator classes* see zendframework/zend-stdlib#22.
- - `Laminas\Stdlib\CallbackHandler` see zendframework/zend-stdlib#35
-- [zendframework/zend-stdlib#37](https://github.com/zendframework/zend-stdlib/pull/37) - removed
- deprecated classes and polyfills:
- - `Laminas\Stdlib\DateTime`; this had been deprecated since 2.5, and only
- existed as a polyfill for the `createFromISO8601()` support, now standard
- in all PHP versions we support.
- - `Laminas\Stdlib\Exception\InvalidCallbackException`, which was unused since zendframework/zend-stdlib#33.
- - `Laminas\Stdlib\Guard\GuardUtils`, which duplicated `Laminas\Stdlib\Guard\AllGuardsTrait`
- to allow usage with pre-PHP 5.4 versions.
- - `src/compatibility/autoload.php`, which has been dprecated since 2.5.
-- [zendframework/zend-stdlib#37](https://github.com/zendframework/zend-stdlib/pull/37) - removed
- unneeded dependencies:
- - laminas-config (used only in testing ArrayUtils, and the test was redundant)
- - laminas-serializer (no longer used)
-- [zendframework/zend-stdlib#51](https://github.com/zendframework/zend-stdlib/pull/51) removes the
- documentation for hydrators, as those are part of the laminas-hydrator
- component.
-
-### Fixed
-
-- Nothing.
-
-## 2.7.4 - 2015-10-15
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- [zendframework/zend-stdlib#35](https://github.com/zendframework/zend-stdlib/pull/35) deprecates
- `Laminas\Stdlib\CallbackHandler`, as the one component that used it,
- laminas-eventmanager, will no longer depend on it starting in v3.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.7.3 - 2015-09-24
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-stdlib#27](https://github.com/zendframework/zend-stdlib/pull/27) fixes a race
- condition in the `FastPriorityQueue::remove()` logic that occurs when removing
- items iteratively from the same priority of a queue.
-
-## 2.7.2 - 2015-09-23
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-stdlib#26](https://github.com/zendframework/zend-stdlib/pull/26) fixes a subtle
- inheritance issue with deprecation in the hydrators, and updates the
- `HydratorInterface` to also extend the laminas-hydrator `HydratorInterface` to
- ensure LSP is preserved.
-
-## 2.7.1 - 2015-09-22
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-stdlib#24](https://github.com/zendframework/zend-stdlib/pull/24) fixes an import in
- `FastPriorityQueue` to alias `SplPriorityQueue` in order to disambiguate with
- the local override present in the component.
-
-## 2.7.0 - 2015-09-22
-
-### Added
-
-- [zendframework/zend-stdlib#19](https://github.com/zendframework/zend-stdlib/pull/19) adds a new
- `FastPriorityQueue` implementation. It follows the same signature as
- `SplPriorityQueue`, but uses a performance-optimized algorithm:
-
- - inserts are 2x faster than `SplPriorityQueue` and 3x faster than the
- `Laminas\Stdlib\PriorityQueue` implementation.
- - extracts are 4x faster than `SplPriorityQueue` and 4-5x faster than the
- `Laminas\Stdlib\PriorityQueue` implementation.
-
- The intention is to use this as a drop-in replacement in the
- `laminas-eventmanager` component to provide performance benefits.
-
-### Deprecated
-
-- [zendframework/zend-stdlib#20](https://github.com/zendframework/zend-stdlib/pull/20) deprecates *all
- hydrator* classes, in favor of the new [laminas-hydrator](https://github.com/laminas/laminas-hydrator)
- component. All classes were updated to extend their laminas-hydrator equivalents,
- and marked as `@deprecated`, indicating the equivalent class from the other
- repository.
-
- Users *should* immediately start changing their code to use the laminas-hydrator
- equivalents; in most cases, this can be as easy as removing the `Stdlib`
- namespace from import statements or hydrator configuration. Hydrators will be
- removed entirely from laminas-stdlib in v3.0, and all future updates to hydrators
- will occur in the laminas-hydrator library.
-
- Changes with backwards compatibility implications:
-
- - Users implementing `Laminas\Stdlib\Hydrator\HydratorAwareInterface` will need to
- update their `setHydrator()` implementation to typehint on
- `Laminas\Hydrator\HydratorInterface`. This can be done by changing the import
- statement for that interface as follows:
-
- ```php
- // Replace this:
- use Laminas\Stdlib\Hydrator\HydratorInterface;
- // with this:
- use Laminas\Hydrator\HydratorInterface;
- ```
-
- If you are not using imports, change the typehint within the signature itself:
-
- ```php
- // Replace this:
- public function setHydrator(\Laminas\Stdlib\Hydrator\HydratorInterface $hydrator)
- // with this:
- public function setHydrator(\Laminas\Hydrator\HydratorInterface $hydrator)
- ```
-
- If you are using `Laminas\Stdlib\Hydrator\HydratorAwareTrait`, no changes are
- necessary, unless you override that method.
-
- - If you were catching hydrator-generated exceptions, these were previously in
- the `Laminas\Stdlib\Exception` namespace. You will need to update your code to
- catch exceptions in the `Laminas\Hydrator\Exception` namespace.
-
- - Users who *do* migrate to laminas-hydrator may end up in a situation where
- their code will not work with existing libraries that are still type-hinting
- on the laminas-stdlib interfaces. We will be attempting to address that ASAP,
- but the deprecation within laminas-stdlib is necessary as a first step.
-
- In the meantime, you can write hydrators targeting laminas-stdlib still in
- order to guarantee compatibility.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.6.0 - 2015-07-21
-
-### Added
-
-- [zendframework/zend-stdlib#13](https://github.com/zendframework/zend-stdlib/pull/13) adds
- `Laminas\Stdlib\Hydrator\Iterator`, which provides mechanisms for hydrating
- objects when iterating a traversable. This allows creating generic collection
- resultsets; the original idea was pulled from
- [PhlyMongo](https://github.com/phly/PhlyMongo), where it was used to hydrate
- collections retrieved from MongoDB.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 2.5.2 - 2015-07-21
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-stdlib#9](https://github.com/zendframework/zend-stdlib/pull/9) fixes an issue with
- count incrementation during insert in PriorityList, ensuring that incrementation only
- occurs when the item inserted was not previously present in the list.
-
-## 2.4.4 - 2015-07-21
-
-### Added
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [zendframework/zend-stdlib#9](https://github.com/zendframework/zend-stdlib/pull/9) fixes an issue with
- count incrementation during insert in PriorityList, ensuring that incrementation only
- occurs when the item inserted was not previously present in the list.
-Copyright (c) 2019, Laminas Foundation.
-All rights reserved. (https://getlaminas.org/)
+Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC. (https://getlaminas.org/)
-Copyright (c) 2019, Laminas Foundation
-All rights reserved.
+Copyright (c) 2020 Laminas Project a Series of LF Projects, LLC.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
# laminas-stdlib
-[![Build Status](https://travis-ci.org/laminas/laminas-stdlib.svg?branch=master)](https://travis-ci.org/laminas/laminas-stdlib)
+[![Build Status](https://github.com/laminas/laminas-stdlib/actions/workflows/continuous-integration.yml/badge.svg)](https://github.com/laminas/laminas-stdlib/actions/workflows/continuous-integration.yml)
[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-stdlib/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-stdlib?branch=master)
`Laminas\Stdlib` is a set of components that implements general purpose utility
"forum": "https://discourse.laminas.dev"
},
"config": {
- "sort-packages": true
+ "sort-packages": true,
+ "platform": {
+ "php": "7.3.99"
+ },
+ "allow-plugins": {
+ "dealerdirect/phpcodesniffer-composer-installer": true
+ }
},
"extra": {
- "branch-alias": {
- "dev-master": "3.2.x-dev",
- "dev-develop": "3.3.x-dev"
- }
},
"require": {
- "php": "^5.6 || ^7.0",
- "laminas/laminas-zendframework-bridge": "^1.0"
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
},
"require-dev": {
- "laminas/laminas-coding-standard": "~1.0.0",
- "phpbench/phpbench": "^0.13",
- "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2"
+ "laminas/laminas-coding-standard": "~2.3.0",
+ "phpbench/phpbench": "^1.0",
+ "phpunit/phpunit": "^9.3.7",
+ "psalm/plugin-phpunit": "^0.16.0",
+ "vimeo/psalm": "^4.7"
},
"autoload": {
"psr-4": {
],
"cs-check": "phpcs",
"cs-fix": "phpcbf",
+ "static-analysis": "psalm --shepherd --stats",
"test": "phpunit --colors=always",
"test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
},
- "replace": {
- "zendframework/zend-stdlib": "self.version"
+ "conflict": {
+ "zendframework/zend-stdlib": "*"
}
}
--- /dev/null
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "76c977b81f7135d1fbeb7438741d954d",
+ "packages": [],
+ "packages-dev": [
+ {
+ "name": "amphp/amp",
+ "version": "v2.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/amp.git",
+ "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/caa95edeb1ca1bf7532e9118ede4a3c3126408cc",
+ "reference": "caa95edeb1ca1bf7532e9118ede4a3c3126408cc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1",
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^7 | ^8 | ^9",
+ "psalm/phar": "^3.11@dev",
+ "react/promise": "^2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Amp\\": "lib"
+ },
+ "files": [
+ "lib/functions.php",
+ "lib/Internal/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A non-blocking concurrency framework for PHP applications.",
+ "homepage": "http://amphp.org/amp",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "awaitable",
+ "concurrency",
+ "event",
+ "event-loop",
+ "future",
+ "non-blocking",
+ "promise"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/amp/issues",
+ "source": "https://github.com/amphp/amp/tree/v2.6.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-16T20:06:06+00:00"
+ },
+ {
+ "name": "amphp/byte-stream",
+ "version": "v1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/byte-stream.git",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1.4",
+ "friendsofphp/php-cs-fixer": "^2.3",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^6 || ^7 || ^8",
+ "psalm/phar": "^3.11.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Amp\\ByteStream\\": "lib"
+ },
+ "files": [
+ "lib/functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "homepage": "http://amphp.org/byte-stream",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "non-blocking",
+ "stream"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/byte-stream/issues",
+ "source": "https://github.com/amphp/byte-stream/tree/v1.8.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2021-03-30T17:13:30+00:00"
+ },
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "b174585d1fe49ceed21928a945138948cb394600"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b174585d1fe49ceed21928a945138948cb394600",
+ "reference": "b174585d1fe49ceed21928a945138948cb394600",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13",
+ "phpunit/phpunit": "^6.5 || ^7"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PackageVersions\\Installer",
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "support": {
+ "issues": "https://github.com/composer/package-versions-deprecated/issues",
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.4"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-13T08:41:34+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "3.2.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/31f3ea725711245195f62e54ffa402d8ef2fdba9",
+ "reference": "31f3ea725711245195f62e54ffa402d8ef2fdba9",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.54",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/3.2.5"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-24T12:41:47+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339",
+ "reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^0.12.55",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-31T17:03:58+00:00"
+ },
+ {
+ "name": "dealerdirect/phpcodesniffer-composer-installer",
+ "version": "v0.7.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
+ "reference": "fe390591e0241955f22eb9ba327d137e501c771c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/fe390591e0241955f22eb9ba327d137e501c771c",
+ "reference": "fe390591e0241955f22eb9ba327d137e501c771c",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0 || ^2.0",
+ "php": ">=5.3",
+ "squizlabs/php_codesniffer": "^2.0 || ^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "composer/composer": "*",
+ "phpcompatibility/php-compatibility": "^9.0",
+ "sensiolabs/security-checker": "^4.1.0"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
+ },
+ "autoload": {
+ "psr-4": {
+ "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Franck Nijhof",
+ "email": "franck.nijhof@dealerdirect.com",
+ "homepage": "http://www.frenck.nl",
+ "role": "Developer / IT Manager"
+ }
+ ],
+ "description": "PHP_CodeSniffer Standards Composer Installer Plugin",
+ "homepage": "http://www.dealerdirect.com",
+ "keywords": [
+ "PHPCodeSniffer",
+ "PHP_CodeSniffer",
+ "code quality",
+ "codesniffer",
+ "composer",
+ "installer",
+ "phpcs",
+ "plugin",
+ "qa",
+ "quality",
+ "standard",
+ "standards",
+ "style guide",
+ "stylecheck",
+ "tests"
+ ],
+ "support": {
+ "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
+ "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
+ },
+ "time": "2020-12-07T18:04:37+00:00"
+ },
+ {
+ "name": "dnoegel/php-xdg-base-dir",
+ "version": "v0.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "implementation of xdg base directory specification for php",
+ "support": {
+ "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues",
+ "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1"
+ },
+ "time": "2019-12-04T15:06:13+00:00"
+ },
+ {
+ "name": "doctrine/annotations",
+ "version": "1.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/annotations.git",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/annotations/zipball/5b668aef16090008790395c02c893b1ba13f7e08",
+ "reference": "5b668aef16090008790395c02c893b1ba13f7e08",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/lexer": "1.*",
+ "ext-tokenizer": "*",
+ "php": "^7.1 || ^8.0",
+ "psr/cache": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "doctrine/cache": "^1.11 || ^2.0",
+ "doctrine/coding-standard": "^6.0 || ^8.1",
+ "phpstan/phpstan": "^0.12.20",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.1.5",
+ "symfony/cache": "^4.4 || ^5.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Benjamin Eberlei",
+ "email": "kontakt@beberlei.de"
+ },
+ {
+ "name": "Jonathan Wage",
+ "email": "jonwage@gmail.com"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "Docblock Annotations Parser",
+ "homepage": "https://www.doctrine-project.org/projects/annotations.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "parser"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/annotations/issues",
+ "source": "https://github.com/doctrine/annotations/tree/1.13.2"
+ },
+ "time": "2021-08-05T19:00:23+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
+ },
+ {
+ "name": "doctrine/lexer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/lexer.git",
+ "reference": "e864bbf5904cb8f5bb334f99209b48018522f042"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042",
+ "reference": "e864bbf5904cb8f5bb334f99209b48018522f042",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^6.0",
+ "phpstan/phpstan": "^0.11.8",
+ "phpunit/phpunit": "^8.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Guilherme Blanco",
+ "email": "guilhermeblanco@gmail.com"
+ },
+ {
+ "name": "Roman Borschel",
+ "email": "roman@code-factory.org"
+ },
+ {
+ "name": "Johannes Schmitt",
+ "email": "schmittjoh@gmail.com"
+ }
+ ],
+ "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.",
+ "homepage": "https://www.doctrine-project.org/projects/lexer.html",
+ "keywords": [
+ "annotations",
+ "docblock",
+ "lexer",
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/lexer/issues",
+ "source": "https://github.com/doctrine/lexer/tree/1.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-05-25T17:44:05+00:00"
+ },
+ {
+ "name": "felixfbecker/advanced-json-rpc",
+ "version": "v3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "shasum": ""
+ },
+ "require": {
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "php": "^7.1 || ^8.0",
+ "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "A more advanced JSONRPC implementation",
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
+ "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
+ },
+ "time": "2021-06-11T22:34:44+00:00"
+ },
+ {
+ "name": "felixfbecker/language-server-protocol",
+ "version": "1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
+ "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
+ "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "*",
+ "squizlabs/php_codesniffer": "^3.1",
+ "vimeo/psalm": "^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "LanguageServerProtocol\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "PHP classes for the Language Server Protocol",
+ "keywords": [
+ "language",
+ "microsoft",
+ "php",
+ "server"
+ ],
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
+ "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1"
+ },
+ "time": "2021-02-22T14:02:09+00:00"
+ },
+ {
+ "name": "laminas/laminas-coding-standard",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/laminas/laminas-coding-standard.git",
+ "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/bcf6e07fe4690240be7beb6d884d0b0fafa6a251",
+ "reference": "bcf6e07fe4690240be7beb6d884d0b0fafa6a251",
+ "shasum": ""
+ },
+ "require": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7",
+ "php": "^7.3 || ^8.0",
+ "slevomat/coding-standard": "^7.0",
+ "squizlabs/php_codesniffer": "^3.6",
+ "webimpress/coding-standard": "^1.2"
+ },
+ "type": "phpcodesniffer-standard",
+ "autoload": {
+ "psr-4": {
+ "LaminasCodingStandard\\": "src/LaminasCodingStandard/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "description": "Laminas Coding Standard",
+ "homepage": "https://laminas.dev",
+ "keywords": [
+ "Coding Standard",
+ "laminas"
+ ],
+ "support": {
+ "chat": "https://laminas.dev/chat",
+ "docs": "https://docs.laminas.dev/laminas-coding-standard/",
+ "forum": "https://discourse.laminas.dev",
+ "issues": "https://github.com/laminas/laminas-coding-standard/issues",
+ "rss": "https://github.com/laminas/laminas-coding-standard/releases.atom",
+ "source": "https://github.com/laminas/laminas-coding-standard"
+ },
+ "funding": [
+ {
+ "url": "https://funding.communitybridge.org/projects/laminas-project",
+ "type": "community_bridge"
+ }
+ ],
+ "time": "2021-05-29T15:53:59+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ },
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-13T09:40:50+00:00"
+ },
+ {
+ "name": "netresearch/jsonmapper",
+ "version": "v4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cweiske/jsonmapper.git",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
+ "squizlabs/php_codesniffer": "~3.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JsonMapper": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "OSL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Christian Weiske",
+ "email": "cweiske@cweiske.de",
+ "homepage": "http://github.com/cweiske/jsonmapper/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Map nested JSON structures onto PHP classes",
+ "support": {
+ "email": "cweiske@cweiske.de",
+ "issues": "https://github.com/cweiske/jsonmapper/issues",
+ "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
+ },
+ "time": "2020-12-01T19:48:11+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.12.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "6608f01670c3cc5079e18c1dab1104e002579143"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6608f01670c3cc5079e18c1dab1104e002579143",
+ "reference": "6608f01670c3cc5079e18c1dab1104e002579143",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.12.0"
+ },
+ "time": "2021-07-21T10:44:31+00:00"
+ },
+ {
+ "name": "openlss/lib-array2xml",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nullivex/lib-array2xml.git",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "LSS": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Bryan Tong",
+ "email": "bryan@nullivex.com",
+ "homepage": "https://www.nullivex.com"
+ },
+ {
+ "name": "Tony Butler",
+ "email": "spudz76@gmail.com",
+ "homepage": "https://www.nullivex.com"
+ }
+ ],
+ "description": "Array2XML conversion library credit to lalit.org",
+ "homepage": "https://www.nullivex.com",
+ "keywords": [
+ "array",
+ "array conversion",
+ "xml",
+ "xml conversion"
+ ],
+ "support": {
+ "issues": "https://github.com/nullivex/lib-array2xml/issues",
+ "source": "https://github.com/nullivex/lib-array2xml/tree/master"
+ },
+ "time": "2019-03-29T20:06:56+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ },
+ "time": "2021-07-20T11:28:43+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182",
+ "reference": "bae7c545bef187884426f042434e561ab1ddb182",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.1.0"
+ },
+ "time": "2021-02-23T14:00:09+00:00"
+ },
+ {
+ "name": "phpbench/container",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpbench/container.git",
+ "reference": "4af6c2619296e95b72409fd6244f000276277047"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpbench/container/zipball/4af6c2619296e95b72409fd6244f000276277047",
+ "reference": "4af6c2619296e95b72409fd6244f000276277047",
+ "shasum": ""
+ },
+ "require": {
+ "psr/container": "^1.0|^2.0",
+ "symfony/options-resolver": "^4.2 || ^5.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.16",
+ "phpstan/phpstan": "^0.12.52",
+ "phpunit/phpunit": "^8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpBench\\DependencyInjection\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Leech",
+ "email": "daniel@dantleech.com"
+ }
+ ],
+ "description": "Simple, configurable, service container.",
+ "support": {
+ "issues": "https://github.com/phpbench/container/issues",
+ "source": "https://github.com/phpbench/container/tree/2.2.0"
+ },
+ "time": "2021-07-14T20:56:29+00:00"
+ },
+ {
+ "name": "phpbench/dom",
+ "version": "0.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpbench/dom.git",
+ "reference": "b013b717832ddbaadf2a40984b04bc66af9a7110"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpbench/dom/zipball/b013b717832ddbaadf2a40984b04bc66af9a7110",
+ "reference": "b013b717832ddbaadf2a40984b04bc66af9a7110",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "php": "^7.2||^8.0"
+ },
+ "require-dev": {
+ "friendsofphp/php-cs-fixer": "^2.18",
+ "phpstan/phpstan": "^0.12.83",
+ "phpunit/phpunit": "^8.0||^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpBench\\Dom\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Leech",
+ "email": "daniel@dantleech.com"
+ }
+ ],
+ "description": "DOM wrapper to simplify working with the PHP DOM implementation",
+ "support": {
+ "issues": "https://github.com/phpbench/dom/issues",
+ "source": "https://github.com/phpbench/dom/tree/0.3.2"
+ },
+ "time": "2021-09-24T15:26:07+00:00"
+ },
+ {
+ "name": "phpbench/phpbench",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpbench/phpbench.git",
+ "reference": "3555dff668e58d25c39d287f3f1bac13a7817b4c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpbench/phpbench/zipball/3555dff668e58d25c39d287f3f1bac13a7817b4c",
+ "reference": "3555dff668e58d25c39d287f3f1bac13a7817b4c",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/annotations": "^1.13",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "ext-tokenizer": "*",
+ "php": "^7.3 || ^8.0",
+ "phpbench/container": "^2.1",
+ "phpbench/dom": "~0.3.1",
+ "psr/log": "^1.1",
+ "seld/jsonlint": "^1.1",
+ "symfony/console": "^4.2 || ^5.0",
+ "symfony/filesystem": "^4.2 || ^5.0",
+ "symfony/finder": "^4.2 || ^5.0",
+ "symfony/options-resolver": "^4.2 || ^5.0",
+ "symfony/process": "^4.2 || ^5.0",
+ "webmozart/path-util": "^2.3"
+ },
+ "require-dev": {
+ "dantleech/invoke": "^2.0",
+ "friendsofphp/php-cs-fixer": "^3.0",
+ "jangregor/phpstan-prophecy": "^0.8.1",
+ "phpspec/prophecy": "^1.12",
+ "phpstan/phpstan": "^0.12.7",
+ "phpunit/phpunit": "^8.5.8 || ^9.0",
+ "symfony/error-handler": "^5.2",
+ "symfony/var-dumper": "^4.0 || ^5.0"
+ },
+ "suggest": {
+ "ext-xdebug": "For Xdebug profiling extension."
+ },
+ "bin": [
+ "bin/phpbench"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/Report/Func/functions.php"
+ ],
+ "psr-4": {
+ "PhpBench\\": "lib/",
+ "PhpBench\\Extensions\\XDebug\\": "extensions/xdebug/lib/",
+ "PhpBench\\Extensions\\Reports\\": "extensions/reports/lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Leech",
+ "email": "daniel@dantleech.com"
+ }
+ ],
+ "description": "PHP Benchmarking Framework",
+ "support": {
+ "issues": "https://github.com/phpbench/phpbench/issues",
+ "source": "https://github.com/phpbench/phpbench/tree/1.2.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/dantleech",
+ "type": "github"
+ }
+ ],
+ "time": "2021-11-06T13:52:05+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master"
+ },
+ "time": "2020-09-03T19:13:55+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0"
+ },
+ "time": "2020-09-17T18:55:26+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "1.13.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea",
+ "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.1",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.11.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/1.13.0"
+ },
+ "time": "2021-03-17T13:42:18+00:00"
+ },
+ {
+ "name": "phpstan/phpdoc-parser",
+ "version": "0.5.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpstan/phpdoc-parser.git",
+ "reference": "ea0b17460ec38e20d7eb64e7ec49b5d44af5d28c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/ea0b17460ec38e20d7eb64e7ec49b5d44af5d28c",
+ "reference": "ea0b17460ec38e20d7eb64e7ec49b5d44af5d28c",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^0.12.87",
+ "phpstan/phpstan-strict-rules": "^0.12.5",
+ "phpunit/phpunit": "^9.5",
+ "symfony/process": "^5.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.5-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PHPStan\\PhpDocParser\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "PHPDoc parser with support for nullable, intersection and generic types",
+ "support": {
+ "issues": "https://github.com/phpstan/phpdoc-parser/issues",
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/0.5.5"
+ },
+ "time": "2021-06-11T13:24:46+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "f6293e1b30a2354e8428e004689671b83871edde"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde",
+ "reference": "f6293e1b30a2354e8428e004689671b83871edde",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.10.2",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-03-28T07:26:59+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:57:25+00:00"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:58:55+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T05:33:50+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "9.5.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b",
+ "reference": "ea8c2dfb1065eb35a79b3681eee6e6fb0a6f273b",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "php": ">=7.3",
+ "phpspec/prophecy": "^1.12.1",
+ "phpunit/php-code-coverage": "^9.2.3",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^2.3.4",
+ "sebastian/version": "^3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ],
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.9"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/donate.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-08-31T06:47:40+00:00"
+ },
+ {
+ "name": "psalm/plugin-phpunit",
+ "version": "0.16.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/psalm/psalm-plugin-phpunit.git",
+ "reference": "5dd3be04f37a857d52880ef6af2524a441dfef24"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/5dd3be04f37a857d52880ef6af2524a441dfef24",
+ "reference": "5dd3be04f37a857d52880ef6af2524a441dfef24",
+ "shasum": ""
+ },
+ "require": {
+ "composer/package-versions-deprecated": "^1.10",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "ext-simplexml": "*",
+ "php": "^7.1 || ^8.0",
+ "vimeo/psalm": "dev-master || dev-4.x || ^4.5"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<7.5"
+ },
+ "require-dev": {
+ "codeception/codeception": "^4.0.3",
+ "php": "^7.3 || ^8.0",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.3.1",
+ "weirdan/codeception-psalm-module": "^0.11.0",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "type": "psalm-plugin",
+ "extra": {
+ "psalm": {
+ "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psalm\\PhpUnitPlugin\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matt Brown",
+ "email": "github@muglug.com"
+ }
+ ],
+ "description": "Psalm plugin for PHPUnit",
+ "support": {
+ "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues",
+ "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.16.1"
+ },
+ "time": "2021-06-18T23:56:46+00:00"
+ },
+ {
+ "name": "psr/cache",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/cache.git",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Cache\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for caching libraries",
+ "keywords": [
+ "cache",
+ "psr",
+ "psr-6"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/cache/tree/master"
+ },
+ "time": "2016-08-06T20:24:11+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "2.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "2ae37329ee82f91efadc282cc2d527fd6065a5ef"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/2ae37329ee82f91efadc282cc2d527fd6065a5ef",
+ "reference": "2ae37329ee82f91efadc282cc2d527fd6065a5ef",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/2.0.1"
+ },
+ "time": "2021-03-24T13:40:57+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
+ },
+ "time": "2021-05-03T11:20:27+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:08:49+00:00"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:08:54+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:52:27+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:52:38+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:24:23+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/23bd5951f7ff26f12d4e3242864df3e08dec4e49",
+ "reference": "23bd5951f7ff26f12d4e3242864df3e08dec4e49",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-06-11T13:31:12+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:42:11+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:17:30+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:45:17+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "2.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-06-15T12:49:02+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:39:44+00:00"
+ },
+ {
+ "name": "seld/jsonlint",
+ "version": "1.8.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/jsonlint.git",
+ "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57",
+ "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "bin": [
+ "bin/jsonlint"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Seld\\JsonLint\\": "src/Seld/JsonLint/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "JSON Linter",
+ "keywords": [
+ "json",
+ "linter",
+ "parser",
+ "validator"
+ ],
+ "support": {
+ "issues": "https://github.com/Seldaek/jsonlint/issues",
+ "source": "https://github.com/Seldaek/jsonlint/tree/1.8.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/Seldaek",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-11T09:19:24+00:00"
+ },
+ {
+ "name": "slevomat/coding-standard",
+ "version": "7.0.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/slevomat/coding-standard.git",
+ "reference": "15b2b4630c148775debea8e412bc7e128d9868a3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/15b2b4630c148775debea8e412bc7e128d9868a3",
+ "reference": "15b2b4630c148775debea8e412bc7e128d9868a3",
+ "shasum": ""
+ },
+ "require": {
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7",
+ "php": "^7.1 || ^8.0",
+ "phpstan/phpdoc-parser": "0.5.1 - 0.5.5",
+ "squizlabs/php_codesniffer": "^3.6.0"
+ },
+ "require-dev": {
+ "phing/phing": "2.16.4",
+ "php-parallel-lint/php-parallel-lint": "1.3.1",
+ "phpstan/phpstan": "0.12.96",
+ "phpstan/phpstan-deprecation-rules": "0.12.6",
+ "phpstan/phpstan-phpunit": "0.12.22",
+ "phpstan/phpstan-strict-rules": "0.12.11",
+ "phpunit/phpunit": "7.5.20|8.5.5|9.5.8"
+ },
+ "type": "phpcodesniffer-standard",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "SlevomatCodingStandard\\": "SlevomatCodingStandard"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.",
+ "support": {
+ "issues": "https://github.com/slevomat/coding-standard/issues",
+ "source": "https://github.com/slevomat/coding-standard/tree/7.0.14"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/kukulich",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-08-26T12:17:56+00:00"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
+ "reference": "ffced0d2c8fa8e6cdc4d695a743271fab6c38625",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "bin": [
+ "bin/phpcs",
+ "bin/phpcbf"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "lead"
+ }
+ ],
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "keywords": [
+ "phpcs",
+ "standards"
+ ],
+ "support": {
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ },
+ "time": "2021-04-09T00:54:41+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "ec3661faca1d110d6c307e124b44f99ac54179e3"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/ec3661faca1d110d6c307e124b44f99ac54179e3",
+ "reference": "ec3661faca1d110d6c307e124b44f99ac54179e3",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.8",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.1|^6.0"
+ },
+ "conflict": {
+ "psr/log": ">=3",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+ "symfony/lock": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-29T15:30:56+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8",
+ "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-12T14:48:14+00:00"
+ },
+ {
+ "name": "symfony/filesystem",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/filesystem.git",
+ "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/731f917dc31edcffec2c6a777f3698c33bea8f01",
+ "reference": "731f917dc31edcffec2c6a777f3698c33bea8f01",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-mbstring": "~1.8",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Filesystem\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides basic utilities for the filesystem",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/filesystem/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-28T13:39:27+00:00"
+ },
+ {
+ "name": "symfony/finder",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/finder.git",
+ "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/finder/zipball/d2f29dac98e96a98be467627bd49c2efb1bc2590",
+ "reference": "d2f29dac98e96a98be467627bd49c2efb1bc2590",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Finder\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Finds files and directories via an intuitive fluent interface",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/finder/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-28T15:25:38+00:00"
+ },
+ {
+ "name": "symfony/options-resolver",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/options-resolver.git",
+ "reference": "b0fb78576487af19c500aaddb269fd36701d4847"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/options-resolver/zipball/b0fb78576487af19c500aaddb269fd36701d4847",
+ "reference": "b0fb78576487af19c500aaddb269fd36701d4847",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-php73": "~1.0",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\OptionsResolver\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an improved replacement for the array_replace PHP function",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "config",
+ "configuration",
+ "options"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/options-resolver/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-23T10:19:22+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "reference": "46cd95797e9df938fdd2b03693b5fca5e64b01ce",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/16880ba9c5ebe3642d1995ab866db29270b36535",
+ "reference": "16880ba9c5ebe3642d1995ab866db29270b36535",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-27T12:26:48+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "reference": "9174a3d80210dca8daa7f31fec659150bbeabfc6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-05-27T12:26:48+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "reference": "fba8933c384d6476ab14fb7b8526e5287ca7e010",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.23.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.23.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "reference": "1100343ed1a92e3a38f9ae122fc0eb21602547be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ],
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.23.1"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-28T13:41:28+00:00"
+ },
+ {
+ "name": "symfony/process",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/process.git",
+ "reference": "5be20b3830f726e019162b26223110c8f47cf274"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/process/zipball/5be20b3830f726e019162b26223110c8f47cf274",
+ "reference": "5be20b3830f726e019162b26223110c8f47cf274",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.16"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Process\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Executes commands in sub-processes",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/process/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-28T15:25:38+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0",
+ "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1.3"
+ },
+ "suggest": {
+ "psr/container": "",
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v1.1.2"
+ },
+ "time": "2019-05-28T07:50:59+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "9ffaaba53c61ba75a3c7a3a779051d1e9ec4fd2d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/9ffaaba53c61ba75a3c7a3a779051d1e9ec4fd2d",
+ "reference": "9ffaaba53c61ba75a3c7a3a779051d1e9ec4fd2d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "~1.15"
+ },
+ "conflict": {
+ "symfony/translation-contracts": ">=3.0"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0|^6.0",
+ "symfony/http-client": "^4.4|^5.0|^6.0",
+ "symfony/translation-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.4|^5.0|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v5.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-24T10:02:00+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-28T10:34:58+00:00"
+ },
+ {
+ "name": "vimeo/psalm",
+ "version": "4.9.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vimeo/psalm.git",
+ "reference": "4c262932602b9bbab5020863d1eb22d49de0dbf4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/4c262932602b9bbab5020863d1eb22d49de0dbf4",
+ "reference": "4c262932602b9bbab5020863d1eb22d49de0dbf4",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2.4.2",
+ "amphp/byte-stream": "^1.5",
+ "composer/package-versions-deprecated": "^1.8.0",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "composer/xdebug-handler": "^1.1 || ^2.0",
+ "dnoegel/php-xdg-base-dir": "^0.1.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "felixfbecker/advanced-json-rpc": "^3.0.3",
+ "felixfbecker/language-server-protocol": "^1.5",
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "nikic/php-parser": "^4.12",
+ "openlss/lib-array2xml": "^1.0",
+ "php": "^7.1|^8",
+ "sebastian/diff": "^3.0 || ^4.0",
+ "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0",
+ "webmozart/path-util": "^2.3"
+ },
+ "provide": {
+ "psalm/psalm": "self.version"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.2",
+ "brianium/paratest": "^4.0||^6.0",
+ "ext-curl": "*",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpdocumentor/reflection-docblock": "^5",
+ "phpmyadmin/sql-parser": "5.1.0||dev-master",
+ "phpspec/prophecy": ">=1.9.0",
+ "phpunit/phpunit": "^9.0",
+ "psalm/plugin-phpunit": "^0.16",
+ "slevomat/coding-standard": "^7.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "symfony/process": "^4.3 || ^5.0",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "suggest": {
+ "ext-igbinary": "^2.0.5"
+ },
+ "bin": [
+ "psalm",
+ "psalm-language-server",
+ "psalm-plugin",
+ "psalm-refactor",
+ "psalter"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev",
+ "dev-3.x": "3.x-dev",
+ "dev-2.x": "2.x-dev",
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psalm\\": "src/Psalm/"
+ },
+ "files": [
+ "src/functions.php",
+ "src/spl_object_id.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Brown"
+ }
+ ],
+ "description": "A static analysis tool for finding errors in PHP applications",
+ "keywords": [
+ "code",
+ "inspection",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/vimeo/psalm/issues",
+ "source": "https://github.com/vimeo/psalm/tree/4.9.3"
+ },
+ "time": "2021-08-14T16:19:38+00:00"
+ },
+ {
+ "name": "webimpress/coding-standard",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webimpress/coding-standard.git",
+ "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webimpress/coding-standard/zipball/8f4a220de33f471a8101836f7ec72b852c3f9f03",
+ "reference": "8f4a220de33f471a8101836f7ec72b852c3f9f03",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.3 || ^8.0",
+ "squizlabs/php_codesniffer": "^3.6"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.5.4"
+ },
+ "type": "phpcodesniffer-standard",
+ "extra": {
+ "dev-master": "1.2.x-dev",
+ "dev-develop": "1.3.x-dev"
+ },
+ "autoload": {
+ "psr-4": {
+ "WebimpressCodingStandard\\": "src/WebimpressCodingStandard/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-2-Clause"
+ ],
+ "description": "Webimpress Coding Standard",
+ "keywords": [
+ "Coding Standard",
+ "PSR-2",
+ "phpcs",
+ "psr-12",
+ "webimpress"
+ ],
+ "support": {
+ "issues": "https://github.com/webimpress/coding-standard/issues",
+ "source": "https://github.com/webimpress/coding-standard/tree/1.2.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/michalbundyra",
+ "type": "github"
+ }
+ ],
+ "time": "2021-04-12T12:51:27+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ },
+ "time": "2021-03-09T10:59:23+00:00"
+ },
+ {
+ "name": "webmozart/path-util",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/path-util.git",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "webmozart/assert": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\PathUtil\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
+ "support": {
+ "issues": "https://github.com/webmozart/path-util/issues",
+ "source": "https://github.com/webmozart/path-util/tree/2.3.0"
+ },
+ "abandoned": "symfony/filesystem",
+ "time": "2015-12-17T08:42:14+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": "^7.3 || ~8.0.0 || ~8.1.0"
+ },
+ "platform-dev": [],
+ "platform-overrides": {
+ "php": "7.3.99"
+ },
+ "plugin-api-version": "2.2.0"
+}
--- /dev/null
+<?xml version="1.0"?>
+<ruleset
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="./vendor/squizlabs/php_codesniffer/phpcs.xsd">
+ <config name="php_version" value="70300"/>
+
+ <arg name="basepath" value="."/>
+ <arg name="cache" value=".phpcs-cache"/>
+ <arg name="colors"/>
+ <arg name="extensions" value="php"/>
+ <arg name="parallel" value="80"/>
+
+ <!-- Show progress -->
+ <arg value="p"/>
+
+ <!-- Paths to check -->
+ <file>src</file>
+ <file>test</file>
+
+ <!-- Include all rules from Laminas Coding Standard -->
+ <rule ref="LaminasCodingStandard"/>
+</ruleset>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.9.3@4c262932602b9bbab5020863d1eb22d49de0dbf4">
+ <file src="src/AbstractOptions.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>! is_array($options) && ! $options instanceof Traversable</code>
+ </DocblockTypeContradiction>
+ <MixedArgument occurrences="3">
+ <code>$key</code>
+ <code>$key</code>
+ <code>$letter</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="6">
+ <code>$array[$normalizedKey]</code>
+ <code>$key</code>
+ <code>$key</code>
+ <code>$letter</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MixedAssignment>
+ <RawObjectIteration occurrences="1">
+ <code>$this</code>
+ </RawObjectIteration>
+ </file>
+ <file src="src/ArrayObject.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>! is_array($data) && ! is_object($data)</code>
+ </DocblockTypeContradiction>
+ <InvalidStringClass occurrences="1">
+ <code>new $class($this->storage)</code>
+ </InvalidStringClass>
+ <LessSpecificReturnStatement occurrences="1">
+ <code>new $class($this->storage)</code>
+ </LessSpecificReturnStatement>
+ <MixedArgumentTypeCoercion occurrences="2">
+ <code>$function</code>
+ <code>$function</code>
+ </MixedArgumentTypeCoercion>
+ <MixedArrayOffset occurrences="4">
+ <code>$this->storage[$key]</code>
+ <code>$this->storage[$key]</code>
+ <code>$this->storage[$key]</code>
+ <code>$this->storage[$key]</code>
+ </MixedArrayOffset>
+ <MixedAssignment occurrences="3">
+ <code>$ret</code>
+ <code>$ret</code>
+ <code>$v</code>
+ </MixedAssignment>
+ <MoreSpecificReturnType occurrences="1">
+ <code>Iterator</code>
+ </MoreSpecificReturnType>
+ <PossiblyInvalidPropertyAssignmentValue occurrences="1">
+ <code>$input</code>
+ </PossiblyInvalidPropertyAssignmentValue>
+ <PropertyNotSetInConstructor occurrences="1">
+ <code>$iteratorClass</code>
+ </PropertyNotSetInConstructor>
+ <RedundantConditionGivenDocblockType occurrences="2">
+ <code>is_callable($function)</code>
+ <code>is_callable($function)</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="src/ArrayUtils.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>! is_array($iterator) && ! $iterator instanceof Traversable</code>
+ </DocblockTypeContradiction>
+ <MixedArgumentTypeCoercion occurrences="1">
+ <code>$callback</code>
+ </MixedArgumentTypeCoercion>
+ <MixedArrayOffset occurrences="4">
+ <code>$array[$key]</code>
+ <code>$array[$key]</code>
+ <code>$array[$key]</code>
+ <code>$array[$key]</code>
+ </MixedArrayOffset>
+ <MixedAssignment occurrences="9">
+ <code>$a[$key]</code>
+ <code>$a[$key]</code>
+ <code>$a[$key]</code>
+ <code>$a[]</code>
+ <code>$array[$key]</code>
+ <code>$h</code>
+ <code>$key</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="1">
+ <code>array</code>
+ </MixedInferredReturnType>
+ <MixedReturnStatement occurrences="1">
+ <code>$iterator->toArray()</code>
+ </MixedReturnStatement>
+ </file>
+ <file src="src/ErrorHandler.php">
+ <InvalidArgument occurrences="1">
+ <code>[static::class, 'addError']</code>
+ </InvalidArgument>
+ <MixedArgument occurrences="1">
+ <code>$stack</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="2">
+ <code>$errorException</code>
+ <code>$stack</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="1">
+ <code>null|ErrorException</code>
+ </MixedInferredReturnType>
+ <MixedReturnStatement occurrences="1">
+ <code>$errorException</code>
+ </MixedReturnStatement>
+ </file>
+ <file src="src/FastPriorityQueue.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>is_int($priority)</code>
+ </DocblockTypeContradiction>
+ <MixedArgument occurrences="11">
+ <code>$item['priority']</code>
+ <code>$this->values[$this->maxPriority]</code>
+ <code>$this->values[$this->maxPriority]</code>
+ <code>$this->values[$this->maxPriority]</code>
+ <code>$this->values[$this->maxPriority]</code>
+ <code>$this->values[$this->maxPriority]</code>
+ <code>$this->values[$this->maxPriority]</code>
+ <code>$this->values[$this->maxPriority]</code>
+ <code>$this->values[$this->maxPriority]</code>
+ <code>$this->values[$this->maxPriority]</code>
+ <code>$values</code>
+ </MixedArgument>
+ <MixedArrayAccess occurrences="4">
+ <code>$item['data']</code>
+ <code>$item['priority']</code>
+ <code>$this->values[$this->maxPriority][$index]</code>
+ <code>$this->values[$this->maxPriority][$key]</code>
+ </MixedArrayAccess>
+ <MixedArrayAssignment occurrences="1">
+ <code>$this->values[$priority][]</code>
+ </MixedArrayAssignment>
+ <MixedAssignment occurrences="11">
+ <code>$array[]</code>
+ <code>$data[]</code>
+ <code>$item</code>
+ <code>$item</code>
+ <code>$item</code>
+ <code>$this->maxPriority</code>
+ <code>$this->maxPriority</code>
+ <code>$this->maxPriority</code>
+ <code>$this->maxPriority</code>
+ <code>$value</code>
+ <code>$values</code>
+ </MixedAssignment>
+ <PossiblyNullArrayOffset occurrences="9">
+ <code>$this->priorities</code>
+ <code>$this->priorities</code>
+ <code>$this->subPriorities</code>
+ <code>$this->values</code>
+ <code>$this->values</code>
+ <code>$this->values</code>
+ <code>$this->values</code>
+ <code>$this->values</code>
+ <code>$this->values</code>
+ </PossiblyNullArrayOffset>
+ </file>
+ <file src="src/Glob.php">
+ <PossiblyNullArrayOffset occurrences="1">
+ <code>$pattern</code>
+ </PossiblyNullArrayOffset>
+ <PossiblyNullOperand occurrences="2">
+ <code>$next</code>
+ <code>$next</code>
+ </PossiblyNullOperand>
+ <UnusedVariable occurrences="1">
+ <code>$depth</code>
+ </UnusedVariable>
+ </file>
+ <file src="src/Message.php">
+ <DocblockTypeContradiction occurrences="2">
+ <code>! is_array($spec) && ! $spec instanceof Traversable</code>
+ <code>is_scalar($key)</code>
+ </DocblockTypeContradiction>
+ <MixedArrayOffset occurrences="1">
+ <code>$this->metadata[$key]</code>
+ </MixedArrayOffset>
+ <MixedAssignment occurrences="4">
+ <code>$key</code>
+ <code>$key</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MixedAssignment>
+ <MixedOperand occurrences="1">
+ <code>$this->getContent()</code>
+ </MixedOperand>
+ <ParamNameMismatch occurrences="1">
+ <code>$value</code>
+ </ParamNameMismatch>
+ </file>
+ <file src="src/MessageInterface.php">
+ <MissingReturnType occurrences="1">
+ <code>setMetadata</code>
+ </MissingReturnType>
+ </file>
+ <file src="src/Parameters.php">
+ <MixedAssignment occurrences="1">
+ <code>$this[$name]</code>
+ </MixedAssignment>
+ </file>
+ <file src="src/PriorityList.php">
+ <InvalidReturnStatement occurrences="1">
+ <code>$node ? $node['data'] : false</code>
+ </InvalidReturnStatement>
+ <MissingClosureReturnType occurrences="1">
+ <code>function ($item) use ($flag) {</code>
+ </MissingClosureReturnType>
+ <MixedInferredReturnType occurrences="1">
+ <code>next</code>
+ </MixedInferredReturnType>
+ <MixedReturnStatement occurrences="1">
+ <code>$node ? $node['data'] : false</code>
+ </MixedReturnStatement>
+ <RedundantCastGivenDocblockType occurrences="2">
+ <code>(int) $priority</code>
+ <code>(int) $priority</code>
+ </RedundantCastGivenDocblockType>
+ </file>
+ <file src="src/PriorityQueue.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>null === $this->queue</code>
+ </DocblockTypeContradiction>
+ <InvalidStringClass occurrences="1">
+ <code>new $this->queueClass()</code>
+ </InvalidStringClass>
+ <LessSpecificReturnStatement occurrences="1">
+ <code>$this->queue</code>
+ </LessSpecificReturnStatement>
+ <MissingClosureReturnType occurrences="2">
+ <code>function ($item) {</code>
+ <code>function ($item) {</code>
+ </MissingClosureReturnType>
+ <MissingConstructor occurrences="1">
+ <code>$queue</code>
+ </MissingConstructor>
+ <MixedArgument occurrences="1">
+ <code>$item['priority']</code>
+ </MixedArgument>
+ <MixedArrayAccess occurrences="13">
+ <code>$item['data']</code>
+ <code>$item['data']</code>
+ <code>$item['data']</code>
+ <code>$item['data']</code>
+ <code>$item['data']</code>
+ <code>$item['data']</code>
+ <code>$item['priority']</code>
+ <code>$item['priority']</code>
+ <code>$item['priority']</code>
+ <code>$item['priority']</code>
+ <code>$item['priority']</code>
+ <code>$item['priority']</code>
+ <code>$item['priority']</code>
+ </MixedArrayAccess>
+ <MixedArrayOffset occurrences="1">
+ <code>$this->items[$key]</code>
+ </MixedArrayOffset>
+ <MixedAssignment occurrences="9">
+ <code>$highestPriority</code>
+ <code>$highestPriority</code>
+ <code>$item</code>
+ <code>$item</code>
+ <code>$item</code>
+ <code>$item</code>
+ <code>$item</code>
+ <code>$item</code>
+ <code>$value</code>
+ </MixedAssignment>
+ <MoreSpecificReturnType occurrences="1">
+ <code>SplPriorityQueue</code>
+ </MoreSpecificReturnType>
+ <PossiblyNullPropertyAssignmentValue occurrences="1">
+ <code>null</code>
+ </PossiblyNullPropertyAssignmentValue>
+ <PossiblyUndefinedVariable occurrences="1">
+ <code>$key</code>
+ </PossiblyUndefinedVariable>
+ <PropertyTypeCoercion occurrences="1">
+ <code>new $this->queueClass()</code>
+ </PropertyTypeCoercion>
+ <RedundantCastGivenDocblockType occurrences="2">
+ <code>(int) $priority</code>
+ <code>(string) $class</code>
+ </RedundantCastGivenDocblockType>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>null !== $this->queue</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="src/SplPriorityQueue.php">
+ <ImplementedReturnTypeMismatch occurrences="1">
+ <code>void</code>
+ </ImplementedReturnTypeMismatch>
+ <MethodSignatureMismatch occurrences="1">
+ <code>public function insert($datum, $priority)</code>
+ </MethodSignatureMismatch>
+ <MixedAssignment occurrences="4">
+ <code>$array[]</code>
+ <code>$data[]</code>
+ <code>$item</code>
+ <code>$item</code>
+ </MixedAssignment>
+ </file>
+ <file src="src/StringUtils.php">
+ <DocblockTypeContradiction occurrences="1">
+ <code>static::$hasPcreUnicodeSupport === null</code>
+ </DocblockTypeContradiction>
+ <PossiblyNullArrayAccess occurrences="1">
+ <code>static::$wrapperRegistry[$index]</code>
+ </PossiblyNullArrayAccess>
+ <RedundantCastGivenDocblockType occurrences="2">
+ <code>(string) $wrapper</code>
+ <code>(string) $wrapper</code>
+ </RedundantCastGivenDocblockType>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>is_string($str)</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="src/StringWrapper/AbstractStringWrapper.php">
+ <ImplementedReturnTypeMismatch occurrences="1">
+ <code>string|false</code>
+ </ImplementedReturnTypeMismatch>
+ <ParamNameMismatch occurrences="1">
+ <code>$string</code>
+ </ParamNameMismatch>
+ <PossiblyFalseArgument occurrences="1">
+ <code>$breakWidth</code>
+ </PossiblyFalseArgument>
+ <PossiblyFalseOperand occurrences="15">
+ <code>$breakWidth</code>
+ <code>$breakWidth</code>
+ <code>$lastString</code>
+ <code>$lastString</code>
+ <code>$lastStringLeft</code>
+ <code>$lastStringRight</code>
+ <code>$padStringLength</code>
+ <code>$padStringLength</code>
+ <code>$padStringLength</code>
+ <code>$this->strlen($input)</code>
+ <code>$this->substr($string, $lastStart, $current - $lastStart + $breakWidth)</code>
+ <code>$this->substr($string, $lastStart, $current - $lastStart)</code>
+ <code>$this->substr($string, $lastStart, $current - $lastStart)</code>
+ <code>$this->substr($string, $lastStart, $current - $lastStart)</code>
+ <code>$this->substr($string, $lastStart, $lastSpace - $lastStart)</code>
+ </PossiblyFalseOperand>
+ <PossiblyInvalidArgument occurrences="2">
+ <code>$repeatCountLeft</code>
+ <code>$repeatCountRight</code>
+ </PossiblyInvalidArgument>
+ <PossiblyNullArgument occurrences="2">
+ <code>$this->getEncoding()</code>
+ <code>$this->getEncoding()</code>
+ </PossiblyNullArgument>
+ <RedundantCastGivenDocblockType occurrences="3">
+ <code>(int) $width</code>
+ <code>(string) $break</code>
+ <code>(string) $string</code>
+ </RedundantCastGivenDocblockType>
+ </file>
+ <file src="src/StringWrapper/Iconv.php">
+ <PossiblyNullArgument occurrences="2">
+ <code>$this->getEncoding()</code>
+ <code>$this->getEncoding()</code>
+ </PossiblyNullArgument>
+ </file>
+ <file src="src/StringWrapper/MbString.php">
+ <PossiblyNullArgument occurrences="3">
+ <code>$this->getEncoding()</code>
+ <code>$this->getEncoding()</code>
+ <code>$this->getEncoding()</code>
+ </PossiblyNullArgument>
+ </file>
+ <file src="src/StringWrapper/Native.php">
+ <NonInvariantDocblockPropertyType occurrences="1">
+ <code>$encoding</code>
+ </NonInvariantDocblockPropertyType>
+ </file>
+ <file src="src/StringWrapper/StringWrapperInterface.php">
+ <MissingReturnType occurrences="1">
+ <code>isSupported</code>
+ </MissingReturnType>
+ </file>
+ <file src="test/ArrayObjectTest.php">
+ <ArgumentTypeCoercion occurrences="2">
+ <code>'ArrayIterator'</code>
+ <code>'RecursiveArrayIterator'</code>
+ </ArgumentTypeCoercion>
+ <InvalidArgument occurrences="1">
+ <code>'Bacon'</code>
+ </InvalidArgument>
+ <MissingClosureParamType occurrences="4">
+ <code>$a</code>
+ <code>$a</code>
+ <code>$b</code>
+ <code>$b</code>
+ </MissingClosureParamType>
+ <MixedArgument occurrences="3">
+ <code>$a</code>
+ <code>$ar['foo']['bar']</code>
+ <code>$b</code>
+ </MixedArgument>
+ <MixedArrayAccess occurrences="2">
+ <code>$ar['foo']['bar']</code>
+ <code>$ar['foo']['bar']</code>
+ </MixedArrayAccess>
+ <MixedAssignment occurrences="1">
+ <code>$unserialized</code>
+ </MixedAssignment>
+ <MixedMethodCall occurrences="1">
+ <code>isImmutable</code>
+ </MixedMethodCall>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>assertSame</code>
+ </RedundantConditionGivenDocblockType>
+ <UndefinedInterfaceMethod occurrences="1">
+ <code>getArrayCopy</code>
+ </UndefinedInterfaceMethod>
+ </file>
+ <file src="test/ArrayUtilsTest.php">
+ <DeprecatedMethod occurrences="2">
+ <code>ArrayUtils::filter($data, $callback, $flag)</code>
+ <code>ArrayUtils::filter([], "INVALID")</code>
+ </DeprecatedMethod>
+ <DuplicateArrayKey occurrences="1">
+ <code>'-10000' => null</code>
+ </DuplicateArrayKey>
+ <InvalidArgument occurrences="1">
+ <code>testValidIteratorsReturnArrayRepresentation</code>
+ </InvalidArgument>
+ <InvalidReturnStatement occurrences="1"/>
+ <InvalidReturnType occurrences="1"/>
+ <MissingClosureParamType occurrences="4">
+ <code>$key</code>
+ <code>$key</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MissingClosureParamType>
+ <MixedArgument occurrences="1">
+ <code>$test</code>
+ </MixedArgument>
+ <UndefinedFunction occurrences="1">
+ <code>"INVALID"</code>
+ </UndefinedFunction>
+ </file>
+ <file src="test/ConsoleHelperTest.php">
+ <MixedArgument occurrences="6">
+ <code>$colorized</code>
+ <code>$colorized</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="4">
+ <code>$colorized</code>
+ <code>$colorized</code>
+ <code>$colorized</code>
+ <code>$colorized</code>
+ </MixedAssignment>
+ <MixedMethodCall occurrences="8">
+ <code>colorize</code>
+ <code>colorize</code>
+ <code>colorize</code>
+ <code>colorize</code>
+ <code>write</code>
+ <code>write</code>
+ <code>writeErrorMessage</code>
+ <code>writeLine</code>
+ </MixedMethodCall>
+ <UndefinedThisPropertyAssignment occurrences="1">
+ <code>$this->helper</code>
+ </UndefinedThisPropertyAssignment>
+ <UndefinedThisPropertyFetch occurrences="12">
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ <code>$this->helper</code>
+ </UndefinedThisPropertyFetch>
+ </file>
+ <file src="test/CustomArrayObject.php">
+ <PropertyNotSetInConstructor occurrences="1">
+ <code>CustomArrayObject</code>
+ </PropertyNotSetInConstructor>
+ </file>
+ <file src="test/ErrorHandlerTest.php">
+ <ArgumentTypeCoercion occurrences="3">
+ <code>'ErrorException'</code>
+ <code>'ErrorException'</code>
+ <code>'ErrorException'</code>
+ </ArgumentTypeCoercion>
+ <PossiblyNullReference occurrences="2">
+ <code>getFile</code>
+ <code>getFile</code>
+ </PossiblyNullReference>
+ <UndefinedInterfaceMethod occurrences="1">
+ <code>getSeverity</code>
+ </UndefinedInterfaceMethod>
+ </file>
+ <file src="test/FastPriorityQueueTest.php">
+ <InvalidScalarArgument occurrences="1">
+ <code>'foo'</code>
+ </InvalidScalarArgument>
+ <MissingClosureParamType occurrences="2">
+ <code>$e</code>
+ <code>$e</code>
+ </MissingClosureParamType>
+ <MixedArgument occurrences="2">
+ <code>$unserialized</code>
+ <code>$unserialized</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="23">
+ <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>
+ <code>$value</code>
+ </MixedAssignment>
+ <UnusedClosureParam occurrences="2">
+ <code>$e</code>
+ <code>$e</code>
+ </UnusedClosureParam>
+ <UnusedVariable occurrences="1">
+ <code>$value</code>
+ </UnusedVariable>
+ </file>
+ <file src="test/GlobTest.php">
+ <MixedArgument occurrences="2">
+ <code>$expectedFileName</code>
+ <code>$result[$i]</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="1">
+ <code>$expectedFileName</code>
+ </MixedAssignment>
+ <RedundantConditionGivenDocblockType occurrences="1">
+ <code>assertIsArray</code>
+ </RedundantConditionGivenDocblockType>
+ </file>
+ <file src="test/OptionsTest.php">
+ <InternalMethod occurrences="1">
+ <code>addToAssertionCount</code>
+ </InternalMethod>
+ <InvalidArgument occurrences="2">
+ <code>'asd'</code>
+ <code>new TestOptions(['test_field' => 1])</code>
+ </InvalidArgument>
+ </file>
+ <file src="test/ParametersTest.php">
+ <ArgumentTypeCoercion occurrences="5">
+ <code>'ArrayAccess'</code>
+ <code>'ArrayObject'</code>
+ <code>'Countable'</code>
+ <code>'Serializable'</code>
+ <code>'Traversable'</code>
+ </ArgumentTypeCoercion>
+ <UndefinedPropertyFetch occurrences="6">
+ <code>$parameters->bar</code>
+ <code>$parameters->baz</code>
+ <code>$parameters->five</code>
+ <code>$parameters->foo</code>
+ <code>$parameters->foo</code>
+ <code>$parameters->foof</code>
+ </UndefinedPropertyFetch>
+ </file>
+ <file src="test/PriorityListTest.php">
+ <MixedArrayOffset occurrences="2">
+ <code>$orders1[$this->list->key()]</code>
+ <code>$orders2[$key]</code>
+ </MixedArrayOffset>
+ <MixedAssignment occurrences="4">
+ <code>$key</code>
+ <code>$orders1[$this->list->key()]</code>
+ <code>$orders2[$key]</code>
+ <code>$value</code>
+ </MixedAssignment>
+ <NullArgument occurrences="5">
+ <code>null</code>
+ <code>null</code>
+ <code>null</code>
+ <code>null</code>
+ <code>null</code>
+ </NullArgument>
+ <TypeDoesNotContainType occurrences="1">
+ <code>assertEmpty</code>
+ </TypeDoesNotContainType>
+ </file>
+ <file src="test/PriorityQueueTest.php">
+ <MixedArgument occurrences="3">
+ <code>$unserialized</code>
+ <code>$unserialized</code>
+ <code>$unserialized</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="3">
+ <code>$item</code>
+ <code>$test[]</code>
+ <code>$unserialized</code>
+ </MixedAssignment>
+ </file>
+ <file src="test/SplPriorityQueueTest.php">
+ <MixedArgument occurrences="2">
+ <code>$unserialized</code>
+ <code>$unserialized</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="1">
+ <code>$unserialized</code>
+ </MixedAssignment>
+ </file>
+ <file src="test/SplQueueTest.php">
+ <MixedArgument occurrences="2">
+ <code>$unserialized</code>
+ <code>$unserialized</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="1">
+ <code>$unserialized</code>
+ </MixedAssignment>
+ </file>
+ <file src="test/SplStackTest.php">
+ <MixedArgument occurrences="2">
+ <code>$unserialized</code>
+ <code>$unserialized</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="1">
+ <code>$unserialized</code>
+ </MixedAssignment>
+ </file>
+ <file src="test/StringUtilsTest.php">
+ <MixedArgument occurrences="1">
+ <code>$str</code>
+ </MixedArgument>
+ </file>
+ <file src="test/StringWrapper/CommonStringWrapperTest.php">
+ <MixedArgument occurrences="1">
+ <code>$expected</code>
+ </MixedArgument>
+ </file>
+ <file src="test/StringWrapper/IconvTest.php">
+ <TooManyArguments occurrences="1">
+ <code>new Iconv('utf-8')</code>
+ </TooManyArguments>
+ </file>
+ <file src="test/StringWrapper/IntlTest.php">
+ <TooManyArguments occurrences="1">
+ <code>new Intl('utf-8')</code>
+ </TooManyArguments>
+ </file>
+ <file src="test/StringWrapper/MbStringTest.php">
+ <TooManyArguments occurrences="1">
+ <code>new MbString('utf-8')</code>
+ </TooManyArguments>
+ </file>
+</files>
--- /dev/null
+<?xml version="1.0"?>
+<psalm
+ totallyTyped="true"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ errorBaseline="psalm-baseline.xml"
+>
+ <projectFiles>
+ <directory name="src"/>
+ <directory name="test"/>
+ <ignoreFiles>
+ <directory name=".github"/>
+ <directory name="benchmark"/>
+ <directory name="docs"/>
+ <directory name="test/TestAsset"/>
+ <directory name="vendor"/>
+ </ignoreFiles>
+ </projectFiles>
+
+ <issueHandlers>
+ <InternalMethod>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::method"/>
+ </errorLevel>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::willReturn"/>
+ </errorLevel>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::with"/>
+ </errorLevel>
+ </InternalMethod>
+ </issueHandlers>
+
+ <plugins>
+ <pluginClass class="Psalm\PhpUnitPlugin\Plugin"/>
+ </plugins>
+</psalm>
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
use Traversable;
+use function array_shift;
+use function is_array;
+use function is_callable;
+use function method_exists;
+use function preg_replace_callback;
+use function sprintf;
+use function str_replace;
+use function strtolower;
+use function ucwords;
+
abstract class AbstractOptions implements ParameterObjectInterface
{
- // @codingStandardsIgnoreStart
+ // phpcs:disable PSR2.Classes.PropertyDeclaration.Underscore,WebimpressCodingStandard.NamingConventions.ValidVariableName.NotCamelCapsProperty
+
/**
* We use the __ prefix to avoid collisions with properties in
* user-implementations.
* @var bool
*/
protected $__strictMode__ = true;
- // @codingStandardsIgnoreEnd
+
+ // phpcs:enable
/**
* Constructor
__METHOD__,
'array',
'Traversable',
- 'Laminas\Stdlib\AbstractOptions'
+ self::class
)
);
}
public function toArray()
{
$array = [];
- $transform = function ($letters) {
+
+ /** @param string[] $letters */
+ $transform = function (array $letters): string {
$letter = array_shift($letters);
return '_' . strtolower($letter);
};
+
foreach ($this as $key => $value) {
if ($key === '__strictMode__') {
continue;
}
- $normalizedKey = preg_replace_callback('/([A-Z])/', $transform, $key);
+ $normalizedKey = preg_replace_callback('/([A-Z])/', $transform, $key);
$array[$normalizedKey] = $value;
}
+
return $array;
}
* Set a configuration property
*
* @see ParameterObject::__set()
+ *
* @param string $key
* @param mixed $value
* @throws Exception\BadMethodCallException
* Get a configuration property
*
* @see ParameterObject::__get()
+ *
* @param string $key
* @throws Exception\BadMethodCallException
* @return mixed
/**
* Test if a configuration property is null
+ *
* @see ParameterObject::__isset()
+ *
* @param string $key
* @return bool
*/
* Set a configuration property to NULL
*
* @see ParameterObject::__unset()
+ *
* @param string $key
* @throws Exception\InvalidArgumentException
* @return void
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
use ArrayAccess;
use Countable;
+use Iterator;
use IteratorAggregate;
+use ReturnTypeWillChange;
use Serializable;
+use UnexpectedValueException;
+
+use function array_key_exists;
+use function array_keys;
+use function asort;
+use function class_exists;
+use function count;
+use function get_class;
+use function get_object_vars;
+use function gettype;
+use function in_array;
+use function is_array;
+use function is_callable;
+use function is_object;
+use function is_string;
+use function ksort;
+use function natcasesort;
+use function natsort;
+use function serialize;
+use function sprintf;
+use function strpos;
+use function uasort;
+use function uksort;
+use function unserialize;
/**
* Custom framework ArrayObject implementation
* Properties of the object have their normal functionality
* when accessed as list (var_dump, foreach, etc.).
*/
- const STD_PROP_LIST = 1;
+ public const STD_PROP_LIST = 1;
/**
* Entries can be accessed as properties (read and write).
*/
- const ARRAY_AS_PROPS = 2;
+ public const ARRAY_AS_PROPS = 2;
- /**
- * @var array
- */
+ /** @var array */
protected $storage;
- /**
- * @var int
- */
+ /** @var int */
protected $flag;
- /**
- * @var string
- */
+ /** @var string */
protected $iteratorClass;
- /**
- * @var array
- */
+ /** @var array */
protected $protectedProperties;
/**
* Constructor
*
- * @param array $input
- * @param int $flags
- * @param string $iteratorClass
+ * @param array|object $input Object values must act like ArrayAccess
+ * @param int $flags
+ * @param string $iteratorClass
*/
public function __construct($input = [], $flags = self::STD_PROP_LIST, $iteratorClass = 'ArrayIterator')
{
*/
public function __isset($key)
{
- if ($this->flag == self::ARRAY_AS_PROPS) {
+ if ($this->flag === self::ARRAY_AS_PROPS) {
return $this->offsetExists($key);
}
+
if (in_array($key, $this->protectedProperties)) {
- throw new Exception\InvalidArgumentException('$key is a protected property, use a different key');
+ throw new Exception\InvalidArgumentException("$key is a protected property, use a different key");
}
return isset($this->$key);
*/
public function __set($key, $value)
{
- if ($this->flag == self::ARRAY_AS_PROPS) {
- return $this->offsetSet($key, $value);
+ if ($this->flag === self::ARRAY_AS_PROPS) {
+ $this->offsetSet($key, $value);
+ return;
}
+
if (in_array($key, $this->protectedProperties)) {
- throw new Exception\InvalidArgumentException('$key is a protected property, use a different key');
+ throw new Exception\InvalidArgumentException("$key is a protected property, use a different key");
}
+
$this->$key = $value;
}
*/
public function __unset($key)
{
- if ($this->flag == self::ARRAY_AS_PROPS) {
- return $this->offsetUnset($key);
+ if ($this->flag === self::ARRAY_AS_PROPS) {
+ $this->offsetUnset($key);
+ return;
}
+
if (in_array($key, $this->protectedProperties)) {
- throw new Exception\InvalidArgumentException('$key is a protected property, use a different key');
+ throw new Exception\InvalidArgumentException("$key is a protected property, use a different key");
}
+
unset($this->$key);
}
*/
public function &__get($key)
{
- $ret = null;
- if ($this->flag == self::ARRAY_AS_PROPS) {
- $ret =& $this->offsetGet($key);
+ if ($this->flag === self::ARRAY_AS_PROPS) {
+ $ret = &$this->offsetGet($key);
return $ret;
}
- if (in_array($key, $this->protectedProperties)) {
- throw new Exception\InvalidArgumentException('$key is a protected property, use a different key');
+
+ if (in_array($key, $this->protectedProperties, true)) {
+ throw new Exception\InvalidArgumentException("$key is a protected property, use a different key");
}
return $this->$key;
*
* @return int
*/
+ #[ReturnTypeWillChange]
public function count()
{
return count($this->storage);
/**
* Exchange the array for another one.
*
- * @param array|ArrayObject $data
+ * @param array|ArrayObject|ArrayIterator|object $data
* @return array
*/
public function exchangeArray($data)
/**
* Create a new iterator from an ArrayObject instance
*
- * @return \Iterator
+ * @return Iterator
*/
+ #[ReturnTypeWillChange]
public function getIterator()
{
$class = $this->iteratorClass;
* @param mixed $key
* @return bool
*/
+ #[ReturnTypeWillChange]
public function offsetExists($key)
{
return isset($this->storage[$key]);
* @param mixed $key
* @return mixed
*/
+ #[ReturnTypeWillChange]
public function &offsetGet($key)
{
$ret = null;
if (! $this->offsetExists($key)) {
return $ret;
}
- $ret =& $this->storage[$key];
+ $ret = &$this->storage[$key];
return $ret;
}
* @param mixed $value
* @return void
*/
+ #[ReturnTypeWillChange]
public function offsetSet($key, $value)
{
$this->storage[$key] = $value;
* @param mixed $key
* @return void
*/
+ #[ReturnTypeWillChange]
public function offsetUnset($key)
{
if ($this->offsetExists($key)) {
*/
public function serialize()
{
- return serialize(get_object_vars($this));
+ return serialize($this->__serialize());
+ }
+
+ /**
+ * Magic method used for serializing of an instance.
+ *
+ * @return array
+ */
+ public function __serialize()
+ {
+ return get_object_vars($this);
}
/**
if (class_exists($class)) {
$this->iteratorClass = $class;
- return ;
+ return;
}
if (strpos($class, '\\') === 0) {
if (class_exists($class)) {
$this->iteratorClass = $class;
- return ;
+ return;
}
}
*/
public function unserialize($data)
{
- $ar = unserialize($data);
+ $toUnserialize = unserialize($data);
+ if (! is_array($toUnserialize)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance; corrupt serialization data',
+ self::class
+ ));
+ }
+
+ $this->__unserialize($toUnserialize);
+ }
+
+ /**
+ * Magic method used to rebuild an instance.
+ *
+ * @param array $data Data array.
+ * @return void
+ */
+ public function __unserialize($data)
+ {
$this->protectedProperties = array_keys(get_object_vars($this));
- $this->setFlags($ar['flag']);
- $this->exchangeArray($ar['storage']);
- $this->setIteratorClass($ar['iteratorClass']);
-
- foreach ($ar as $k => $v) {
- switch ($k) {
- case 'flag':
- $this->setFlags($v);
- break;
- case 'storage':
- $this->exchangeArray($v);
- break;
- case 'iteratorClass':
- $this->setIteratorClass($v);
- break;
- case 'protectedProperties':
- break;
- default:
- $this->__set($k, $v);
+ // Unserialize protected internal properties first
+ if (array_key_exists('flag', $data)) {
+ $this->setFlags((int) $data['flag']);
+ unset($data['flag']);
+ }
+
+ if (array_key_exists('storage', $data)) {
+ if (! is_array($data['storage']) && ! is_object($data['storage'])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance: corrupt storage data; expected array or object, received %s',
+ self::class,
+ gettype($data['storage'])
+ ));
+ }
+ $this->exchangeArray($data['storage']);
+ unset($data['storage']);
+ }
+
+ if (array_key_exists('iteratorClass', $data)) {
+ if (! is_string($data['iteratorClass'])) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance: invalid iteratorClass; expected string, received %s',
+ self::class,
+ is_object($data['iteratorClass'])
+ ? get_class($data['iteratorClass'])
+ : gettype($data['iteratorClass'])
+ ));
}
+ $this->setIteratorClass($data['iteratorClass']);
+ unset($data['iteratorClass']);
+ }
+
+ unset($data['protectedProperties']);
+
+ // Unserialize array keys after resolving protected properties to ensure configuration is used.
+ foreach ($data as $k => $v) {
+ $this->__set($k, $v);
}
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
use ArrayIterator;
use ArrayObject as PhpArrayObject;
+use ReturnTypeWillChange;
+
+use function array_reverse;
/**
* ArrayObject that acts as a stack with regards to iteration
*
* @return ArrayIterator
*/
+ #[ReturnTypeWillChange]
public function getIterator()
{
$array = $this->getArrayCopy();
-<?php
+<?php // phpcs:disable WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+
+declare(strict_types=1);
namespace Laminas\Stdlib;
+use Iterator;
use Laminas\Stdlib\ArrayUtils\MergeRemoveKey;
use Laminas\Stdlib\ArrayUtils\MergeReplaceKeyInterface;
use Traversable;
+use function array_filter;
+use function array_key_exists;
+use function array_keys;
+use function array_values;
+use function in_array;
+use function is_array;
+use function is_callable;
+use function is_float;
+use function is_int;
+use function is_object;
+use function is_scalar;
+use function is_string;
+use function iterator_to_array;
+use function method_exists;
+use function sprintf;
+
/**
* Utility class for testing and manipulation of PHP arrays.
*
/**
* Compatibility Flag for ArrayUtils::filter
*/
- const ARRAY_FILTER_USE_BOTH = 1;
+ public const ARRAY_FILTER_USE_BOTH = 1;
/**
* Compatibility Flag for ArrayUtils::filter
*/
- const ARRAY_FILTER_USE_KEY = 2;
+ public const ARRAY_FILTER_USE_KEY = 2;
/**
* Test whether an array contains one or more string keys
return $allowEmpty;
}
- return count(array_filter(array_keys($value), 'is_string')) > 0;
+ return [] !== array_filter(array_keys($value), 'is_string');
}
/**
return $allowEmpty;
}
- return count(array_filter(array_keys($value), 'is_int')) > 0;
+ return [] !== array_filter(array_keys($value), 'is_int');
}
/**
return $allowEmpty;
}
- return count(array_filter(array_keys($value), 'is_numeric')) > 0;
+ return [] !== array_filter(array_keys($value), 'is_numeric');
}
/**
return $allowEmpty;
}
- return (array_values($value) === $value);
+ return array_values($value) === $value;
}
/**
return $allowEmpty;
}
- return (array_values($value) !== $value);
+ return array_values($value) !== $value;
}
/**
}
}
}
- return in_array($needle, $haystack, $strict);
+
+ return in_array($needle, $haystack, (bool) $strict);
}
/**
*
* @param array|Traversable $iterator The array or Traversable object to convert
* @param bool $recursive Recursively check all nested structures
- * @throws Exception\InvalidArgumentException if $iterator is not an array or a Traversable object
+ * @throws Exception\InvalidArgumentException If $iterator is not an array or a Traversable object.
* @return array
*/
public static function iteratorToArray($iterator, $recursive = true)
return iterator_to_array($iterator);
}
- if (method_exists($iterator, 'toArray')) {
+ if (
+ is_object($iterator)
+ && ! $iterator instanceof Iterator
+ && method_exists($iterator, 'toArray')
+ ) {
return $iterator->toArray();
}
));
}
- return array_filter($data, $callback, $flag);
+ return array_filter($data, $callback, $flag ?? 0);
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\ArrayUtils;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\ArrayUtils;
final class MergeReplaceKey implements MergeReplaceKeyInterface
{
- /**
- * @var mixed
- */
+ /** @var mixed */
protected $data;
/**
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\ArrayUtils;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
+use function function_exists;
+use function fwrite;
+use function getenv;
+use function posix_isatty;
+use function preg_replace;
+use function sprintf;
+use function str_replace;
+
+use const DIRECTORY_SEPARATOR;
+use const PHP_EOL;
+use const STDERR;
+use const STDOUT;
+
/**
* Utilities for console tooling.
*
*/
class ConsoleHelper
{
- const COLOR_GREEN = "\033[32m";
- const COLOR_RED = "\033[31m";
- const COLOR_RESET = "\033[0m";
+ public const COLOR_GREEN = "\033[32m";
+ public const COLOR_RED = "\033[31m";
+ public const COLOR_RESET = "\033[0m";
- const HIGHLIGHT_INFO = 'info';
- const HIGHLIGHT_ERROR = 'error';
+ public const HIGHLIGHT_INFO = 'info';
+ public const HIGHLIGHT_ERROR = 'error';
+ /**
+ * @var array
+ * @psalm-var array<ConsoleHelper::HIGHLIGHT_*, ConsoleHelper::COLOR_GREEN|ConsoleHelper::COLOR_RED>
+ */
private $highlightMap = [
self::HIGHLIGHT_INFO => self::COLOR_GREEN,
self::HIGHLIGHT_ERROR => self::COLOR_RED,
];
- /**
- * @var string Exists only for testing.
- */
+ /** @var string Exists only for testing. */
private $eol = PHP_EOL;
- /**
- * @var resource Exists only for testing.
- */
+ /** @var resource Exists only for testing. */
private $stderr = STDERR;
- /**
- * @var bool
- */
+ /** @var bool */
private $supportsColor;
/**
/**
* Ensure newlines are appropriate for the current terminal.
*
- * @param string
+ * @param string $string
* @return string
*/
private function formatNewlines($string)
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
/**
* Dispatch a request
*
- * @param RequestInterface $request
- * @param null|ResponseInterface $response
* @return Response|mixed
*/
- public function dispatch(RequestInterface $request, ResponseInterface $response = null);
+ public function dispatch(RequestInterface $request, ?ResponseInterface $response = null);
}
-<?php
+<?php // phpcs:disable WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+
+declare(strict_types=1);
namespace Laminas\Stdlib;
use ErrorException;
+use function array_pop;
+use function count;
+use function restore_error_handler;
+use function set_error_handler;
+
+use const E_WARNING;
+
/**
* ErrorHandler that can be used to catch internal PHP errors
* and convert to an ErrorException instance.
* Starting the error handler
*
* @param int $errorLevel
+ * @return void
*/
- public static function start($errorLevel = \E_WARNING)
+ public static function start($errorLevel = E_WARNING)
{
if (! static::$stack) {
- set_error_handler([get_called_class(), 'addError'], $errorLevel);
+ set_error_handler([static::class, 'addError'], $errorLevel);
}
static::$stack[] = null;
*
* @param bool $throw Throw the ErrorException if any
* @return null|ErrorException
- * @throws ErrorException If an error has been caught and $throw is true
+ * @throws ErrorException If an error has been caught and $throw is true.
*/
public static function stop($throw = false)
{
*/
public static function addError($errno, $errstr = '', $errfile = '', $errline = 0)
{
- $stack = & static::$stack[count(static::$stack) - 1];
+ $stack = &static::$stack[count(static::$stack) - 1];
$stack = new ErrorException($errstr, 0, $errno, $errfile, $errline, $stack);
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Exception;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
use Countable;
use Iterator;
+use ReturnTypeWillChange;
use Serializable;
use SplPriorityQueue as PhpSplPriorityQueue;
+use UnexpectedValueException;
+
+use function current;
+use function in_array;
+use function is_array;
+use function is_int;
+use function key;
+use function max;
+use function next;
+use function reset;
+use function serialize;
+use function sprintf;
+use function unserialize;
/**
* This is an efficient implementation of an integer priority queue in PHP
*/
class FastPriorityQueue implements Iterator, Countable, Serializable
{
- const EXTR_DATA = PhpSplPriorityQueue::EXTR_DATA;
- const EXTR_PRIORITY = PhpSplPriorityQueue::EXTR_PRIORITY;
- const EXTR_BOTH = PhpSplPriorityQueue::EXTR_BOTH;
+ public const EXTR_DATA = PhpSplPriorityQueue::EXTR_DATA;
+ public const EXTR_PRIORITY = PhpSplPriorityQueue::EXTR_PRIORITY;
+ public const EXTR_BOTH = PhpSplPriorityQueue::EXTR_BOTH;
- /**
- * @var integer
- */
+ /** @var integer */
protected $extractFlag = self::EXTR_DATA;
/**
*
* @var integer|null
*/
- protected $maxPriority = null;
+ protected $maxPriority;
/**
* Total number of elements in the queue
*/
protected $subIndex = 0;
+ public function __serialize(): array
+ {
+ $clone = clone $this;
+ $clone->setExtractFlags(self::EXTR_BOTH);
+
+ $data = [];
+ foreach ($clone as $item) {
+ $data[] = $item;
+ }
+
+ return $data;
+ }
+
+ public function __unserialize(array $data): void
+ {
+ foreach ($data as $item) {
+ $this->insert($item['data'], $item['priority']);
+ }
+ }
+
/**
* Insert an element in the queue with a specified priority
*
* @param mixed $value
* @param integer $priority
+ * @return void
*/
public function insert($value, $priority)
{
/**
* Get the total number of elements in the queue
*
- * @return integer
+ * @return int
*/
+ #[ReturnTypeWillChange]
public function count()
{
return $this->count;
*
* @return mixed
*/
+ #[ReturnTypeWillChange]
public function current()
{
switch ($this->extractFlag) {
case self::EXTR_BOTH:
return [
'data' => current($this->values[$this->maxPriority]),
- 'priority' => $this->maxPriority
+ 'priority' => $this->maxPriority,
];
}
}
/**
* Get the index of the current element in the queue
*
- * @return integer
+ * @return int
*/
+ #[ReturnTypeWillChange]
public function key()
{
return $this->index;
/**
* Set the iterator pointer to the next element in the queue
* removing the previous element
+ *
+ * @return void
*/
protected function nextAndRemove()
{
* Set the iterator pointer to the next element in the queue
* without removing the previous element
*/
+ #[ReturnTypeWillChange]
public function next()
{
if (false === next($this->values[$this->maxPriority])) {
/**
* Check if the current iterator is valid
*
- * @return boolean
+ * @return bool
*/
+ #[ReturnTypeWillChange]
public function valid()
{
return isset($this->values[$this->maxPriority]);
/**
* Rewind the current iterator
*/
+ #[ReturnTypeWillChange]
public function rewind()
{
$this->subPriorities = $this->priorities;
*/
public function serialize()
{
- $clone = clone $this;
- $clone->setExtractFlags(self::EXTR_BOTH);
-
- $data = [];
- foreach ($clone as $item) {
- $data[] = $item;
- }
-
- return serialize($data);
+ return serialize($this->__serialize());
}
/**
*/
public function unserialize($data)
{
- foreach (unserialize($data) as $item) {
- $this->insert($item['data'], $item['priority']);
+ $toUnserialize = unserialize($data);
+ if (! is_array($toUnserialize)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance; corrupt serialization data',
+ self::class
+ ));
}
+
+ $this->__unserialize($toUnserialize);
}
/**
* Set the extract flag
*
* @param integer $flag
+ * @return void
*/
public function setExtractFlags($flag)
{
-<?php
+<?php // phpcs:disable WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix,Generic.NamingConventions.ConstructorName.OldStyle
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+
+declare(strict_types=1);
namespace Laminas\Stdlib;
+use function array_merge;
+use function array_unique;
+use function defined;
+use function glob;
+use function strlen;
+use function strpos;
+use function substr;
+
+use const GLOB_BRACE;
+use const GLOB_ERR;
+use const GLOB_MARK;
+use const GLOB_NOCHECK;
+use const GLOB_NOESCAPE;
+use const GLOB_NOSORT;
+use const GLOB_ONLYDIR;
+
/**
* Wrapper for glob with fallback if GLOB_BRACE is not available.
*/
/**#@+
* Glob constants.
*/
- const GLOB_MARK = 0x01;
- const GLOB_NOSORT = 0x02;
- const GLOB_NOCHECK = 0x04;
- const GLOB_NOESCAPE = 0x08;
- const GLOB_BRACE = 0x10;
- const GLOB_ONLYDIR = 0x20;
- const GLOB_ERR = 0x40;
+ public const GLOB_MARK = 0x01;
+ public const GLOB_NOSORT = 0x02;
+ public const GLOB_NOCHECK = 0x04;
+ public const GLOB_NOESCAPE = 0x08;
+ public const GLOB_BRACE = 0x10;
+ public const GLOB_ONLYDIR = 0x20;
+ public const GLOB_ERR = 0x40;
/**#@-*/
/**
* Find pathnames matching a pattern.
*
* @see http://docs.php.net/glob
+ *
* @param string $pattern
* @param int $flags
* @param bool $forceFallback
*/
protected static function fallbackGlob($pattern, $flags)
{
- if (! $flags & self::GLOB_BRACE) {
+ if (! self::flagsIsEqualTo($flags, self::GLOB_BRACE)) {
return static::systemGlob($pattern, $flags);
}
$current = $begin;
while ($current < $length) {
- if (! $flags & self::GLOB_NOESCAPE && $pattern[$current] === '\\') {
+ $flagsEqualsNoEscape = self::flagsIsEqualTo($flags, self::GLOB_NOESCAPE);
+
+ if ($flagsEqualsNoEscape && $pattern[$current] === '\\') {
if (++$current === $length) {
break;
}
$current++;
} else {
- if (($pattern[$current] === '}' && $depth-- === 0) || ($pattern[$current] === ',' && $depth === 0)) {
+ if (
+ ($pattern[$current] === '}' && $depth-- === 0)
+ || ($pattern[$current] === ',' && $depth === 0)
+ ) {
break;
} elseif ($pattern[$current++] === '{') {
$depth++;
}
}
- return ($current < $length ? $current : null);
+ return $current < $length ? $current : null;
+ }
+
+ /** @internal */
+ public static function flagsIsEqualTo(int $flags, int $otherFlags): bool
+ {
+ return (bool) ($flags & $otherFlags);
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Guard;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Guard;
+use Exception;
+use Laminas\Stdlib\Exception\InvalidArgumentException;
use Traversable;
+use function get_class;
+use function gettype;
+use function is_array;
+use function is_object;
+use function sprintf;
+
/**
* Provide a guard method for array or Traversable data
*/
/**
* Verifies that the data is an array or Traversable
*
- * @param mixed $data the data to verify
- * @param string $dataName the data name
- * @param string $exceptionClass FQCN for the exception
- * @throws \Exception
+ * @param mixed $data the data to verify
+ * @param string $dataName the data name
+ * @param string $exceptionClass FQCN for the exception
+ * @return void
+ * @throws Exception
*/
protected function guardForArrayOrTraversable(
$data,
$dataName = 'Argument',
- $exceptionClass = 'Laminas\Stdlib\Exception\InvalidArgumentException'
+ $exceptionClass = InvalidArgumentException::class
) {
- if (! is_array($data) && ! ($data instanceof Traversable)) {
+ if (! is_array($data) && ! $data instanceof Traversable) {
$message = sprintf(
"%s must be an array or Traversable, [%s] given",
$dataName,
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Guard;
+use Exception;
+use Laminas\Stdlib\Exception\InvalidArgumentException;
+
+use function sprintf;
+
/**
* Provide a guard method against empty data
*/
/**
* Verify that the data is not empty
*
- * @param mixed $data the data to verify
- * @param string $dataName the data name
- * @param string $exceptionClass FQCN for the exception
- * @throws \Exception
+ * @param mixed $data the data to verify
+ * @param string $dataName the data name
+ * @param string $exceptionClass FQCN for the exception
+ * @return void
+ * @throws Exception
*/
protected function guardAgainstEmpty(
$data,
$dataName = 'Argument',
- $exceptionClass = 'Laminas\Stdlib\Exception\InvalidArgumentException'
+ $exceptionClass = InvalidArgumentException::class
) {
if (empty($data)) {
$message = sprintf('%s cannot be empty', $dataName);
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\Guard;
+use Exception;
+use Laminas\Stdlib\Exception\InvalidArgumentException;
+
+use function sprintf;
+
/**
* Provide a guard method against null data
*/
/**
* Verify that the data is not null
*
- * @param mixed $data the data to verify
- * @param string $dataName the data name
- * @param string $exceptionClass FQCN for the exception
- * @throws \Exception
+ * @param mixed $data the data to verify
+ * @param string $dataName the data name
+ * @param string $exceptionClass FQCN for the exception
+ * @return void
+ * @throws Exception
*/
protected function guardAgainstNull(
$data,
$dataName = 'Argument',
- $exceptionClass = 'Laminas\Stdlib\Exception\InvalidArgumentException'
+ $exceptionClass = InvalidArgumentException::class
) {
if (null === $data) {
$message = sprintf('%s cannot be null', $dataName);
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
-<?php
+<?php // phpcs:disable WebimpressCodingStandard.NamingConventions.Interface.Suffix
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+
+declare(strict_types=1);
namespace Laminas\Stdlib;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
use Traversable;
+use function array_key_exists;
+use function get_class;
+use function gettype;
+use function is_array;
+use function is_object;
+use function is_scalar;
+use function sprintf;
+
class Message implements MessageInterface
{
- /**
- * @var array
- */
+ /** @var array */
protected $metadata = [];
- /**
- * @var mixed
- */
+ /** @var mixed */
protected $content = '';
/**
if (! is_array($spec) && ! $spec instanceof Traversable) {
throw new Exception\InvalidArgumentException(sprintf(
'Expected a string, array, or Traversable argument in first position; received "%s"',
- (is_object($spec) ? get_class($spec) : gettype($spec))
+ is_object($spec) ? get_class($spec) : gettype($spec)
));
}
foreach ($spec as $key => $value) {
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
+use Traversable;
+
interface MessageInterface
{
/**
* Set metadata
*
- * @param string|int|array|\Traversable $spec
+ * @param string|int|array|Traversable $spec
* @param mixed $value
*/
public function setMetadata($spec, $value = null);
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
use ArrayObject as PhpArrayObject;
+use ReturnTypeWillChange;
+
+use function http_build_query;
+use function parse_str;
class Parameters extends PhpArrayObject implements ParametersInterface
{
*
* @param array $values
*/
- public function __construct(array $values = null)
+ public function __construct(?array $values = null)
{
if (null === $values) {
$values = [];
* @param string $name
* @return mixed
*/
+ #[ReturnTypeWillChange]
public function offsetGet($name)
{
if ($this->offsetExists($name)) {
return parent::offsetGet($name);
}
- return;
+
+ return null;
}
/**
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
*
* @param array $values
*/
- public function __construct(array $values = null);
+ public function __construct(?array $values = null);
/**
* From array
*
* Allow deserialization from raw body; e.g., for PUT requests
*
- * @param $string
+ * @param string $string
* @return mixed
*/
public function fromString($string);
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
use Countable;
+use Exception;
use Iterator;
+use ReturnTypeWillChange;
+
+use function array_map;
+use function current;
+use function key;
+use function next;
+use function reset;
+use function uasort;
class PriorityList implements Iterator, Countable
{
- const EXTR_DATA = 0x00000001;
- const EXTR_PRIORITY = 0x00000002;
- const EXTR_BOTH = 0x00000003;
+ public const EXTR_DATA = 0x00000001;
+ public const EXTR_PRIORITY = 0x00000002;
+ public const EXTR_BOTH = 0x00000003;
+
/**
* Internal list of all items.
*
*/
protected $serial = 0;
+ // phpcs:disable WebimpressCodingStandard.NamingConventions.ValidVariableName.NotCamelCapsProperty
+
/**
* Serial order mode
+ *
* @var integer
*/
protected $isLIFO = 1;
+ // phpcs:enable
+
/**
* Internal counter to avoid usage of count().
*
* @param string $name
* @param mixed $value
* @param int $priority
- *
* @return void
*/
public function insert($name, $value, $priority = 0)
/**
* @param string $name
* @param int $priority
- *
* @return $this
- *
- * @throws \Exception
+ * @throws Exception
*/
public function setPriority($name, $priority)
{
if (! isset($this->items[$name])) {
- throw new \Exception("item $name not found");
+ throw new Exception("item $name not found");
}
$this->items[$name]['priority'] = (int) $priority;
*/
protected function compare(array $item1, array $item2)
{
- return ($item1['priority'] === $item2['priority'])
+ return $item1['priority'] === $item2['priority']
? ($item1['serial'] > $item2['serial'] ? -1 : 1) * $this->isLIFO
: ($item1['priority'] > $item2['priority'] ? -1 : 1);
}
* Get/Set serial order mode
*
* @param bool|null $flag
- *
* @return bool
*/
public function isLIFO($flag = null)
/**
* {@inheritDoc}
*/
+ #[ReturnTypeWillChange]
public function rewind()
{
$this->sort();
/**
* {@inheritDoc}
*/
+ #[ReturnTypeWillChange]
public function current()
{
$this->sorted || $this->sort();
/**
* {@inheritDoc}
*/
+ #[ReturnTypeWillChange]
public function key()
{
$this->sorted || $this->sort();
/**
* {@inheritDoc}
*/
+ #[ReturnTypeWillChange]
public function next()
{
$node = next($this->items);
/**
* {@inheritDoc}
*/
+ #[ReturnTypeWillChange]
public function valid()
{
return current($this->items) !== false;
/**
* {@inheritDoc}
*/
+ #[ReturnTypeWillChange]
public function count()
{
return $this->count;
* Return list as array
*
* @param int $flag
- *
* @return array
*/
public function toArray($flag = self::EXTR_DATA)
{
$this->sort();
- if ($flag == self::EXTR_BOTH) {
+ if ($flag === self::EXTR_BOTH) {
return $this->items;
}
return array_map(
function ($item) use ($flag) {
- return ($flag == PriorityList::EXTR_PRIORITY) ? $item['priority'] : $item['data'];
+ return $flag === PriorityList::EXTR_PRIORITY ? $item['priority'] : $item['data'];
},
$this->items
);
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
use Countable;
use IteratorAggregate;
+use ReturnTypeWillChange;
use Serializable;
+use UnexpectedValueException;
+
+use function array_map;
+use function count;
+use function get_class;
+use function is_array;
+use function serialize;
+use function sprintf;
+use function unserialize;
/**
* Re-usable, serializable priority queue implementation
*/
class PriorityQueue implements Countable, IteratorAggregate, Serializable
{
- const EXTR_DATA = 0x00000001;
- const EXTR_PRIORITY = 0x00000002;
- const EXTR_BOTH = 0x00000003;
+ public const EXTR_DATA = 0x00000001;
+ public const EXTR_PRIORITY = 0x00000002;
+ public const EXTR_BOTH = 0x00000003;
/**
* Inner queue class to use for iteration
+ *
* @var string
*/
- protected $queueClass = 'Laminas\Stdlib\SplPriorityQueue';
+ protected $queueClass = SplPriorityQueue::class;
/**
* Actual items aggregated in the priority queue. Each item is an array
* with keys "data" and "priority".
+ *
* @var array
*/
- protected $items = [];
+ protected $items = [];
/**
* Inner queue object
+ *
* @var SplPriorityQueue
*/
protected $queue;
*/
public function insert($data, $priority = 1)
{
- $priority = (int) $priority;
+ $priority = (int) $priority;
$this->items[] = [
'data' => $data,
'priority' => $priority,
*/
public function isEmpty()
{
- return (0 === $this->count());
+ return 0 === $this->count();
}
/**
*
* @return int
*/
+ #[ReturnTypeWillChange]
public function count()
{
return count($this->items);
*/
public function extract()
{
- return $this->getQueue()->extract();
+ $value = $this->getQueue()->extract();
+
+ $keyToRemove = null;
+ $highestPriority = null;
+ foreach ($this->items as $key => $item) {
+ if ($item['data'] !== $value) {
+ continue;
+ }
+
+ if (null === $highestPriority) {
+ $highestPriority = $item['priority'];
+ $keyToRemove = $key;
+ continue;
+ }
+
+ if ($highestPriority >= $item['priority']) {
+ continue;
+ }
+
+ $highestPriority = $item['priority'];
+ $keyToRemove = $key;
+ }
+
+ if ($keyToRemove !== null) {
+ unset($this->items[$keyToRemove]);
+ }
+
+ return $value;
}
/**
*
* @return SplPriorityQueue
*/
+ #[ReturnTypeWillChange]
public function getIterator()
{
$queue = $this->getQueue();
*/
public function serialize()
{
- return serialize($this->items);
+ return serialize($this->__serialize());
+ }
+
+ /**
+ * Magic method used for serializing of an instance.
+ *
+ * @return array
+ */
+ public function __serialize()
+ {
+ return $this->items;
}
/**
*/
public function unserialize($data)
{
- foreach (unserialize($data) as $item) {
+ $toUnserialize = unserialize($data);
+ if (! is_array($toUnserialize)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance; corrupt serialization data',
+ self::class
+ ));
+ }
+
+ $this->__unserialize($toUnserialize);
+ }
+
+ /**
+ * Magic method used to rebuild an instance.
+ *
+ * @param array $data Data array.
+ * @return void
+ */
+ public function __unserialize($data)
+ {
+ foreach ($data as $item) {
$this->insert($item['data'], $item['priority']);
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
use Serializable;
+use UnexpectedValueException;
+
+use function array_key_exists;
+use function get_class;
+use function gettype;
+use function is_array;
+use function is_object;
+use function serialize;
+use function sprintf;
+use function unserialize;
+
+use const PHP_INT_MAX;
/**
* Serializable version of SplPriorityQueue
*/
class SplPriorityQueue extends \SplPriorityQueue implements Serializable
{
- /**
- * @var int Seed used to ensure queue order for items of the same priority
- */
+ /** @var int Seed used to ensure queue order for items of the same priority */
protected $serial = PHP_INT_MAX;
/**
* @return string
*/
public function serialize()
+ {
+ return serialize($this->__serialize());
+ }
+
+ /**
+ * Magic method used for serializing of an instance.
+ *
+ * @return array
+ */
+ public function __serialize()
{
$clone = clone $this;
$clone->setExtractFlags(self::EXTR_BOTH);
foreach ($clone as $item) {
$data[] = $item;
}
-
- return serialize($data);
+ return $data;
}
/**
* @return void
*/
public function unserialize($data)
+ {
+ $toUnserialize = unserialize($data);
+ if (! is_array($toUnserialize)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance; corrupt serialization data',
+ self::class
+ ));
+ }
+
+ $this->__unserialize($toUnserialize);
+ }
+
+ /**
+ * Magic method used to rebuild an instance.
+ *
+ * @param array $data Data array.
+ * @return void
+ */
+ public function __unserialize($data)
{
$this->serial = PHP_INT_MAX;
- foreach (unserialize($data) as $item) {
- $this->serial--;
- $this->insert($item['data'], $item['priority']);
+
+ foreach ($data as $item) {
+ if (! is_array($item)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance: corrupt item; expected array, received %s',
+ self::class,
+ is_object($item) ? get_class($item) : gettype($item)
+ ));
+ }
+
+ if (! array_key_exists('data', $item)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance: corrupt item; missing "data" element',
+ self::class
+ ));
+ }
+
+ $priority = 1;
+ if (array_key_exists('priority', $item)) {
+ $priority = (int) $item['priority'];
+ }
+
+ $this->insert($item['data'], $priority);
}
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
+use ReturnTypeWillChange;
use Serializable;
+use UnexpectedValueException;
+
+use function is_array;
+use function serialize;
+use function sprintf;
+use function unserialize;
/**
* Serializable version of SplQueue
+ *
+ * @template TKey of array-key
+ * @template TValue
+ * @extends \SplQueue<TValue>
*/
class SplQueue extends \SplQueue implements Serializable
{
/**
* Return an array representing the queue
*
- * @return array
+ * @return list<TValue>
*/
public function toArray()
{
*
* @return string
*/
+ #[ReturnTypeWillChange]
public function serialize()
{
- return serialize($this->toArray());
+ return serialize($this->__serialize());
+ }
+
+ /**
+ * Magic method used for serializing of an instance.
+ *
+ * @return list<TValue>
+ */
+ #[ReturnTypeWillChange]
+ public function __serialize()
+ {
+ return $this->toArray();
}
/**
* @param string $data
* @return void
*/
+ #[ReturnTypeWillChange]
public function unserialize($data)
{
- foreach (unserialize($data) as $item) {
+ $toUnserialize = unserialize($data);
+ if (! is_array($toUnserialize)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance; corrupt serialization data',
+ self::class
+ ));
+ }
+
+ $this->__unserialize($toUnserialize);
+ }
+
+ /**
+ * Magic method used to rebuild an instance.
+ *
+ * @param array<array-key, TValue> $data Data array.
+ * @return void
+ */
+ #[ReturnTypeWillChange]
+ public function __unserialize($data)
+ {
+ foreach ($data as $item) {
$this->push($item);
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib;
+use ReturnTypeWillChange;
use Serializable;
+use UnexpectedValueException;
+
+use function is_array;
+use function serialize;
+use function sprintf;
+use function unserialize;
/**
* Serializable version of SplStack
+ *
+ * @template TValue
+ * @extends \SplStack<TValue>
*/
class SplStack extends \SplStack implements Serializable
{
/**
* Serialize to an array representing the stack
*
- * @return array
+ * @return list<TValue>
*/
public function toArray()
{
*
* @return string
*/
+ #[ReturnTypeWillChange]
public function serialize()
{
- return serialize($this->toArray());
+ return serialize($this->__serialize());
+ }
+
+ /**
+ * Magic method used for serializing of an instance.
+ *
+ * @return list<TValue>
+ */
+ #[ReturnTypeWillChange]
+ public function __serialize()
+ {
+ return $this->toArray();
}
/**
* @param string $data
* @return void
*/
+ #[ReturnTypeWillChange]
public function unserialize($data)
{
- foreach (unserialize($data) as $item) {
+ $toUnserialize = unserialize($data);
+ if (! is_array($toUnserialize)) {
+ throw new UnexpectedValueException(sprintf(
+ 'Cannot deserialize %s instance; corrupt serialization data',
+ self::class
+ ));
+ }
+
+ $this->__unserialize($toUnserialize);
+ }
+
+ /**
+ * Magic method used to rebuild an instance.
+ *
+ * @param array<array-key, TValue> $data Data array.
+ * @return void
+ */
+ #[ReturnTypeWillChange]
+ public function __unserialize($data)
+ {
+ foreach ($data as $item) {
$this->unshift($item);
}
}
-<?php
+<?php // phpcs:disable WebimpressCodingStandard.NamingConventions.AbstractClass.Prefix
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+
+declare(strict_types=1);
namespace Laminas\Stdlib;
+use Laminas\Stdlib\StringWrapper\Iconv;
+use Laminas\Stdlib\StringWrapper\Intl;
+use Laminas\Stdlib\StringWrapper\MbString;
+use Laminas\Stdlib\StringWrapper\Native;
use Laminas\Stdlib\StringWrapper\StringWrapperInterface;
+use function array_search;
+use function defined;
+use function extension_loaded;
+use function in_array;
+use function is_string;
+use function preg_match;
+use function strtoupper;
+
/**
* Utility class for handling strings of different character encodings
* using available PHP extensions.
/**
* Ordered list of registered string wrapper instances
*
- * @var StringWrapperInterface[]
+ * @var list<class-string<StringWrapperInterface>>|null
*/
- protected static $wrapperRegistry = null;
+ protected static $wrapperRegistry;
/**
* A list of known single-byte character encodings (upper-case)
* @var string[]
*/
protected static $singleByteEncodings = [
- 'ASCII', '7BIT', '8BIT',
- 'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', 'ISO-8859-5',
- 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9', 'ISO-8859-10',
- 'ISO-8859-11', 'ISO-8859-13', 'ISO-8859-14', 'ISO-8859-15', 'ISO-8859-16',
- 'CP-1251', 'CP-1252',
+ 'ASCII',
+ '7BIT',
+ '8BIT',
+ 'ISO-8859-1',
+ 'ISO-8859-2',
+ 'ISO-8859-3',
+ 'ISO-8859-4',
+ 'ISO-8859-5',
+ 'ISO-8859-6',
+ 'ISO-8859-7',
+ 'ISO-8859-8',
+ 'ISO-8859-9',
+ 'ISO-8859-10',
+ 'ISO-8859-11',
+ 'ISO-8859-13',
+ 'ISO-8859-14',
+ 'ISO-8859-15',
+ 'ISO-8859-16',
+ 'CP-1251',
+ 'CP-1252',
// TODO
];
*
* @var bool
**/
- protected static $hasPcreUnicodeSupport = null;
+ protected static $hasPcreUnicodeSupport;
/**
* Get registered wrapper classes
*
* @return string[]
+ * @psalm-return list<class-string<StringWrapperInterface>>
*/
public static function getRegisteredWrappers()
{
static::$wrapperRegistry = [];
if (extension_loaded('intl')) {
- static::$wrapperRegistry[] = 'Laminas\Stdlib\StringWrapper\Intl';
+ static::$wrapperRegistry[] = Intl::class;
}
if (extension_loaded('mbstring')) {
- static::$wrapperRegistry[] = 'Laminas\Stdlib\StringWrapper\MbString';
+ static::$wrapperRegistry[] = MbString::class;
}
if (extension_loaded('iconv')) {
- static::$wrapperRegistry[] = 'Laminas\Stdlib\StringWrapper\Iconv';
+ static::$wrapperRegistry[] = Iconv::class;
}
- static::$wrapperRegistry[] = 'Laminas\Stdlib\StringWrapper\Native';
+ static::$wrapperRegistry[] = Native::class;
}
return static::$wrapperRegistry;
/**
* Register a string wrapper class
*
- * @param string $wrapper
+ * @param class-string<StringWrapperInterface> $wrapper
* @return void
*/
public static function registerWrapper($wrapper)
{
$wrapper = (string) $wrapper;
- if (! in_array($wrapper, static::$wrapperRegistry, true)) {
+ // using getRegisteredWrappers() here to ensure that the list is initialized
+ if (! in_array($wrapper, static::getRegisteredWrappers(), true)) {
static::$wrapperRegistry[] = $wrapper;
}
}
/**
* Unregister a string wrapper class
*
- * @param string $wrapper
+ * @param class-string<StringWrapperInterface> $wrapper
* @return void
*/
public static function unregisterWrapper($wrapper)
{
- $index = array_search((string) $wrapper, static::$wrapperRegistry, true);
+ // using getRegisteredWrappers() here to ensure that the list is initialized
+ $index = array_search((string) $wrapper, static::getRegisteredWrappers(), true);
if ($index !== false) {
unset(static::$wrapperRegistry[$index]);
}
* @param string $encoding Character encoding to support
* @param string|null $convertEncoding OPTIONAL character encoding to convert in
* @return StringWrapperInterface
- * @throws Exception\RuntimeException If no wrapper supports given character encodings
+ * @throws Exception\RuntimeException If no wrapper supports given character encodings.
*/
public static function getWrapper($encoding = 'UTF-8', $convertEncoding = null)
{
throw new Exception\RuntimeException(
'No wrapper found supporting "' . $encoding . '"'
- . (($convertEncoding !== null) ? ' and "' . $convertEncoding . '"' : '')
+ . ($convertEncoding !== null ? ' and "' . $convertEncoding . '"' : '')
);
}
*/
public static function isValidUtf8($str)
{
- return is_string($str) && ($str === '' || preg_match('/^./su', $str) == 1);
+ return is_string($str) && ($str === '' || preg_match('/^./su', $str) === 1);
}
/**
{
if (static::$hasPcreUnicodeSupport === null) {
ErrorHandler::start();
- static::$hasPcreUnicodeSupport = defined('PREG_BAD_UTF8_OFFSET_ERROR') && preg_match('/\pL/u', 'a') == 1;
+ static::$hasPcreUnicodeSupport = defined('PREG_BAD_UTF8_OFFSET_ERROR') && preg_match('/\pL/u', 'a') === 1;
ErrorHandler::stop();
}
return static::$hasPcreUnicodeSupport;
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\StringWrapper;
use Laminas\Stdlib\Exception;
use Laminas\Stdlib\StringUtils;
+use function floor;
+use function in_array;
+use function sprintf;
+use function str_pad;
+use function str_repeat;
+use function strtoupper;
+use function wordwrap;
+
+use const STR_PAD_BOTH;
+use const STR_PAD_LEFT;
+use const STR_PAD_RIGHT;
+
abstract class AbstractStringWrapper implements StringWrapperInterface
{
/**
* The character encoding working on
+ *
* @var string|null
*/
protected $encoding = 'UTF-8';
/**
* An optionally character encoding to convert to
+ *
* @var string|null
*/
protected $convertEncoding;
/**
* Get the defined character encoding to work with
*
- * @return string
- * @throws Exception\LogicException If no encoding was defined
+ * @return null|string
+ * @throws Exception\LogicException If no encoding was defined.
*/
public function getEncoding()
{
* Get the defined character encoding to convert to
*
* @return string|null
- */
+ */
public function getConvertEncoding()
{
return $this->convertEncoding;
$to = $reverse ? $encoding : $convertEncoding;
throw new Exception\RuntimeException(sprintf(
'Converting from "%s" to "%s" isn\'t supported by this string wrapper',
- $from,
- $to
+ $from ?? '',
+ $to ?? ''
));
}
throw new Exception\InvalidArgumentException('Cannot force cut when width is zero');
}
- if (StringUtils::isSingleByteEncoding($this->getEncoding())) {
+ if (null === $this->getEncoding() || StringUtils::isSingleByteEncoding($this->getEncoding())) {
return wordwrap($string, $width, $break, $cut);
}
}
if ($possibleBreak === $break) {
- $result .= $this->substr($string, $lastStart, $current - $lastStart + $breakWidth);
- $current += $breakWidth - 1;
- $lastStart = $lastSpace = $current + 1;
+ $result .= $this->substr($string, $lastStart, $current - $lastStart + $breakWidth);
+ $current += $breakWidth - 1;
+ $lastStart = $lastSpace = $current + 1;
continue;
}
if ($char === ' ') {
if ($current - $lastStart >= $width) {
- $result .= $this->substr($string, $lastStart, $current - $lastStart) . $break;
- $lastStart = $current + 1;
+ $result .= $this->substr($string, $lastStart, $current - $lastStart) . $break;
+ $lastStart = $current + 1;
}
$lastSpace = $current;
}
if ($current - $lastStart >= $width && $cut && $lastStart >= $lastSpace) {
- $result .= $this->substr($string, $lastStart, $current - $lastStart) . $break;
- $lastStart = $lastSpace = $current;
+ $result .= $this->substr($string, $lastStart, $current - $lastStart) . $break;
+ $lastStart = $lastSpace = $current;
continue;
}
if ($current - $lastStart >= $width && $lastStart < $lastSpace) {
- $result .= $this->substr($string, $lastStart, $lastSpace - $lastStart) . $break;
- $lastStart = $lastSpace = $lastSpace + 1;
+ $result .= $this->substr($string, $lastStart, $lastSpace - $lastStart) . $break;
+ $lastStart = $lastSpace += 1;
continue;
}
}
*/
public function strPad($input, $padLength, $padString = ' ', $padType = STR_PAD_RIGHT)
{
- if (StringUtils::isSingleByteEncoding($this->getEncoding())) {
+ if (null === $this->getEncoding() || StringUtils::isSingleByteEncoding($this->getEncoding())) {
return str_pad($input, $padLength, $padString, $padType);
}
return $input;
}
- $repeatCount = floor($lengthOfPadding / $padStringLength);
+ $repeatCount = (int) floor($lengthOfPadding / $padStringLength);
if ($padType === STR_PAD_BOTH) {
- $repeatCountLeft = $repeatCountRight = ($repeatCount - $repeatCount % 2) / 2;
+ $repeatCountLeft = $repeatCountRight = (int) ($repeatCount - $repeatCount % 2) / 2;
$lastStringLength = $lengthOfPadding - 2 * $repeatCountLeft * $padStringLength;
- $lastStringLeftLength = $lastStringRightLength = floor($lastStringLength / 2);
+ $lastStringLeftLength = $lastStringRightLength = (int) floor($lastStringLength / 2);
$lastStringRightLength += $lastStringLength % 2;
$lastStringLeft = $this->substr($padString, 0, $lastStringLeftLength);
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\StringWrapper;
use Laminas\Stdlib\Exception;
+use function assert;
+use function extension_loaded;
+use function iconv;
+use function iconv_strlen;
+use function iconv_strpos;
+use function iconv_substr;
+
class Iconv extends AbstractStringWrapper
{
/**
* List of supported character sets (upper case)
*
- * @var string[]
* @link http://www.gnu.org/software/libiconv/
+ *
+ * @var string[]
*/
protected static $encodings = [
// European languages
*/
public function substr($str, $offset = 0, $length = null)
{
+ $length = $length ?? $this->strlen($str);
+ assert($length !== false);
+
return iconv_substr($str, $offset, $length, $this->getEncoding());
}
*/
public function strpos($haystack, $needle, $offset = 0)
{
- return iconv_strpos($haystack, $needle, $offset, $this->getEncoding());
+ $encoding = $this->getEncoding();
+ assert($encoding !== null);
+
+ return iconv_strpos($haystack, $needle, $offset, $encoding);
}
/**
$fromEncoding = $reverse ? $convertEncoding : $encoding;
$toEncoding = $reverse ? $encoding : $convertEncoding;
+ if (null === $toEncoding || null === $fromEncoding) {
+ return $str;
+ }
+
// automatically add "//IGNORE" to not stop converting on invalid characters
// invalid characters triggers a notice anyway
return iconv($fromEncoding, $toEncoding . '//IGNORE', $str);
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\StringWrapper;
use Laminas\Stdlib\Exception;
+use function extension_loaded;
+use function grapheme_strlen;
+use function grapheme_strpos;
+use function grapheme_substr;
+
class Intl extends AbstractStringWrapper
{
/**
* Returns the length of the given string
*
* @param string $str
- * @return int|false
+ * @return false|int
*/
public function strlen($str)
{
- return grapheme_strlen($str);
+ $len = grapheme_strlen($str);
+ return $len ?? false;
}
/**
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\StringWrapper;
use Laminas\Stdlib\Exception;
+use function array_map;
+use function array_search;
+use function extension_loaded;
+use function mb_convert_encoding;
+use function mb_list_encodings;
+use function mb_strlen;
+use function mb_strpos;
+use function mb_substr;
+
class MbString extends AbstractStringWrapper
{
/**
* List of supported character sets (upper case)
*
- * @var null|string[]
* @link http://php.net/manual/mbstring.supported-encodings.php
+ *
+ * @var null|string[]
*/
- protected static $encodings = null;
+ protected static $encodings;
/**
* Get a list of supported character encodings
$fromEncoding = $reverse ? $convertEncoding : $encoding;
$toEncoding = $reverse ? $encoding : $convertEncoding;
- return mb_convert_encoding($str, $toEncoding, $fromEncoding);
+
+ return mb_convert_encoding($str, $toEncoding ?? '', $fromEncoding ?? '');
}
}
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\StringWrapper;
use Laminas\Stdlib\Exception;
use Laminas\Stdlib\StringUtils;
+use function in_array;
+use function strlen;
+use function strpos;
+use function strtoupper;
+use function substr;
+
class Native extends AbstractStringWrapper
{
/**
);
}
- if ($encodingUpper !== strtoupper($convertEncoding)) {
+ if (null !== $convertEncoding && $encodingUpper !== strtoupper($convertEncoding)) {
$this->convertEncoding = $encodingUpper;
}
<?php
-/**
- * @see https://github.com/laminas/laminas-stdlib for the canonical source repository
- * @copyright https://github.com/laminas/laminas-stdlib/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-stdlib/blob/master/LICENSE.md New BSD License
- */
+declare(strict_types=1);
namespace Laminas\Stdlib\StringWrapper;
+use const STR_PAD_RIGHT;
+
interface StringWrapperInterface
{
/**
/**
* Get the defined character encoding to work with (upper case)
*
- * @return string
+ * @return string|null
*/
public function getEncoding();
--- /dev/null
+name: "Continuous Integration"
+
+on:
+ pull_request:
+ push:
+ branches:
+ tags:
+
+jobs:
+ ci:
+ uses: laminas/workflow-continuous-integration/.github/workflows/continuous-integration.yml@1.x
-# Alternate workflow example.
-# This one is identical to the one in release-on-milestone.yml, with one change:
-# the Release step uses the ORGANIZATION_ADMIN_TOKEN instead, to allow it to
-# trigger a release workflow event. This is useful if you have other actions
-# that intercept that event.
-
name: "Automatic Releases"
on:
jobs:
release:
- name: "GIT tag, release & create merge-up PR"
- runs-on: ubuntu-latest
-
- steps:
- - name: "Checkout"
- uses: "actions/checkout@v2"
-
- - name: "Release"
- uses: "laminas/automatic-releases@v1"
- with:
- command-name: "laminas:automatic-releases:release"
- env:
- "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }}
- "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
- "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
- "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
-
- - name: "Create Merge-Up Pull Request"
- uses: "laminas/automatic-releases@v1"
- with:
- command-name: "laminas:automatic-releases:create-merge-up-pull-request"
- env:
- "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }}
- "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
- "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
- "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
-
- - name: "Create and/or Switch to new Release Branch"
- uses: "laminas/automatic-releases@v1"
- with:
- command-name: "laminas:automatic-releases:switch-default-branch-to-next-minor"
- env:
- "GITHUB_TOKEN": ${{ secrets.ORGANIZATION_ADMIN_TOKEN }}
- "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
- "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
- "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
-
- - name: "Bump Changelog Version On Originating Release Branch"
- uses: "laminas/automatic-releases@v1"
- with:
- command-name: "laminas:automatic-releases:bump-changelog"
- env:
- "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }}
- "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
- "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
- "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
-
- - name: "Create new milestones"
- uses: "laminas/automatic-releases@v1"
- with:
- command-name: "laminas:automatic-releases:create-milestones"
- env:
- "GITHUB_TOKEN": ${{ secrets.GITHUB_TOKEN }}
- "SIGNING_SECRET_KEY": ${{ secrets.SIGNING_SECRET_KEY }}
- "GIT_AUTHOR_NAME": ${{ secrets.GIT_AUTHOR_NAME }}
- "GIT_AUTHOR_EMAIL": ${{ secrets.GIT_AUTHOR_EMAIL }}
+ uses: laminas/workflow-automatic-releases/.github/workflows/release-on-milestone-closed.yml@1.x
+ secrets:
+ GIT_AUTHOR_EMAIL: ${{ secrets.GIT_AUTHOR_EMAIL }}
+ GIT_AUTHOR_NAME: ${{ secrets.GIT_AUTHOR_NAME }}
+ ORGANIZATION_ADMIN_TOKEN: ${{ secrets.ORGANIZATION_ADMIN_TOKEN }}
+ SIGNING_SECRET_KEY: ${{ secrets.SIGNING_SECRET_KEY }}
--- /dev/null
+{
+ "ignore_php_platform_requirements": {
+ "8.1": true
+ }
+}
+++ /dev/null
-# Changelog
-
-All notable changes to this project will be documented in this file, in reverse chronological order by release.
-
-## 1.1.1 - 2020-09-14
-
-### Fixed
-
-- [#71](https://github.com/laminas/laminas-zendframework-bridge/pull/71) fixes detection of the vendor directory when the `COMPOSER_VENDOR_DIR` env variable is missing or empty. Previously, this could lead to scenarios where a non-existent path was used for finding the bridge autoloader.
-
-
------
-
-### Release Notes for [1.1.1](https://github.com/laminas/laminas-zendframework-bridge/milestone/5)
-
-
-
-### 1.1.1
-
-- Total issues resolved: **0**
-- Total pull requests resolved: **1**
-- Total contributors: **1**
-
-#### Bug
-
- - [71: Verify `COMPOSER_VENDOR_DIR` in conditional](https://github.com/laminas/laminas-zendframework-bridge/pull/71) thanks to @aaronbushnell
-
-## 1.1.0 - 2020-08-18
-
-### Added
-
-- [#68](https://github.com/laminas/laminas-zendframework-bridge/pull/68) adds support for the upcoming PHP 8.0 release.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#67](https://github.com/laminas/laminas-zendframework-bridge/pull/67) fixes how the Composer autoload file is found, looking first in the `COMPOSER_VENDOR_DIR` before trying to resolve relative to where the package is installed.
-
-## 1.0.4 - 2020-05-20
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#66](https://github.com/laminas/laminas-zendframework-bridge/pull/66) ensures that references to BjyAuthorize templates are not rewritten, so that they can be resolved during runtime.
-
-## 1.0.3 - 2020-04-03
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#63](https://github.com/laminas/laminas-zendframework-bridge/pull/63) fixes handling of dependency configuration to ensure each of delegators, initializers, and abstract factories are properly handled during configuraiton post processing. The new approach should allow delegators to work post-migration to Laminas or Mezzio.
-
-- [#61](https://github.com/laminas/laminas-zendframework-bridge/pull/61) ensures configuration for delegator factories gets rewritten; the functionality broke in version 1.0.1.
-
-## 1.0.2 - 2020-03-26
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#55](https://github.com/laminas/laminas-zendframework-bridge/pull/55) adds provisions to ensure that references to legacy classes/interfaces in dependency configuration always create aliases from the legacy to the new classes. Previously, we did straight replacements in the configuration, which could lead to the legacy service no longer being available. Now it will remain available.
-
-- [#59](https://github.com/laminas/laminas-zendframework-bridge/pull/59) fixes the replacement rules such as to avoid replacing references to API Skeletons packages, classes, or configuration keys.
-
-- [#57](https://github.com/laminas/laminas-zendframework-bridge/pull/57) fixes how references to the "zf-apigility" key are replaced. Previously, they were rewritten to "laminas-api-tools", but the correct replacement is "api-tools".
-
-- [#56](https://github.com/laminas/laminas-zendframework-bridge/pull/56) provides a mechanism to add additional maps with multiple levels of namespace separator escaping, in order to ensure that all various known permutations are matched. The escaping is applied to both the original and target, to ensure that rewrites conform to the original escaping.
-
-- [#56](https://github.com/laminas/laminas-zendframework-bridge/pull/56) makes changes to the replacement rules to ensure we do not replace references to "Zend" or "ZF" if they occur as subnamespaces OR as class names (formerly, we only enforced subnamespaces). Additional rules were provided for cases where one or both occur within our own packages.
-
-- [#52](https://github.com/laminas/laminas-zendframework-bridge/pull/52) fixes a scenario whereby factory _values_ were not being rewritten during configuration post processing.
-
-- [#52](https://github.com/laminas/laminas-zendframework-bridge/pull/52) fixes an issue that occurs with the configuration post processor. Previously, when a service name used as a factory or invokable was encountered that referenced a legacy class, it would get rewritten. This would cause issues if the service was not exposed in the original legacy package, however, as there would now be no alias of the legacy service to the new one. This patch modifies the configuration post processor such that it now tests to see if a service name it will rename exists as an alias; if not, it also creates the alias.
-
-## 1.0.1 - 2020-01-07
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#47](https://github.com/laminas/laminas-zendframework-bridge/pull/47) adds entries for rewriting the various `::*Zend()` methods exposed in the psr7bridge to `::*Laminas()` during migrations.
-
-- [#46](https://github.com/laminas/laminas-zendframework-bridge/pull/46) adds a rule to rewrite the config key `use_zend_loader` to `use_laminas_loader`.
-
-- [#45](https://github.com/laminas/laminas-zendframework-bridge/pull/45) adds a rule to exclude rewriting of view paths provided by the various Doctrine modules targeting the developer tools.
-
-## 1.0.0 - 2019-12-31
-
-### Added
-
-- First stable release.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 0.4.5 - 2019-12-23
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [#42](https://github.com/laminas/laminas-zendframework-bridge/pull/42) modifies the replacement rules to no longer rewrite zf-deploy; the package will not be coming to the new organizations.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 0.4.4 - 2019-12-18
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [#40](https://github.com/laminas/laminas-zendframework-bridge/pull/40) adds exclusion rules for subnamespaces that reference Zend, ZF, ZendService, or ZendOAuth to ensure they are not rewritten.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#40](https://github.com/laminas/laminas-zendframework-bridge/pull/40) adds exclusions for classes referencing Zend Server product features to ensure they are not rewritten (e.g., `ZendServerDisk`, `ZendServerShm`, `ZendMonitor`).
-
-## 0.4.3 - 2019-12-17
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#39](https://github.com/laminas/laminas-zendframework-bridge/pull/39) fixes an issue when using the Auryn DI container. The class `Northwoods\Container\Zend\Config` was incorrectly being renamed to `Northwoods\Container\Laminas\Config` (which should not happen, as it is not a class under our control).
-
-## 0.4.2 - 2019-12-16
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#36](https://github.com/laminas/laminas-zendframework-bridge/pull/36) adds some cases for classes that contain the verbiage "Expressive" and "Apigility" ot ensure they are rewritten correctly.
-
-## 0.4.1 - 2019-12-10
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#35](https://github.com/laminas/laminas-zendframework-bridge/pull/35) removes zend-debug from the replacement list, as it is not being brought over to Laminas.
-
-## 0.4.0 - 2019-11-27
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [#32](https://github.com/laminas/laminas-zendframework-bridge/pull/32) changes all references to Expressive to instead reference Mezzio.
-
-- [#32](https://github.com/laminas/laminas-zendframework-bridge/pull/32) changes all references to Apigility to instead reference Laminas API Tools. The vendor becomes laminas-api-tools, the URL becomes api-tools.getlaminas.org, packages and repos are prefixed with api-tools, and namespaces become `Laminas\ApiTools`.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 0.3.8 - 2019-11-14
-
-### Added
-
-- [#29](https://github.com/laminas/laminas-zendframework-bridge/pull/29) adds entries to translate `ZendDeveloperTools` to `Laminas\DeveloperTools`, and vice-versa.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 0.3.7 - 2019-11-12
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#28](https://github.com/laminas/laminas-zendframework-bridge/pull/28) updates the `zenddevelopertools` string to rewrite to `laminas-developer-tools` instead of `laminasdevelopertools`.
-
-## 0.3.6 - 2019-11-07
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#27](https://github.com/laminas/laminas-zendframework-bridge/pull/27) adds a rewrite rule for zend-framework.flf => laminas-project.flf.
-
-## 0.3.5 - 2019-11-06
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#25](https://github.com/laminas/laminas-zendframework-bridge/pull/25) adds entries for ZendHttp and ZendModule, which are file name segments in files from the zend-feed and zend-config-aggregator-module packages, respectively.
-
-## 0.3.4 - 2019-11-06
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#24](https://github.com/laminas/laminas-zendframework-bridge/pull/24) adds a rule to never rewrite the string `Doctrine\Zend`.
-
-- [#23](https://github.com/laminas/laminas-zendframework-bridge/pull/23) adds a missing map for each of ZendAcl and ZendRbac, which occur in the zend-expressive-authorization-acl and zend-expressive-authorization-rbac packages, respectively.
-
-## 0.3.3 - 2019-11-06
-
-### Added
-
-- [#22](https://github.com/laminas/laminas-zendframework-bridge/pull/22) adds configuration post-processing features, exposed both as a laminas-config-aggregator post processor (for use with Expressive applications) and as a laminas-modulemanager `EVENT_MERGE_CONFIG` listener (for use with MVC applications). When registered, it will post-process the configuration, replacing known Zend Framework-specific strings with their Laminas replacements. A ruleset is provided that ensures dependency configuration is rewritten in a safe manner, routing configuration is skipped, and certain top-level configuration keys are matched exactly (instead of potentially as substrings or word stems). A later release of laminas-migration will auto-register these tools in applications when possible.
-
-### Changed
-
-- [#22](https://github.com/laminas/laminas-zendframework-bridge/pull/22) removes support for PHP versions prior to PHP 5.6. We have decided to only support supported PHP versions, whether that support is via php.net or commercial. The lowest supported PHP version we have found is 5.6. Users wishing to migrate to Laminas must at least update to PHP 5.6 before doing so.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 0.3.2 - 2019-10-30
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [#21](https://github.com/laminas/laminas-zendframework-bridge/pull/21) removes rewriting of the Amazon library, as it is not moving to Laminas.
-
-- [#21](https://github.com/laminas/laminas-zendframework-bridge/pull/21) removes rewriting of the GCM and APNS libraries, as they are not moving to Laminas.
-
-### Fixed
-
-- [#21](https://github.com/laminas/laminas-zendframework-bridge/pull/21) fixes how the recaptcha and twitter library package and namespaces are rewritten.
-
-## 0.3.1 - 2019-04-25
-
-### Added
-
-- [#20](https://github.com/laminas/laminas-zendframework-bridge/pull/20) provides an additional autoloader that is _prepended_ to the autoloader
- stack. This new autoloader will create class aliases for interfaces, classes,
- and traits referenced in type hints and class declarations, ensuring PHP is
- able to resolve them correctly during class_alias operations.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 0.3.0 - 2019-04-12
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [#16](https://github.com/laminas/laminas-zendframework-bridge/pull/16) removes the `RewriteRules::classRewrite()` method, as it is no longer
- needed due to internal refactoring.
-
-### Fixed
-
-- [#16](https://github.com/laminas/laminas-zendframework-bridge/pull/16) fixes how the rewrite rules detect the word `Zend` in subnamespaces and
- class names to be both more robust and simpler.
-
-## 0.2.5 - 2019-04-11
-
-### Added
-
-- [#12](https://github.com/laminas/laminas-zendframework-bridge/pull/12) adds functionality for ensuring we alias namespaces and classes that
- include the word `Zend` in them; e.g., `Zend\Expressive\ZendView\ZendViewRendererFactory`
- will now alias to `Expressive\LaminasView\LaminasViewRendererFactory`.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 0.2.4 - 2019-04-11
-
-### Added
-
-- [#11](https://github.com/laminas/laminas-zendframework-bridge/pull/11) adds maps for the Expressive router adapter packages.
-
-- [#10](https://github.com/laminas/laminas-zendframework-bridge/pull/10) adds a map for the Psr7Bridge package, as it used `Zend` within a subnamespace.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
-
-## 0.2.3 - 2019-04-10
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#9](https://github.com/laminas/laminas-zendframework-bridge/pull/9) fixes the mapping for the Problem Details package.
-
-## 0.2.2 - 2019-04-10
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Added a check that the discovered alias exists as a class, interface, or trait
- before attempting to call `class_alias()`.
-
-## 0.2.1 - 2019-04-10
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- [#8](https://github.com/laminas/laminas-zendframework-bridge/pull/8) fixes mappings for each of zend-expressive-authentication-zendauthentication,
- zend-expressive-zendrouter, and zend-expressive-zendviewrenderer.
-
-## 0.2.0 - 2019-04-01
-
-### Added
-
-- Nothing.
-
-### Changed
-
-- [#4](https://github.com/laminas/laminas-zendframework-bridge/pull/4) rewrites the autoloader to be class-based, via the class
- `Laminas\ZendFrameworkBridge\Autoloader`. Additionally, the new approach
- provides a performance boost by using a balanced tree algorithm, ensuring
- matches occur faster.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- [#4](https://github.com/laminas/laminas-zendframework-bridge/pull/4) removes function aliasing. Function aliasing will move to the packages that
- provide functions.
-
-### Fixed
-
-- Nothing.
-
-## 0.1.0 - 2019-03-27
-
-### Added
-
-- Adds an autoloader file that registers with `spl_autoload_register` a routine
- for aliasing legacy ZF class/interface/trait names to Laminas Project
- equivalents.
-
-- Adds autoloader files for aliasing legacy ZF package functions to Laminas
- Project equivalents.
-
-### Changed
-
-- Nothing.
-
-### Deprecated
-
-- Nothing.
-
-### Removed
-
-- Nothing.
-
-### Fixed
-
-- Nothing.
# laminas-zendframework-bridge
-[![Build Status](https://travis-ci.com/laminas/laminas-zendframework-bridge.svg?branch=master)](https://travis-ci.com/laminas/laminas-zendframework-bridge)
-[![Coverage Status](https://coveralls.io/repos/github/laminas/laminas-zendframework-bridge/badge.svg?branch=master)](https://coveralls.io/github/laminas/laminas-zendframework-bridge?branch=master)
+[![Build Status](https://github.com/laminas/laminas-zendframework-bridge/workflows/Continuous%20Integration/badge.svg)](https://github.com/laminas/laminas-zendframework-bridge/actions?query=workflow%3A"Continuous+Integration")
+
This library provides a custom autoloader that aliases legacy Zend Framework,
Apigility, and Expressive classes to their replacements under the Laminas
This package should be installed only if you are also using the composer plugin
that installs Laminas packages to replace ZF/Apigility/Expressive packages.
+This tool supports:
+
+* Zend Framework MVC projects, all v2 and v3 releases
+* Apigility projects, all stable versions
+* Expressive versions, all stable versions
+
## Installation
Run the following to install this library:
"forum": "https://discourse.laminas.dev/"
},
"require": {
- "php": "^5.6 || ^7.0 || ^8.0"
+ "php": ">=7.4, <8.2"
},
"require-dev": {
- "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.1 || ^9.3",
- "squizlabs/php_codesniffer": "^3.5"
+ "phpunit/phpunit": "^9.5.14",
+ "psalm/plugin-phpunit": "^0.15.2",
+ "squizlabs/php_codesniffer": "^3.6.2",
+ "vimeo/psalm": "^4.21.0"
},
"autoload": {
"files": [
}
},
"config": {
- "sort-packages": true
+ "sort-packages": true,
+ "platform": {
+ "php": "7.4.99"
+ }
},
"scripts": {
"cs-check": "phpcs",
"cs-fix": "phpcbf",
+ "static-analysis": "psalm --shepherd --stats",
"test": "phpunit --colors=always",
"test-coverage": "phpunit --colors=always --coverage-clover clover.xml"
}
--- /dev/null
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "82c584c7c1e22760cfc947f565ddf060",
+ "packages": [],
+ "packages-dev": [
+ {
+ "name": "amphp/amp",
+ "version": "v2.6.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/amp.git",
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1",
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^7 | ^8 | ^9",
+ "psalm/phar": "^3.11@dev",
+ "react/promise": "^2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/functions.php",
+ "lib/Internal/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\": "lib"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A non-blocking concurrency framework for PHP applications.",
+ "homepage": "https://amphp.org/amp",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "awaitable",
+ "concurrency",
+ "event",
+ "event-loop",
+ "future",
+ "non-blocking",
+ "promise"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/amp/issues",
+ "source": "https://github.com/amphp/amp/tree/v2.6.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-20T17:52:18+00:00"
+ },
+ {
+ "name": "amphp/byte-stream",
+ "version": "v1.8.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/byte-stream.git",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/phpunit-util": "^1.4",
+ "friendsofphp/php-cs-fixer": "^2.3",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^6 || ^7 || ^8",
+ "psalm/phar": "^3.11.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "lib/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\ByteStream\\": "lib"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "homepage": "http://amphp.org/byte-stream",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "non-blocking",
+ "stream"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/amphp",
+ "issues": "https://github.com/amphp/byte-stream/issues",
+ "source": "https://github.com/amphp/byte-stream/tree/v1.8.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2021-03-30T17:13:30+00:00"
+ },
+ {
+ "name": "composer/package-versions-deprecated",
+ "version": "1.11.99.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/package-versions-deprecated.git",
+ "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d",
+ "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.1.0 || ^2.0",
+ "php": "^7 || ^8"
+ },
+ "replace": {
+ "ocramius/package-versions": "1.11.99"
+ },
+ "require-dev": {
+ "composer/composer": "^1.9.3 || ^2.0@dev",
+ "ext-zip": "^1.13",
+ "phpunit/phpunit": "^6.5 || ^7"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "PackageVersions\\Installer",
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PackageVersions\\": "src/PackageVersions"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be"
+ }
+ ],
+ "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)",
+ "support": {
+ "issues": "https://github.com/composer/package-versions-deprecated/issues",
+ "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-17T14:14:24+00:00"
+ },
+ {
+ "name": "composer/pcre",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/pcre.git",
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.3",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Pcre\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "PCRE wrapping library that offers type-safe preg_* replacements.",
+ "keywords": [
+ "PCRE",
+ "preg",
+ "regex",
+ "regular expression"
+ ],
+ "support": {
+ "issues": "https://github.com/composer/pcre/issues",
+ "source": "https://github.com/composer/pcre/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-21T20:24:37+00:00"
+ },
+ {
+ "name": "composer/semver",
+ "version": "3.2.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/semver.git",
+ "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/semver/zipball/a951f614bd64dcd26137bc9b7b2637ddcfc57649",
+ "reference": "a951f614bd64dcd26137bc9b7b2637ddcfc57649",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.2 || ^7.0 || ^8.0"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.4",
+ "symfony/phpunit-bridge": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Composer\\Semver\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nils Adermann",
+ "email": "naderman@naderman.de",
+ "homepage": "http://www.naderman.de"
+ },
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ },
+ {
+ "name": "Rob Bast",
+ "email": "rob.bast@gmail.com",
+ "homepage": "http://robbast.nl"
+ }
+ ],
+ "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "keywords": [
+ "semantic",
+ "semver",
+ "validation",
+ "versioning"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/semver/issues",
+ "source": "https://github.com/composer/semver/tree/3.2.9"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-02-04T13:58:43+00:00"
+ },
+ {
+ "name": "composer/xdebug-handler",
+ "version": "3.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/composer/xdebug-handler.git",
+ "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/12f1b79476638a5615ed00ea6adbb269cec96fd8",
+ "reference": "12f1b79476638a5615ed00ea6adbb269cec96fd8",
+ "shasum": ""
+ },
+ "require": {
+ "composer/pcre": "^1",
+ "php": "^7.2.5 || ^8.0",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "^1.0",
+ "phpstan/phpstan-strict-rules": "^1.1",
+ "symfony/phpunit-bridge": "^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "support": {
+ "irc": "irc://irc.freenode.org/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-04T18:29:42+00:00"
+ },
+ {
+ "name": "dnoegel/php-xdg-base-dir",
+ "version": "v0.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/dnoegel/php-xdg-base-dir.git",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "XdgBaseDir\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "implementation of xdg base directory specification for php",
+ "support": {
+ "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues",
+ "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1"
+ },
+ "time": "2019-12-04T15:06:13+00:00"
+ },
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/coding-standard": "^8.0",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpbench/phpbench": "^0.13 || 1.0.0-alpha2",
+ "phpstan/phpstan": "^0.12",
+ "phpstan/phpstan-phpunit": "^0.12",
+ "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "https://ocramius.github.io/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://www.doctrine-project.org/projects/instantiator.html",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "support": {
+ "issues": "https://github.com/doctrine/instantiator/issues",
+ "source": "https://github.com/doctrine/instantiator/tree/1.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://www.doctrine-project.org/sponsorship.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://www.patreon.com/phpdoctrine",
+ "type": "patreon"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-10T18:47:58+00:00"
+ },
+ {
+ "name": "felixfbecker/advanced-json-rpc",
+ "version": "v3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
+ "shasum": ""
+ },
+ "require": {
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "php": "^7.1 || ^8.0",
+ "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^7.0 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "A more advanced JSONRPC implementation",
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
+ "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
+ },
+ "time": "2021-06-11T22:34:44+00:00"
+ },
+ {
+ "name": "felixfbecker/language-server-protocol",
+ "version": "1.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/felixfbecker/php-language-server-protocol.git",
+ "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
+ "reference": "9d846d1f5cf101deee7a61c8ba7caa0a975cd730",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpstan/phpstan": "*",
+ "squizlabs/php_codesniffer": "^3.1",
+ "vimeo/psalm": "^4.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "LanguageServerProtocol\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ }
+ ],
+ "description": "PHP classes for the Language Server Protocol",
+ "keywords": [
+ "language",
+ "microsoft",
+ "php",
+ "server"
+ ],
+ "support": {
+ "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
+ "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/1.5.1"
+ },
+ "time": "2021-02-22T14:02:09+00:00"
+ },
+ {
+ "name": "myclabs/deep-copy",
+ "version": "1.10.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/myclabs/DeepCopy.git",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.1 || ^8.0"
+ },
+ "require-dev": {
+ "doctrine/collections": "^1.0",
+ "doctrine/common": "^2.6",
+ "phpunit/phpunit": "^7.1"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/DeepCopy/deep_copy.php"
+ ],
+ "psr-4": {
+ "DeepCopy\\": "src/DeepCopy/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Create deep copies (clones) of your objects",
+ "keywords": [
+ "clone",
+ "copy",
+ "duplicate",
+ "object",
+ "object graph"
+ ],
+ "support": {
+ "issues": "https://github.com/myclabs/DeepCopy/issues",
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2"
+ },
+ "funding": [
+ {
+ "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2020-11-13T09:40:50+00:00"
+ },
+ {
+ "name": "netresearch/jsonmapper",
+ "version": "v4.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/cweiske/jsonmapper.git",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "reference": "8bbc021a8edb2e4a7ea2f8ad4fa9ec9dce2fcb8d",
+ "shasum": ""
+ },
+ "require": {
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=7.1"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~7.5 || ~8.0 || ~9.0",
+ "squizlabs/php_codesniffer": "~3.5"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JsonMapper": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "OSL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Christian Weiske",
+ "email": "cweiske@cweiske.de",
+ "homepage": "http://github.com/cweiske/jsonmapper/",
+ "role": "Developer"
+ }
+ ],
+ "description": "Map nested JSON structures onto PHP classes",
+ "support": {
+ "email": "cweiske@cweiske.de",
+ "issues": "https://github.com/cweiske/jsonmapper/issues",
+ "source": "https://github.com/cweiske/jsonmapper/tree/v4.0.0"
+ },
+ "time": "2020-12-01T19:48:11+00:00"
+ },
+ {
+ "name": "nikic/php-parser",
+ "version": "v4.13.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nikic/PHP-Parser.git",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077",
+ "reference": "210577fe3cf7badcc5814d99455df46564f3c077",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "ircmaxell/php-yacc": "^0.0.7",
+ "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+ },
+ "bin": [
+ "bin/php-parse"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.9-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "PhpParser\\": "lib/PhpParser"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Nikita Popov"
+ }
+ ],
+ "description": "A PHP parser written in PHP",
+ "keywords": [
+ "parser",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/nikic/PHP-Parser/issues",
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2"
+ },
+ "time": "2021-11-30T19:35:32+00:00"
+ },
+ {
+ "name": "openlss/lib-array2xml",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/nullivex/lib-array2xml.git",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/nullivex/lib-array2xml/zipball/a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "reference": "a91f18a8dfc69ffabe5f9b068bc39bb202c81d90",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "LSS": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "Apache-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Bryan Tong",
+ "email": "bryan@nullivex.com",
+ "homepage": "https://www.nullivex.com"
+ },
+ {
+ "name": "Tony Butler",
+ "email": "spudz76@gmail.com",
+ "homepage": "https://www.nullivex.com"
+ }
+ ],
+ "description": "Array2XML conversion library credit to lalit.org",
+ "homepage": "https://www.nullivex.com",
+ "keywords": [
+ "array",
+ "array conversion",
+ "xml",
+ "xml conversion"
+ ],
+ "support": {
+ "issues": "https://github.com/nullivex/lib-array2xml/issues",
+ "source": "https://github.com/nullivex/lib-array2xml/tree/master"
+ },
+ "time": "2019-03-29T20:06:56+00:00"
+ },
+ {
+ "name": "phar-io/manifest",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/manifest.git",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53",
+ "reference": "97803eca37d319dfa7826cc2437fc020857acb53",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-phar": "*",
+ "ext-xmlwriter": "*",
+ "phar-io/version": "^3.0.1",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
+ "support": {
+ "issues": "https://github.com/phar-io/manifest/issues",
+ "source": "https://github.com/phar-io/manifest/tree/2.0.3"
+ },
+ "time": "2021-07-20T11:28:43+00:00"
+ },
+ {
+ "name": "phar-io/version",
+ "version": "3.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phar-io/version.git",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Heuer",
+ "email": "sebastian@phpeople.de",
+ "role": "Developer"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "Library for handling version information and constraints",
+ "support": {
+ "issues": "https://github.com/phar-io/version/issues",
+ "source": "https://github.com/phar-io/version/tree/3.2.1"
+ },
+ "time": "2022-02-21T01:04:05+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-2.x": "2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x"
+ },
+ "time": "2020-06-27T09:03:43+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "5.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
+ "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.2",
+ "phpdocumentor/type-resolver": "^1.3",
+ "webmozart/assert": "^1.9.1"
+ },
+ "require-dev": {
+ "mockery/mockery": "~1.3.2",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ },
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "account@ijaap.nl"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ },
+ "time": "2021-10-19T17:43:47+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "1.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "reference": "93ebd0014cab80c4ea9f5e297ea48672f1b87706",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "phpdocumentor/reflection-common": "^2.0"
+ },
+ "require-dev": {
+ "ext-tokenizer": "*",
+ "psalm/phar": "^4.8"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
+ "support": {
+ "issues": "https://github.com/phpDocumentor/TypeResolver/issues",
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.0"
+ },
+ "time": "2022-01-04T19:58:01+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "v1.15.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.2",
+ "php": "^7.2 || ~8.0, <8.2",
+ "phpdocumentor/reflection-docblock": "^5.2",
+ "sebastian/comparator": "^3.0 || ^4.0",
+ "sebastian/recursion-context": "^3.0 || ^4.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^6.0 || ^7.0",
+ "phpunit/phpunit": "^8.0 || ^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Prophecy\\": "src/Prophecy"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "support": {
+ "issues": "https://github.com/phpspec/prophecy/issues",
+ "source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
+ },
+ "time": "2021-12-08T12:19:24+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "9.2.11",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/665a1ac0a763c51afc30d6d130dac0813092b17f",
+ "reference": "665a1ac0a763c51afc30d6d130dac0813092b17f",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-libxml": "*",
+ "ext-xmlwriter": "*",
+ "nikic/php-parser": "^4.13.0",
+ "php": ">=7.3",
+ "phpunit/php-file-iterator": "^3.0.3",
+ "phpunit/php-text-template": "^2.0.2",
+ "sebastian/code-unit-reverse-lookup": "^2.0.2",
+ "sebastian/complexity": "^2.0",
+ "sebastian/environment": "^5.1.2",
+ "sebastian/lines-of-code": "^1.0.3",
+ "sebastian/version": "^3.0.1",
+ "theseer/tokenizer": "^1.2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcov": "*",
+ "ext-xdebug": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.2-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.11"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-18T12:46:09+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "3.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-12-02T12:48:52+00:00"
+ },
+ {
+ "name": "phpunit/php-invoker",
+ "version": "3.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-invoker.git",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "ext-pcntl": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-pcntl": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Invoke callables with a timeout",
+ "homepage": "https://github.com/sebastianbergmann/php-invoker/",
+ "keywords": [
+ "process"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-invoker/issues",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:58:55+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-text-template/issues",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T05:33:50+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "5.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/php-timer/issues",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:16:10+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "9.5.14",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "1883687169c017d6ae37c58883ca3994cfc34189"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1883687169c017d6ae37c58883ca3994cfc34189",
+ "reference": "1883687169c017d6ae37c58883ca3994cfc34189",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.3.1",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-xml": "*",
+ "ext-xmlwriter": "*",
+ "myclabs/deep-copy": "^1.10.1",
+ "phar-io/manifest": "^2.0.3",
+ "phar-io/version": "^3.0.2",
+ "php": ">=7.3",
+ "phpspec/prophecy": "^1.12.1",
+ "phpunit/php-code-coverage": "^9.2.7",
+ "phpunit/php-file-iterator": "^3.0.5",
+ "phpunit/php-invoker": "^3.1.1",
+ "phpunit/php-text-template": "^2.0.3",
+ "phpunit/php-timer": "^5.0.2",
+ "sebastian/cli-parser": "^1.0.1",
+ "sebastian/code-unit": "^1.0.6",
+ "sebastian/comparator": "^4.0.5",
+ "sebastian/diff": "^4.0.3",
+ "sebastian/environment": "^5.1.3",
+ "sebastian/exporter": "^4.0.3",
+ "sebastian/global-state": "^5.0.1",
+ "sebastian/object-enumerator": "^4.0.3",
+ "sebastian/resource-operations": "^3.0.3",
+ "sebastian/type": "^2.3.4",
+ "sebastian/version": "^3.0.2"
+ },
+ "require-dev": {
+ "ext-pdo": "*",
+ "phpspec/prophecy-phpunit": "^2.0.1"
+ },
+ "suggest": {
+ "ext-soap": "*",
+ "ext-xdebug": "*"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "9.5-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/Framework/Assert/Functions.php"
+ ],
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/phpunit/issues",
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.14"
+ },
+ "funding": [
+ {
+ "url": "https://phpunit.de/sponsors.html",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-18T12:54:07+00:00"
+ },
+ {
+ "name": "psalm/plugin-phpunit",
+ "version": "0.15.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/psalm/psalm-plugin-phpunit.git",
+ "reference": "31d15bbc0169a3c454e495e03fd8a6ccb663661b"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/31d15bbc0169a3c454e495e03fd8a6ccb663661b",
+ "reference": "31d15bbc0169a3c454e495e03fd8a6ccb663661b",
+ "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.0"
+ },
+ "conflict": {
+ "phpunit/phpunit": "<7.5"
+ },
+ "require-dev": {
+ "codeception/codeception": "^4.0.3",
+ "php": "^7.3 || ^8.0",
+ "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0",
+ "squizlabs/php_codesniffer": "^3.3.1",
+ "weirdan/codeception-psalm-module": "^0.11.0",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "type": "psalm-plugin",
+ "extra": {
+ "psalm": {
+ "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psalm\\PhpUnitPlugin\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matt Brown",
+ "email": "github@muglug.com"
+ }
+ ],
+ "description": "Psalm plugin for PHPUnit",
+ "support": {
+ "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues",
+ "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.15.2"
+ },
+ "time": "2021-05-29T19:11:38+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.1.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea",
+ "reference": "513e0666f7216c7459170d56df27dfcefe1689ea",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container/tree/1.1.2"
+ },
+ "time": "2021-11-05T16:50:12+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.1.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "support": {
+ "source": "https://github.com/php-fig/log/tree/1.1.4"
+ },
+ "time": "2021-05-03T11:20:27+00:00"
+ },
+ {
+ "name": "sebastian/cli-parser",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/cli-parser.git",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for parsing CLI options",
+ "homepage": "https://github.com/sebastianbergmann/cli-parser",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/cli-parser/issues",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:08:49+00:00"
+ },
+ {
+ "name": "sebastian/code-unit",
+ "version": "1.0.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit.git",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/code-unit",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:08:54+00:00"
+ },
+ {
+ "name": "sebastian/code-unit-reverse-lookup",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Looks up which function or method a line of code belongs to",
+ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:30:19+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "4.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382",
+ "reference": "55f4261989e546dc112258c7a75935a81a7ce382",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/diff": "^4.0",
+ "sebastian/exporter": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "https://github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/comparator/issues",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:49:45+00:00"
+ },
+ {
+ "name": "sebastian/complexity",
+ "version": "2.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/complexity.git",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88",
+ "reference": "739b35e53379900cc9ac327b2147867b8b6efd88",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.7",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for calculating the complexity of PHP code units",
+ "homepage": "https://github.com/sebastianbergmann/complexity",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/complexity/issues",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T15:52:27+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3",
+ "symfony/process": "^4.2 || ^5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff",
+ "udiff",
+ "unidiff",
+ "unified diff"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/diff/issues",
+ "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:10:38+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "5.1.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac",
+ "reference": "388b6ced16caa751030f6a69e588299fa09200ac",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-posix": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/environment/issues",
+ "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T05:52:38+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "https://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/exporter/issues",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-11-11T14:18:36+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "5.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "ext-dom": "*",
+ "phpunit/phpunit": "^9.3"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "5.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/global-state/issues",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2022-02-14T08:28:10+00:00"
+ },
+ {
+ "name": "sebastian/lines-of-code",
+ "version": "1.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/lines-of-code.git",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc",
+ "shasum": ""
+ },
+ "require": {
+ "nikic/php-parser": "^4.6",
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library for counting the lines of code in PHP source code",
+ "homepage": "https://github.com/sebastianbergmann/lines-of-code",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/lines-of-code/issues",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-11-28T06:42:11+00:00"
+ },
+ {
+ "name": "sebastian/object-enumerator",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-enumerator.git",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
+ "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3",
+ "sebastian/object-reflector": "^2.0",
+ "sebastian/recursion-context": "^4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Traverses array structures and object graphs to enumerate all referenced objects",
+ "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-enumerator/issues",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:12:34+00:00"
+ },
+ {
+ "name": "sebastian/object-reflector",
+ "version": "2.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/object-reflector.git",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Allows reflection of object attributes, including inherited and non-public ones",
+ "homepage": "https://github.com/sebastianbergmann/object-reflector/",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/object-reflector/issues",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:14:26+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "4.0.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/recursion-context/issues",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-10-26T13:17:30+00:00"
+ },
+ {
+ "name": "sebastian/resource-operations",
+ "version": "3.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/resource-operations.git",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides a list of PHP built-in functions that operate on resources",
+ "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/resource-operations/issues",
+ "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:45:17+00:00"
+ },
+ {
+ "name": "sebastian/type",
+ "version": "2.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/type.git",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "reference": "b8cd8a1c753c90bc1a0f5372170e3e489136f914",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Collection of value objects that represent the types of the PHP type system",
+ "homepage": "https://github.com/sebastianbergmann/type",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/type/issues",
+ "source": "https://github.com/sebastianbergmann/type/tree/2.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2021-06-15T12:49:02+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "3.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
+ "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "support": {
+ "issues": "https://github.com/sebastianbergmann/version/issues",
+ "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sebastianbergmann",
+ "type": "github"
+ }
+ ],
+ "time": "2020-09-28T06:39:44+00:00"
+ },
+ {
+ "name": "squizlabs/php_codesniffer",
+ "version": "3.6.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
+ "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a",
+ "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0"
+ },
+ "bin": [
+ "bin/phpcs",
+ "bin/phpcbf"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.x-dev"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Greg Sherwood",
+ "role": "lead"
+ }
+ ],
+ "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
+ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "keywords": [
+ "phpcs",
+ "standards"
+ ],
+ "support": {
+ "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues",
+ "source": "https://github.com/squizlabs/PHP_CodeSniffer",
+ "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki"
+ },
+ "time": "2021-12-12T21:44:58+00:00"
+ },
+ {
+ "name": "symfony/console",
+ "version": "v5.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/console.git",
+ "reference": "a2a86ec353d825c75856c6fd14fac416a7bdb6b8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/console/zipball/a2a86ec353d825c75856c6fd14fac416a7bdb6b8",
+ "reference": "a2a86ec353d825c75856c6fd14fac416a7bdb6b8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/deprecation-contracts": "^2.1|^3",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php73": "^1.9",
+ "symfony/polyfill-php80": "^1.16",
+ "symfony/service-contracts": "^1.1|^2|^3",
+ "symfony/string": "^5.1|^6.0"
+ },
+ "conflict": {
+ "psr/log": ">=3",
+ "symfony/dependency-injection": "<4.4",
+ "symfony/dotenv": "<5.1",
+ "symfony/event-dispatcher": "<4.4",
+ "symfony/lock": "<4.4",
+ "symfony/process": "<4.4"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0|2.0"
+ },
+ "require-dev": {
+ "psr/log": "^1|^2",
+ "symfony/config": "^4.4|^5.0|^6.0",
+ "symfony/dependency-injection": "^4.4|^5.0|^6.0",
+ "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
+ "symfony/lock": "^4.4|^5.0|^6.0",
+ "symfony/process": "^4.4|^5.0|^6.0",
+ "symfony/var-dumper": "^4.4|^5.0|^6.0"
+ },
+ "suggest": {
+ "psr/log": "For using the console logger",
+ "symfony/event-dispatcher": "",
+ "symfony/lock": "",
+ "symfony/process": ""
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Console\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Eases the creation of beautiful and testable command line interfaces",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "cli",
+ "command line",
+ "console",
+ "terminal"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/console/tree/v5.4.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-26T16:28:35+00:00"
+ },
+ {
+ "name": "symfony/deprecation-contracts",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/deprecation-contracts.git",
+ "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8",
+ "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "files": [
+ "function.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "A generic function and convention to trigger deprecation notices",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-07-12T14:48:14+00:00"
+ },
+ {
+ "name": "symfony/polyfill-ctype",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-ctype.git",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab",
+ "reference": "30885182c981ab175d4d034db0f6f469898070ab",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-ctype": "*"
+ },
+ "suggest": {
+ "ext-ctype": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Polyfill\\Ctype\\": ""
+ },
+ "files": [
+ "bootstrap.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Gert de Pagter",
+ "email": "BackEndTea@gmail.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for ctype functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "ctype",
+ "polyfill",
+ "portable"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-10-20T20:35:02+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-grapheme",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-grapheme.git",
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783",
+ "reference": "81b86b50cf841a64252b439e738e97f4a34e2783",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Grapheme\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's grapheme_* functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "grapheme",
+ "intl",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-23T21:10:46+00:00"
+ },
+ {
+ "name": "symfony/polyfill-intl-normalizer",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-intl-normalizer.git",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Intl\\Normalizer\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for intl's Normalizer class and related functions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "intl",
+ "normalizer",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-02-19T12:13:01+00:00"
+ },
+ {
+ "name": "symfony/polyfill-mbstring",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-mbstring.git",
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "provide": {
+ "ext-mbstring": "*"
+ },
+ "suggest": {
+ "ext-mbstring": "For best performance"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Mbstring\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill for the Mbstring extension",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "mbstring",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-30T18:21:41+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php73",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php73.git",
+ "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5",
+ "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php73\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php73/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-06-05T21:20:04+00:00"
+ },
+ {
+ "name": "symfony/polyfill-php80",
+ "version": "v1.24.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/polyfill-php80.git",
+ "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/57b712b08eddb97c762a8caa32c84e037892d2e9",
+ "reference": "57b712b08eddb97c762a8caa32c84e037892d2e9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.23-dev"
+ },
+ "thanks": {
+ "name": "symfony/polyfill",
+ "url": "https://github.com/symfony/polyfill"
+ }
+ },
+ "autoload": {
+ "files": [
+ "bootstrap.php"
+ ],
+ "psr-4": {
+ "Symfony\\Polyfill\\Php80\\": ""
+ },
+ "classmap": [
+ "Resources/stubs"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ion Bazan",
+ "email": "ion.bazan@gmail.com"
+ },
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "compatibility",
+ "polyfill",
+ "portable",
+ "shim"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/polyfill-php80/tree/v1.24.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-09-13T13:58:33+00:00"
+ },
+ {
+ "name": "symfony/service-contracts",
+ "version": "v2.5.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc",
+ "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "psr/container": "^1.1",
+ "symfony/deprecation-contracts": "^2.1"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
+ },
+ "suggest": {
+ "symfony/service-implementation": ""
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "2.5-dev"
+ },
+ "thanks": {
+ "name": "symfony/contracts",
+ "url": "https://github.com/symfony/contracts"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Contracts\\Service\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Generic abstractions related to writing services",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/service-contracts/tree/v2.5.0"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-11-04T16:48:04+00:00"
+ },
+ {
+ "name": "symfony/string",
+ "version": "v5.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/string.git",
+ "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10",
+ "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.2.5",
+ "symfony/polyfill-ctype": "~1.8",
+ "symfony/polyfill-intl-grapheme": "~1.0",
+ "symfony/polyfill-intl-normalizer": "~1.0",
+ "symfony/polyfill-mbstring": "~1.0",
+ "symfony/polyfill-php80": "~1.15"
+ },
+ "conflict": {
+ "symfony/translation-contracts": ">=3.0"
+ },
+ "require-dev": {
+ "symfony/error-handler": "^4.4|^5.0|^6.0",
+ "symfony/http-client": "^4.4|^5.0|^6.0",
+ "symfony/translation-contracts": "^1.1|^2",
+ "symfony/var-exporter": "^4.4|^5.0|^6.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\String\\": ""
+ },
+ "files": [
+ "Resources/functions.php"
+ ],
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way",
+ "homepage": "https://symfony.com",
+ "keywords": [
+ "grapheme",
+ "i18n",
+ "string",
+ "unicode",
+ "utf-8",
+ "utf8"
+ ],
+ "support": {
+ "source": "https://github.com/symfony/string/tree/v5.4.3"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2022-01-02T09:53:40+00:00"
+ },
+ {
+ "name": "theseer/tokenizer",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/theseer/tokenizer.git",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-tokenizer": "*",
+ "ext-xmlwriter": "*",
+ "php": "^7.2 || ^8.0"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Arne Blankerts",
+ "email": "arne@blankerts.de",
+ "role": "Developer"
+ }
+ ],
+ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
+ "support": {
+ "issues": "https://github.com/theseer/tokenizer/issues",
+ "source": "https://github.com/theseer/tokenizer/tree/1.2.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/theseer",
+ "type": "github"
+ }
+ ],
+ "time": "2021-07-28T10:34:58+00:00"
+ },
+ {
+ "name": "vimeo/psalm",
+ "version": "4.21.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/vimeo/psalm.git",
+ "reference": "d8bec4c7aaee111a532daec32fb09de5687053d1"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/d8bec4c7aaee111a532daec32fb09de5687053d1",
+ "reference": "d8bec4c7aaee111a532daec32fb09de5687053d1",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^2.4.2",
+ "amphp/byte-stream": "^1.5",
+ "composer/package-versions-deprecated": "^1.8.0",
+ "composer/semver": "^1.4 || ^2.0 || ^3.0",
+ "composer/xdebug-handler": "^1.1 || ^2.0 || ^3.0",
+ "dnoegel/php-xdg-base-dir": "^0.1.1",
+ "ext-ctype": "*",
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-libxml": "*",
+ "ext-mbstring": "*",
+ "ext-simplexml": "*",
+ "ext-tokenizer": "*",
+ "felixfbecker/advanced-json-rpc": "^3.0.3",
+ "felixfbecker/language-server-protocol": "^1.5",
+ "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
+ "nikic/php-parser": "^4.13",
+ "openlss/lib-array2xml": "^1.0",
+ "php": "^7.1|^8",
+ "sebastian/diff": "^3.0 || ^4.0",
+ "symfony/console": "^3.4.17 || ^4.1.6 || ^5.0 || ^6.0",
+ "webmozart/path-util": "^2.3"
+ },
+ "provide": {
+ "psalm/psalm": "self.version"
+ },
+ "require-dev": {
+ "bamarni/composer-bin-plugin": "^1.2",
+ "brianium/paratest": "^4.0||^6.0",
+ "ext-curl": "*",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpdocumentor/reflection-docblock": "^5",
+ "phpmyadmin/sql-parser": "5.1.0||dev-master",
+ "phpspec/prophecy": ">=1.9.0",
+ "phpunit/phpunit": "^9.0",
+ "psalm/plugin-phpunit": "^0.16",
+ "slevomat/coding-standard": "^7.0",
+ "squizlabs/php_codesniffer": "^3.5",
+ "symfony/process": "^4.3 || ^5.0 || ^6.0",
+ "weirdan/prophecy-shim": "^1.0 || ^2.0"
+ },
+ "suggest": {
+ "ext-curl": "In order to send data to shepherd",
+ "ext-igbinary": "^2.0.5 is required, used to serialize caching data"
+ },
+ "bin": [
+ "psalm",
+ "psalm-language-server",
+ "psalm-plugin",
+ "psalm-refactor",
+ "psalter"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.x-dev",
+ "dev-3.x": "3.x-dev",
+ "dev-2.x": "2.x-dev",
+ "dev-1.x": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "files": [
+ "src/functions.php",
+ "src/spl_object_id.php"
+ ],
+ "psr-4": {
+ "Psalm\\": "src/Psalm/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Matthew Brown"
+ }
+ ],
+ "description": "A static analysis tool for finding errors in PHP applications",
+ "keywords": [
+ "code",
+ "inspection",
+ "php"
+ ],
+ "support": {
+ "issues": "https://github.com/vimeo/psalm/issues",
+ "source": "https://github.com/vimeo/psalm/tree/4.21.0"
+ },
+ "time": "2022-02-18T04:34:15+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.10.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozarts/assert.git",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^7.2 || ^8.0",
+ "symfony/polyfill-ctype": "^1.8"
+ },
+ "conflict": {
+ "phpstan/phpstan": "<0.12.20",
+ "vimeo/psalm": "<4.6.1 || 4.6.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^8.5.13"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.10-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "support": {
+ "issues": "https://github.com/webmozarts/assert/issues",
+ "source": "https://github.com/webmozarts/assert/tree/1.10.0"
+ },
+ "time": "2021-03-09T10:59:23+00:00"
+ },
+ {
+ "name": "webmozart/path-util",
+ "version": "2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/path-util.git",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "webmozart/assert": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\PathUtil\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.",
+ "support": {
+ "issues": "https://github.com/webmozart/path-util/issues",
+ "source": "https://github.com/webmozart/path-util/tree/2.3.0"
+ },
+ "abandoned": "symfony/filesystem",
+ "time": "2015-12-17T08:42:14+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "php": ">=7.4, <8.2"
+ },
+ "platform-dev": [],
+ "platform-overrides": {
+ "php": "7.4.99"
+ },
+ "plugin-api-version": "2.2.0"
+}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<files psalm-version="4.21.0@d8bec4c7aaee111a532daec32fb09de5687053d1">
+ <file src="config/replacements.php">
+ <DuplicateArrayKey occurrences="3">
+ <code>'ZendAcl' => 'LaminasAcl'</code>
+ <code>'ZendRbac' => 'LaminasRbac'</code>
+ <code>'ZendRouter' => 'LaminasRouter'</code>
+ </DuplicateArrayKey>
+ </file>
+ <file src="src/Autoloader.php">
+ <MixedArgumentTypeCoercion occurrences="2"/>
+ </file>
+ <file src="src/ConfigPostProcessor.php">
+ <InvalidArgument occurrences="1">
+ <code>$keys</code>
+ </InvalidArgument>
+ <MissingClosureParamType occurrences="4">
+ <code>$value</code>
+ <code>$value</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MissingClosureParamType>
+ <MissingClosureReturnType occurrences="4">
+ <code>function ($value) {</code>
+ <code>function ($value) {</code>
+ <code>function ($value, array $keys) {</code>
+ <code>function ($value, array $keys) {</code>
+ </MissingClosureReturnType>
+ <MissingReturnType occurrences="3">
+ <code>replaceDependencyConfiguration</code>
+ <code>replaceDependencyFactories</code>
+ <code>replaceDependencyServices</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="5">
+ <code>$config</code>
+ <code>$newKey</code>
+ <code>$newKey</code>
+ <code>$newKey</code>
+ <code>$target</code>
+ </MixedArgument>
+ <MixedArgumentTypeCoercion occurrences="1">
+ <code>[$key]</code>
+ </MixedArgumentTypeCoercion>
+ <MixedArrayAssignment occurrences="4">
+ <code>$config[$key]</code>
+ <code>$config['aliases'][$alias]</code>
+ <code>$config['aliases'][$service]</code>
+ <code>$config['aliases'][$service]</code>
+ </MixedArrayAssignment>
+ <MixedArrayOffset occurrences="7">
+ <code>$aliases[$name]</code>
+ <code>$config[$key]</code>
+ <code>$keys[$key]</code>
+ <code>$rewritten[$newKey]</code>
+ <code>$rewritten[$newKey]</code>
+ <code>$rewritten[$newKey]</code>
+ <code>$this->exactReplacements[$value]</code>
+ </MixedArrayOffset>
+ <MixedArrayTypeCoercion occurrences="1">
+ <code>$aliases[$name]</code>
+ </MixedArrayTypeCoercion>
+ <MixedAssignment occurrences="25">
+ <code>$a[$key]</code>
+ <code>$a[$key]</code>
+ <code>$a[]</code>
+ <code>$config</code>
+ <code>$config</code>
+ <code>$config[$key]</code>
+ <code>$config['factories'][$replacedService]</code>
+ <code>$config['services'][$replacedService]</code>
+ <code>$data</code>
+ <code>$factory</code>
+ <code>$factory</code>
+ <code>$key</code>
+ <code>$key</code>
+ <code>$name</code>
+ <code>$newKey</code>
+ <code>$notIn[]</code>
+ <code>$result</code>
+ <code>$rewritten[$key]</code>
+ <code>$rewritten[$newKey]</code>
+ <code>$rewritten[$newKey][]</code>
+ <code>$serviceInstance</code>
+ <code>$serviceInstance</code>
+ <code>$target</code>
+ <code>$value</code>
+ <code>$value</code>
+ </MixedAssignment>
+ </file>
+ <file src="src/Module.php">
+ <MissingReturnType occurrences="2">
+ <code>init</code>
+ <code>onMergeConfig</code>
+ </MissingReturnType>
+ <UndefinedDocblockClass occurrences="2">
+ <code>ModuleEvent</code>
+ <code>ModuleManager</code>
+ </UndefinedDocblockClass>
+ </file>
+ <file src="src/Replacements.php">
+ <MixedArgument occurrences="2">
+ <code>$replacement</code>
+ <code>$replacement</code>
+ </MixedArgument>
+ <MixedArgumentTypeCoercion occurrences="3">
+ <code>$original</code>
+ <code>$original</code>
+ <code>$original</code>
+ </MixedArgumentTypeCoercion>
+ <MixedAssignment occurrences="1">
+ <code>$replacement</code>
+ </MixedAssignment>
+ <MixedPropertyTypeCoercion occurrences="3">
+ <code>$this->replacements</code>
+ <code>$this->replacements</code>
+ </MixedPropertyTypeCoercion>
+ </file>
+ <file src="test/AutoloaderTest.php">
+ <InvalidStringClass occurrences="1">
+ <code>new $legacy()</code>
+ </InvalidStringClass>
+ <MissingReturnType occurrences="3">
+ <code>testLegacyClassIsAliasToLaminas</code>
+ <code>testReverseAliasCreated</code>
+ <code>testTypeHint</code>
+ </MissingReturnType>
+ <PossiblyInvalidArgument occurrences="1">
+ <code>testLegacyClassIsAliasToLaminas</code>
+ </PossiblyInvalidArgument>
+ </file>
+ <file src="test/ConfigPostProcessorTest.php">
+ <MissingReturnType occurrences="4">
+ <code>invalidServiceManagerConfiguration</code>
+ <code>testRewritesNestedKeys</code>
+ <code>testServiceManagerServiceInstancesCanBeHandled</code>
+ <code>testWillSkipInvalidConfigurations</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="1">
+ <code>$config</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="2">
+ <code>$config</code>
+ <code>$expected</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="1">
+ <code>iterable</code>
+ </MixedInferredReturnType>
+ <UnresolvableInclude occurrences="2">
+ <code>require $configLocation</code>
+ <code>require $expectedResultLocation</code>
+ </UnresolvableInclude>
+ </file>
+ <file src="test/ModuleTest.php">
+ <InvalidArgument occurrences="2">
+ <code>$event</code>
+ <code>$moduleManager</code>
+ </InvalidArgument>
+ <MissingReturnType occurrences="2">
+ <code>testInitRegistersListenerWithEventManager</code>
+ <code>testOnMergeConfigProcessesAndReplacesConfigurationPulledFromListener</code>
+ </MissingReturnType>
+ <MixedArgument occurrences="1">
+ <code>$config</code>
+ </MixedArgument>
+ <MixedAssignment occurrences="2">
+ <code>$config</code>
+ <code>$expected</code>
+ </MixedAssignment>
+ <MixedInferredReturnType occurrences="1">
+ <code>iterable</code>
+ </MixedInferredReturnType>
+ <UnresolvableInclude occurrences="2">
+ <code>require $configFile</code>
+ <code>require $expectationsFile</code>
+ </UnresolvableInclude>
+ </file>
+ <file src="test/ReplacementsTest.php">
+ <MissingReturnType occurrences="1">
+ <code>testEdgeCases</code>
+ </MissingReturnType>
+ <MixedInferredReturnType occurrences="1">
+ <code>iterable</code>
+ </MixedInferredReturnType>
+ </file>
+</files>
--- /dev/null
+<?xml version="1.0"?>
+<psalm
+ errorLevel="1"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns="https://getpsalm.org/schema/config"
+ xsi:schemaLocation="https://getpsalm.org/schema/config vendor/vimeo/psalm/config.xsd"
+ errorBaseline="psalm-baseline.xml"
+>
+ <projectFiles>
+ <directory name="src"/>
+ <directory name="test"/>
+ <ignoreFiles>
+ <directory name="test/TestAsset"/>
+ <directory name="vendor"/>
+ </ignoreFiles>
+ </projectFiles>
+
+ <issueHandlers>
+ <InternalMethod>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::method"/>
+ </errorLevel>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::willReturn"/>
+ </errorLevel>
+ <errorLevel type="suppress">
+ <referencedMethod name="PHPUnit\Framework\MockObject\Builder\InvocationMocker::with"/>
+ </errorLevel>
+ </InternalMethod>
+ </issueHandlers>
+ <plugins>
+ <pluginClass class="Psalm\PhpUnitPlugin\Plugin"/>
+ </plugins>
+</psalm>
<?php
-/**
- * @see https://github.com/laminas/laminas-zendframework-bridge for the canonical source repository
- * @copyright https://github.com/laminas/laminas-zendframework-bridge/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-zendframework-bridge/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ZendFrameworkBridge;
use ArrayObject;
use function class_exists;
use function explode;
use function file_exists;
+use function getenv;
use function interface_exists;
use function spl_autoload_register;
use function strlen;
*/
class Autoloader
{
+ private const UPSTREAM_COMPOSER_VENDOR_DIRECTORY = __DIR__ . '/../../..';
+ private const LOCAL_COMPOSER_VENDOR_DIRECTORY = __DIR__ . '/../vendor';
+
/**
* Attach autoloaders for managing legacy ZF artifacts.
*
*
* - The second is _appended_ in order to create aliases for legacy
* classes.
+ * @return void
*/
public static function load()
{
$loaded = new ArrayObject([]);
+ $classLoader = self::getClassLoader();
+
+ if ($classLoader === null) {
+ return;
+ }
spl_autoload_register(self::createPrependAutoloader(
RewriteRules::namespaceReverse(),
- self::getClassLoader(),
+ $classLoader,
$loaded
), true, true);
));
}
- /**
- * @return ClassLoader
- * @throws RuntimeException
- */
- private static function getClassLoader()
+ private static function getClassLoader(): ?ClassLoader
{
- if (getenv('COMPOSER_VENDOR_DIR') && file_exists(getenv('COMPOSER_VENDOR_DIR') . '/autoload.php')) {
- return include getenv('COMPOSER_VENDOR_DIR') . '/autoload.php';
- }
-
- if (file_exists(__DIR__ . '/../../../autoload.php')) {
- return include __DIR__ . '/../../../autoload.php';
+ $composerVendorDirectory = getenv('COMPOSER_VENDOR_DIR');
+ if (is_string($composerVendorDirectory)) {
+ return self::getClassLoaderFromVendorDirectory($composerVendorDirectory);
}
- if (file_exists(__DIR__ . '/../vendor/autoload.php')) {
- return include __DIR__ . '/../vendor/autoload.php';
- }
-
- throw new RuntimeException('Cannot detect composer autoload. Please run composer install');
+ return self::getClassLoaderFromVendorDirectory(self::UPSTREAM_COMPOSER_VENDOR_DIRECTORY)
+ ?? self::getClassLoaderFromVendorDirectory(self::LOCAL_COMPOSER_VENDOR_DIRECTORY);
}
/**
- * @return callable
+ * @param array<string,string> $namespaces
+ * @return callable(string): void
*/
private static function createPrependAutoloader(array $namespaces, ClassLoader $classLoader, ArrayObject $loaded)
{
/**
- * @param string $class Class name to autoload
+ * @param string $class Class name to autoload
* @return void
*/
- return static function ($class) use ($namespaces, $classLoader, $loaded) {
+ return static function ($class) use ($namespaces, $classLoader, $loaded): void {
if (isset($loaded[$class])) {
return;
}
}
/**
- * @return callable
+ * @param array<string,string> $namespaces
+ * @return callable(string): void
*/
private static function createAppendAutoloader(array $namespaces, ArrayObject $loaded)
{
if ($segments[0] === 'ZendService' && isset($segments[1])) {
$segments[0] .= '\\' . $segments[1];
unset($segments[1]);
+ /** @psalm-suppress RedundantFunctionCall */
$segments = array_values($segments);
}
}
};
}
+
+ private static function getClassLoaderFromVendorDirectory(string $composerVendorDirectory): ?ClassLoader
+ {
+ $filename = rtrim($composerVendorDirectory, '/') . '/autoload.php';
+ if (!file_exists($filename)) {
+ return null;
+ }
+
+ /** @psalm-suppress MixedAssignment */
+ $loader = include $filename;
+ if (!$loader instanceof ClassLoader) {
+ return null;
+ }
+
+ return $loader;
+ }
}
<?php
-/**
- * @see https://github.com/laminas/laminas-zendframework-bridge for the canonical source repository
- * @copyright https://github.com/laminas/laminas-zendframework-bridge/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-zendframework-bridge/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ZendFrameworkBridge;
use function array_intersect_key;
use function array_key_exists;
use function array_pop;
-use function array_push;
-use function count;
use function in_array;
use function is_array;
use function is_callable;
function ($value, array $keys) {
$key = array_pop($keys);
// Only worried about a top-level "router" key.
- return $key === 'router' && count($keys) === 0 && is_array($value)
+ return $key === 'router' && $keys === [] && is_array($value)
? [$this, 'noopReplacement']
: null;
},
// Array values
function ($value, array $keys) {
- return 0 !== count($keys) && is_array($value)
+ return $keys !== [] && is_array($value)
? [$this, '__invoke']
: null;
},
{
// Add new key to the list of keys.
// We do not need to remove it later, as we are working on a copy of the array.
- array_push($keys, $key);
+ $keys[] = $key;
// Identify rewrite strategy and perform replacements
$rewriteRule = $this->replacementRuleMatch($value, $keys);
<?php
-/**
- * @see https://github.com/laminas/laminas-zendframework-bridge for the canonical source repository
- * @copyright https://github.com/laminas/laminas-zendframework-bridge/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-zendframework-bridge/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ZendFrameworkBridge;
use Laminas\ModuleManager\Listener\ConfigMergerInterface;
<?php
-/**
- * @see https://github.com/laminas/laminas-zendframework-bridge for the canonical source repository
- * @copyright https://github.com/laminas/laminas-zendframework-bridge/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-zendframework-bridge/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ZendFrameworkBridge;
use function array_merge;
<?php
-/**
- * @see https://github.com/laminas/laminas-zendframework-bridge for the canonical source repository
- * @copyright https://github.com/laminas/laminas-zendframework-bridge/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-zendframework-bridge/blob/master/LICENSE.md New BSD License
- */
-
namespace Laminas\ZendFrameworkBridge;
class RewriteRules
<?php
-/**
- * @see https://github.com/laminas/laminas-zendframework-bridge for the canonical source repository
- * @copyright https://github.com/laminas/laminas-zendframework-bridge/blob/master/COPYRIGHT.md
- * @license https://github.com/laminas/laminas-zendframework-bridge/blob/master/LICENSE.md New BSD License
- */
-
Laminas\ZendFrameworkBridge\Autoloader::load();
class CssSelectorConverter
{
private $translator;
- private $cache;
+ private array $cache;
- private static $xmlCache = [];
- private static $htmlCache = [];
+ private static array $xmlCache = [];
+ private static array $htmlCache = [];
/**
* @param bool $html Whether HTML support should be enabled. Disable it for XML documents
*
* Optionally, a prefix can be added to the resulting XPath
* expression with the $prefix parameter.
- *
- * @return string
*/
- public function toXPath(string $cssExpr, string $prefix = 'descendant-or-self::')
+ public function toXPath(string $cssExpr, string $prefix = 'descendant-or-self::'): string
{
return $this->cache[$prefix][$cssExpr] ?? $this->cache[$prefix][$cssExpr] = $this->translator->cssToXPath($cssExpr, $prefix);
}
*/
class SyntaxErrorException extends ParseException
{
- /**
- * @return self
- */
- public static function unexpectedToken(string $expectedValue, Token $foundToken)
+ public static function unexpectedToken(string $expectedValue, Token $foundToken): self
{
return new self(sprintf('Expected %s, but %s found.', $expectedValue, $foundToken));
}
- /**
- * @return self
- */
- public static function pseudoElementFound(string $pseudoElement, string $unexpectedLocation)
+ public static function pseudoElementFound(string $pseudoElement, string $unexpectedLocation): self
{
return new self(sprintf('Unexpected pseudo-element "::%s" found %s.', $pseudoElement, $unexpectedLocation));
}
- /**
- * @return self
- */
- public static function unclosedString(int $position)
+ public static function unclosedString(int $position): self
{
return new self(sprintf('Unclosed/invalid string at %s.', $position));
}
- /**
- * @return self
- */
- public static function nestedNot()
+ public static function nestedNot(): self
{
return new self('Got nested ::not().');
}
- /**
- * @return self
- */
- public static function stringAsFunctionArgument()
+ public static function stringAsFunctionArgument(): self
{
return new self('String not allowed as function argument.');
}
*/
abstract class AbstractNode implements NodeInterface
{
- /**
- * @var string
- */
- private $nodeName;
+ private string $nodeName;
public function getNodeName(): string
{
- if (null === $this->nodeName) {
- $this->nodeName = preg_replace('~.*\\\\([^\\\\]+)Node$~', '$1', static::class);
- }
-
- return $this->nodeName;
+ return $this->nodeName ??= preg_replace('~.*\\\\([^\\\\]+)Node$~', '$1', static::class);
}
}
class AttributeNode extends AbstractNode
{
private $selector;
- private $namespace;
- private $attribute;
- private $operator;
- private $value;
+ private ?string $namespace;
+ private string $attribute;
+ private string $operator;
+ private ?string $value;
public function __construct(NodeInterface $selector, ?string $namespace, string $attribute, string $operator, ?string $value)
{
class ClassNode extends AbstractNode
{
private $selector;
- private $name;
+ private string $name;
public function __construct(NodeInterface $selector, string $name)
{
class CombinedSelectorNode extends AbstractNode
{
private $selector;
- private $combinator;
+ private string $combinator;
private $subSelector;
public function __construct(NodeInterface $selector, string $combinator, NodeInterface $subSelector)
*/
class ElementNode extends AbstractNode
{
- private $namespace;
- private $element;
+ private ?string $namespace;
+ private ?string $element;
public function __construct(string $namespace = null, string $element = null)
{
class FunctionNode extends AbstractNode
{
private $selector;
- private $name;
- private $arguments;
+ private string $name;
+ private array $arguments;
/**
* @param Token[] $arguments
class HashNode extends AbstractNode
{
private $selector;
- private $id;
+ private string $id;
public function __construct(NodeInterface $selector, string $id)
{
class PseudoNode extends AbstractNode
{
private $selector;
- private $identifier;
+ private string $identifier;
public function __construct(NodeInterface $selector, string $identifier)
{
class SelectorNode extends AbstractNode
{
private $tree;
- private $pseudoElement;
+ private ?string $pseudoElement;
public function __construct(NodeInterface $tree, string $pseudoElement = null)
{
public const B_FACTOR = 10;
public const C_FACTOR = 1;
- private $a;
- private $b;
- private $c;
+ private int $a;
+ private int $b;
+ private int $c;
public function __construct(int $a, int $b, int $c)
{
*/
class Reader
{
- private $source;
- private $length;
- private $position = 0;
+ private string $source;
+ private int $length;
+ private int $position = 0;
public function __construct(string $source)
{
return false === $position ? false : $position - $this->position;
}
- /**
- * @return array|false
- */
- public function findPattern(string $pattern)
+ public function findPattern(string $pattern): array|false
{
$source = substr($this->source, $this->position);
public const TYPE_NUMBER = 'number';
public const TYPE_STRING = 'string';
- private $type;
- private $value;
- private $position;
+ private ?string $type;
+ private ?string $value;
+ private ?int $position;
public function __construct(?string $type, ?string $value, ?int $position)
{
/**
* @var Token[]
*/
- private $tokens = [];
+ private array $tokens = [];
/**
* @var Token[]
*/
- private $used = [];
+ private array $used = [];
- /**
- * @var int
- */
- private $cursor = 0;
-
- /**
- * @var Token|null
- */
+ private int $cursor = 0;
private $peeked;
-
- /**
- * @var bool
- */
- private $peeking = false;
+ private bool $peeking = false;
/**
* Pushes a token.
*
* @return $this
*/
- public function push(Token $token): self
+ public function push(Token $token): static
{
$this->tokens[] = $token;
*
* @return $this
*/
- public function freeze(): self
+ public function freeze(): static
{
return $this;
}
/**
* @var Handler\HandlerInterface[]
*/
- private $handlers;
+ private array $handlers;
public function __construct()
{
*/
class TokenizerPatterns
{
- private $unicodeEscapePattern;
- private $simpleEscapePattern;
- private $newLineEscapePattern;
- private $escapePattern;
- private $stringEscapePattern;
- private $nonAsciiPattern;
- private $nmCharPattern;
- private $nmStartPattern;
- private $identifierPattern;
- private $hashPattern;
- private $numberPattern;
- private $quotedStringPattern;
+ private string $unicodeEscapePattern;
+ private string $simpleEscapePattern;
+ private string $newLineEscapePattern;
+ private string $escapePattern;
+ private string $stringEscapePattern;
+ private string $nonAsciiPattern;
+ private string $nmCharPattern;
+ private string $nmStartPattern;
+ private string $identifierPattern;
+ private string $hashPattern;
+ private string $numberPattern;
+ private string $quotedStringPattern;
public function __construct()
{
public const ATTRIBUTE_NAME_IN_LOWER_CASE = 2;
public const ATTRIBUTE_VALUE_IN_LOWER_CASE = 4;
- private $flags;
+ private int $flags;
public function __construct(int $flags = 0)
{
/**
* @return $this
*/
- public function setFlag(int $flag, bool $on): self
+ public function setFlag(int $flag, bool $on): static
{
if ($on && !$this->hasFlag($flag)) {
$this->flags += $flag;
/**
* @var ParserInterface[]
*/
- private $shortcutParsers = [];
+ private array $shortcutParsers = [];
/**
* @var Extension\ExtensionInterface[]
*/
- private $extensions = [];
+ private array $extensions = [];
- private $nodeTranslators = [];
- private $combinationTranslators = [];
- private $functionTranslators = [];
- private $pseudoClassTranslators = [];
- private $attributeMatchingTranslators = [];
+ private array $nodeTranslators = [];
+ private array $combinationTranslators = [];
+ private array $functionTranslators = [];
+ private array $pseudoClassTranslators = [];
+ private array $attributeMatchingTranslators = [];
public function __construct(ParserInterface $parser = null)
{
/**
* @return $this
*/
- public function registerExtension(Extension\ExtensionInterface $extension): self
+ public function registerExtension(Extension\ExtensionInterface $extension): static
{
$this->extensions[$extension->getName()] = $extension;
/**
* @return $this
*/
- public function registerParserShortcut(ParserInterface $shortcut): self
+ public function registerParserShortcut(ParserInterface $shortcut): static
{
$this->shortcutParsers[] = $shortcut;
*/
class XPathExpr
{
- private $path;
- private $element;
- private $condition;
+ private string $path;
+ private string $element;
+ private string $condition;
public function __construct(string $path = '', string $element = '*', string $condition = '', bool $starPrefix = false)
{
/**
* @return $this
*/
- public function addCondition(string $condition): self
+ public function addCondition(string $condition): static
{
$this->condition = $this->condition ? sprintf('(%s) and (%s)', $this->condition, $condition) : $condition;
/**
* @return $this
*/
- public function addNameTest(): self
+ public function addNameTest(): static
{
if ('*' !== $this->element) {
$this->addCondition('name() = '.Translator::getXpathLiteral($this->element));
/**
* @return $this
*/
- public function addStarPrefix(): self
+ public function addStarPrefix(): static
{
$this->path .= '*/';
*
* @return $this
*/
- public function join(string $combiner, self $expr): self
+ public function join(string $combiner, self $expr): static
{
$path = $this->__toString().$combiner;
}
],
"require": {
- "php": ">=7.2.5",
- "symfony/polyfill-php80": "^1.16"
+ "php": ">=8.0.2"
},
"autoload": {
"psr-4": { "Symfony\\Component\\CssSelector\\": "" },
}
],
"require": {
- "php": ">=7.1"
+ "php": ">=8.0.2"
},
"autoload": {
"files": [
"minimum-stability": "dev",
"extra": {
"branch-alias": {
- "dev-main": "2.5-dev"
+ "dev-main": "3.0-dev"
},
"thanks": {
"name": "symfony/contracts",
*
* @author Nicolas Grekas <p@tchwork.com>
*/
- function trigger_deprecation(string $package, string $version, string $message, ...$args): void
+ function trigger_deprecation(string $package, string $version, string $message, mixed ...$args): void
{
@trigger_error(($package || $version ? "Since $package $version: " : '').($args ? vsprintf($message, $args) : $message), \E_USER_DEPRECATED);
}