diff --git a/composer.json b/composer.json index d8230f2..bdc167e 100644 --- a/composer.json +++ b/composer.json @@ -48,7 +48,9 @@ "laminas/laminas-modulemanager": "^2.10.1", "phpdocumentor/reflection-docblock": "^5.2.2", "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.3", + "psalm/plugin-phpunit": "^0.15.1", + "vimeo/psalm": "^4.6" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 7f60da8..edf8293 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": "92f3c547c28623d55827f0641cda4e14", + "content-hash": "bf8f6b47ee7c0f9e7b9532c4aef1250f", "packages": [ { "name": "brick/varexporter", @@ -1691,6 +1691,383 @@ } ], "packages-dev": [ + { + "name": "amphp/amp", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/amphp/amp.git", + "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/amp/zipball/efca2b32a7580087adb8aabbff6be1dc1bb924a9", + "reference": "efca2b32a7580087adb8aabbff6be1dc1bb924a9", + "shasum": "" + }, + "require": { + "php": ">=7" + }, + "require-dev": { + "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": { + "Amp\\": "lib" + }, + "files": [ + "lib/functions.php", + "lib/Internal/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "http://amphp.org/amp", + "keywords": [ + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" + ], + "support": { + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/amp/issues", + "source": "https://github.com/amphp/amp/tree/v2.5.2" + }, + "funding": [ + { + "url": "https://github.com/amphp", + "type": "github" + } + ], + "time": "2021-01-10T17:06:37+00:00" + }, + { + "name": "amphp/byte-stream", + "version": "v1.8.0", + "source": { + "type": "git", + "url": "https://github.com/amphp/byte-stream.git", + "reference": "f0c20cf598a958ba2aa8c6e5a71c697d652c7088" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/f0c20cf598a958ba2aa8c6e5a71c697d652c7088", + "reference": "f0c20cf598a958ba2aa8c6e5a71c697d652c7088", + "shasum": "" + }, + "require": { + "amphp/amp": "^2", + "php": ">=7.1" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1.4", + "friendsofphp/php-cs-fixer": "^2.3", + "jetbrains/phpstorm-stubs": "^2019.3", + "phpunit/phpunit": "^6 || ^7 || ^8", + "psalm/phar": "^3.11.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Amp\\ByteStream\\": "lib" + }, + "files": [ + "lib/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + } + ], + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "http://amphp.org/byte-stream", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" + ], + "support": { + "irc": "irc://irc.freenode.org/amphp", + "issues": "https://github.com/amphp/byte-stream/issues", + "source": "https://github.com/amphp/byte-stream/tree/master" + }, + "time": "2020-06-29T18:35:05+00:00" + }, + { + "name": "composer/package-versions-deprecated", + "version": "1.11.99.1", + "source": { + "type": "git", + "url": "https://github.com/composer/package-versions-deprecated.git", + "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/7413f0b55a051e89485c5cb9f765fe24bb02a7b6", + "reference": "7413f0b55a051e89485c5cb9f765fe24bb02a7b6", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.1.0 || ^2.0", + "php": "^7 || ^8" + }, + "replace": { + "ocramius/package-versions": "1.11.99" + }, + "require-dev": { + "composer/composer": "^1.9.3 || ^2.0@dev", + "ext-zip": "^1.13", + "phpunit/phpunit": "^6.5 || ^7" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "support": { + "issues": "https://github.com/composer/package-versions-deprecated/issues", + "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.1" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-11-11T10:22:58+00:00" + }, + { + "name": "composer/semver", + "version": "3.2.4", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", + "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.54", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.2.4" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-11-13T08:59:24+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "1.4.5", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "f28d44c286812c714741478d968104c5e604a1d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f28d44c286812c714741478d968104c5e604a1d4", + "reference": "f28d44c286812c714741478d968104c5e604a1d4", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/1.4.5" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2020-11-13T08:04:11+00:00" + }, { "name": "dealerdirect/phpcodesniffer-composer-installer", "version": "v0.7.1", @@ -1761,6 +2138,43 @@ }, "time": "2020-12-07T18:04:37+00:00" }, + { + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", + "source": { + "type": "git", + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "shasum": "" + }, + "require": { + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "support": { + "issues": "https://github.com/dnoegel/php-xdg-base-dir/issues", + "source": "https://github.com/dnoegel/php-xdg-base-dir/tree/v0.1.1" + }, + "time": "2019-12-04T15:06:13+00:00" + }, { "name": "doctrine/instantiator", "version": "1.4.0", @@ -1831,16 +2245,117 @@ "time": "2020-11-10T18:47:58+00:00" }, { - "name": "laminas/laminas-coding-standard", - "version": "2.1.4", + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.2.0", "source": { "type": "git", - "url": "https://github.com/laminas/laminas-coding-standard.git", - "reference": "d75f1acf615232e108da2d2cf5a7df3e527b8f38" + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "06f0b06043c7438959dbdeed8bb3f699a19be22e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/d75f1acf615232e108da2d2cf5a7df3e527b8f38", + "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": "laminas/laminas-coding-standard", + "version": "2.1.4", + "source": { + "type": "git", + "url": "https://github.com/laminas/laminas-coding-standard.git", + "reference": "d75f1acf615232e108da2d2cf5a7df3e527b8f38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laminas/laminas-coding-standard/zipball/d75f1acf615232e108da2d2cf5a7df3e527b8f38", "reference": "d75f1acf615232e108da2d2cf5a7df3e527b8f38", "shasum": "" }, @@ -1942,6 +2457,110 @@ ], "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": "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", @@ -2388,41 +3007,668 @@ "version": "9.2.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", + "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.10.2", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", + "theseer/tokenizer": "^1.2.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcov": "*", + "ext-xdebug": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.2-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", + "homepage": "https://github.com/sebastianbergmann/php-code-coverage", + "keywords": [ + "coverage", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-11-28T06:44:49+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", + "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "FilterIterator implementation that filters files based on a list of suffixes.", + "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", + "keywords": [ + "filesystem", + "iterator" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:57:25+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", + "keywords": [ + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "keywords": [ + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.5.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f661659747f2f87f9e72095bb207bceb0f151cb4", + "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4", + "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": { + "ext-pdo": "*", + "phpspec/prophecy-phpunit": "^2.0.1" + }, + "suggest": { + "ext-soap": "*", + "ext-xdebug": "*" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.5-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ], + "files": [ + "src/Framework/Assert/Functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "The PHP Unit Testing framework.", + "homepage": "https://phpunit.de/", + "keywords": [ + "phpunit", + "testing", + "xunit" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.2" + }, + "funding": [ + { + "url": "https://phpunit.de/donate.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-02-02T14:45:58+00:00" + }, + { + "name": "psalm/plugin-phpunit", + "version": "0.15.1", + "source": { + "type": "git", + "url": "https://github.com/psalm/psalm-plugin-phpunit.git", + "reference": "30ca25ce069bf4943c36e59b7df6954f6af05e64" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psalm/psalm-plugin-phpunit/zipball/30ca25ce069bf4943c36e59b7df6954f6af05e64", + "reference": "30ca25ce069bf4943c36e59b7df6954f6af05e64", + "shasum": "" + }, + "require": { + "composer/package-versions-deprecated": "^1.10", + "composer/semver": "^1.4 || ^2.0 || ^3.0", + "ext-simplexml": "*", + "php": "^7.1 || ^8.0", + "vimeo/psalm": "dev-master || dev-4.x || ^4.0" + }, + "conflict": { + "phpunit/phpunit": "<7.5" + }, + "require-dev": { + "codeception/codeception": "^4.0.3", + "php": "^7.3 || ^8.0", + "phpunit/phpunit": "^7.5 || ^8.0 || ^9.0", + "squizlabs/php_codesniffer": "^3.3.1", + "weirdan/codeception-psalm-module": "^0.11.0", + "weirdan/prophecy-shim": "^1.0 || ^2.0" + }, + "type": "psalm-plugin", + "extra": { + "psalm": { + "pluginClass": "Psalm\\PhpUnitPlugin\\Plugin" + } + }, + "autoload": { + "psr-4": { + "Psalm\\PhpUnitPlugin\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Brown", + "email": "github@muglug.com" + } + ], + "description": "Psalm plugin for PHPUnit", + "support": { + "issues": "https://github.com/psalm/psalm-plugin-phpunit/issues", + "source": "https://github.com/psalm/psalm-plugin-phpunit/tree/0.15.1" + }, + "time": "2021-01-23T00:19:07+00:00" + }, + { + "name": "psr/log", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "support": { + "source": "https://github.com/php-fig/log/tree/1.1.3" + }, + "time": "2020-03-23T09:12:05+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:08:49+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the PHP code units", + "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", - "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", + "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": { @@ -2437,20 +3683,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.5" + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -2458,24 +3698,26 @@ "type": "github" } ], - "time": "2020-11-28T06:44:49+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" @@ -2483,7 +3725,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2498,19 +3740,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": [ { @@ -2518,36 +3772,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": { @@ -2566,14 +3817,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": [ { @@ -2581,32 +3829,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": { @@ -2621,18 +3870,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": [ { @@ -2640,20 +3895,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": { @@ -2662,10 +3917,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": { @@ -2680,18 +3938,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": [ { @@ -2699,75 +3958,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.2", + "name": "sebastian/exporter", + "version": "4.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f661659747f2f87f9e72095bb207bceb0f151cb4", - "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4", + "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/", @@ -2777,57 +4000,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.2" + "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-02-02T14:45:58+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": { @@ -2842,15 +4081,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": [ { @@ -2858,23 +4099,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": { @@ -2902,11 +4144,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": [ { @@ -2914,24 +4156,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" @@ -2939,7 +4183,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2957,11 +4201,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": [ { @@ -2969,26 +4213,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" @@ -2996,7 +4238,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3012,30 +4254,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": [ { @@ -3043,24 +4268,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": { @@ -3069,7 +4293,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3084,15 +4308,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": [ { @@ -3100,33 +4331,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": { @@ -3142,23 +4372,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": [ { @@ -3166,20 +4386,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", + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", "shasum": "" }, "require": { @@ -3188,13 +4408,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": { @@ -3209,19 +4426,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": [ { @@ -3229,34 +4442,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": { @@ -3271,34 +4479,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": [ { @@ -3306,621 +4495,825 @@ "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": "slevomat/coding-standard", + "version": "6.4.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "696dcca217d0c9da2c40d02731526c1e25b65346" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", - "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/696dcca217d0c9da2c40d02731526c1e25b65346", + "reference": "696dcca217d0c9da2c40d02731526c1e25b65346", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", + "php": "^7.1 || ^8.0", + "phpstan/phpdoc-parser": "0.4.5 - 0.4.9", + "squizlabs/php_codesniffer": "^3.5.6" }, "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phing/phing": "2.16.3", + "php-parallel-lint/php-parallel-lint": "1.2.0", + "phpstan/phpstan": "0.12.48", + "phpstan/phpstan-deprecation-rules": "0.12.5", + "phpstan/phpstan-phpunit": "0.12.16", + "phpstan/phpstan-strict-rules": "0.12.5", + "phpunit/phpunit": "7.5.20|8.5.5|9.4.0" }, - "type": "library", + "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "6.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" + "MIT" ], + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2" + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/6.4.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/kukulich", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" } ], - "time": "2020-10-26T15:55:19+00:00" + "time": "2020-10-05T12:39:37+00:00" }, { - "name": "sebastian/lines-of-code", - "version": "1.0.3", + "name": "squizlabs/php_codesniffer", + "version": "3.5.8", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", + "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, + "bin": [ + "bin/phpcs", + "bin/phpcbf" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "3.x-dev" } }, - "autoload": { - "classmap": [ - "src/" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "BSD-3-Clause" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", + "name": "Greg Sherwood", "role": "lead" } ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards" + ], "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "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-11-28T06:42:11+00:00" + "time": "2020-10-23T02:01:07+00:00" }, { - "name": "sebastian/object-enumerator", - "version": "4.0.4", + "name": "symfony/console", + "version": "v5.2.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "url": "https://github.com/symfony/console.git", + "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/symfony/console/zipball/89d4b176d12a2946a1ae4e34906a025b7b6b135a", + "reference": "89d4b176d12a2946a1ae4e34906a025b7b6b135a", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "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": "4.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" + "name": "Fabien Potencier", + "email": "fabien@symfony.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": "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/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/symfony/console/tree/v5.2.3" }, "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-28T22:06:19+00:00" }, { - "name": "sebastian/object-reflector", - "version": "2.0.4", + "name": "symfony/polyfill-ctype", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "^9.3" + "suggest": { + "ext-ctype": "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\\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": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], "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-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:14:26+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { - "name": "sebastian/recursion-context", - "version": "4.0.4", + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "5601e09b69f26c1828b13b6bb87cb07cddba3170" }, "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-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": "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\\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": "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 grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "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-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:17:30+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.3", + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "43a0283138253ed1d48d352ab6d0bdb3f809f248" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "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.0" + "suggest": { + "ext-intl": "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": { + "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": "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 intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "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-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-09-28T06:45:17+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "sebastian/type", - "version": "2.3.1", + "name": "symfony/polyfill-mbstring", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "5232de97ee3b75b0360528dae24e73db49566ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "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.3" + "suggest": { + "ext-mbstring": "For best performance" }, "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": { - "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", - "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 for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "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-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-10-26T13:18:59+00:00" + "time": "2021-01-22T09:19:47+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "symfony/polyfill-php73", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", "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\\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": "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 7.3+ 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-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-09-28T06:39:44+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { - "name": "slevomat/coding-standard", - "version": "6.4.1", + "name": "symfony/polyfill-php80", + "version": "v1.22.1", "source": { "type": "git", - "url": "https://github.com/slevomat/coding-standard.git", - "reference": "696dcca217d0c9da2c40d02731526c1e25b65346" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/696dcca217d0c9da2c40d02731526c1e25b65346", - "reference": "696dcca217d0c9da2c40d02731526c1e25b65346", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", "shasum": "" }, "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.1 || ^8.0", - "phpstan/phpdoc-parser": "0.4.5 - 0.4.9", - "squizlabs/php_codesniffer": "^3.5.6" - }, - "require-dev": { - "phing/phing": "2.16.3", - "php-parallel-lint/php-parallel-lint": "1.2.0", - "phpstan/phpstan": "0.12.48", - "phpstan/phpstan-deprecation-rules": "0.12.5", - "phpstan/phpstan-phpunit": "0.12.16", - "phpstan/phpstan-strict-rules": "0.12.5", - "phpunit/phpunit": "7.5.20|8.5.5|9.4.0" + "php": ">=7.1" }, - "type": "phpcodesniffer-standard", + "type": "library", "extra": { "branch-alias": { - "dev-master": "6.x-dev" + "dev-main": "1.22-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" } }, "autoload": { "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" - } + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/6.4.1" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.1" }, "funding": [ { - "url": "https://github.com/kukulich", + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2020-10-05T12:39:37+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "3.5.8", + "name": "symfony/service-contracts", + "version": "v2.2.0", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "9d583721a7157ee997f235f327de038e7ea6dac4" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/9d583721a7157ee997f235f327de038e7ea6dac4", - "reference": "9d583721a7157ee997f235f327de038e7ea6dac4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", + "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", "shasum": "" }, "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" + "php": ">=7.2.5", + "psr/container": "^1.0" }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" + "suggest": { + "symfony/service-implementation": "" }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "2.2-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "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": "https://github.com/squizlabs/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/master" }, - "time": "2020-10-23T02:01:07+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": "2020-09-07T11:33:47+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.22.1", + "name": "symfony/string", + "version": "v5.2.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + "url": "https://github.com/symfony/string.git", + "reference": "c95468897f408dd0aca2ff582074423dd0455122" }, "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/c95468897f408dd0aca2ff582074423dd0455122", + "reference": "c95468897f408dd0aca2ff582074423dd0455122", "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/", @@ -3929,24 +5322,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.3" }, "funding": [ { @@ -3962,7 +5357,7 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2021-01-25T15:14:59+00:00" }, { "name": "theseer/tokenizer", @@ -4014,6 +5409,111 @@ ], "time": "2020-07-12T23:59:07+00:00" }, + { + "name": "vimeo/psalm", + "version": "4.6.2", + "source": { + "type": "git", + "url": "https://github.com/vimeo/psalm.git", + "reference": "bca09d74adc704c4eaee36a3c3e9d379e290fc3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/bca09d74adc704c4eaee36a3c3e9d379e290fc3b", + "reference": "bca09d74adc704c4eaee36a3c3e9d379e290fc3b", + "shasum": "" + }, + "require": { + "amphp/amp": "^2.1", + "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", + "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": { + "amphp/amp": "^2.4.2", + "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/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.6.2" + }, + "time": "2021-02-26T02:24:18+00:00" + }, { "name": "webimpress/coding-standard", "version": "1.2.1", @@ -4121,6 +5621,56 @@ "source": "https://github.com/webmozarts/assert/tree/1.9.1" }, "time": "2020-07-08T17:02:28+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-baseline.xml b/psalm-baseline.xml new file mode 100644 index 0000000..0284ea6 --- /dev/null +++ b/psalm-baseline.xml @@ -0,0 +1,1615 @@ + + + + + HalConfig + HalConfig + JsonRenderer + JsonRenderer + JsonStrategy + JsonStrategy + MetadataMap + MetadataMap + \ZF\Hal\HalConfig + \ZF\Hal\JsonRenderer + \ZF\Hal\JsonStrategy + \ZF\Hal\MetadataMap + + + + + ! is_int($page) + ! is_int($size) + gettype($collection) + is_array($options) + is_array($options) + is_array($params) + is_array($params) + + + $collection + + + $this->collectionRouteOptions + $this->collectionRouteParams + + + string + string + + + $collectionRoute + $entityLinks + $entityRoute + Collection + + + (int) $page + (int) $size + (string) $name + (string) $route + (string) $route + + + is_object($collection) + + + + + ! is_object($entity) && ! is_array($entity) + + + Entity + + + + + $hydrator instanceof ExtractionInterface + + + $hydrator + + + $hydrator + + + ExtractionInterface|false + + + $this->hydratorMap[$classLower] + + + $defaultHydrator + + + $hydrators instanceof HydratorPluginManager + $this->defaultHydrator instanceof ExtractionInterface + + + + + array + array + + + $entity->jsonSerialize() + $this->serializedEntities[$entity] + $this->serializedEntities[$entity] + + + + + setLinkExtractor + + + $subLink + + + + + hasUrl + + + $link->getRoute() + + + + + $config + + + array|ArrayAccess + + + + + + HalControllerPluginFactory + + + getServiceLocator + + + $helpers + + + Hal + + + get + + + $helpers->get('Hal') + + + + + $apiProblemRenderer + $helpers + + + $apiProblemRenderer + $helpers + + + + + $container->get('Laminas\ApiTools\Hal\JsonRenderer') + + + + + getServiceLocator + + + $rendererOptions->getRenderEmbeddedCollections() + $rendererOptions->getRenderEmbeddedEntities() + + + $container->get('EventManager') + $hydratorServiceName + $linkCollectionExtractor + $linkUrlBuilder + $metadataMap + + + $class + + + $hydratorServiceName + $linkCollectionExtractor + $linkUrlBuilder + $metadataMap + + + getHydratorManager + + + + + $container->get(LinkExtractor::class) + + + + + $container->get(LinkUrlBuilder::class) + + + + + $halConfig['options']['use_proxy'] + $urlHelper + + + $halConfig['options'] + + + $halConfig + $urlHelper + $viewHelperManager + + + get + get + + + + + ContainerException + + + $hydrators + $map + + + $config + $hydrators + $map + + + + + ContainerException + + + $rendererConfig + + + $config + $rendererConfig + $rendererConfig['render_embedded_entities'] + + + + + hasUrl + + + is_array($options) + is_array($params) + + + + $name + $spec['rel'] + $spec['url'] + + + $name + + + self + + + $props + $relation + + + $href + $route + + + (string) $relation + (string) $route + (string) $this->href + + + new static($spec['rel']) + + + + + getRelation + + + $relationLinks + + + LinkInterface|Link|array|null + + + $this->links[$relation] + + + + + $this->links instanceof LinkCollection + + + + + add + add + add + add + add + + + $halCollection->getCollectionRouteOptions() + + + configureCollection + injectFirstLink + injectLastLink + injectLinks + injectNextLink + injectPrevLink + injectSelfLink + + + $page + + + $page + $pageCount + + + count + count + setCurrentPageNumber + setItemCountPerPage + + + count + count + setCurrentPageNumber + setItemCountPerPage + + + + + $resource + + + add + + + $resource->getCollectionRouteOptions() + $resource->getCollectionRouteParams() + + + array + array + + + injectSelfLink + + + (string) $route + + + + + injectSelfLink + + + + + null === $this->entityRoute + + + setHydrators + + + $filteredKey + $hydrator + $legacyIdentifierName + $this->entityIdentifierName + $this->routeIdentifierName + $value + + + new $hydrator() + + + $filteredKey + + + $this->getRoute() + $this->getUrl() + + + $entityIdentifierName + $entityRoute + $hydrator + $hydrators + $maxDepth + $route + $routeIdentifierName + $url + + + (bool) $flag + (string) $collectionName + + + $hydrators instanceof HydratorPluginManager + null !== $this->hydrator + null !== $this->hydrators + null !== $this->route + null !== $this->url + + + $this->entityIdentifierName + $this->routeIdentifierName + + + + + null === $this->hydrators + + + false + + + Metadata + + + $this->map + + + $this->map[$class] + + + $options + + + $hydrators + + + $hydrators instanceof HydratorPluginManager + $this->map[$class] instanceof Metadata + + + + + $events + + + $events + + + array + + + getEventManager + + + include __DIR__ . '/../config/module.config.php' + + + + + $collection + $collection + + + Resource + + + add + + + ! $metadata + $link instanceof Link + $this->entityExtractor instanceof EntityExtractor + $this->entityHydratorManager instanceof EntityHydratorManager + $this->metadataMap instanceof MetadataMap + $this->paginationInjector instanceof PaginationInjectorInterface + $this->resourceFactory instanceof ResourceFactory + $this->selfLinkInjector instanceof SelfLinkInjectorInterface + + + self + + + $halEntity + + + Entity + + + $r + + + function ($r) { + + + extractEmbeddedCollection + extractEmbeddedEntity + injectSelfLink + marshalMetadataLinks + setServerUrlHelper + setUrlHelper + + + $entity + $eventParams + $eventParams['route'] + $eventParams['routeOptions'] + $eventParams['routeParams'] + $link + + + $key + $key + $key + $key + + + $parent['_embedded'][$key] + $parent['_embedded'][$key] + + + $this->entityHashStack[$entityHash] + + + $entity + $entity + $eventParams + $id + $id + $link + $payload['page_count'] + $payload['page_size'] + $payload['total_items'] + $payload['total_items'] + $value + $value + + + getId + + + $entity + $eventParams['route'] + $eventParams['routeOptions'] + $eventParams['routeParams'] + + + $route + + + $controller + $entityExtractor + $entityHydratorManager + $linkCollectionExtractor + $linkUrlBuilder + $metadataMap + $paginationInjector + $resourceFactory + $selfLinkInjector + Hal + + + $hydrators + + + (int) $collection->getTotalItemCount() + + + $hydrators instanceof HydratorPluginManager + $metadata + $metadata + + + prepareArgs + + + + + $this->renderEmbeddedCollections + $this->renderEmbeddedEntities + + + string + string + + + setDefaultHydrator + setHydrators + setRenderEmbeddedCollections + setRenderEmbeddedEntities + + + $defaultHydrator + + + (bool) $flag + (bool) $flag + + + + + Resource + + + + + $object + + + add + add + add + + + entityextractor + entityextractor + + + marshalMetadataLinks + + + $id + $linkData + + + $id + $linkData + $param + $params[$key] + + + $object + $object + $object + $object + + + $metadata->getEntityRoute() + $metadata->getRoute() + $metadata->getRoute() + $metadata->getUrl() + + + + + $payload + $payload + + + + + $this->helpers instanceof HelperPluginManager + + + setHelperPluginManager + + + $nameOrModel + $payload + $payload + $values + $values + + + $helper + $helper + $payload + $payload + + + renderCollection + renderEntity + + + $helpers + $viewEvent + HalJsonRenderer + + + $event + + + + + $this->renderer + + + $headers + + + addHeaderLine + + + null|HalJsonRenderer + + + $model + + + setContent + + + getHeaders + + + setViewEvent + + + + + add + add + add + + + $this->helpers + $this->router + + + $child + $child + $child->_links + $child->_links + $child->_links->self + $child->_links->self + $child->_links->self->href + $child->_links->self->href + $test + $test + $test + $test + $test + $test + $test + $test->_embedded + $test->_embedded + $test->_links + $test->_links + $test->_links + $test->_links + $test->_links + $test->_links->self + $test->_links->self + $test->_links->self + $test->_links->self + $test->_links->self + + + $child + $child + $collection1[] + $test + $test + $test + $test + $test + + + setRouteMatch + setRouteMatch + setRouteMatch + setRouteMatch + setRouteMatch + setRouter + + + $child->_links + $child->_links + $child->_links->self + $child->_links->self + $child->_links->self->href + $child->_links->self->href + $test->_embedded + $test->_embedded + $test->_embedded->child + $test->_embedded->child + $test->_links + $test->_links + $test->_links + $test->_links + $test->_links + $test->_links->self + $test->_links->self + $test->_links->self + $test->_links->self + $test->_links->self + $test->_links->self->href + $test->_links->self->href + $test->_links->self->href + $test->_links->self->href + $test->_links->self->href + + + $this->router + + + getParam + getParam + getParam + getParam + getParam + + + $this->router + $this->router + $this->router + $this->router + $this->router + V2TreeRouteStack|TreeRouteStack + + + + + add + add + + + 'item/route' + + + $collection + + + array + + + + + $defaultHydrator + $hydrator + $hydratorClass + $hydratorClass + $hydratorClass + $this->hydratorClass + + + $hydratorClass + $this->hydratorClass + + + new $hydratorClass() + new $hydratorClass() + + + + + + $errno + $errstr + + + $entity + $errstr + + + array + array + + + $secondRetrieval['foo'] + + + $entity['foo'] + + + + + ObjectProperty::class + + + entityextractor + entityextractor + entityextractor + entityextractor + + + new $this->hydratorClass() + + + testExtractOfArrayObjectEntityWillExtractCorrectly + + + extract + + + + + add + add + add + add + add + add + + + testExtractGivenLinkCollectionShouldReturnArrayWithExtractionOfEachLink + testLinkCollectionWithTwoLinksForSameRelationShouldReturnArrayWithOneKeyAggregatingLinks + + + assertIsArray + assertIsArray + + + + + $match + + + null|RouteMatch|V2RouteMatch + + + getParam + + + assertIsArray + + + V2RouteMatch + + + $match + null|RouteMatch|V2RouteMatch + + + + + $factory + + + + + $factory + + + + + $pluginManager + $services + + + $factory + + + + + $serverUrlHelper = $this->prophesize(Helper\ServerUrl::class) + + + $serverUrlHelper + + + $factory + $factory + + + shouldBeCalled + + + + + ObjectProperty::class + ObjectProperty::class + ObjectProperty::class + + + $factory + $factory + + + + + add + add + add + add + add + add + add + add + add + add + add + + + testCanAddDiscreteLinkRelations + testCanAddDuplicateLinkRelations + testCanIterateLinks + testCanOverwriteLinkRelations + testCanRemoveLinkRelations + testCannotDuplicateSelf + + + + + getProps + getRelation + getRelation + getRelation + getRelation + getUrl + getUrl + hasUrl + hasUrl + + + testCanSetLinkRoute + testCanSetLinkUrl + testCanSetRouteOptionsSeparately + testCanSetRouteOptionsWhenSpecifyingRoute + testCanSetRouteParamsSeparately + testCanSetRouteParamsWhenSpecifyingRoute + testConstructorTakesLinkRelationName + testFactoryCanGenerateLinkWithArbitraryProperties + testFactoryCanGenerateLinkWithRouteInformation + testFactoryCanGenerateLinkWithUrl + testHasRouteReturnsFalseWhenRouteIsNotSet + testHasRouteReturnsTrueWhenRouteIsSet + testHasUrlReturnsFalseWhenUrlIsNotSet + testHasUrlReturnsTrueWhenUrlIsSet + testIsCompleteReturnsFalseIfNeitherUrlNorRouteIsSet + testIsCompleteReturnsTrueWhenRouteIsSet + testIsCompleteReturnsTrueWhenUrlIsSet + testSettingRouteAfterSettingUrlRaisesException + testSettingUrlAfterSettingRouteRaisesException + + + + + testInjectPaginationLinksGivenCollectionRouteNameShouldInjectLinksWithSameRoute + testInjectPaginationLinksGivenEmptyCollectionShouldNotInjectAnyLink + testInjectPaginationLinksGivenFirstPageShouldInjectLinksExceptForPrevious + testInjectPaginationLinksGivenIntermediatePageShouldInjectAllLinks + testInjectPaginationLinksGivenLastPageShouldInjectLinksExceptForNext + testInjectPaginationLinksGivenPageGreaterThanPageCountShouldReturnApiProblem + + + getRoute + getRoute + getRoute + getRoute + getRoute + + + getRoute + getRoute + getRoute + getRoute + getRoute + + + getRoute + getRoute + getRoute + getRoute + getRoute + + + + + $linkRouteParams + + + $linkRouteParams + + + getRouteParams + + + getRouteParams + + + getRouteParams + + + + + new $hydratorClass() + new $hydratorClass() + + + Hydrator\ArraySerializable::class + Hydrator\ObjectProperty::class + + + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + add + getUrl + hasUrl + setServerUrlHelper + setUrlHelper + + + assertIsArray + is_callable($collection) + + + $contact + $contact + $contact + $first + $first + $rendered + $rendered + $rendered + $rendered + $rendered + $result + $result + $result + $result + $result + $result + $result + $result + $result + $result + $second + $second + + + $entity['_links'] + $entity['_links'] + + + $key + $key + $key + + + $childCollection + $collection + $collection + new TestAsset\EmbeddedEntity('bar', 'Bar') + new TestAsset\EmbeddedEntity('bar', 'Bar') + new TestAsset\EmbeddedEntity('bar', 'Bar') + new TestAsset\EmbeddedEntityWithBackReference('bar', $object) + new TestAsset\EmbeddedEntityWithBackReference('bar', $object1) + new TestAsset\EmbeddedEntityWithBackReference('bar', $object1) + new TestAsset\EmbeddedEntityWithCustomIdentifier('baz', 'Baz') + new TestAsset\EmbeddedEntityWithCustomIdentifier('baz', 'Baz') + new TestAsset\EmbeddedProxyEntity('bar', 'Bar') + new TestAsset\EmbeddedProxyEntityWithCustomIdentifier('baz', 'Baz') + + + $rendered + + + object + + + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + + + new $hydratorClass() + new $hydratorClass() + + + $e + $e + $e + $e + + + $collection + $contact + $embed + $embed + $embed + $embed + $embed + $embed + $embed + $embed + $embed + $embed + $embedded + $embedded + $embedded + $entity + $entity + $exception['class'] + $exception['class'] + $exception['message'] + $exception['message'] + $first + $first['href'] + $item + $item + $item + $item + $item + $item + $item + $item + $item + $item + $item + $link + $links + $links + $rendered['_links'] + $rendered['_links'] + $rendered['_links'] + $rendered['_links'] + $rendered['_links'] + $rendered['_links'] + $rendered['_links'] + $rendered['_links']['arrayLink'] + $rendered['_links']['embeddedLink'] + $rendered['_links']['embeddedLink'] + $rendered['_links']['self']['href'] + $user + $user + $user + $user + $user + $user + $user + $user + + + $embed['contacts'] + $embed['contacts'] + $embed['first_child'] + $embed['first_child'] + $embed['resources'] + $embed['resources'] + $embed['second_child'] + $embed['second_child'] + $embedded['user'] + $embedded['user'] + $embedded['user'] + $entity['_links'] + $entity['_links'][$relation] + $first['href'] + $item['_embedded'] + $item['_embedded'] + $item['foo'] + $item['foo'] + $item['foo'] + $item['id'] + $item['id'] + $item['name'] + $link['href'] + $links[$relation] + $links['first'] + $rendered['_links']['arrayLink'] + $rendered['_links']['embeddedLink'] + $rendered['_links']['embeddedLink'] + $rendered['_links']['embeddedLink'] + $rendered['_links']['embeddedLink'] + $rendered['_links']['self'] + $result['_embedded']['items'] + $result['_embedded']['items'] + $user[$key] + $user[$key] + $user[$key] + + + $collection + $collection + $collection + $collection + $contact + $embed + $embed + $embed + $embed + $embed + $embed + $embedded + $embedded + $embedded + $entity + $entity + $first + $href + $item + $item + $item + $item + $item + $link + $links + $links + $params + $renderedCollection + $user + $user + $user + $user + $value + $value + $value + + + $collection() + + + array + array + array + + + get + getLinks + getParam + getParam + getParam + getParam + getParam + setAttributes + setRouteParams + + + $contact['id'] + $contact['id'] + + + $expectedExceptionClass + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $result + $result + $router + $router + + + getRoute + getRouteOptions + getRouteParams + getUrl + hasRoute + hasUrl + + + var_export($item, 1) + var_export($item, 1) + var_export($item, 1) + var_export($item, 1) + var_export($link, 1) + var_export($links, 1) + var_export($links, 1) + var_export($result, 1) + var_export($result, 1) + var_export($result, 1) + var_export($result, 1) + + + getRoute + getRouteOptions + getRouteParams + getUrl + hasRoute + hasUrl + + + getRoute + getRouteOptions + getRouteParams + getUrl + hasRoute + hasUrl + + + assertIsArray + assertIsArray + + + $this->router + $this->router + $this->router + V2TreeRouteStack|TreeRouteStack + + + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $rendered + $result + + + $this->controller + + + + + ArraySerializable + + + + + $first_child + $second_child + + + + + $this->id + $this->name + $value + + + + + JsonSerializableEntity + JsonSerializableEntity + + + + + getUrl + getUrl + hasUrl + hasUrl + + + $expected + + + $params + $params + + + $params['test-1'] + $params['test-2'] + + + $params + + + getRoute + getRouteParams + getUrl + getUrl + hasRoute + hasUrl + hasUrl + + + getRoute + getRouteParams + getUrl + getUrl + hasRoute + hasUrl + hasUrl + + + getRoute + getRouteParams + getUrl + getUrl + hasRoute + hasUrl + hasUrl + + + assertSame + + + + + JsonSerializable + + + + + testIsCollectionReturnsFalseForInvalidValues + testIsCollectionReturnsTrueForCollectionPayload + testIsEntityReturnsFalseForInvalidValues + testIsEntityReturnsTrueForEntityPayload + testIsTerminalByDefault + testPayloadIsMutable + testPayloadIsNullByDefault + testTerminalFlagIsNotMutable + + + array + array + + + + + testRenderGivenHalJsonModelReturningApiProblemShouldReturnApiProblemInJsonFormat + testRenderGivenHalJsonModelThatContainsHalCollectionShouldReturnDataInJsonFormat + testRenderGivenHalJsonModelThatContainsHalEntityShouldReturnDataInJsonFormat + testRenderGivenNonHalJsonModelShouldReturnDataInJsonFormat + + + $halPlugin + $halPlugin + $halPlugin + + + array + + + expects + expects + expects + method + method + method + will + will + will + with + with + with + + + $helperPluginManager + $helperPluginManager + $helperPluginManager + + + get + get + get + + + + + add + + + testInjectResponseDoesNotSetContentTypeHeaderIfRendererDoesNotMatch + testInjectResponseDoesNotSetContentTypeHeaderIfResultIsNotString + testInjectResponseSetsContentTypeHeaderToApiProblemForApiProblemModel + testInjectResponseSetsContentTypeHeaderToDefaultIfNotHalModel + testInjectResponseSetsContentTypeHeaderToHalForHalModel + testSelectRendererReturnsNullIfModelIsNotAHalJsonModel + testSelectRendererReturnsRendererIfModelIsAHalJsonModel + + + array + + + getFieldValue + getFieldValue + getFieldValue + + + getFieldValue + getFieldValue + getFieldValue + + + + diff --git a/psalm.xml.dist b/psalm.xml.dist new file mode 100644 index 0000000..e007c5a --- /dev/null +++ b/psalm.xml.dist @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Collection.php b/src/Collection.php index 87dd85d..91ab182 100644 --- a/src/Collection.php +++ b/src/Collection.php @@ -525,7 +525,7 @@ public function getCollectionRoute() /** * Collection Route Options * - * @return string + * @return array */ public function getCollectionRouteOptions() { @@ -535,7 +535,7 @@ public function getCollectionRouteOptions() /** * Collection Route Params * - * @return string + * @return array */ public function getCollectionRouteParams() { diff --git a/src/EntityHydratorManager.php b/src/EntityHydratorManager.php index 6762560..d69d1cf 100644 --- a/src/EntityHydratorManager.php +++ b/src/EntityHydratorManager.php @@ -122,6 +122,7 @@ public function getHydratorForEntity($entity) if ($this->metadataMap->has($entity)) { $metadata = $this->metadataMap->get($class); + /** @psalm-suppress PossiblyFalseReference */ $hydrator = $metadata->getHydrator(); if ($hydrator instanceof ExtractionInterface) { $this->addHydrator($class, $hydrator); diff --git a/src/Extractor/LinkCollectionExtractor.php b/src/Extractor/LinkCollectionExtractor.php index fcc6296..af51dd1 100644 --- a/src/Extractor/LinkCollectionExtractor.php +++ b/src/Extractor/LinkCollectionExtractor.php @@ -33,6 +33,9 @@ public function getLinkExtractor() return $this->linkExtractor; } + /** + * @return void + */ public function setLinkExtractor(LinkExtractorInterface $linkExtractor) { $this->linkExtractor = $linkExtractor; diff --git a/src/Link/PaginationInjector.php b/src/Link/PaginationInjector.php index 6ed8ec1..350c6ba 100644 --- a/src/Link/PaginationInjector.php +++ b/src/Link/PaginationInjector.php @@ -45,7 +45,7 @@ public function injectPaginationLinks(Collection $halCollection) return true; } - private function configureCollection(Collection $halCollection) + private function configureCollection(Collection $halCollection): void { $collection = $halCollection->getCollection(); $page = $halCollection->getPage(); @@ -55,7 +55,7 @@ private function configureCollection(Collection $halCollection) $collection->setCurrentPageNumber($page); } - private function injectLinks(Collection $halCollection) + private function injectLinks(Collection $halCollection): void { $this->injectSelfLink($halCollection); $this->injectFirstLink($halCollection); @@ -64,27 +64,27 @@ private function injectLinks(Collection $halCollection) $this->injectNextLink($halCollection); } - private function injectSelfLink(Collection $halCollection) + private function injectSelfLink(Collection $halCollection): void { $page = $halCollection->getPage(); $link = $this->createPaginationLink('self', $halCollection, $page); $halCollection->getLinks()->add($link, true); } - private function injectFirstLink(Collection $halCollection) + private function injectFirstLink(Collection $halCollection): void { $link = $this->createPaginationLink('first', $halCollection); $halCollection->getLinks()->add($link); } - private function injectLastLink(Collection $halCollection) + private function injectLastLink(Collection $halCollection): void { $page = $halCollection->getCollection()->count(); $link = $this->createPaginationLink('last', $halCollection, $page); $halCollection->getLinks()->add($link); } - private function injectPrevLink(Collection $halCollection) + private function injectPrevLink(Collection $halCollection): void { $page = $halCollection->getPage(); $prev = $page > 1 ? $page - 1 : false; @@ -95,7 +95,7 @@ private function injectPrevLink(Collection $halCollection) } } - private function injectNextLink(Collection $halCollection) + private function injectNextLink(Collection $halCollection): void { $page = $halCollection->getPage(); $pageCount = $halCollection->getCollection()->count(); diff --git a/src/Link/SelfLinkInjector.php b/src/Link/SelfLinkInjector.php index 8ba55ae..df3db25 100644 --- a/src/Link/SelfLinkInjector.php +++ b/src/Link/SelfLinkInjector.php @@ -16,7 +16,7 @@ class SelfLinkInjector implements SelfLinkInjectorInterface { /** - * @inheritDoc + * {@inheritDoc} */ public function injectSelfLink(LinkCollectionAwareInterface $resource, $route, $routeIdentifier = 'id') { @@ -62,7 +62,8 @@ private function createSelfLink($resource, $route, $routeIdentifier) /** * @param null|array|Entity|Collection $resource * @param string $routeIdentifier - * @return array + * @return array|string + * @psalm-return array|array|string */ private function getRouteParams($resource, $routeIdentifier) { @@ -86,7 +87,8 @@ private function getRouteParams($resource, $routeIdentifier) /** * @param null|array|Entity|Collection $resource - * @return array + * @return array|string + * @psalm-return array|array|string */ private function getRouteOptions($resource) { diff --git a/src/Link/SelfLinkInjectorInterface.php b/src/Link/SelfLinkInjectorInterface.php index 06faa04..35b6c59 100644 --- a/src/Link/SelfLinkInjectorInterface.php +++ b/src/Link/SelfLinkInjectorInterface.php @@ -15,6 +15,7 @@ interface SelfLinkInjectorInterface * * @param string $route * @param string $routeIdentifier + * @return void */ public function injectSelfLink(LinkCollectionAwareInterface $resource, $route, $routeIdentifier = 'id'); } diff --git a/src/Metadata/Metadata.php b/src/Metadata/Metadata.php index eb87576..7321dc3 100644 --- a/src/Metadata/Metadata.php +++ b/src/Metadata/Metadata.php @@ -622,7 +622,7 @@ public function setForceSelfLink($forceSelfLink) * @param HydratorPluginManager|HydratorPluginManagerInterface $hydrators * @throws Exception\InvalidArgumentException If $hydrators is an invaild type. */ - private function setHydrators($hydrators) + private function setHydrators($hydrators): void { if ($hydrators instanceof HydratorPluginManagerInterface) { $this->hydrators = $hydrators; diff --git a/src/Metadata/MetadataMap.php b/src/Metadata/MetadataMap.php index ebbde5e..5b738e5 100644 --- a/src/Metadata/MetadataMap.php +++ b/src/Metadata/MetadataMap.php @@ -142,8 +142,8 @@ public function has($class) * * Lazy-loads the Metadata instance if one is not present for a matching class. * - * @param object|string $class Object or classname for which to retrieve metadata - * @return Metadata + * @param object|string $class Object or classname for which to retrieve metadata + * @return Metadata|false */ public function get($class) { diff --git a/src/Plugin/Hal.php b/src/Plugin/Hal.php index 4d133ea..c997e12 100644 --- a/src/Plugin/Hal.php +++ b/src/Plugin/Hal.php @@ -309,6 +309,8 @@ public function setLinkUrlBuilder(LinkUrlBuilder $builder) * @deprecated Since 1.4.0; use setLinkUrlBuilder() instead. * * @throws Exception\DeprecatedMethodException + * + * @return void */ public function setServerUrlHelper(callable $helper) { @@ -326,6 +328,8 @@ public function setServerUrlHelper(callable $helper) * @deprecated Since 1.4.0; use setLinkUrlBuilder() instead. * * @throws Exception\DeprecatedMethodException + * + * @return void */ public function setUrlHelper(callable $helper) { @@ -581,8 +585,10 @@ public function renderCollection(Collection $halCollection) $metadataMap = $this->getMetadataMap(); - $maxDepth = is_object($collection) && $metadataMap->has($collection) ? - $metadataMap->get($collection)->getMaxDepth() : null; + /** @psalm-suppress PossiblyFalseReference */ + $maxDepth = is_object($collection) && $metadataMap->has($collection) + ? $metadataMap->get($collection)->getMaxDepth() + : null; $payload = $halCollection->getAttributes(); $payload['_links'] = $this->fromResource($halCollection); @@ -660,6 +666,7 @@ public function renderEntity(Entity $halEntity, $renderEntity = true, $depth = 0 if (is_object($entity)) { if ($maxDepth === null && $metadataMap->has($entity)) { + /** @psalm-suppress PossiblyFalseReference */ $maxDepth = $metadataMap->get($entity)->getMaxDepth(); } @@ -690,6 +697,7 @@ public function renderEntity(Entity $halEntity, $renderEntity = true, $depth = 0 foreach ($entity as $key => $value) { if (is_object($value) && $metadataMap->has($value)) { + /** @psalm-suppress PossiblyFalseArgument */ $value = $this->getResourceFactory()->createEntityFromMetadata( $value, $metadataMap->get($value), @@ -856,7 +864,7 @@ public function createEntityFromMetadata($object, Metadata $metadata, $renderEmb * @param Entity|array|object $resource * @param string $route * @param string $routeIdentifierName - * @return Entity + * @return Collection|Entity */ public function createResource($resource, $route, $routeIdentifierName) { @@ -871,16 +879,17 @@ public function createResource($resource, $route, $routeIdentifierName) /** * Create an Entity instance and inject it with a self relational link if necessary * - * @param Entity|array|object $entity - * @param string $route - * @param string $routeIdentifierName - * @return Entity + * @param Entity|array|object $entity + * @param string $route + * @param string $routeIdentifierName + * @return Collection|Entity */ public function createEntity($entity, $route, $routeIdentifierName) { $metadataMap = $this->getMetadataMap(); if (is_object($entity) && $metadataMap->has($entity)) { + /** @psalm-suppress PossiblyFalseArgument */ $halEntity = $this->getResourceFactory()->createEntityFromMetadata( $entity, $metadataMap->get($entity) @@ -914,6 +923,7 @@ public function createCollection($collection, $route = null) { $metadataMap = $this->getMetadataMap(); if (is_object($collection) && $metadataMap->has($collection)) { + /** @psalm-suppress PossiblyFalseArgument */ $collection = $this->getResourceFactory()->createCollectionFromMetadata( $collection, $metadataMap->get($collection) @@ -944,8 +954,9 @@ public function createCollectionFromMetadata($object, Metadata $metadata) /** * Inject a "self" relational link based on the route and identifier * - * @param string $route - * @param string $routeIdentifier + * @param string $route + * @param string $routeIdentifier + * @return void */ public function injectSelfLink(LinkCollectionAwareInterface $resource, $route, $routeIdentifier = 'id') { @@ -969,10 +980,11 @@ protected function injectPaginationLinks(Collection $halCollection) * Removes the key from the parent representation, and creates a * representation for the key in the _embedded object. * - * @param array $parent - * @param string $key - * @param int $depth depth of the current rendering recursion - * @param int $maxDepth maximum rendering depth for the current metadata + * @param array $parent + * @param string $key + * @param int $depth depth of the current rendering recursion + * @param int $maxDepth maximum rendering depth for the current metadata + * @return void */ protected function extractEmbeddedEntity(array &$parent, $key, Entity $entity, $depth = 0, $maxDepth = null) { @@ -994,10 +1006,11 @@ protected function extractEmbeddedEntity(array &$parent, $key, Entity $entity, $ * Removes the key from the parent representation, and creates a * representation for the key in the _embedded object. * - * @param array $parent - * @param string $key - * @param int $depth depth of the current rendering recursion - * @param int $maxDepth maximum rendering depth for the current metadata + * @param array $parent + * @param string $key + * @param int $depth depth of the current rendering recursion + * @param int $maxDepth maximum rendering depth for the current metadata + * @return void */ protected function extractEmbeddedCollection( array &$parent, @@ -1050,6 +1063,7 @@ protected function extractCollection(Collection $halCollection, $depth = 0, $max $entity = $eventParams['entity']; if (is_object($entity) && $metadataMap->has($entity)) { + /** @psalm-suppress PossiblyFalseArgument */ $entity = $this->getResourceFactory()->createEntityFromMetadata($entity, $metadataMap->get($entity)); } @@ -1065,6 +1079,7 @@ protected function extractCollection(Collection $halCollection, $depth = 0, $max foreach ($entity as $key => $value) { if (is_object($value) && $metadataMap->has($value)) { + /** @psalm-suppress PossiblyFalseArgument */ $value = $this->getResourceFactory()->createEntityFromMetadata($value, $metadataMap->get($value)); } @@ -1136,6 +1151,10 @@ protected function getIdFromEntity($entity) 'resource' => $entity, ]; + /** + * @param mixed $r + * @return bool + */ $callback = function ($r) { return null !== $r && false !== $r; }; @@ -1218,6 +1237,8 @@ protected function marshalLinkFromMetadata( * Inject any links found in the metadata into the resource's link collection * * @deprecated + * + * @return void */ protected function marshalMetadataLinks(Metadata $metadata, LinkCollection $links) { diff --git a/src/RendererOptions.php b/src/RendererOptions.php index 70227cd..db4069c 100644 --- a/src/RendererOptions.php +++ b/src/RendererOptions.php @@ -26,6 +26,7 @@ class RendererOptions extends AbstractOptions /** * @param string $hydrator + * @return void */ public function setDefaultHydrator($hydrator) { @@ -42,6 +43,7 @@ public function getDefaultHydrator() /** * @param bool $flag + * @return void */ public function setRenderEmbeddedEntities($flag) { @@ -49,7 +51,7 @@ public function setRenderEmbeddedEntities($flag) } /** - * @return string + * @return bool */ public function getRenderEmbeddedEntities() { @@ -58,6 +60,7 @@ public function getRenderEmbeddedEntities() /** * @param bool $flag + * @return void */ public function setRenderEmbeddedCollections($flag) { @@ -65,7 +68,7 @@ public function setRenderEmbeddedCollections($flag) } /** - * @return string + * @return bool */ public function getRenderEmbeddedCollections() { @@ -74,6 +77,7 @@ public function getRenderEmbeddedCollections() /** * @param array $hydrators + * @return void */ public function setHydrators(array $hydrators) { diff --git a/src/ResourceFactory.php b/src/ResourceFactory.php index ca8cc2d..c4bbd45 100644 --- a/src/ResourceFactory.php +++ b/src/ResourceFactory.php @@ -170,6 +170,8 @@ public function marshalLinkFromMetadata( /** * Inject any links found in the metadata into the resource's link collection + * + * @return void */ public function marshalMetadataLinks(Metadata $metadata, LinkCollection $links) { diff --git a/src/View/HalJsonRenderer.php b/src/View/HalJsonRenderer.php index 8c7cb24..fca2a3e 100644 --- a/src/View/HalJsonRenderer.php +++ b/src/View/HalJsonRenderer.php @@ -42,6 +42,8 @@ public function __construct(ApiProblemRenderer $apiProblemRenderer) * Set helper plugin manager instance. * * Also ensures that the 'Hal' helper is present. + * + * @return void */ public function setHelperPluginManager(HelperPluginManager $helpers) { diff --git a/test/Extractor/EntityExtractorTest.php b/test/Extractor/EntityExtractorTest.php index 2f47734..4391e4d 100644 --- a/test/Extractor/EntityExtractorTest.php +++ b/test/Extractor/EntityExtractorTest.php @@ -74,7 +74,7 @@ public function testExtractTwiceGivenSameEntityShouldProcessExtractionOnceAndRet self::assertSame($data1, $data2); } - public function testExtractOfArrayObjectEntityWillExtractCorrectly() + public function testExtractOfArrayObjectEntityWillExtractCorrectly(): void { $data = ['id' => 'foo', 'message' => 'FOO']; $entity = new ArrayObject($data); diff --git a/test/Extractor/LinkCollectionExtractorTest.php b/test/Extractor/LinkCollectionExtractorTest.php index a41b177..6e7226e 100644 --- a/test/Extractor/LinkCollectionExtractorTest.php +++ b/test/Extractor/LinkCollectionExtractorTest.php @@ -26,7 +26,7 @@ public function setUp(): void $this->linkCollectionExtractor = new LinkCollectionExtractor($linkExtractor); } - public function testExtractGivenLinkCollectionShouldReturnArrayWithExtractionOfEachLink() + public function testExtractGivenLinkCollectionShouldReturnArrayWithExtractionOfEachLink(): void { $linkCollection = new LinkCollection(); $linkCollection->add(Link::factory([ @@ -48,7 +48,7 @@ public function testExtractGivenLinkCollectionShouldReturnArrayWithExtractionOfE self::assertCount($linkCollection->count(), $result); } - public function testLinkCollectionWithTwoLinksForSameRelationShouldReturnArrayWithOneKeyAggregatingLinks() + public function testLinkCollectionWithTwoLinksForSameRelationShouldReturnArrayWithOneKeyAggregatingLinks(): void { $linkCollection = new LinkCollection(); $linkCollection->add(Link::factory([ diff --git a/test/Link/LinkCollectionTest.php b/test/Link/LinkCollectionTest.php index bf019b2..e0045e6 100644 --- a/test/Link/LinkCollectionTest.php +++ b/test/Link/LinkCollectionTest.php @@ -22,7 +22,7 @@ public function setUp(): void $this->links = new LinkCollection(); } - public function testCanAddDiscreteLinkRelations() + public function testCanAddDiscreteLinkRelations(): void { $describedby = new Link('describedby'); $self = new Link('self'); @@ -35,7 +35,7 @@ public function testCanAddDiscreteLinkRelations() self::assertSame($self, $this->links->get('self')); } - public function testCanAddDuplicateLinkRelations() + public function testCanAddDuplicateLinkRelations(): void { $order1 = new Link('order'); $order2 = new Link('order'); @@ -50,7 +50,7 @@ public function testCanAddDuplicateLinkRelations() self::assertContains($order2, $orders); } - public function testCanRemoveLinkRelations() + public function testCanRemoveLinkRelations(): void { $describedby = new Link('describedby'); $this->links->add($describedby); @@ -59,7 +59,7 @@ public function testCanRemoveLinkRelations() self::assertFalse($this->links->has('describedby')); } - public function testCanOverwriteLinkRelations() + public function testCanOverwriteLinkRelations(): void { $order1 = new Link('order'); $order2 = new Link('order'); @@ -72,7 +72,7 @@ public function testCanOverwriteLinkRelations() self::assertSame($order2, $orders); } - public function testCanIterateLinks() + public function testCanIterateLinks(): void { $describedby = new Link('describedby'); $self = new Link('self'); @@ -88,7 +88,7 @@ public function testCanIterateLinks() self::assertEquals(2, $i); } - public function testCannotDuplicateSelf() + public function testCannotDuplicateSelf(): void { $first = new Link('self'); $second = new Link('self'); diff --git a/test/Link/LinkTest.php b/test/Link/LinkTest.php index b617e78..9414d14 100644 --- a/test/Link/LinkTest.php +++ b/test/Link/LinkTest.php @@ -14,13 +14,13 @@ class LinkTest extends TestCase { - public function testConstructorTakesLinkRelationName() + public function testConstructorTakesLinkRelationName(): void { $link = new Link('describedby'); self::assertEquals('describedby', $link->getRelation()); } - public function testCanSetLinkUrl() + public function testCanSetLinkUrl(): void { $url = 'http://example.com/docs.html'; $link = new Link('describedby'); @@ -28,7 +28,7 @@ public function testCanSetLinkUrl() self::assertEquals($url, $link->getUrl()); } - public function testCanSetLinkRoute() + public function testCanSetLinkRoute(): void { $route = 'api/docs'; $link = new Link('describedby'); @@ -36,7 +36,7 @@ public function testCanSetLinkRoute() self::assertEquals($route, $link->getRoute()); } - public function testCanSetRouteParamsWhenSpecifyingRoute() + public function testCanSetRouteParamsWhenSpecifyingRoute(): void { $route = 'api/docs'; $params = ['version' => '1.1']; @@ -46,7 +46,7 @@ public function testCanSetRouteParamsWhenSpecifyingRoute() self::assertEquals($params, $link->getRouteParams()); } - public function testCanSetRouteOptionsWhenSpecifyingRoute() + public function testCanSetRouteOptionsWhenSpecifyingRoute(): void { $route = 'api/docs'; $options = ['query' => 'version=1.1']; @@ -56,7 +56,7 @@ public function testCanSetRouteOptionsWhenSpecifyingRoute() self::assertEquals($options, $link->getRouteOptions()); } - public function testCanSetRouteParamsSeparately() + public function testCanSetRouteParamsSeparately(): void { $route = 'api/docs'; $params = ['version' => '1.1']; @@ -67,7 +67,7 @@ public function testCanSetRouteParamsSeparately() self::assertEquals($params, $link->getRouteParams()); } - public function testCanSetRouteOptionsSeparately() + public function testCanSetRouteOptionsSeparately(): void { $route = 'api/docs'; $options = ['query' => 'version=1.1']; @@ -78,7 +78,7 @@ public function testCanSetRouteOptionsSeparately() self::assertEquals($options, $link->getRouteOptions()); } - public function testSettingUrlAfterSettingRouteRaisesException() + public function testSettingUrlAfterSettingRouteRaisesException(): void { $link = new Link('describedby'); $link->setRoute('api/docs'); @@ -87,7 +87,7 @@ public function testSettingUrlAfterSettingRouteRaisesException() $link->setUrl('http://example.com/api/docs.html'); } - public function testSettingRouteAfterSettingUrlRaisesException() + public function testSettingRouteAfterSettingUrlRaisesException(): void { $link = new Link('describedby'); $link->setUrl('http://example.com/api/docs.html'); @@ -96,46 +96,46 @@ public function testSettingRouteAfterSettingUrlRaisesException() $link->setRoute('api/docs'); } - public function testIsCompleteReturnsFalseIfNeitherUrlNorRouteIsSet() + public function testIsCompleteReturnsFalseIfNeitherUrlNorRouteIsSet(): void { $link = new Link('describedby'); self::assertFalse($link->isComplete()); } - public function testHasUrlReturnsFalseWhenUrlIsNotSet() + public function testHasUrlReturnsFalseWhenUrlIsNotSet(): void { $link = new Link('describedby'); self::assertFalse($link->hasUrl()); } - public function testHasUrlReturnsTrueWhenUrlIsSet() + public function testHasUrlReturnsTrueWhenUrlIsSet(): void { $link = new Link('describedby'); $link->setUrl('http://example.com/api/docs.html'); self::assertTrue($link->hasUrl()); } - public function testIsCompleteReturnsTrueWhenUrlIsSet() + public function testIsCompleteReturnsTrueWhenUrlIsSet(): void { $link = new Link('describedby'); $link->setUrl('http://example.com/api/docs.html'); self::assertTrue($link->isComplete()); } - public function testHasRouteReturnsFalseWhenRouteIsNotSet() + public function testHasRouteReturnsFalseWhenRouteIsNotSet(): void { $link = new Link('describedby'); self::assertFalse($link->hasRoute()); } - public function testHasRouteReturnsTrueWhenRouteIsSet() + public function testHasRouteReturnsTrueWhenRouteIsSet(): void { $link = new Link('describedby'); $link->setRoute('api/docs'); self::assertTrue($link->hasRoute()); } - public function testIsCompleteReturnsTrueWhenRouteIsSet() + public function testIsCompleteReturnsTrueWhenRouteIsSet(): void { $link = new Link('describedby'); $link->setRoute('api/docs'); @@ -145,7 +145,7 @@ public function testIsCompleteReturnsTrueWhenRouteIsSet() /** * @group 79 */ - public function testFactoryCanGenerateLinkWithUrl() + public function testFactoryCanGenerateLinkWithUrl(): void { $rel = 'describedby'; $url = 'http://example.com/docs.html'; @@ -161,7 +161,7 @@ public function testFactoryCanGenerateLinkWithUrl() /** * @group 79 */ - public function testFactoryCanGenerateLinkWithRouteInformation() + public function testFactoryCanGenerateLinkWithRouteInformation(): void { $rel = 'describedby'; $route = 'api/docs'; @@ -183,7 +183,7 @@ public function testFactoryCanGenerateLinkWithRouteInformation() self::assertEquals($options, $link->getRouteOptions()); } - public function testFactoryCanGenerateLinkWithArbitraryProperties() + public function testFactoryCanGenerateLinkWithArbitraryProperties(): void { $rel = 'describedby'; $url = 'http://example.org/api/foo?version=2'; diff --git a/test/Link/PaginationInjectorTest.php b/test/Link/PaginationInjectorTest.php index 41aca92..455bfb1 100644 --- a/test/Link/PaginationInjectorTest.php +++ b/test/Link/PaginationInjectorTest.php @@ -40,7 +40,7 @@ private function getHalCollection($pages, $currentPage) return $halCollection; } - public function testInjectPaginationLinksGivenIntermediatePageShouldInjectAllLinks() + public function testInjectPaginationLinksGivenIntermediatePageShouldInjectAllLinks(): void { $halCollection = $this->getHalCollection(5, 2); @@ -55,7 +55,7 @@ public function testInjectPaginationLinksGivenIntermediatePageShouldInjectAllLin self::assertTrue($links->has('next')); } - public function testInjectPaginationLinksGivenFirstPageShouldInjectLinksExceptForPrevious() + public function testInjectPaginationLinksGivenFirstPageShouldInjectLinksExceptForPrevious(): void { $halCollection = $this->getHalCollection(5, 1); @@ -70,7 +70,7 @@ public function testInjectPaginationLinksGivenFirstPageShouldInjectLinksExceptFo self::assertTrue($links->has('next')); } - public function testInjectPaginationLinksGivenLastPageShouldInjectLinksExceptForNext() + public function testInjectPaginationLinksGivenLastPageShouldInjectLinksExceptForNext(): void { $halCollection = $this->getHalCollection(5, 5); @@ -85,7 +85,7 @@ public function testInjectPaginationLinksGivenLastPageShouldInjectLinksExceptFor self::assertFalse($links->has('next')); } - public function testInjectPaginationLinksGivenEmptyCollectionShouldNotInjectAnyLink() + public function testInjectPaginationLinksGivenEmptyCollectionShouldNotInjectAnyLink(): void { $halCollection = $this->getHalCollection(0, 1); @@ -100,7 +100,7 @@ public function testInjectPaginationLinksGivenEmptyCollectionShouldNotInjectAnyL self::assertFalse($links->has('next')); } - public function testInjectPaginationLinksGivenPageGreaterThanPageCountShouldReturnApiProblem() + public function testInjectPaginationLinksGivenPageGreaterThanPageCountShouldReturnApiProblem(): void { $halCollection = $this->getHalCollection(5, 6); @@ -111,7 +111,7 @@ public function testInjectPaginationLinksGivenPageGreaterThanPageCountShouldRetu self::assertEquals(409, $result->status); } - public function testInjectPaginationLinksGivenCollectionRouteNameShouldInjectLinksWithSameRoute() + public function testInjectPaginationLinksGivenCollectionRouteNameShouldInjectLinksWithSameRoute(): void { $halCollection = $this->getHalCollection(5, 2); diff --git a/test/Plugin/HalTest.php b/test/Plugin/HalTest.php index 910a748..c2e6ad6 100644 --- a/test/Plugin/HalTest.php +++ b/test/Plugin/HalTest.php @@ -19,6 +19,7 @@ use Laminas\ApiTools\Hal\Link\Link; use Laminas\ApiTools\Hal\Link\LinkCollection; use Laminas\ApiTools\Hal\Link\LinkUrlBuilder; +use Laminas\ApiTools\Hal\Metadata\Metadata; use Laminas\ApiTools\Hal\Metadata\MetadataMap; use Laminas\ApiTools\Hal\Plugin\Hal as HalHelper; use Laminas\EventManager\Event; @@ -1002,7 +1003,7 @@ public function testRenderingCollectionUsesCollectionNameFromMetadataMap(): void /** * @group 14 - * @return object + * @return ApiProblem|array */ public function testRenderingPaginatorCollectionRendersPaginationAttributes() { @@ -1542,10 +1543,11 @@ public function testCreateEntityFromMetadataWithoutForcedSelfLinks(): void $metadata->setHydratorManager(new Hydrator\HydratorPluginManager(new ServiceManager())); $this->plugin->setMetadataMap($metadata); - $entity = $this->plugin->createEntityFromMetadata( - $object, - $metadata->get(TestAsset\Entity::class) - ); + + $entityMetadata = $metadata->get(TestAsset\Entity::class); + $this->assertInstanceOf(Metadata::class, $entityMetadata, 'Did not match entity to metadata?'); + + $entity = $this->plugin->createEntityFromMetadata($object, $entityMetadata); $links = $entity->getLinks(); self::assertFalse($links->has('self')); } @@ -1592,10 +1594,10 @@ public function testCreateCollectionFromMetadataWithoutForcedSelfLinks(): void $this->plugin->setMetadataMap($metadata); - $collection = $this->plugin->createCollectionFromMetadata( - $set, - $metadata->get(TestAsset\Collection::class) - ); + $collectionMetadata = $metadata->get(TestAsset\Collection::class); + $this->assertInstanceOf(Metadata::class, $collectionMetadata, 'Did not discover metadata for collection?'); + + $collection = $this->plugin->createCollectionFromMetadata($set, $collectionMetadata); $links = $collection->getLinks(); self::assertFalse($links->has('self')); } diff --git a/test/ResourceFactoryTest.php b/test/ResourceFactoryTest.php index 24671a7..e12ea3e 100644 --- a/test/ResourceFactoryTest.php +++ b/test/ResourceFactoryTest.php @@ -12,6 +12,7 @@ use Laminas\ApiTools\Hal\Entity; use Laminas\ApiTools\Hal\EntityHydratorManager; use Laminas\ApiTools\Hal\Extractor\EntityExtractor; +use Laminas\ApiTools\Hal\Metadata\Metadata; use Laminas\ApiTools\Hal\Metadata\MetadataMap; use Laminas\ApiTools\Hal\ResourceFactory; use Laminas\Hydrator\HydratorPluginManager; @@ -51,10 +52,10 @@ public function testInjectsLinksFromMetadataWhenCreatingEntity(): void $resourceFactory = $this->getResourceFactory($metadata); - $entity = $resourceFactory->createEntityFromMetadata( - $object, - $metadata->get(HalPluginTestAsset\Entity::class) - ); + $entityMetadata = $metadata->get(HalPluginTestAsset\Entity::class); + $this->assertInstanceOf(Metadata::class, $entityMetadata, 'Did not match entity to metadata?'); + + $entity = $resourceFactory->createEntityFromMetadata($object, $entityMetadata); self::assertInstanceOf(Entity::class, $entity); $links = $entity->getLinks(); @@ -106,10 +107,10 @@ public function testRouteParamsAllowsCallable(): void $resourceFactory = $this->getResourceFactory($metadata); - $entity = $resourceFactory->createEntityFromMetadata( - $object, - $metadata->get(HalPluginTestAsset\Entity::class) - ); + $entityMetadata = $metadata->get(HalPluginTestAsset\Entity::class); + $this->assertInstanceOf(Metadata::class, $entityMetadata, 'Did not match entity to metadata?'); + + $entity = $resourceFactory->createEntityFromMetadata($object, $entityMetadata); self::assertInstanceOf(Entity::class, $entity); @@ -154,10 +155,10 @@ public function testInjectsLinksFromMetadataWhenCreatingCollection(): void $resourceFactory = $this->getResourceFactory($metadata); - $collection = $resourceFactory->createCollectionFromMetadata( - $set, - $metadata->get(HalPluginTestAsset\Collection::class) - ); + $collectionMetadata = $metadata->get(HalPluginTestAsset\Collection::class); + $this->assertInstanceOf(Metadata::class, $collectionMetadata, 'Did not match collection to metadata?'); + + $collection = $resourceFactory->createCollectionFromMetadata($set, $collectionMetadata); self::assertInstanceOf(Collection::class, $collection); $links = $collection->getLinks(); diff --git a/test/View/HalJsonModelTest.php b/test/View/HalJsonModelTest.php index 677271c..3b3ecbc 100644 --- a/test/View/HalJsonModelTest.php +++ b/test/View/HalJsonModelTest.php @@ -25,12 +25,12 @@ public function setUp(): void $this->model = new HalJsonModel(); } - public function testPayloadIsNullByDefault() + public function testPayloadIsNullByDefault(): void { self::assertNull($this->model->getPayload()); } - public function testPayloadIsMutable() + public function testPayloadIsMutable(): void { $this->model->setPayload('foo'); self::assertEquals('foo', $this->model->getPayload()); @@ -71,13 +71,13 @@ public function invalidCollectionPayloads() * @dataProvider invalidCollectionPayloads * @param mixed $payload */ - public function testIsCollectionReturnsFalseForInvalidValues($payload) + public function testIsCollectionReturnsFalseForInvalidValues($payload): void { $this->model->setPayload($payload); self::assertFalse($this->model->isCollection()); } - public function testIsCollectionReturnsTrueForCollectionPayload() + public function testIsCollectionReturnsTrueForCollectionPayload(): void { $collection = new Collection([], 'item/route'); $this->model->setPayload($collection); @@ -100,20 +100,20 @@ public function invalidEntityPayloads() * @dataProvider invalidEntityPayloads * @param mixed $payload */ - public function testIsEntityReturnsFalseForInvalidValues($payload) + public function testIsEntityReturnsFalseForInvalidValues($payload): void { $this->model->setPayload($payload); self::assertFalse($this->model->isEntity()); } - public function testIsEntityReturnsTrueForEntityPayload() + public function testIsEntityReturnsTrueForEntityPayload(): void { $item = new Entity([], 'id'); $this->model->setPayload($item); self::assertTrue($this->model->isEntity()); } - public function testIsTerminalByDefault() + public function testIsTerminalByDefault(): void { self::assertTrue($this->model->terminate()); } @@ -121,7 +121,7 @@ public function testIsTerminalByDefault() /** * @depends testIsTerminalByDefault */ - public function testTerminalFlagIsNotMutable() + public function testTerminalFlagIsNotMutable(): void { $this->model->setTerminal(false); self::assertTrue($this->model->terminate()); diff --git a/test/View/HalJsonRendererTest.php b/test/View/HalJsonRendererTest.php index bd6198c..8d43f20 100644 --- a/test/View/HalJsonRendererTest.php +++ b/test/View/HalJsonRendererTest.php @@ -48,7 +48,7 @@ public function nonHalJsonModels() * @dataProvider nonHalJsonModels * @param ViewModel $model */ - public function testRenderGivenNonHalJsonModelShouldReturnDataInJsonFormat($model) + public function testRenderGivenNonHalJsonModelShouldReturnDataInJsonFormat($model): void { $payload = $this->renderer->render($model); @@ -58,7 +58,7 @@ public function testRenderGivenNonHalJsonModelShouldReturnDataInJsonFormat($mode ); } - public function testRenderGivenHalJsonModelThatContainsHalEntityShouldReturnDataInJsonFormat() + public function testRenderGivenHalJsonModelThatContainsHalEntityShouldReturnDataInJsonFormat(): void { $entity = [ 'id' => 123, @@ -83,7 +83,7 @@ public function testRenderGivenHalJsonModelThatContainsHalEntityShouldReturnData self::assertEquals($entity, json_decode($rendered, true)); } - public function testRenderGivenHalJsonModelThatContainsHalCollectionShouldReturnDataInJsonFormat() + public function testRenderGivenHalJsonModelThatContainsHalCollectionShouldReturnDataInJsonFormat(): void { $collection = [ ['id' => 'foo', 'name' => 'foo'], @@ -109,7 +109,7 @@ public function testRenderGivenHalJsonModelThatContainsHalCollectionShouldReturn self::assertEquals($collection, json_decode($rendered, true)); } - public function testRenderGivenHalJsonModelReturningApiProblemShouldReturnApiProblemInJsonFormat() + public function testRenderGivenHalJsonModelReturningApiProblemShouldReturnApiProblemInJsonFormat(): void { $halCollection = new Collection([]); $model = new HalJsonModel(['payload' => $halCollection]); diff --git a/test/View/HalJsonStrategyTest.php b/test/View/HalJsonStrategyTest.php index cfea8a5..1d9d0d8 100644 --- a/test/View/HalJsonStrategyTest.php +++ b/test/View/HalJsonStrategyTest.php @@ -45,26 +45,26 @@ public function setUp(): void $this->strategy = new HalJsonStrategy($this->renderer); } - public function testSelectRendererReturnsNullIfModelIsNotAHalJsonModel() + public function testSelectRendererReturnsNullIfModelIsNotAHalJsonModel(): void { self::assertNull($this->strategy->selectRenderer($this->event)); } - public function testSelectRendererReturnsRendererIfModelIsAHalJsonModel() + public function testSelectRendererReturnsRendererIfModelIsAHalJsonModel(): void { $model = new HalJsonModel(); $this->event->setModel($model); self::assertSame($this->renderer, $this->strategy->selectRenderer($this->event)); } - public function testInjectResponseDoesNotSetContentTypeHeaderIfRendererDoesNotMatch() + public function testInjectResponseDoesNotSetContentTypeHeaderIfRendererDoesNotMatch(): void { $this->strategy->injectResponse($this->event); $headers = $this->response->getHeaders(); self::assertFalse($headers->has('Content-Type')); } - public function testInjectResponseDoesNotSetContentTypeHeaderIfResultIsNotString() + public function testInjectResponseDoesNotSetContentTypeHeaderIfResultIsNotString(): void { $this->event->setRenderer($this->renderer); $this->event->setResult(['foo']); @@ -73,7 +73,7 @@ public function testInjectResponseDoesNotSetContentTypeHeaderIfResultIsNotString self::assertFalse($headers->has('Content-Type')); } - public function testInjectResponseSetsContentTypeHeaderToDefaultIfNotHalModel() + public function testInjectResponseSetsContentTypeHeaderToDefaultIfNotHalModel(): void { $this->event->setRenderer($this->renderer); $this->event->setResult('{"foo":"bar"}'); @@ -110,7 +110,7 @@ public function halObjects() * @dataProvider halObjects * @param array $hal */ - public function testInjectResponseSetsContentTypeHeaderToHalForHalModel($hal) + public function testInjectResponseSetsContentTypeHeaderToHalForHalModel($hal): void { $model = new HalJsonModel(['payload' => $hal]); @@ -124,7 +124,7 @@ public function testInjectResponseSetsContentTypeHeaderToHalForHalModel($hal) self::assertEquals('application/hal+json', $header->getFieldValue()); } - public function testInjectResponseSetsContentTypeHeaderToApiProblemForApiProblemModel() + public function testInjectResponseSetsContentTypeHeaderToApiProblemForApiProblemModel(): void { $problem = new ApiProblem(500, "Error message"); $model = new ApiProblemModel($problem);