From 4b25d84b44010701adb3232a3178236f1f10c048 Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Thu, 10 Dec 2020 23:12:48 +0100 Subject: [PATCH 01/15] psalm integration Signed-off-by: Witold Wasiczko --- composer.json | 7 +- composer.lock | 3519 +++++++++++++++++++++++++++++++++++------------- psalm.xml.dist | 33 + 3 files changed, 2600 insertions(+), 959 deletions(-) create mode 100644 psalm.xml.dist diff --git a/composer.json b/composer.json index f6f476aa..313ba944 100644 --- a/composer.json +++ b/composer.json @@ -42,7 +42,9 @@ "laminas/laminas-coding-standard": "~1.0.0", "php-http/psr7-integration-tests": "^1.1", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.1" + "phpunit/phpunit": "^9.1", + "psalm/plugin-phpunit": "^0.14.0", + "vimeo/psalm": "^4.3" }, "provide": { "psr/http-factory-implementation": "1.0", @@ -87,7 +89,8 @@ "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-diactoros": "^2.2.1" diff --git a/composer.lock b/composer.lock index 5d17f304..52282848 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "f41fa03ce75b20ed6f3490e77f0d7c29", + "content-hash": "c2bdcdc067ad6faa9fd0dfc5a71b9be6", "packages": [ { "name": "laminas/laminas-zendframework-bridge", @@ -179,36 +179,45 @@ ], "packages-dev": [ { - "name": "doctrine/instantiator", - "version": "1.4.0", + "name": "amphp/amp", + "version": "v2.5.2", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "url": "https://github.com/amphp/amp.git", + "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/amphp/amp/zipball/efca2b32a7580087adb8aabbff6be1dc1bb924a9", + "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": ">=7" }, "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" + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "ext-json": "*", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^6.0.9 | ^7", + "psalm/phar": "^3.11@dev", + "react/promise": "^2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + } + }, "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } + "Amp\\": "lib" + }, + "files": [ + "lib/functions.php", + "lib/Internal/functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -216,61 +225,87 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" + "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 small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "http://amphp.org/amp", "keywords": [ - "constructor", - "instantiate" + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" ], "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.0" + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v2.5.2" }, "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" + "url": "https://github.com/amphp", + "type": "github" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2021-01-10T17:06:37+00:00" }, { - "name": "http-interop/http-factory-tests", - "version": "0.8.0", + "name": "amphp/byte-stream", + "version": "v1.8.1", "source": { "type": "git", - "url": "https://github.com/http-interop/http-factory-tests.git", - "reference": "7384d93cd4841647b16b3c9bfd56c0367a40fce1" + "url": "https://github.com/amphp/byte-stream.git", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-factory-tests/zipball/7384d93cd4841647b16b3c9bfd56c0367a40fce1", - "reference": "7384d93cd4841647b16b3c9bfd56c0367a40fce1", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", + "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0", - "psr/http-factory": "^1.0" + "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": { - "Interop\\Http\\Factory\\": "test/" - } + "Amp\\ByteStream\\": "lib" + }, + "files": [ + "lib/functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -278,223 +313,865 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" } ], - "description": "Unit tests for HTTP factories", + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "http://amphp.org/byte-stream", "keywords": [ - "factory", - "http", - "psr-17", - "psr-7", - "test" + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" ], "support": { - "issues": "https://github.com/http-interop/http-factory-tests/issues", - "source": "https://github.com/http-interop/http-factory-tests/tree/0.8.0" + "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" }, - "time": "2020-11-02T14:43:36+00:00" + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2021-03-30T17:13:30+00:00" }, { - "name": "laminas/laminas-coding-standard", - "version": "1.0.0", + "name": "composer/package-versions-deprecated", + "version": "1.11.99.1", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-coding-standard.git", - "reference": "08880ce2fbfe62d471cd3cb766a91da630b32539" + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/08880ce2fbfe62d471cd3cb766a91da630b32539", - "reference": "08880ce2fbfe62d471cd3cb766a91da630b32539", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7413f0b55a051e89485c5cb9f765fe24bb02a7b6", + "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6", "shasum": "" }, "require": { - "laminas/laminas-zendframework-bridge": "^1.0", - "squizlabs/php_codesniffer": "^2.7" + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" }, "replace": { - "zendframework/zend-coding-standard": "self.version" + "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" + } }, - "type": "library", "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "description": "Laminas coding standard", - "homepage": "https://laminas.dev", - "keywords": [ - "Coding Standard", - "laminas" + "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": { - "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" + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.1" }, - "time": "2019-12-31T16:28:26+00:00" + "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": "2020-11-11T10:22:58+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.10.2", + "name": "composer/semver", + "version": "3.2.4", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "url": "https://github.com/composer/semver.git", + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/composer/semver/zipball/a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" - }, - "replace": { - "myclabs/deep-copy": "self.version" + "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "phpstan/phpstan": "^0.12.54", + "symfony/phpunit-bridge": "^4.2 || ^5" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, "autoload": { "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - }, - "files": [ - "src/DeepCopy/deep_copy.php" - ] + "Composer\\Semver\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Create deep copies (clones) of your objects", + "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": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" + "semantic", + "semver", + "validation", + "versioning" ], "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.2.4" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "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": "2020-11-13T09:40:50+00:00" + "time": "2020-11-13T08:59:24+00:00" }, { - "name": "nikic/php-parser", - "version": "v4.10.4", + "name": "composer/xdebug-handler", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", + "reference": "964adcdd3a28bf9ed5d9ac6450064e0d71ed7496", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=7.0" + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" }, "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" }, - "bin": [ - "bin/php-parse" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" + "Composer\\XdebugHandler\\": "src" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" } ], - "description": "A PHP parser written in PHP", + "description": "Restarts a process without Xdebug.", "keywords": [ - "parser", - "php" + "Xdebug", + "performance" ], "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4" + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/2.0.1" }, - "time": "2020-12-20T10:01:03+00:00" + "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-05T19:37:51+00:00" }, { - "name": "phar-io/manifest", - "version": "2.0.1", + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", "source": { "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" + "php": ">=5.3.2" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } + "require-dev": { + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" }, + "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "XdgBaseDir\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { + "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.0", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "06f0b06043c7438959dbdeed8bb3f699a19be22e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/06f0b06043c7438959dbdeed8bb3f699a19be22e", + "reference": "06f0b06043c7438959dbdeed8bb3f699a19be22e", + "shasum": "" + }, + "require": { + "netresearch/jsonmapper": "^1.0 || ^2.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.0" + }, + "time": "2021-01-10T17:48:47+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": "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": "netresearch/jsonmapper", + "version": "v2.1.0", + "source": { + "type": "git", + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "e0f1e33a71587aca81be5cffbb9746510e1fe04e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/e0f1e33a71587aca81be5cffbb9746510e1fe04e", + "reference": "e0f1e33a71587aca81be5cffbb9746510e1fe04e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-spl": "*", + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.35 || ~5.7 || ~6.4 || ~7.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/master" + }, + "time": "2020-04-16T18:48:43+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v4.10.5", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "4432ba399e47c66624bc73c8c0f811e5c109576f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4432ba399e47c66624bc73c8c0f811e5c109576f", + "reference": "4432ba399e47c66624bc73c8c0f811e5c109576f", + "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.5" + }, + "time": "2021-05-03T19:11:20+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.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.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" @@ -502,34 +1179,519 @@ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de", - "role": "Developer" + "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": "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.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": "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.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": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "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/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" }, - "time": "2020-06-27T14:33:11+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" }, { - "name": "phar-io/version", - "version": "3.1.0", + "name": "phpunit/php-invoker", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "bae7c545bef187884426f042434e561ab1ddb182" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/bae7c545bef187884426f042434e561ab1ddb182", - "reference": "bae7c545bef187884426f042434e561ab1ddb182", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "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/" @@ -541,113 +1703,290 @@ ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, + "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": [ { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, + "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": "Developer" + "role": "lead" } ], - "description": "Library for handling version information and constraints", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.1.0" + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, - "time": "2021-02-23T14:00:09+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" }, { - "name": "php-http/psr7-integration-tests", - "version": "1.1.1", + "name": "phpunit/php-timer", + "version": "5.0.3", "source": { "type": "git", - "url": "https://github.com/php-http/psr7-integration-tests.git", - "reference": "dbc81e59655c3d927ba62b2cd38be9af334590fc" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/psr7-integration-tests/zipball/dbc81e59655c3d927ba62b2cd38be9af334590fc", - "reference": "dbc81e59655c3d927ba62b2cd38be9af334590fc", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpunit/phpunit": "^8.0 || ^9.3", - "psr/http-message": "^1.0" + "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.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "c73c6737305e779771147af66c96ca6a7ed8a741" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c73c6737305e779771147af66c96ca6a7ed8a741", + "reference": "c73c6737305e779771147af66c96ca6a7ed8a741", + "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", + "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", + "sebastian/version": "^3.0.2" }, "require-dev": { - "guzzlehttp/psr7": "^1.4", - "laminas/laminas-diactoros": "^2.1", - "nyholm/psr7": "^1.0", - "ringcentral/psr7": "^1.2", - "slim/psr7": "dev-master" + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" }, + "bin": [ + "phpunit" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "9.5-dev" } }, "autoload": { - "psr-4": { - "Http\\Psr7Test\\": "src/" - } + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Test suite for PSR7", - "homepage": "http://php-http.org", + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", "keywords": [ - "psr-7", - "test" + "phpunit", + "testing", + "xunit" ], "support": { - "issues": "https://github.com/php-http/psr7-integration-tests/issues", - "source": "https://github.com/php-http/psr7-integration-tests/tree/1.1.1" + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.4" }, - "time": "2020-11-02T14:08:03+00:00" + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-03-23T07:16:29+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "psalm/plugin-phpunit", + "version": "0.14.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/psalm/psalm-plugin-phpunit.git", + "reference": "f5147be764449ff5a11bded483b622e1e868f8ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/f5147be764449ff5a11bded483b622e1e868f8ab", + "reference": "f5147be764449ff5a11bded483b622e1e868f8ab", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "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" }, - "type": "library", + "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": { - "branch-alias": { - "dev-2.x": "2.x-dev" + "psalm": { + "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "Psalm\\PhpUnitPlugin\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -656,58 +1995,38 @@ ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Matt Brown", + "email": "github@muglug.com" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], + "description": "Psalm plugin for PHPUnit", "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.14.0" }, - "time": "2020-06-27T09:03:43+00:00" + "time": "2020-12-08T22:25:25+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", + "name": "psr/container", + "version": "1.1.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" + "url": "https://github.com/php-fig/container.git", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", + "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", + "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", "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" + "php": ">=7.2.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "Psr\\Container\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -716,51 +2035,51 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "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/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" + "issues": "https://github.com/php-fig/container/issues", + "source": "https://github.com/php-fig/container/tree/1.1.1" }, - "time": "2020-09-03T19:13:55+00:00" + "time": "2021-03-05T17:36:06+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", + "name": "psr/log", + "version": "1.1.4", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" + "url": "https://github.com/php-fig/log.git", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": "src" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -769,176 +2088,158 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2020-09-17T18:55:26+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { - "name": "phpspec/prophecy", - "version": "1.13.0", + "name": "sebastian/cli-parser", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be1996ed8adc35c3fd795488a653f4b518be70ea", - "reference": "be1996ed8adc35c3fd795488a653f4b518be70ea", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", "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" + "php": ">=7.3" }, "require-dev": { - "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.11.x-dev" + "dev-master": "1.0-dev" } }, "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/1.13.0" + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" }, - "time": "2021-03-17T13:42:18+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" }, { - "name": "phpspec/prophecy-phpunit", - "version": "v2.0.1", + "name": "sebastian/code-unit", + "version": "1.0.8", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy-phpunit.git", - "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy-phpunit/zipball/2d7a9df55f257d2cba9b1d0c0963a54960657177", - "reference": "2d7a9df55f257d2cba9b1d0c0963a54960657177", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "php": "^7.3 || ^8", - "phpspec/prophecy": "^1.3", - "phpunit/phpunit": "^9.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.0-dev" } }, - "autoload": { - "psr-4": { - "Prophecy\\PhpUnit\\": "src" - } + "autoload": { + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Christophe Coevoet", - "email": "stof@notk.org" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Integrating the Prophecy mocking library in PHPUnit test cases", - "homepage": "http://phpspec.net", - "keywords": [ - "phpunit", - "prophecy" - ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { - "issues": "https://github.com/phpspec/prophecy-phpunit/issues", - "source": "https://github.com/phpspec/prophecy-phpunit/tree/v2.0.1" + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" }, - "time": "2020-07-09T08:33:42+00:00" + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" }, { - "name": "phpunit/php-code-coverage", - "version": "9.2.6", + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f6293e1b30a2354e8428e004689671b83871edde" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f6293e1b30a2354e8428e004689671b83871edde", - "reference": "f6293e1b30a2354e8428e004689671b83871edde", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "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" + "php": ">=7.3" }, "require-dev": { "phpunit/phpunit": "^9.3" }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -953,20 +2254,14 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "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" - ], + "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/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.6" + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -974,24 +2269,26 @@ "type": "github" } ], - "time": "2021-03-28T07:26:59+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { - "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "name": "sebastian/comparator", + "version": "4.0.6", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", + "reference": "55f4261989e546dc112258c7a75935a81a7ce382", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { "phpunit/phpunit": "^9.3" @@ -999,7 +2296,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1014,19 +2311,31 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "filesystem", - "iterator" + "comparator", + "compare", + "equality" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" }, "funding": [ { @@ -1034,36 +2343,33 @@ "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2020-10-26T15:49:45+00:00" }, { - "name": "phpunit/php-invoker", - "version": "3.1.1", + "name": "sebastian/complexity", + "version": "2.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", + "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", "shasum": "" }, "require": { + "nikic/php-parser": "^4.7", "php": ">=7.3" }, "require-dev": { - "ext-pcntl": "*", "phpunit/phpunit": "^9.3" }, - "suggest": { - "ext-pcntl": "*" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1082,14 +2388,11 @@ "role": "lead" } ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" }, "funding": [ { @@ -1097,32 +2400,33 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2020-10-26T15:52:27+00:00" }, { - "name": "phpunit/php-text-template", - "version": "2.0.4", + "name": "sebastian/diff", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1137,18 +2441,24 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "template" + "diff", + "udiff", + "unidiff", + "unified diff" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" }, "funding": [ { @@ -1156,20 +2466,20 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2020-10-26T13:10:38+00:00" }, { - "name": "phpunit/php-timer", - "version": "5.0.3", + "name": "sebastian/environment", + "version": "5.1.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", + "reference": "388b6ced16caa751030f6a69e588299fa09200ac", "shasum": "" }, "require": { @@ -1178,10 +2488,13 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, + "suggest": { + "ext-posix": "*" + }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -1196,18 +2509,19 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ - "timer" + "Xdebug", + "environment", + "hhvm" ], "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" }, "funding": [ { @@ -1215,75 +2529,39 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2020-09-28T05:52:38+00:00" }, { - "name": "phpunit/phpunit", - "version": "9.5.4", + "name": "sebastian/exporter", + "version": "4.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c73c6737305e779771147af66c96ca6a7ed8a741" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c73c6737305e779771147af66c96ca6a7ed8a741", - "reference": "c73c6737305e779771147af66c96ca6a7ed8a741", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", "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", - "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", - "sebastian/version": "^3.0.2" + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" }, - "bin": [ - "phpunit" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "4.0-dev" } }, "autoload": { "classmap": [ "src/" - ], - "files": [ - "src/Framework/Assert/Functions.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1293,57 +2571,73 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "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": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "http://www.github.com/sebastianbergmann/exporter", "keywords": [ - "phpunit", - "testing", - "xunit" + "export", + "exporter" ], "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.4" + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" }, "funding": [ - { - "url": "https://phpunit.de/donate.html", - "type": "custom" - }, { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2021-03-23T07:16:29+00:00" + "time": "2020-09-28T05:24:23+00:00" }, { - "name": "sebastian/cli-parser", - "version": "1.0.1", + "name": "sebastian/global-state", + "version": "5.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", + "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", "shasum": "" }, "require": { - "php": ">=7.3" + "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": "1.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1358,15 +2652,17 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", + "description": "Snapshotting of global state", + "homepage": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2" }, "funding": [ { @@ -1374,23 +2670,24 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2020-10-26T15:55:19+00:00" }, { - "name": "sebastian/code-unit", - "version": "1.0.8", + "name": "sebastian/lines-of-code", + "version": "1.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "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": { @@ -1418,11 +2715,11 @@ "role": "lead" } ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", + "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/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" }, "funding": [ { @@ -1430,24 +2727,26 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2020-11-28T06:42:11+00:00" }, { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "name": "sebastian/object-enumerator", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "phpunit/phpunit": "^9.3" @@ -1455,7 +2754,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1473,11 +2772,11 @@ "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/", + "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/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -1485,26 +2784,24 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { - "name": "sebastian/comparator", - "version": "4.0.6", + "name": "sebastian/object-reflector", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "php": ">=7.3" }, "require-dev": { "phpunit/phpunit": "^9.3" @@ -1512,7 +2809,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1528,30 +2825,13 @@ { "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" - ], + "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/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -1559,24 +2839,23 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { - "name": "sebastian/complexity", - "version": "2.0.2", + "name": "sebastian/recursion-context", + "version": "4.0.4", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", + "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", "php": ">=7.3" }, "require-dev": { @@ -1585,7 +2864,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1600,15 +2879,22 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", + "description": "Provides functionality to recursively process PHP variables", + "homepage": "http://www.github.com/sebastianbergmann/recursion-context", "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" }, "funding": [ { @@ -1616,33 +2902,32 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2020-10-26T13:17:30+00:00" }, { - "name": "sebastian/diff", - "version": "4.0.4", + "name": "sebastian/resource-operations", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1658,23 +2943,13 @@ { "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" - ], + "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/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { @@ -1682,20 +2957,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { - "name": "sebastian/environment", - "version": "5.1.3", + "name": "sebastian/type", + "version": "2.3.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", "shasum": "" }, "require": { @@ -1704,13 +2979,10 @@ "require-dev": { "phpunit/phpunit": "^9.3" }, - "suggest": { - "ext-posix": "*" - }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-master": "2.3-dev" } }, "autoload": { @@ -1725,19 +2997,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], + "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/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/2.3.1" }, "funding": [ { @@ -1745,34 +3013,29 @@ "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2020-10-26T13:18:59+00:00" }, { - "name": "sebastian/exporter", - "version": "4.0.3", + "name": "sebastian/version", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "php": ">=7.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -1787,34 +3050,15 @@ "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" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], + "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/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, "funding": [ { @@ -1822,43 +3066,66 @@ "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2020-09-28T06:39:44+00:00" }, { - "name": "sebastian/global-state", - "version": "5.0.2", + "name": "squizlabs/php_codesniffer", + "version": "2.9.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "2acf168de78487db620ab4bc524135a13cfe6745" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", - "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745", + "reference": "2acf168de78487db620ab4bc524135a13cfe6745", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.1.2" }, "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "~4.0" }, + "bin": [ + "scripts/phpcs", + "scripts/phpcbf" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "2.x-dev" } }, "autoload": { "classmap": [ - "src/" + "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/", @@ -1867,542 +3134,723 @@ ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Greg Sherwood", + "role": "lead" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "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": [ - "global state" + "phpcs", + "standards" ], "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2" + "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", + "source": "https://github.com/squizlabs/PHP_CodeSniffer", + "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:55:19+00:00" + "time": "2018-11-07T22:31:41+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "1.0.3", + "name": "symfony/console", + "version": "v5.2.8", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "url": "https://github.com/symfony/console.git", + "reference": "864568fdc0208b3eba3638b6000b69d2386e6768" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/symfony/console/zipball/864568fdc0208b3eba3638b6000b69d2386e6768", + "reference": "864568fdc0208b3eba3638b6000b69d2386e6768", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" + }, + "conflict": { + "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" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "psr/log": "~1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, + "type": "library", "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "description": "Eases the creation of beautiful and testable command line interfaces", + "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command line", + "console", + "terminal" + ], "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/symfony/console/tree/v5.2.8" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-11-28T06:42:11+00:00" + "time": "2021-05-11T15:45:21+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "4.0.4", + "name": "symfony/polyfill-ctype", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:12:34+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { - "name": "sebastian/object-reflector", - "version": "2.0.4", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5601e09b69f26c1828b13b6bb87cb07cddba3170", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:14:26+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "sebastian/recursion-context", - "version": "4.0.4", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/43a0283138253ed1d48d352ab6d0bdb3f809f248", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "suggest": { + "ext-intl": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:17:30+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.3", + "name": "symfony/polyfill-mbstring", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/5232de97ee3b75b0360528dae24e73db49566ab1", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.0" + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { - "classmap": [ - "src/" + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T06:45:17+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "sebastian/type", - "version": "2.3.1", + "name": "symfony/polyfill-php73", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/2.3.1" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-10-26T13:18:59+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "symfony/polyfill-php80", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], "classmap": [ - "src/" + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "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": "2020-09-28T06:39:44+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "2.9.2", + "name": "symfony/service-contracts", + "version": "v2.4.0", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "2acf168de78487db620ab4bc524135a13cfe6745" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/2acf168de78487db620ab4bc524135a13cfe6745", - "reference": "2acf168de78487db620ab4bc524135a13cfe6745", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", + "reference": "f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.1.2" + "php": ">=7.2.5", + "psr/container": "^1.1" }, - "require-dev": { - "phpunit/phpunit": "~4.0" + "suggest": { + "symfony/service-implementation": "" }, - "bin": [ - "scripts/phpcs", - "scripts/phpcbf" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-main": "2.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "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/" - ] + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Greg Sherwood", - "role": "lead" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "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", + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", "keywords": [ - "phpcs", + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", "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" + "source": "https://github.com/symfony/service-contracts/tree/v2.4.0" }, - "time": "2018-11-07T22:31:41+00:00" + "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-04-01T10:43:52+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.22.1", + "name": "symfony/string", + "version": "v5.2.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + "url": "https://github.com/symfony/string.git", + "reference": "01b35eb64cac8467c3f94cd0ce2d0d376bb7d1db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "url": "https://api.github.com/repos/symfony/string/zipball/01b35eb64cac8467c3f94cd0ce2d0d376bb7d1db", + "reference": "01b35eb64cac8467c3f94cd0ce2d0d376bb7d1db", "shasum": "" }, "require": { - "php": ">=7.1" + "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" }, - "suggest": { - "ext-ctype": "For best performance" + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" }, "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\\": "" + "Symfony\\Component\\String\\": "" }, "files": [ - "bootstrap.php" + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2411,24 +3859,26 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "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": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.1" + "source": "https://github.com/symfony/string/tree/v5.2.8" }, "funding": [ { @@ -2444,7 +3894,7 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-05-10T14:56:10+00:00" }, { "name": "theseer/tokenizer", @@ -2496,6 +3946,111 @@ ], "time": "2020-07-12T23:59:07+00:00" }, + { + "name": "vimeo/psalm", + "version": "4.7.2", + "source": { + "type": "git", + "url": "https://github.com/vimeo/psalm.git", + "reference": "83a0325c0a95c0ab531d6b90c877068b464377b5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/83a0325c0a95c0ab531d6b90c877068b464377b5", + "reference": "83a0325c0a95c0ab531d6b90c877068b464377b5", + "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.10.1", + "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.13", + "slevomat/coding-standard": "^6.3.11", + "squizlabs/php_codesniffer": "^3.5", + "symfony/process": "^4.3", + "weirdan/phpunit-appveyor-reporter": "^1.0.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.7.2" + }, + "time": "2021-05-01T20:56:25+00:00" + }, { "name": "webmozart/assert", "version": "1.10.0", @@ -2553,6 +4108,56 @@ "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" + }, + "time": "2015-12-17T08:42:14+00:00" } ], "aliases": [], diff --git a/psalm.xml.dist b/psalm.xml.dist new file mode 100644 index 00000000..b8b808e4 --- /dev/null +++ b/psalm.xml.dist @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + From 8cd5e843ca96f9beb0276471bef2237d0b56b09f Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Thu, 10 Dec 2020 23:15:57 +0100 Subject: [PATCH 02/15] Add baseline Signed-off-by: Witold Wasiczko --- psalm-baseline.xml | 1510 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1510 insertions(+) create mode 100644 psalm-baseline.xml diff --git a/psalm-baseline.xml b/psalm-baseline.xml new file mode 100644 index 00000000..30b7f37d --- /dev/null +++ b/psalm-baseline.xml @@ -0,0 +1,1510 @@ + + + + + $header + + + $header + $value + + + $value + $values + + + + + seek + + + $contents + + + + + $previous->getCode() + $previous->getCode() + + + + + $code + + + $code + + + + + $code + + + $code + + + + + assertValid + assertValidName + + + (string) $value + + + + + is_string($version) + + + array + + + $stream + + + $this->headers[$header] + + + $header + $header + + + $new->headers[$header] + $new->headers[$new->headerNames[$normalized]] + $new->headers[$original] + $this->headers[$header] + $this->headers[$header] + + + $header + $header + $original + $value + + + string[] + + + $header + $header + + + + + $maxLength + + + $maxLength + + + $this->resource + + + PhpInputStream + + + + + $this->decoratedStream->getSize() + + + + + $this->headers[$header] + + + $header + + + array + + + $this->headers[$header] + + + $headers + array + + + + + + $headers + $method + $protocolVersion + $requestTarget + $uri + self::getValueFromKey($serializedRequest, 'body') + + + $headers + $method + $protocolVersion + $requestTarget + $uri + + + Request + + + + + + $body + $headers + $method + $requestTarget + $version + + + Request + + + + + is_string($method) + + + RequestInterface + RequestInterface + RequestInterface + + + $header + + + $requestTarget + + + $this->uri->getPort() + $uri->getPort() + + + $uri === null + + + + + ! is_numeric($code) + gettype($code) + is_float($code) + is_string($reasonPhrase) + + + static::MAX_STATUS_CODE_VALUE + static::MIN_STATUS_CODE_VALUE + + + $reasonPhrase + $this->reasonPhrase + + + (int) $code + + + is_scalar($code) + + + + + $headers + $protocolVersion + $reasonPhrase + $statusCode + self::getValueFromKey($serializedResponse, 'body') + + + $headers + $protocolVersion + $reasonPhrase + $statusCode + + + + + new static(204, $headers) + + + + + is_string($html) + + + + + $carry + $item + + + $item + + + $hasContentType + + + + + ! is_string($uri) && ! $uri instanceof UriInterface + + + + + $body + $headers + $reasonPhrase + $status + $version + + + (int) $status + + + + + is_string($text) + + + + + is_string($xml) + + + + + ! is_array($data) && ! is_object($data) && null !== $data + + + $attribute + $attribute + + + + + $headers['cookie'] + + + is_callable(self::$apacheRequestHeaders) + + + + + + $e + + + ?int + bool + + + $stats['size'] + + + $resource + + + $resource + + + $resource + $this->resource + $this->resource + $this->resource + + + $stream + + + is_resource($resource) + + + \GdImage + + + + + $file + + + + + ! is_string($targetPath) + + + $this->file + + + + + $stream + + + $size + + + + + ! is_numeric($port) + is_float($port) + is_object($port) + is_string($fragment) + is_string($host) + is_string($path) + is_string($query) + is_string($scheme) + is_string($user) + null !== $password && ! is_string($password) + + + $key + $key + $matches[0] + $port + $value + + + $port + isset($parts['port']) ? $parts['port'] : null + + + $port + + + (int) $port + + + gettype($port) + + + + + func_get_args() + + + + + $spec['error'] + $spec['name'] ?? null + $spec['tmp_name'] + $spec['type'] ?? null + + + + + func_get_args() + + + + + $headers[$name] + $headers[$name] + $value + + + + + func_get_args() + + + + + string + + + $server['REQUEST_METHOD'] ?? 'GET' + + + + + func_get_args() + + + + + $server['SERVER_PROTOCOL'] + + + + + func_get_args() + + + + + $default + $host + $https + + + function ($host) { + function (string $name, array $headers, $default = null) { + + + $getHeaderFromArray('x-forwarded-proto', $headers, '') + $host + $host + $host + $host + $port + $requestUri + $server['QUERY_STRING'] + + + $host + $iisUrlRewritten + $origPathInfo + $unencodedUrl + $value + + + array + string + + + $server['SERVER_ADDR'] + + + $defaults + $origPathInfo + $unencodedUrl + + + strrpos($host, ':') + + + + + func_get_args() + + + + + $apacheRequestHeaders['Authorization'] + $apacheRequestHeaders['authorization'] + + + $apacheRequestHeaders + $server['HTTP_AUTHORIZATION'] + $server['HTTP_AUTHORIZATION'] + + + + + func_get_args() + + + + + $normalized + + + UploadedFileInterface[] + + + $normalized[$key] + $value + $value + + + + array + + + + + + $cookieHeader + + + func_get_args() + + + + + function () { + + + $callback + $expected + + + phpCallbacksForStreams + testAllowsArbitraryPhpCallbacks + testClose + testDetach + testEof + testGetContents + testGetMetadata + testGetSize + testIsReadable + testIsSeekable + testIsWritable + testRead + testRewind + testSeek + testTell + testToString + testWrite + + + $callback + + + $ret + $ret + + + + + $assertion + $expected + $value + $value + $value + + + assertValues + getFilterValues + testAssertValidRaisesExceptionForInvalidValue + testFiltersValuesPerRfc7230 + testValidatesValuesPerRfc7230 + validateValues + + + $value + $value + + + + + $stream + + + $stream->getSize() + + + + + $name + $name + $value + $value + $value + $value + $value + $value + $value + $value + $version + + + headersWithInjectionVectors + invalidArrayHeaderValues + invalidGeneralHeaderValues + invalidHeaderValueTypes + invalidHeaderValues + invalidProtocolVersionProvider + numericHeaderValuesProvider + testAddHeaderAppendsToExistingHeader + testBodyMutatorReturnsCloneWithChanges + testCanRemoveHeaders + testDoesNotAllowCRLFInjectionWhenCallingWithAddedHeader + testDoesNotAllowCRLFInjectionWhenCallingWithHeader + testGetHeaderLineReturnsEmptyStringWhenHeaderDoesNotExist + testGetHeaderLineReturnsHeaderValueAsCommaConcatenatedString + testGetHeaderReturnsAnEmptyArrayWhenHeaderDoesNotExist + testGetHeaderReturnsHeaderValueAsArray + testGetHeadersKeepsHeaderCaseSensitivity + testGetHeadersReturnsCaseWithWhichHeaderFirstRegistered + testHasHeaderReturnsFalseIfHeaderIsNotPresent + testHasHeaderReturnsTrueIfHeaderIsPresent + testHeaderRemovalIsCaseInsensitive + testHeadersInitialization + testProtocolHasAcceptableDefault + testProtocolMutatorReturnsCloneWithChanges + testUsesStreamProvidedInConstructorAsBody + testWithAddedHeaderAllowsHeaderContinuations + testWithAddedHeaderRaisesExceptionForNonStringNonArrayValue + testWithHeaderAllowsHeaderContinuations + testWithHeaderRaisesExceptionForInvalidNestedHeaderValue + testWithHeaderRaisesExceptionForInvalidValueType + testWithHeaderReplacesDifferentCapitalization + testWithHeaderShouldAllowIntegersAndFloats + testWithHeaderShouldRaiseExceptionForInvalidHeaderScalarValues + testWithHeaderShouldRaiseExceptionForInvalidHeaderValuesInArrays + testWithProtocolVersionRaisesExceptionForInvalidVersion + testWithoutHeaderDoesNothingIfHeaderDoesNotExist + + + $name + $name + $value + $value + $value + $value + $value + $value + $version + + + [ $value ] + [ $value ] + [ $value ] + + + $values['array'] + + + $values + + + + + $message + $test + + + assertStreamContents + getFileContents + testCanReadStreamIteratively + testCastingToStringReturnsFullContentsRegardlesOfPriorReads + testGetContentsReturnCacheWhenReachedEof + testGetContentsReturnsRemainingContentsOfStream + testMultipleCastsToStringReturnSameContentsEvenIfReadsOccur + testStreamIsNeverWritable + + + $contents + $message + + + $content + $contents + + + + + assertSame + + + testCanReadContentFromNotSeekableResource + testClose + testDetach + testGetContents + testGetContentsRaisesExceptionWhenPointerIsBehindOffset + testGetMetadata + testGetSize + testIsReadable + testIsSeekable + testIsWritable + testRead + testReadRaisesExceptionWhenPointerIsBehindOffset + testRewind + testSeek + testTell + testToString + testWrite + testWriteRaisesExceptionWhenPointerIsBehindOffset + + + + + testDeserializeFromArray + testMissingBodyParamInSerializedRequestThrowsException + testSerializeToArray + + + + + function () use ($payload) { + + + $exceptionMessage + $expectations + $expectations + $line + $line + $line + $message + $requestTarget + $requestTarget + $text + + + absoluteForms + headersWithContinuationLines + invalidRequestLines + messagesWithInvalidHeaders + originForms + testCanDeserializeRequestWithAbsoluteForm + testCanDeserializeRequestWithAsteriskForm + testCanDeserializeRequestWithAuthorityForm + testCanDeserializeRequestWithOriginForm + testCanDeserializeResponseWithHeaderContinuations + testCanDeserializeResponseWithMultipleHeadersOfSameName + testDeserializationRaisesExceptionForMalformedHeaders + testFromStreamStopsReadingAfterScanningHeader + testFromStreamThrowsExceptionWhenStreamIsNotReadable + testFromStreamThrowsExceptionWhenStreamIsNotSeekable + testRaisesExceptionDuringDeserializationForInvalidRequestLine + testSerializesBasicRequest + testSerializesMultipleHeadersCorrectly + testSerializesRequestWithBody + + + $exceptionMessage + $message + $text + + + $payload[$i++] + + + $expect + $expect + $i + $method + $method + + + $i + $line + $line + $line + + + + + 'UNLOCK' => ['UNLOCK'] + + + ['TOTALLY INVALID'] + + + $body + $contains + $expected + $headers + $hostKey + $method + $method + $method + $name + $request + $requestTarget + $uri + $value + + + customRequestMethods + headersWithInjectionVectors + hostHeaderKeys + invalidHeaderTypes + invalidMethod + invalidRequestBody + invalidRequestMethod + invalidRequestUri + requestsWithUri + testAllowsCustomRequestMethodsThatFollowSpec + testCanProvideARequestTarget + testConstructorCanAcceptAllMessageParts + testConstructorRaisesExceptionForHeadersWithCRLFVectors + testConstructorRaisesExceptionForInvalidBody + testConstructorRaisesExceptionForInvalidHeaders + testConstructorRaisesExceptionForInvalidMethod + testConstructorRaisesExceptionForInvalidStream + testConstructorRaisesExceptionForInvalidUri + testDefaultStreamIsWritable + testGetHeadersContainsHostHeaderIfUriWithHostIsDeleted + testGetHeadersContainsHostHeaderIfUriWithHostIsPresent + testGetHeadersContainsNoHostHeaderIfNoUriPresent + testGetHeadersContainsNoHostHeaderIfUriDoesNotContainHost + testGetHostHeaderLineReturnsEmptyStringIfNoUriPresent + testGetHostHeaderLineReturnsEmptyStringIfUriDoesNotContainHost + testGetHostHeaderLineReturnsUriHostWhenPresent + testGetHostHeaderReturnsEmptyArrayIfNoUriPresent + testGetHostHeaderReturnsEmptyArrayIfUriDoesNotContainHost + testGetHostHeaderReturnsUriHostWhenHostHeaderDeleted + testGetHostHeaderReturnsUriHostWhenPresent + testHostHeaderNotSetFromUriOnCreationIfHostHeaderSpecified + testHostHeaderSetFromUriOnCreationIfNoHostHeaderSpecified + testHostHeaderUpdatesToUriHostAndPortWhenPreserveHostDisabledAndNonStandardPort + testMethodIsGetByDefault + testMethodMutatorReturnsCloneWithChangedMethod + testNotPassingPreserveHostFlagWhenUpdatingUriWithoutHostDoesNotUpdateHostHeader + testPassingPreserveHostFlagWhenUpdatingUriDoesNotUpdateHostHeader + testRequestTargetCannotContainWhitespace + testRequestTargetDoesNotCacheBetweenInstances + testRequestTargetIsSlashWhenNoUriPresent + testRequestTargetIsSlashWhenUriHasNoPathOrQuery + testReturnsRequestTargetWhenUriIsPresent + testReturnsUnpopulatedUriByDefault + testSettingNewUriResetsRequestTarget + testWithInvalidMethod + testWithUriAndNoPreserveHostWillOverwriteHostHeaderRegardlessOfOriginalCase + testWithUriReturnsNewInstanceWithNewUri + validRequestTargets + + + $body + $contains + $headers + $hostKey + $hostKey + $method + $method + $method + $requestTarget + $uri + + + getRequestTarget + + + + + createResponse + createSerializedResponse + testDeserializeFromArray + testMissingBodyParamInSerializedRequestThrowsException + testSerializeToArray + + + $response + $response + $serializedRequest + $serializedResponse + + + $serializedRequest['body'] + + + $response + $response + $serializedRequest + $serializedResponse + + + + + testConstructor + testHeaderConstructor + + + + + $body + + + invalidHtmlContent + testAllowsStreamsForResponseBody + testConstructorAcceptsHtmlString + testConstructorAllowsPassingHeaders + testConstructorAllowsPassingStatus + testConstructorRewindsBodyStream + testRaisesExceptionforNonStringNonStreamBodyContent + + + $body + + + + + $key + $value + $value + + + scalarValuesForJSON + testCanProvideAlternateContentTypeViaHeadersPassedToConstructor + testCanProvideStatusCodeToConstructor + testConstructorAcceptsDataAndCreatesJsonEncodedMessageBody + testConstructorRewindsBodyStream + testEncodingOptionsGetter + testJsonErrorHandlingOfBadEmbeddedData + testJsonErrorHandlingOfResources + testModifyingThePayloadDoesntMutateResponseInstance + testPayloadGetter + testScalarValuePassedToConstructorJsonEncodesDirectly + testUsesSaneDefaultJsonEncodingFlags + testWithEncodingOptions + testWithPayload + valuesToJsonEncode + + + $key + + + + + $uri + + + invalidUris + testConstructorAcceptsStringUriAndProduces302ResponseWithLocationHeader + testConstructorAcceptsUriInstanceAndProduces302ResponseWithLocationHeader + testConstructorAllowsSpecifyingAlternateStatusCode + testConstructorAllowsSpecifyingHeaders + testConstructorRaisesExceptionOnInvalidUri + + + $uri + + + + + $exceptionMessage + $message + $text + + + headersWithContinuationLines + messagesWithInvalidHeaders + testCanDeserializeBasicResponse + testCanDeserializeResponseWithHeaderContinuations + testCanDeserializeResponseWithMultipleHeadersOfSameName + testCanDeserializeResponseWithoutBody + testCanDeserializeResponseWithoutHeadersButContainingBody + testCanDeserializeResponseWithoutHeadersOrBody + testDeserializationRaisesExceptionForInvalidStatusLine + testDeserializationRaisesExceptionForMalformedHeaders + testDeserializeCorrectlyCastsStatusCodeToInteger + testFromStreamThrowsExceptionWhenStreamIsNotReadable + testFromStreamThrowsExceptionWhenStreamIsNotSeekable + testOmitsReasonPhraseFromStatusLineIfEmpty + testSerializesBasicResponse + testSerializesMultipleHeadersCorrectly + testSerializesResponseWithoutBodyCorrectly + + + $exceptionMessage + $message + $text + + + + + $body + + + invalidContent + testAllowsStreamsForResponseBody + testConstructorAcceptsBodyAsString + testConstructorAllowsPassingHeaders + testConstructorAllowsPassingStatus + testConstructorRewindsBodyStream + testRaisesExceptionforNonStringNonStreamBodyContent + + + $body + + + + + $body + + + invalidContent + testAllowsStreamsForResponseBody + testConstructorAcceptsBodyAsString + testConstructorAllowsPassingHeaders + testConstructorAllowsPassingStatus + testConstructorRewindsBodyStream + testRaisesExceptionforNonStringNonStreamBodyContent + + + $body + + + + + [ 'TOTALLY INVALID' ] + + + $body + $code + $code + $code + $contains + $headers + $invalidReasonPhrase + $name + $reasonPhrase + $value + + + headersWithInjectionVectors + ianaCodesReasonPhrasesProvider + invalidHeaderTypes + invalidReasonPhrases + invalidResponseBody + invalidStatusCodes + testCanSetCustomReasonPhrase + testCannotSetInvalidStatusCode + testConstructorCanAcceptAllMessageParts + testConstructorRaisesExceptionForHeadersWithCRLFVectors + testConstructorRaisesExceptionForInvalidBody + testConstructorRaisesExceptionForInvalidHeaders + testConstructorRaisesExceptionForInvalidStream + testCreateWithValidStatusCodes + testReasonPhraseCanBeEmpty + testReasonPhraseDefaultsAgainstIana + testReasonPhraseDefaultsToStandards + testStatusCodeIs200ByDefault + testStatusCodeMutatorReturnsCloneWithChanges + testWithStatusRaisesAnExceptionForNonStringReasonPhrases + validStatusCodes + + + $body + $code + $code + $code + $contains + $headers + $invalidReasonPhrase + + + $responseCode + + + $response + + + assertIsInt + + + $value + + + + + $normalizedFiles['fooFiles'] + + + $expected + $protocol + + + cookieHeaderValues + marshalProtocolVersionProvider + testCanCreateServerRequestViaFromGlobalsMethod + testCookieHeaderVariations + testCreateFromGlobalsShouldNotPreserveKeysWhenCreatedWithAnEmptyValue + testCreateFromGlobalsShouldPreserveKeysWhenCreatedWithAZeroValue + testFromGlobalsUsesCookieHeaderInsteadOfCookieSuperGlobal + testFromGlobalsUsesCookieSuperGlobalWhenCookieHeaderIsNotSet + testMarshalHostAndPortReturnsEmptyValuesIfNoHostHeaderAndNoServerName + testMarshalHostAndPortReturnsServerAddrForHostIfPresentAndHostIsIpv6Address + testMarshalHostAndPortReturnsServerNameForHostIfServerAddrPresentButHostIsNotIpv6Address + testMarshalHostAndPortReturnsServerNameForHostWhenPresent + testMarshalHostAndPortReturnsServerPortForPortWhenPresentWithServerName + testMarshalHostAndPortUsesHostHeaderWhenPresent + testMarshalHostAndPortWillDetectPortInHostHeaderWhenPresent + testMarshalHostAndPortWillDetectPortInIpv6StyleHost + testMarshalInvalidHeadersStrippedFromServerArray + testMarshalProtocolReturnsDefaultValueIfHeaderIsNotPresent + testMarshalProtocolVersionReturnsHttpVersions + testMarshalProtocolVersionRisesExceptionIfVersionIsNotRecognized + testMarshalRequestUriFallsBackToRoot + testMarshalRequestUriPrefersRequestUriServerParamWhenXOriginalUrlButNoXRewriteUrlPresent + testMarshalRequestUriStripsSchemeHostAndPortInformationWhenPresent + testMarshalRequestUriUsesIISUnencodedUrlValueIfPresentAndUrlWasRewritten + testMarshalRequestUriUsesOrigPathInfoIfPresent + testMarshalUriDetectsHttpsSchemeFromServerValue + testMarshalUriDetectsHttpsSchemeFromXForwardedProtoValue + testMarshalUriInjectsFragmentFromServer + testMarshalUriInjectsQueryStringFromServer + testMarshalUriStripsQueryStringFromRequestUri + testMarshalUriUsesHttpSchemeIfHttpsServerValueEqualsOff + testMarshalsExpectedHeadersFromServerArray + testMarshalsVariablesPrefixedByApacheFromServerArray + testNormalizeFilesReturnsOnlyActualFilesWhenOriginalFilesContainsNestedAssociativeArrays + testNormalizeServerReturnsArrayUnalteredIfApacheHeadersDoNotContainAuthorization + testNormalizeServerUsesLowerCaseAuthorizationHeaderFromApacheWhenPresent + testNormalizeServerUsesMixedCaseAuthorizationHeaderFromApacheWhenPresent + testReturnsServerValueUnchangedIfHttpAuthorizationHeaderIsPresent + testServerRequestFactoryHasAWritableEmptyBody + + + $data + + + $data + $param + + + array + iterable + + + + + $parsedBody + + + $methodReturned + $parameterMethod + $request + + + provideMethods + testAllowsRemovingAttributeWithNullValue + testAllowsRemovingNonExistentAttribute + testAttributeMutatorReturnsCloneWithChanges + testAttributesAreEmptyByDefault + testCookieParamsAreAnEmptyArrayAtInitialization + testCookiesAreEmptyByDefault + testCookiesMutatorReturnsCloneWithChanges + testNestedUploadedFiles + testParsedBodyIsEmptyByDefault + testParsedBodyIsNullAtInitialization + testParsedBodyMutatorReturnsCloneWithChanges + testQueryParamsAreAnEmptyArrayAtInitialization + testQueryParamsAreEmptyByDefault + testQueryParamsMutatorReturnsCloneWithChanges + testRemovingAttributeReturnsCloneWithoutAttribute + testServerParamsAreEmptyByDefault + testSingleAttributesWhenEmptyByDefault + testTryToAddInvalidUploadedFiles + testUploadedFilesAreEmptyByDefault + testUsesProvidedConstructorArguments + + + $parameterMethod + + + $new + + + getAttribute + withoutAttribute + + + + + setMethods + + + [' THIS WILL NOT WORK '] + + + $fileShouldExist + $fileShouldExist + $flag + $flag + $mode + $mode + $resource + + + $tmpnam + + + findNonExistentTempName + getResourceFor67 + invalidResources + provideDataForIsReadable + provideDataForIsWritable + testAttachWithInvalidStringResourceRaisesException + testAttachWithNonStringNonResourceRaisesException + testAttachWithResourceAttachesResource + testAttachWithStringRepresentingResourceCreatesAndAttachesResource + testCanInstantiateWithGDResource + testCanInstantiateWithStreamIdentifier + testCanInstantiteWithStreamResource + testCanReadContentFromNotSeekableResource + testCloseClosesResource + testCloseDoesNothingAfterDetach + testCloseUnsetsResource + testDetachReturnsResource + testEofReportsFalseWhenNotAtEndOfStream + testEofReportsTrueWhenAtEndOfStream + testEofReportsTrueWhenStreamIsDetached + testGetContentsRisesExceptionIfStreamIsNotReadable + testGetContentsShouldGetFullStreamContents + testGetContentsShouldReturnStreamContentsFromCurrentPointer + testGetMetadataReturnsAllMetadataWhenNoKeyPresent + testGetMetadataReturnsDataForSpecifiedKey + testGetMetadataReturnsNullIfNoDataExistsForKey + testGetSizeReturnsStreamSize + testIsReadableReturnsCorrectFlagForMode + testIsReadableReturnsFalseIfStreamIsNotReadable + testIsReadableReturnsFalseWhenStreamIsDetached + testIsSeekableReturnsFalseForDetachedStreams + testIsSeekableReturnsTrueForReadableStreams + testIsWritableReturnsCorrectFlagForMode + testIsWritableReturnsFalseIfStreamIsNotWritable + testIsWritableReturnsFalseWhenStreamIsDetached + testIsWritableReturnsTrueForWritableMemoryStream + testPassingInvalidStreamResourceToConstructorRaisesException + testRaisesExceptionOnAttachForNonStreamResources + testRaisesExceptionOnConstructionForNonStreamResources + testReadRaisesExceptionWhenStreamIsDetached + testReadReturnsEmptyStringWhenAtEndOfFile + testRewindResetsToStartOfStream + testSeekAdvancesToGivenOffsetOfStream + testSeekRaisesExceptionWhenStreamIsDetached + testSizeReportsNullForPhpInputStreams + testSizeReportsNullWhenNoResourcePresent + testStringSerializationReturnsEmptyStringWhenStreamIsNotReadable + testTellRaisesExceptionIfResourceIsDetached + testTellReportsCurrentPositionInResource + testToStringRetrievesFullContentsOfStream + testWriteRaisesExceptionWhenStreamIsDetached + testWriteRaisesExceptionWhenStreamIsNotWritable + + + $mode + $mode + $resource + $resource + $resource + $this->tmpnam + $this->tmpnam + $this->tmpnam + $this->tmpnam + + + $resource + $resource + $test + + + + + push + reset + + + + + $stream + $stream + $stream + $stream + $stream + + + $path + $status + $status + $status + $status + $streamOrFile + + + $tmpFile + + + errorConstantsAndMessages + invalidErrorStatuses + invalidMovePaths + invalidStreams + nonOkErrorStatus + testCannotRetrieveStreamAfterMove + testConstructorDoesNotRaiseExceptionForInvalidStreamWhenErrorStatusPresent + testGetStreamRaisesExceptionWhenErrorStatusPresent + testGetStreamRaisesExceptionWithAppropriateMessageWhenUploadErrorDetected + testGetStreamReturnsOriginalStreamObject + testGetStreamReturnsStreamForFile + testGetStreamReturnsWrappedPhpStream + testMoveCannotBeCalledMoreThanOnce + testMoveRaisesExceptionForInvalidPath + testMoveToCreatesStreamIfOnlyAFilenameWasProvided + testMoveToRaisesExceptionWhenErrorStatusPresent + testMoveToRaisesExceptionWithAppropriateMessageWhenUploadErrorDetected + testMovesFileToDesignatedPath + testRaisesExceptionOnInvalidErrorStatus + testRaisesExceptionOnInvalidStreamOrFile + testValidClientFilename + testValidClientMediaType + testValidNullClientFilename + testValidSize + + + $path + $status + $status + $status + $status + $streamOrFile + + + $this->tmpfile + + + + + '3001' + 1 + + + $credential + $expected + $expected + $expected + $expected + $method + $method + $path + $port + $port + $port + $query + $query + $query + $result + $result + $scheme + $scheme + $scheme + $url + $url + $url + $user + $value + $value + + + authorityInfo + invalidPaths + invalidPorts + invalidQueryStrings + invalidSchemes + invalidStringComponentValues + mutations + queryStringsForEncoding + standardSchemePortCombinations + testAuthorityIsPrefixedByDoubleSlashIfPresent + testAuthorityOmitsPortForStandardSchemePortCombinations + testCanEmitOriginFormUrl + testCanSerializeToString + testConstructWithUnsupportedSchemeRaisesAnException + testConstructorRaisesExceptionForSeriouslyMalformedURI + testConstructorSetsAllProperties + testESchemeStripsOffDelimiter + testEmptyPathOnOriginFormRemainsAnEmptyPath + testEncodeFragmentPrefixIfPresent + testFragmentIsNotDoubleEncoded + testFragmentIsProperlyEncoded + testHostIsLowercase + testHostIsLowercaseWhenIsSetViwWithHost + testMutatingSchemeStripsOffDelimiter + testMutatingWithUnsupportedSchemeRaisesAnException + testMutationResetsUriStringPropertyInClone + testPassingInvalidValueToWithMethodRaisesException + testPathDoesNotBecomeDoubleEncoded + testPathIsNotPrefixedWithSlashIfSetWithoutOne + testPathIsProperlyEncoded + testPathNotSlashPrefixedIsEmittedWithSlashDelimiterWhenUriIsCastToString + testProperlyTrimsLeadingSlashesToPreventXSS + testQueryIsNotDoubleEncoded + testQueryIsProperlyEncoded + testReservedCharsInPathUnencoded + testRetrievingAuthorityReturnsExpectedValues + testSettingEmptyPathOnAbsoluteUriReturnsAnEmptyPath + testStringRepresentationOfAbsoluteUriWithNoPathSetsAnEmptyPath + testStringRepresentationOfOriginFormWithNoPathRetainsEmptyPath + testStripsQueryPrefixIfPresent + testUriDistinguishZeroFromEmptyString + testUriDoesNotAppendColonToHostIfPortIsEmpty + testUtf8Path + testUtf8Query + testUtf8Uri + testWithFragmentReturnsNewInstanceWithProvidedFragment + testWithFragmentReturnsSameInstanceWithProvidedFragmentSameAsBefore + testWithHostReturnsNewInstanceWithProvidedHost + testWithHostReturnsSameInstanceWithProvidedHostIsSameAsBefore + testWithPathRaisesExceptionForInvalidPaths + testWithPathReturnsNewInstanceWithProvidedPath + testWithPathReturnsSameInstanceWithProvidedPathSameAsBefore + testWithPortRaisesExceptionForInvalidPorts + testWithPortReturnsNewInstanceWithProvidedPort + testWithPortReturnsSameInstanceWithProvidedPortIsSameAsBefore + testWithQueryRaisesExceptionForInvalidQueryStrings + testWithQueryReturnsNewInstanceWithProvidedQuery + testWithSchemeReturnsNewInstanceWithNewScheme + testWithSchemeReturnsSameInstanceWithSameScheme + testWithUserInfoEncodesUsernameAndPassword + testWithUserInfoReturnsNewInstanceWithProvidedUser + testWithUserInfoReturnsNewInstanceWithProvidedUserAndPassword + testWithUserInfoReturnsSameInstanceIfUserAndPasswordAreSameAsBefore + testWithUserInfoThrowExceptionIfPasswordIsNotString + userInfoProvider + utf8PathsDataProvider + utf8QueryStringsDataProvider + validPorts + + + $credential + $expected + $path + $port + $port + $port + $query + $query + $scheme + $scheme + $test + $url + $url + $url + $user + + + $test + + + $port + $scheme + + + + + array + array + + + + + testCreatesUploadedFileFromFlatFileSpecification + testTraversesDenormalizedNestedTreeOfIndicesToExtractUploadedFiles + testTraversesNestedFileSpecificationContainingNumericIndicesToExtractUploadedFiles + testTraversesNestedFileSpecificationToExtractUploadedFile + + + $normalised['my-form']['details']['avatars'] + $normalised['slide-shows'][0]['slides'] + + + $normalised['my-form']['details']['avatar'] + $normalised['my-form']['details']['avatars'] + $normalised['my-form']['details']['avatars'] + $normalised['my-form']['details']['avatars'] + $normalised['my-form']['details']['avatars'] + $normalised['slide-shows'][0]['slides'] + $normalised['slide-shows'][0]['slides'] + $normalised['slide-shows'][0]['slides'] + + + getClientFilename + getClientFilename + getClientFilename + getClientFilename + getClientFilename + getClientFilename + + + $normalised['my-form'] + $normalised['my-form'] + $normalised['my-form'] + $normalised['my-form'] + $normalised['my-form'] + $normalised['slide-shows'] + $normalised['slide-shows'] + $normalised['slide-shows'] + + + From f5760118e221fb0fa0b8583b569d72cd4fe54370 Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Thu, 10 Dec 2020 23:54:21 +0100 Subject: [PATCH 03/15] Fix some issues found by psalm Signed-off-by: Witold Wasiczko --- psalm-baseline.xml | 137 ++++++-------------------------- src/AbstractSerializer.php | 4 +- src/CallbackStream.php | 2 +- src/HeaderSecurity.php | 5 +- src/MessageTrait.php | 20 +++-- src/Request.php | 10 +-- src/Response.php | 2 + src/Uri.php | 2 +- test/CallbackStreamTest.php | 42 +++++----- test/Request/SerializerTest.php | 38 ++++----- 10 files changed, 87 insertions(+), 175 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 30b7f37d..f5741fe2 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,22 +1,6 @@ - - - $header - - - $header - $value - - - $value - $values - - - - seek - $contents @@ -43,48 +27,23 @@ $code - - - assertValid - assertValidName - - - (string) $value - - is_string($version) - - array - $stream - - $this->headers[$header] - $header $header - - $new->headers[$header] - $new->headers[$new->headerNames[$normalized]] - $new->headers[$original] - $this->headers[$header] - $this->headers[$header] - - - $header - $header - $original + $value - - string[] - + + $headerNames + $header $header @@ -109,24 +68,6 @@ $this->decoratedStream->getSize() - - - $this->headers[$header] - - - $header - - - array - - - $this->headers[$header] - - - $headers - array - - @@ -157,6 +98,9 @@ $requestTarget $version + + $request->getHeaders() + Request @@ -195,10 +139,6 @@ static::MAX_STATUS_CODE_VALUE static::MIN_STATUS_CODE_VALUE - - $reasonPhrase - $this->reasonPhrase - (int) $code @@ -256,6 +196,9 @@ $status $version + + $response->getHeaders() + (int) $status @@ -362,13 +305,9 @@ $port $value - - $port - isset($parts['port']) ? $parts['port'] : null - - - $port - + + $this->port + (int) $port @@ -527,25 +466,6 @@ $callback $expected - - phpCallbacksForStreams - testAllowsArbitraryPhpCallbacks - testClose - testDetach - testEof - testGetContents - testGetMetadata - testGetSize - testIsReadable - testIsSeekable - testIsWritable - testRead - testRewind - testSeek - testTell - testToString - testWrite - $callback @@ -553,6 +473,9 @@ $ret $ret + + array + @@ -730,27 +653,6 @@ $requestTarget $text - - absoluteForms - headersWithContinuationLines - invalidRequestLines - messagesWithInvalidHeaders - originForms - testCanDeserializeRequestWithAbsoluteForm - testCanDeserializeRequestWithAsteriskForm - testCanDeserializeRequestWithAuthorityForm - testCanDeserializeRequestWithOriginForm - testCanDeserializeResponseWithHeaderContinuations - testCanDeserializeResponseWithMultipleHeadersOfSameName - testDeserializationRaisesExceptionForMalformedHeaders - testFromStreamStopsReadingAfterScanningHeader - testFromStreamThrowsExceptionWhenStreamIsNotReadable - testFromStreamThrowsExceptionWhenStreamIsNotSeekable - testRaisesExceptionDuringDeserializationForInvalidRequestLine - testSerializesBasicRequest - testSerializesMultipleHeadersCorrectly - testSerializesRequestWithBody - $exceptionMessage $message @@ -766,6 +668,13 @@ $method $method + + array + array + array + array + array + $i $line diff --git a/src/AbstractSerializer.php b/src/AbstractSerializer.php index 6adb991f..169fac59 100644 --- a/src/AbstractSerializer.php +++ b/src/AbstractSerializer.php @@ -118,6 +118,8 @@ protected static function splitStream(StreamInterface $stream) : array /** * Serialize headers to string values. + * + * @psalm-param array $headers */ protected static function serializeHeaders(array $headers) : string { @@ -135,7 +137,7 @@ protected static function serializeHeaders(array $headers) : string /** * Filter a header name to wordcase */ - protected static function filterHeader($header) : string + protected static function filterHeader(string $header) : string { $filtered = str_replace('-', ' ', $header); $filtered = ucwords($filtered); diff --git a/src/CallbackStream.php b/src/CallbackStream.php index ab24a4c7..9c2e1c60 100644 --- a/src/CallbackStream.php +++ b/src/CallbackStream.php @@ -98,7 +98,7 @@ public function isSeekable() : bool /** * {@inheritdoc} */ - public function seek($offset, $whence = SEEK_SET) + public function seek($offset, $whence = SEEK_SET) : void { throw Exception\UnseekableStreamException::forCallbackStream(); } diff --git a/src/HeaderSecurity.php b/src/HeaderSecurity.php index 37b9932b..2fedc61f 100644 --- a/src/HeaderSecurity.php +++ b/src/HeaderSecurity.php @@ -50,7 +50,6 @@ private function __construct() */ public static function filter(string $value) : string { - $value = (string) $value; $length = strlen($value); $string = ''; for ($i = 0; $i < $length; $i += 1) { @@ -128,7 +127,7 @@ public static function isValid($value) : bool * @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( @@ -151,7 +150,7 @@ public static function assertValid($value) * @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( diff --git a/src/MessageTrait.php b/src/MessageTrait.php index 1e4a5609..53ac94fd 100644 --- a/src/MessageTrait.php +++ b/src/MessageTrait.php @@ -31,6 +31,8 @@ trait MessageTrait * List of all registered headers, as key => array of values. * * @var array + * + * @psalm-var array> */ protected $headers = []; @@ -38,6 +40,8 @@ trait MessageTrait * Map of normalized header name to original name used to register header. * * @var array + * + * @psalm-var array */ protected $headerNames = []; @@ -104,6 +108,8 @@ public function withProtocolVersion($version) : MessageInterface * * @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> */ public function getHeaders() : array { @@ -132,20 +138,20 @@ public function hasHeader($header) : bool * If the header does not appear in the message, this method MUST return an * empty array. * - * @param string $header Case-insensitive header field name. + * @param string $name Case-insensitive header field name. * @return string[] An array of string values as provided for the given * header. If the header does not appear in the message, this method MUST * return an empty array. */ - public function getHeader($header) : array + public function getHeader($name) : array { - if (! $this->hasHeader($header)) { + if (! $this->hasHeader($name)) { return []; } - $header = $this->headerNames[strtolower($header)]; + $name = $this->headerNames[strtolower($name)]; - return $this->headers[$header]; + return $this->headers[$name]; } /** @@ -399,11 +405,9 @@ private function filterHeaderValue($values) : array /** * Ensure header name and values are valid. * - * @param string $name - * * @throws Exception\InvalidArgumentException */ - private function assertHeader($name) : void + private function assertHeader(string $name) : void { HeaderSecurity::assertValidName($name); } diff --git a/src/Request.php b/src/Request.php index ddf753b2..d81d1144 100644 --- a/src/Request.php +++ b/src/Request.php @@ -51,10 +51,10 @@ public function getHeaders() : array /** * {@inheritdoc} */ - public function getHeader($header) : array + public function getHeader($name) : array { - if (! $this->hasHeader($header)) { - if (strtolower($header) === 'host' + if (! $this->hasHeader($name)) { + if (strtolower($name) === 'host' && $this->uri->getHost() ) { return [$this->getHostFromUri()]; @@ -63,8 +63,8 @@ public function getHeader($header) : array return []; } - $header = $this->headerNames[strtolower($header)]; + $name = $this->headerNames[strtolower($name)]; - return $this->headers[$header]; + return $this->headers[$name]; } } diff --git a/src/Response.php b/src/Response.php index 90b339c6..f0c81f68 100644 --- a/src/Response.php +++ b/src/Response.php @@ -31,6 +31,8 @@ class Response implements ResponseInterface * Map of standard HTTP status code/reason phrases * * @var array + * + * @psalm-var array */ private $phrases = [ // INFORMATIONAL CODES diff --git a/src/Uri.php b/src/Uri.php index 5284ad83..8fb1ed29 100644 --- a/src/Uri.php +++ b/src/Uri.php @@ -76,7 +76,7 @@ class Uri implements UriInterface private $host = ''; /** - * @var int + * @var int|null */ private $port; diff --git a/test/CallbackStreamTest.php b/test/CallbackStreamTest.php index 6cd74a16..c2d7ea81 100644 --- a/test/CallbackStreamTest.php +++ b/test/CallbackStreamTest.php @@ -15,25 +15,21 @@ class CallbackStreamTest extends TestCase { /** * Sample callback to use with testing. - * - * @return string */ - public function sampleCallback() + public function sampleCallback() : string { return __METHOD__; } /** * Sample static callback to use with testing. - * - * @return string */ - public static function sampleStaticCallback() + public static function sampleStaticCallback() : string { return __METHOD__; } - public function testToString() + public function testToString() : void { $stream = new CallbackStream(function () { return 'foobarbaz'; @@ -43,7 +39,7 @@ public function testToString() $this->assertSame('foobarbaz', $ret); } - public function testClose() + public function testClose() : void { $stream = new CallbackStream(function () { }); @@ -55,7 +51,7 @@ public function testClose() $this->assertNull($callback); } - public function testDetach() + public function testDetach() : void { $callback = function () { }; @@ -64,7 +60,7 @@ public function testDetach() $this->assertSame($callback, $ret); } - public function testEof() + public function testEof() : void { $stream = new CallbackStream(function () { }); @@ -76,7 +72,7 @@ public function testEof() $this->assertTrue($ret); } - public function testGetSize() + public function testGetSize() : void { $stream = new CallbackStream(function () { }); @@ -84,7 +80,7 @@ public function testGetSize() $this->assertNull($ret); } - public function testTell() + public function testTell() : void { $stream = new CallbackStream(function () { }); @@ -94,7 +90,7 @@ public function testTell() $stream->tell(); } - public function testIsSeekable() + public function testIsSeekable() : void { $stream = new CallbackStream(function () { }); @@ -102,7 +98,7 @@ public function testIsSeekable() $this->assertFalse($ret); } - public function testIsWritable() + public function testIsWritable() : void { $stream = new CallbackStream(function () { }); @@ -110,7 +106,7 @@ public function testIsWritable() $this->assertFalse($ret); } - public function testIsReadable() + public function testIsReadable() : void { $stream = new CallbackStream(function () { }); @@ -118,7 +114,7 @@ public function testIsReadable() $this->assertFalse($ret); } - public function testSeek() + public function testSeek() : void { $stream = new CallbackStream(function () { }); @@ -128,7 +124,7 @@ public function testSeek() $stream->seek(0); } - public function testRewind() + public function testRewind() : void { $stream = new CallbackStream(function () { }); @@ -138,7 +134,7 @@ public function testRewind() $stream->rewind(); } - public function testWrite() + public function testWrite() : void { $stream = new CallbackStream(function () { }); @@ -148,7 +144,7 @@ public function testWrite() $stream->write('foobarbaz'); } - public function testRead() + public function testRead() : void { $stream = new CallbackStream(function () { }); @@ -158,7 +154,7 @@ public function testRead() $stream->read(3); } - public function testGetContents() + public function testGetContents() : void { $stream = new CallbackStream(function () { return 'foobarbaz'; @@ -168,7 +164,7 @@ public function testGetContents() $this->assertSame('foobarbaz', $ret); } - public function testGetMetadata() + public function testGetMetadata() : void { $stream = new CallbackStream(function () { }); @@ -193,7 +189,7 @@ public function testGetMetadata() $this->assertNull($notExists); } - public function phpCallbacksForStreams() + public function phpCallbacksForStreams() : array { $class = __CLASS__; @@ -208,7 +204,7 @@ public function phpCallbacksForStreams() /** * @dataProvider phpCallbacksForStreams */ - public function testAllowsArbitraryPhpCallbacks($callback, $expected) + public function testAllowsArbitraryPhpCallbacks($callback, $expected) : void { $stream = new CallbackStream($callback); $contents = $stream->getContents(); diff --git a/test/Request/SerializerTest.php b/test/Request/SerializerTest.php index 2a8f6ca2..5531fc2c 100644 --- a/test/Request/SerializerTest.php +++ b/test/Request/SerializerTest.php @@ -20,7 +20,7 @@ class SerializerTest extends TestCase { - public function testSerializesBasicRequest() + public function testSerializesBasicRequest() : void { $request = (new Request()) ->withMethod('GET') @@ -34,7 +34,7 @@ public function testSerializesBasicRequest() ); } - public function testSerializesRequestWithBody() + public function testSerializesRequestWithBody() : void { $body = json_encode(['test' => 'value']); $stream = new Stream('php://memory', 'wb+'); @@ -52,7 +52,7 @@ public function testSerializesRequestWithBody() $this->assertStringContainsString("\r\n\r\n" . $body, $message); } - public function testSerializesMultipleHeadersCorrectly() + public function testSerializesMultipleHeadersCorrectly() : void { $request = (new Request()) ->withMethod('GET') @@ -65,7 +65,7 @@ public function testSerializesMultipleHeadersCorrectly() $this->assertStringContainsString("X-Foo-Bar: Bat", $message); } - public function originForms() + public function originForms() : array { return [ 'path-only' => [ @@ -84,7 +84,7 @@ public function originForms() /** * @dataProvider originForms */ - public function testCanDeserializeRequestWithOriginForm($line, $requestTarget, $expectations) + public function testCanDeserializeRequestWithOriginForm($line, $requestTarget, $expectations) : void { $message = $line . "\r\nX-Foo-Bar: Baz\r\n\r\nContent"; $request = Serializer::fromString($message); @@ -98,7 +98,7 @@ public function testCanDeserializeRequestWithOriginForm($line, $requestTarget, $ } } - public function absoluteForms() + public function absoluteForms() : array { return [ 'path-only' => [ @@ -149,7 +149,7 @@ public function absoluteForms() /** * @dataProvider absoluteForms */ - public function testCanDeserializeRequestWithAbsoluteForm($line, $requestTarget, $expectations) + public function testCanDeserializeRequestWithAbsoluteForm($line, $requestTarget, $expectations) : void { $message = $line . "\r\nX-Foo-Bar: Baz\r\n\r\nContent"; $request = Serializer::fromString($message); @@ -164,7 +164,7 @@ public function testCanDeserializeRequestWithAbsoluteForm($line, $requestTarget, } } - public function testCanDeserializeRequestWithAuthorityForm() + public function testCanDeserializeRequestWithAuthorityForm() : void { $message = "CONNECT www.example.com:80 HTTP/1.1\r\nX-Foo-Bar: Baz"; $request = Serializer::fromString($message); @@ -176,7 +176,7 @@ public function testCanDeserializeRequestWithAuthorityForm() $this->assertNotSame(80, $uri->getPort()); } - public function testCanDeserializeRequestWithAsteriskForm() + public function testCanDeserializeRequestWithAsteriskForm() : void { $message = "OPTIONS * HTTP/1.1\r\nHost: www.example.com"; $request = Serializer::fromString($message); @@ -190,7 +190,7 @@ public function testCanDeserializeRequestWithAsteriskForm() $this->assertSame('www.example.com', $request->getHeaderLine('Host')); } - public function invalidRequestLines() + public function invalidRequestLines() : array { return [ 'missing-method' => ['/foo/bar HTTP/1.1'], @@ -203,7 +203,7 @@ public function invalidRequestLines() /** * @dataProvider invalidRequestLines */ - public function testRaisesExceptionDuringDeserializationForInvalidRequestLine($line) + public function testRaisesExceptionDuringDeserializationForInvalidRequestLine($line) : void { $message = $line . "\r\nX-Foo-Bar: Baz\r\n\r\nContent"; @@ -212,7 +212,7 @@ public function testRaisesExceptionDuringDeserializationForInvalidRequestLine($l Serializer::fromString($message); } - public function testCanDeserializeResponseWithMultipleHeadersOfSameName() + public function testCanDeserializeResponseWithMultipleHeadersOfSameName() : void { $text = "POST /foo HTTP/1.0\r\nContent-Type: text/plain\r\nX-Foo-Bar: Baz\r\nX-Foo-Bar: Bat\r\n\r\nContent!"; $request = Serializer::fromString($text); @@ -225,7 +225,7 @@ public function testCanDeserializeResponseWithMultipleHeadersOfSameName() $this->assertSame(['Baz', 'Bat'], $values); } - public function headersWithContinuationLines() + public function headersWithContinuationLines() : array { return [ 'space' => ["POST /foo HTTP/1.0\r\nContent-Type: text/plain\r\nX-Foo-Bar: Baz;\r\n Bat\r\n\r\nContent!"], @@ -236,7 +236,7 @@ public function headersWithContinuationLines() /** * @dataProvider headersWithContinuationLines */ - public function testCanDeserializeResponseWithHeaderContinuations($text) + public function testCanDeserializeResponseWithHeaderContinuations($text) : void { $request = Serializer::fromString($text); @@ -247,7 +247,7 @@ public function testCanDeserializeResponseWithHeaderContinuations($text) $this->assertSame('Baz;Bat', $request->getHeaderLine('X-Foo-Bar')); } - public function messagesWithInvalidHeaders() + public function messagesWithInvalidHeaders() : array { return [ 'invalid-name' => [ @@ -268,7 +268,7 @@ public function messagesWithInvalidHeaders() /** * @dataProvider messagesWithInvalidHeaders */ - public function testDeserializationRaisesExceptionForMalformedHeaders($message, $exceptionMessage) + public function testDeserializationRaisesExceptionForMalformedHeaders($message, $exceptionMessage) : void { $this->expectException(UnexpectedValueException::class); $this->expectExceptionMessage($exceptionMessage); @@ -276,7 +276,7 @@ public function testDeserializationRaisesExceptionForMalformedHeaders($message, Serializer::fromString($message); } - public function testFromStreamThrowsExceptionWhenStreamIsNotReadable() + public function testFromStreamThrowsExceptionWhenStreamIsNotReadable() : void { $stream = $this->createMock(StreamInterface::class); $stream @@ -289,7 +289,7 @@ public function testFromStreamThrowsExceptionWhenStreamIsNotReadable() Serializer::fromStream($stream); } - public function testFromStreamThrowsExceptionWhenStreamIsNotSeekable() + public function testFromStreamThrowsExceptionWhenStreamIsNotSeekable() : void { $stream = $this->createMock(StreamInterface::class); $stream @@ -306,7 +306,7 @@ public function testFromStreamThrowsExceptionWhenStreamIsNotSeekable() Serializer::fromStream($stream); } - public function testFromStreamStopsReadingAfterScanningHeader() + public function testFromStreamStopsReadingAfterScanningHeader() : void { $headers = "POST /foo HTTP/1.0\r\nContent-Type: text/plain\r\nX-Foo-Bar: Baz;\r\n Bat\r\n\r\n"; $payload = $headers . "Content!"; From 7dbd1d3640c44b6eedb2d6ff3ad7b12388ec55c5 Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Thu, 10 Dec 2020 23:58:18 +0100 Subject: [PATCH 04/15] Fix type Signed-off-by: Witold Wasiczko --- src/MessageTrait.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/MessageTrait.php b/src/MessageTrait.php index 53ac94fd..55d0dd3b 100644 --- a/src/MessageTrait.php +++ b/src/MessageTrait.php @@ -405,9 +405,11 @@ private function filterHeaderValue($values) : array /** * Ensure header name and values are valid. * + * @param string $name + * * @throws Exception\InvalidArgumentException */ - private function assertHeader(string $name) : void + private function assertHeader($name) : void { HeaderSecurity::assertValidName($name); } From b2bdaf963df64d9904027d8a565f0163017da03a Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Thu, 10 Dec 2020 23:15:57 +0100 Subject: [PATCH 05/15] Add baseline Signed-off-by: Witold Wasiczko --- psalm-baseline.xml | 137 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 114 insertions(+), 23 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index f5741fe2..30b7f37d 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,6 +1,22 @@ + + + $header + + + $header + $value + + + $value + $values + + + + seek + $contents @@ -27,23 +43,48 @@ $code + + + assertValid + assertValidName + + + (string) $value + + is_string($version) + + array + $stream + + $this->headers[$header] + $header $header - + + $new->headers[$header] + $new->headers[$new->headerNames[$normalized]] + $new->headers[$original] + $this->headers[$header] + $this->headers[$header] + + + $header + $header + $original $value - - $headerNames - + + string[] + $header $header @@ -68,6 +109,24 @@ $this->decoratedStream->getSize() + + + $this->headers[$header] + + + $header + + + array + + + $this->headers[$header] + + + $headers + array + + @@ -98,9 +157,6 @@ $requestTarget $version - - $request->getHeaders() - Request @@ -139,6 +195,10 @@ static::MAX_STATUS_CODE_VALUE static::MIN_STATUS_CODE_VALUE + + $reasonPhrase + $this->reasonPhrase + (int) $code @@ -196,9 +256,6 @@ $status $version - - $response->getHeaders() - (int) $status @@ -305,9 +362,13 @@ $port $value - - $this->port - + + $port + isset($parts['port']) ? $parts['port'] : null + + + $port + (int) $port @@ -466,6 +527,25 @@ $callback $expected + + phpCallbacksForStreams + testAllowsArbitraryPhpCallbacks + testClose + testDetach + testEof + testGetContents + testGetMetadata + testGetSize + testIsReadable + testIsSeekable + testIsWritable + testRead + testRewind + testSeek + testTell + testToString + testWrite + $callback @@ -473,9 +553,6 @@ $ret $ret - - array - @@ -653,6 +730,27 @@ $requestTarget $text + + absoluteForms + headersWithContinuationLines + invalidRequestLines + messagesWithInvalidHeaders + originForms + testCanDeserializeRequestWithAbsoluteForm + testCanDeserializeRequestWithAsteriskForm + testCanDeserializeRequestWithAuthorityForm + testCanDeserializeRequestWithOriginForm + testCanDeserializeResponseWithHeaderContinuations + testCanDeserializeResponseWithMultipleHeadersOfSameName + testDeserializationRaisesExceptionForMalformedHeaders + testFromStreamStopsReadingAfterScanningHeader + testFromStreamThrowsExceptionWhenStreamIsNotReadable + testFromStreamThrowsExceptionWhenStreamIsNotSeekable + testRaisesExceptionDuringDeserializationForInvalidRequestLine + testSerializesBasicRequest + testSerializesMultipleHeadersCorrectly + testSerializesRequestWithBody + $exceptionMessage $message @@ -668,13 +766,6 @@ $method $method - - array - array - array - array - array - $i $line From 46f43c8fb2b58651345938da77a289f315d9c0b2 Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Thu, 10 Dec 2020 23:54:21 +0100 Subject: [PATCH 06/15] Fix some issues found by psalm Signed-off-by: Witold Wasiczko --- psalm-baseline.xml | 137 ++++++++----------------------------------- src/MessageTrait.php | 4 +- 2 files changed, 24 insertions(+), 117 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 30b7f37d..f5741fe2 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,22 +1,6 @@ - - - $header - - - $header - $value - - - $value - $values - - - - seek - $contents @@ -43,48 +27,23 @@ $code - - - assertValid - assertValidName - - - (string) $value - - is_string($version) - - array - $stream - - $this->headers[$header] - $header $header - - $new->headers[$header] - $new->headers[$new->headerNames[$normalized]] - $new->headers[$original] - $this->headers[$header] - $this->headers[$header] - - - $header - $header - $original + $value - - string[] - + + $headerNames + $header $header @@ -109,24 +68,6 @@ $this->decoratedStream->getSize() - - - $this->headers[$header] - - - $header - - - array - - - $this->headers[$header] - - - $headers - array - - @@ -157,6 +98,9 @@ $requestTarget $version + + $request->getHeaders() + Request @@ -195,10 +139,6 @@ static::MAX_STATUS_CODE_VALUE static::MIN_STATUS_CODE_VALUE - - $reasonPhrase - $this->reasonPhrase - (int) $code @@ -256,6 +196,9 @@ $status $version + + $response->getHeaders() + (int) $status @@ -362,13 +305,9 @@ $port $value - - $port - isset($parts['port']) ? $parts['port'] : null - - - $port - + + $this->port + (int) $port @@ -527,25 +466,6 @@ $callback $expected - - phpCallbacksForStreams - testAllowsArbitraryPhpCallbacks - testClose - testDetach - testEof - testGetContents - testGetMetadata - testGetSize - testIsReadable - testIsSeekable - testIsWritable - testRead - testRewind - testSeek - testTell - testToString - testWrite - $callback @@ -553,6 +473,9 @@ $ret $ret + + array + @@ -730,27 +653,6 @@ $requestTarget $text - - absoluteForms - headersWithContinuationLines - invalidRequestLines - messagesWithInvalidHeaders - originForms - testCanDeserializeRequestWithAbsoluteForm - testCanDeserializeRequestWithAsteriskForm - testCanDeserializeRequestWithAuthorityForm - testCanDeserializeRequestWithOriginForm - testCanDeserializeResponseWithHeaderContinuations - testCanDeserializeResponseWithMultipleHeadersOfSameName - testDeserializationRaisesExceptionForMalformedHeaders - testFromStreamStopsReadingAfterScanningHeader - testFromStreamThrowsExceptionWhenStreamIsNotReadable - testFromStreamThrowsExceptionWhenStreamIsNotSeekable - testRaisesExceptionDuringDeserializationForInvalidRequestLine - testSerializesBasicRequest - testSerializesMultipleHeadersCorrectly - testSerializesRequestWithBody - $exceptionMessage $message @@ -766,6 +668,13 @@ $method $method + + array + array + array + array + array + $i $line diff --git a/src/MessageTrait.php b/src/MessageTrait.php index 55d0dd3b..53ac94fd 100644 --- a/src/MessageTrait.php +++ b/src/MessageTrait.php @@ -405,11 +405,9 @@ private function filterHeaderValue($values) : array /** * Ensure header name and values are valid. * - * @param string $name - * * @throws Exception\InvalidArgumentException */ - private function assertHeader($name) : void + private function assertHeader(string $name) : void { HeaderSecurity::assertValidName($name); } From 161fb10557ff79b41284de2d57b45d18993ab0e9 Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Thu, 10 Dec 2020 23:58:18 +0100 Subject: [PATCH 07/15] Fix type Signed-off-by: Witold Wasiczko --- src/MessageTrait.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/MessageTrait.php b/src/MessageTrait.php index 53ac94fd..55d0dd3b 100644 --- a/src/MessageTrait.php +++ b/src/MessageTrait.php @@ -405,9 +405,11 @@ private function filterHeaderValue($values) : array /** * Ensure header name and values are valid. * + * @param string $name + * * @throws Exception\InvalidArgumentException */ - private function assertHeader(string $name) : void + private function assertHeader($name) : void { HeaderSecurity::assertValidName($name); } From 5501af056eb69d704668cb822bcca4866f352ff1 Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Tue, 20 Apr 2021 22:33:58 +0200 Subject: [PATCH 08/15] Fix psalm issues Signed-off-by: Witold Wasiczko --- psalm-baseline.xml | 19 +++++++++---------- test/PhpInputStreamTest.php | 6 +++--- test/RequestTest.php | 2 +- test/Response/JsonResponseTest.php | 2 +- test/ResponseTest.php | 2 +- test/ServerRequestFactoryTest.php | 2 +- test/StreamTest.php | 2 +- 7 files changed, 17 insertions(+), 18 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index f5741fe2..15a14f1b 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -1,5 +1,5 @@ - + $contents @@ -183,6 +183,11 @@ $hasContentType + + + json_encode + + ! is_string($uri) && ! $uri instanceof UriInterface @@ -689,7 +694,7 @@ ['TOTALLY INVALID'] - + $body $contains $expected @@ -698,7 +703,6 @@ $method $method $method - $name $request $requestTarget $uri @@ -818,8 +822,7 @@ - - $key + $value $value @@ -840,9 +843,6 @@ testWithPayload valuesToJsonEncode - - $key - @@ -929,7 +929,7 @@ [ 'TOTALLY INVALID' ] - + $body $code $code @@ -937,7 +937,6 @@ $contains $headers $invalidReasonPhrase - $name $reasonPhrase $value diff --git a/test/PhpInputStreamTest.php b/test/PhpInputStreamTest.php index f5ba7b48..4d402654 100644 --- a/test/PhpInputStreamTest.php +++ b/test/PhpInputStreamTest.php @@ -55,7 +55,7 @@ public function testCanReadStreamIteratively() public function testGetContentsReturnsRemainingContentsOfStream() { - $start = $this->stream->read(128); + $this->stream->read(128); $remainder = $this->stream->getContents(); $contents = $this->getFileContents(); @@ -75,14 +75,14 @@ public function testGetContentsReturnCacheWhenReachedEof() public function testCastingToStringReturnsFullContentsRegardlesOfPriorReads() { - $start = $this->stream->read(128); + $this->stream->read(128); $this->assertStreamContents($this->stream->__toString()); } public function testMultipleCastsToStringReturnSameContentsEvenIfReadsOccur() { $first = (string) $this->stream; - $read = $this->stream->read(128); + $this->stream->read(128); $second = (string) $this->stream; $this->assertSame($first, $second); } diff --git a/test/RequestTest.php b/test/RequestTest.php index c18f3c19..dd1bbb55 100644 --- a/test/RequestTest.php +++ b/test/RequestTest.php @@ -506,7 +506,7 @@ public function headersWithInjectionVectors() * @group ZF2015-04 * @dataProvider headersWithInjectionVectors */ - public function testConstructorRaisesExceptionForHeadersWithCRLFVectors($name, $value) + public function testConstructorRaisesExceptionForHeadersWithCRLFVectors(string $name, $value) { $this->expectException(InvalidArgumentException::class); diff --git a/test/Response/JsonResponseTest.php b/test/Response/JsonResponseTest.php index 39e0635b..23b67f3a 100644 --- a/test/Response/JsonResponseTest.php +++ b/test/Response/JsonResponseTest.php @@ -113,7 +113,7 @@ public function valuesToJsonEncode() /** * @dataProvider valuesToJsonEncode */ - public function testUsesSaneDefaultJsonEncodingFlags($value, $key) + public function testUsesSaneDefaultJsonEncodingFlags($value, string $key) { $defaultFlags = JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP | JSON_UNESCAPED_SLASHES; diff --git a/test/ResponseTest.php b/test/ResponseTest.php index a296b942..a4a12a46 100644 --- a/test/ResponseTest.php +++ b/test/ResponseTest.php @@ -332,7 +332,7 @@ public function headersWithInjectionVectors() * @group ZF2015-04 * @dataProvider headersWithInjectionVectors */ - public function testConstructorRaisesExceptionForHeadersWithCRLFVectors($name, $value) + public function testConstructorRaisesExceptionForHeadersWithCRLFVectors(string $name, $value) { $this->expectException(InvalidArgumentException::class); diff --git a/test/ServerRequestFactoryTest.php b/test/ServerRequestFactoryTest.php index 73b6395f..085908c2 100644 --- a/test/ServerRequestFactoryTest.php +++ b/test/ServerRequestFactoryTest.php @@ -394,7 +394,7 @@ public function testCanCreateServerRequestViaFromGlobalsMethod() 'QUERY_STRING' => 'bar=baz', ]; - $cookies = $query = $body = $files = [ + $cookies = $query = $body = [ 'bar' => 'baz', ]; diff --git a/test/StreamTest.php b/test/StreamTest.php index 81a43579..c9cb9445 100644 --- a/test/StreamTest.php +++ b/test/StreamTest.php @@ -104,7 +104,7 @@ public function testPassingInvalidStreamResourceToConstructorRaisesException() { $this->expectException(InvalidArgumentException::class); - $stream = new Stream([' THIS WILL NOT WORK ']); + new Stream([' THIS WILL NOT WORK ']); } public function testStringSerializationReturnsEmptyStringWhenStreamIsNotReadable() From 5701e4c8871f4428fb36fa29100c9ca058eb2944 Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Tue, 20 Apr 2021 22:36:31 +0200 Subject: [PATCH 09/15] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Maximilian Bösing <2189546+boesing@users.noreply.github.com> Signed-off-by: Witold Wasiczko --- src/MessageTrait.php | 6 +++--- src/Response.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/MessageTrait.php b/src/MessageTrait.php index 55d0dd3b..915233fb 100644 --- a/src/MessageTrait.php +++ b/src/MessageTrait.php @@ -32,7 +32,7 @@ trait MessageTrait * * @var array * - * @psalm-var array> + * @psalm-var array> */ protected $headers = []; @@ -41,7 +41,7 @@ trait MessageTrait * * @var array * - * @psalm-var array + * @psalm-var array */ protected $headerNames = []; @@ -109,7 +109,7 @@ public function withProtocolVersion($version) : MessageInterface * @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> + * @psalm-return array> */ public function getHeaders() : array { diff --git a/src/Response.php b/src/Response.php index f0c81f68..4afd6c0e 100644 --- a/src/Response.php +++ b/src/Response.php @@ -32,7 +32,7 @@ class Response implements ResponseInterface * * @var array * - * @psalm-var array + * @psalm-var array */ private $phrases = [ // INFORMATIONAL CODES From 7b35915379207e65254d237e8dbd111870d4d43b Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Tue, 20 Apr 2021 22:40:09 +0200 Subject: [PATCH 10/15] Improve psalm config Signed-off-by: Witold Wasiczko --- psalm.xml.dist | 4 ---- 1 file changed, 4 deletions(-) diff --git a/psalm.xml.dist b/psalm.xml.dist index b8b808e4..87b4eb29 100644 --- a/psalm.xml.dist +++ b/psalm.xml.dist @@ -18,11 +18,7 @@ - - - - From 53467377866f755b49371929345ecb2e5fbfbba6 Mon Sep 17 00:00:00 2001 From: Witold Wasiczko Date: Tue, 20 Apr 2021 22:48:58 +0200 Subject: [PATCH 11/15] Update baseline Signed-off-by: Witold Wasiczko --- psalm-baseline.xml | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 15a14f1b..cfa7df05 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -41,13 +41,19 @@ $value - + $headerNames + $headers + $new->headers $header $header + + $new->headerNames + $new->headers + @@ -114,9 +120,6 @@ RequestInterface RequestInterface - - $header - $requestTarget From 268a6eb57ec95746a1268a769f0e3cf55b16cddc Mon Sep 17 00:00:00 2001 From: Matthew Weier O'Phinney Date: Tue, 18 May 2021 09:27:09 -0500 Subject: [PATCH 12/15] qa: incorporate feedback from @boesing - Revert addition of scalar type hint in `AbstractSerializer::serializeHeaders` to eliminate BC break - Revert addition of void return type in `CallbackStream::seek` to eliminate BC break - Revert parameter name change in `MessageTrait::hasHeader()` to eliminate BC break Signed-off-by: Matthew Weier O'Phinney --- src/AbstractSerializer.php | 4 +++- src/CallbackStream.php | 3 ++- src/MessageTrait.php | 10 +++++----- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/AbstractSerializer.php b/src/AbstractSerializer.php index 169fac59..de21b19e 100644 --- a/src/AbstractSerializer.php +++ b/src/AbstractSerializer.php @@ -136,8 +136,10 @@ protected static function serializeHeaders(array $headers) : string /** * Filter a header name to wordcase + * + * @param string $header */ - protected static function filterHeader(string $header) : string + protected static function filterHeader($header) : string { $filtered = str_replace('-', ' ', $header); $filtered = ucwords($filtered); diff --git a/src/CallbackStream.php b/src/CallbackStream.php index 9c2e1c60..5d1d4a85 100644 --- a/src/CallbackStream.php +++ b/src/CallbackStream.php @@ -97,8 +97,9 @@ public function isSeekable() : bool /** * {@inheritdoc} + * @return void */ - public function seek($offset, $whence = SEEK_SET) : void + public function seek($offset, $whence = SEEK_SET) { throw Exception\UnseekableStreamException::forCallbackStream(); } diff --git a/src/MessageTrait.php b/src/MessageTrait.php index 915233fb..e490bd3e 100644 --- a/src/MessageTrait.php +++ b/src/MessageTrait.php @@ -138,20 +138,20 @@ public function hasHeader($header) : bool * If the header does not appear in the message, this method MUST return an * empty array. * - * @param string $name Case-insensitive header field name. + * @param string $header Case-insensitive header field name. * @return string[] An array of string values as provided for the given * header. If the header does not appear in the message, this method MUST * return an empty array. */ - public function getHeader($name) : array + public function getHeader($header) : array { - if (! $this->hasHeader($name)) { + if (! $this->hasHeader($header)) { return []; } - $name = $this->headerNames[strtolower($name)]; + $header = $this->headerNames[strtolower($header)]; - return $this->headers[$name]; + return $this->headers[$header]; } /** From d839415d90f15f77b767bb0b0a3a1735afb1d105 Mon Sep 17 00:00:00 2001 From: Matthew Weier O'Phinney Date: Tue, 18 May 2021 09:29:24 -0500 Subject: [PATCH 13/15] fix: add parameter type hint annotations to CallbackStream::seek method Signed-off-by: Matthew Weier O'Phinney --- src/CallbackStream.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/CallbackStream.php b/src/CallbackStream.php index 5d1d4a85..e872672f 100644 --- a/src/CallbackStream.php +++ b/src/CallbackStream.php @@ -97,6 +97,8 @@ public function isSeekable() : bool /** * {@inheritdoc} + * @param int $offset + * @param int $whence * @return void */ public function seek($offset, $whence = SEEK_SET) From 3c483b50ed05db2149e4da2c24316e02cc2dad5e Mon Sep 17 00:00:00 2001 From: Matthew Weier O'Phinney Date: Tue, 18 May 2021 09:33:28 -0500 Subject: [PATCH 14/15] qa: update phpunit config to latest schema Signed-off-by: Matthew Weier O'Phinney --- phpunit.xml.dist | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 2c37f419..ce066ca0 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,19 +1,25 @@ - + + + + + src + + + ./test + ./vendor/http-interop/http-factory-tests/test - - - src - - - From 119a9cf9f5036fc869f870c50bd15f78cc8fa1a3 Mon Sep 17 00:00:00 2001 From: Matthew Weier O'Phinney Date: Tue, 18 May 2021 09:40:08 -0500 Subject: [PATCH 15/15] qa: revert variable name change Signed-off-by: Matthew Weier O'Phinney --- src/Request.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Request.php b/src/Request.php index d81d1144..ddf753b2 100644 --- a/src/Request.php +++ b/src/Request.php @@ -51,10 +51,10 @@ public function getHeaders() : array /** * {@inheritdoc} */ - public function getHeader($name) : array + public function getHeader($header) : array { - if (! $this->hasHeader($name)) { - if (strtolower($name) === 'host' + if (! $this->hasHeader($header)) { + if (strtolower($header) === 'host' && $this->uri->getHost() ) { return [$this->getHostFromUri()]; @@ -63,8 +63,8 @@ public function getHeader($name) : array return []; } - $name = $this->headerNames[strtolower($name)]; + $header = $this->headerNames[strtolower($header)]; - return $this->headers[$name]; + return $this->headers[$header]; } }