diff --git a/.gitattributes b/.gitattributes index 01c98c6..d720663 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,9 +2,18 @@ # https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html # Ignore all test and documentation with "export-ignore". -/.gitattributes export-ignore -/.gitignore export-ignore -/.travis.yml export-ignore -/phpunit.xml.dist export-ignore -/.scrutinizer.yml export-ignore -/tests export-ignore \ No newline at end of file + +.php_cs export-ignore +.gitattributes export-ignore +.gitignore export-ignore +.travis.yml export-ignore +.editorconfig export-ignore +phpstan.neon export-ignore + +/tests export-ignore + +CHANGELOG.md export-ignore +CONTRIBUTING.md export-ignore +README.md export-ignore +CODE_OF_CONDUCT.md export-ignore + diff --git a/LICENSE b/LICENSE index fa38141..b978e10 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 Narrowspark +Copyright (c) 2016-2018 Narrowspark Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/composer.json b/composer.json index 83f1726..bbe5a67 100644 --- a/composer.json +++ b/composer.json @@ -21,17 +21,18 @@ ], "require": { "php" : "^7.1", + "http-interop/http-factory" : "^0.3", "psr/container" : "^1.0", "psr/http-message" : "^1.0", - "http-interop/http-middleware" : "^0.5" + "psr/http-server-middleware" : "^1.0" }, "require-dev": { - "guzzlehttp/psr7" : "^1.3", + "http-interop/http-factory-guzzle" : "^0.3", "fzaninotto/faker" : "^1.6", - "mockery/mockery" : "^0.9", + "mockery/mockery" : "^1.0", "narrowspark/php-cs-fixer-config" : "^2.0", "phpunit/phpunit" : "^6.0", - "phpstan/phpstan" : "^0.7" + "phpstan/phpstan" : "^0.9" }, "autoload": { "psr-4": { @@ -49,8 +50,10 @@ "nyholm/nsa" : "Required to test your private/protected methods/properties (^1.1)." }, "scripts": { - "cs" : "sh vendor/bin/php-cs-fixer fix", - "phpstan" : "sh vendor/bin/phpstan analyse -c phpstan.neon -l 6 src/" + "cs" : "php-cs-fixer fix", + "test" : "phpunit", + "coverage" : "phpunit --coverage-html=\"build/logs\"", + "phpstan" : "phpstan analyse -c phpstan.neon -l 7 src" }, "minimum-stability" : "dev", "prefer-stable" : true diff --git a/composer.lock b/composer.lock index a933238..8492436 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "c623912c10c5cef7520fe98f18630243", + "content-hash": "7d3a657f4a8f1d99a141d9ed3fa4c492", "packages": [ { - "name": "http-interop/http-middleware", - "version": "0.5.0", + "name": "http-interop/http-factory", + "version": "0.3.0", "source": { "type": "git", - "url": "https://github.com/http-interop/http-middleware.git", - "reference": "b49e1f9f6c584e704317b563302e566b8ce11858" + "url": "https://github.com/http-interop/http-factory.git", + "reference": "c2587cc0a6f74987fefb5b8074acfd32c69a4b0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/http-interop/http-middleware/zipball/b49e1f9f6c584e704317b563302e566b8ce11858", - "reference": "b49e1f9f6c584e704317b563302e566b8ce11858", + "url": "https://api.github.com/repos/http-interop/http-factory/zipball/c2587cc0a6f74987fefb5b8074acfd32c69a4b0f", + "reference": "c2587cc0a6f74987fefb5b8074acfd32c69a4b0f", "shasum": "" }, "require": { @@ -32,7 +32,7 @@ }, "autoload": { "psr-4": { - "Interop\\Http\\Server\\": "src/" + "Interop\\Http\\Factory\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -45,17 +45,18 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interface for HTTP server-side middleware", + "description": "Common interface for HTTP message factories", "keywords": [ + "factory", "http", - "middleware", + "message", "psr", - "psr-15", + "psr-17", "psr-7", "request", "response" ], - "time": "2017-09-18T15:27:03+00:00" + "time": "2017-03-24T14:48:51+00:00" }, { "name": "psr/container", @@ -155,6 +156,112 @@ "response" ], "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/http-server-handler", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-handler.git", + "reference": "439d92054dc06097f2406ec074a2627839955a02" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-handler/zipball/439d92054dc06097f2406ec074a2627839955a02", + "reference": "439d92054dc06097f2406ec074a2627839955a02", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side request handler", + "keywords": [ + "handler", + "http", + "http-interop", + "psr", + "psr-15", + "psr-7", + "request", + "response", + "server" + ], + "time": "2018-01-22T17:04:15+00:00" + }, + { + "name": "psr/http-server-middleware", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-server-middleware.git", + "reference": "ea17eb1fb2c8df6db919cc578451a8013c6a0ae5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-server-middleware/zipball/ea17eb1fb2c8df6db919cc578451a8013c6a0ae5", + "reference": "ea17eb1fb2c8df6db919cc578451a8013c6a0ae5", + "shasum": "" + }, + "require": { + "php": ">=7.0", + "psr/http-message": "^1.0", + "psr/http-server-handler": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Server\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP server-side middleware", + "keywords": [ + "http", + "http-interop", + "middleware", + "psr", + "psr-15", + "psr-7", + "request", + "response" + ], + "time": "2018-01-22T17:08:31+00:00" } ], "packages-dev": [ @@ -222,16 +329,16 @@ }, { "name": "doctrine/annotations", - "version": "v1.5.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f" + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/5beebb01b025c94e93686b7a0ed3edae81fe3e7f", - "reference": "5beebb01b025c94e93686b7a0ed3edae81fe3e7f", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", "shasum": "" }, "require": { @@ -240,12 +347,12 @@ }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.5.x-dev" + "dev-master": "1.6.x-dev" } }, "autoload": { @@ -286,7 +393,7 @@ "docblock", "parser" ], - "time": "2017-07-22T10:58:02+00:00" + "time": "2017-12-06T07:11:42+00:00" }, { "name": "doctrine/instantiator", @@ -398,16 +505,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.7.1", + "version": "v2.10.0", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "ab2e189d94698178988f9732bc75bb4ce8d16f77" + "reference": "513a3765b56dd029175f9f32995566657ee89dda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/ab2e189d94698178988f9732bc75bb4ce8d16f77", - "reference": "ab2e189d94698178988f9732bc75bb4ce8d16f77", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/513a3765b56dd029175f9f32995566657ee89dda", + "reference": "513a3765b56dd029175f9f32995566657ee89dda", "shasum": "" }, "require": { @@ -415,29 +522,32 @@ "doctrine/annotations": "^1.2", "ext-json": "*", "ext-tokenizer": "*", - "gecko-packages/gecko-php-unit": "^2.0", + "gecko-packages/gecko-php-unit": "^2.0 || ^3.0", "php": "^5.6 || >=7.0 <7.3", - "php-cs-fixer/diff": "^1.0", - "symfony/console": "^3.2", - "symfony/event-dispatcher": "^3.0", - "symfony/filesystem": "^3.0", - "symfony/finder": "^3.0", - "symfony/options-resolver": "^3.0", + "php-cs-fixer/diff": "^1.2", + "symfony/console": "^3.2 || ^4.0", + "symfony/event-dispatcher": "^3.0 || ^4.0", + "symfony/filesystem": "^3.0 || ^4.0", + "symfony/finder": "^3.0 || ^4.0", + "symfony/options-resolver": "^3.0 || ^4.0", "symfony/polyfill-php70": "^1.0", "symfony/polyfill-php72": "^1.4", - "symfony/process": "^3.0", - "symfony/stopwatch": "^3.0" + "symfony/process": "^3.0 || ^4.0", + "symfony/stopwatch": "^3.0 || ^4.0" }, "conflict": { "hhvm": "*" }, "require-dev": { - "johnkary/phpunit-speedtrap": "^1.1", + "johnkary/phpunit-speedtrap": "^1.1 || ^2.0@dev", "justinrainbow/json-schema": "^5.0", + "keradus/cli-executor": "^1.0", + "mikey179/vfsstream": "^1.6", + "php-coveralls/php-coveralls": "^2.0", "php-cs-fixer/accessible-object": "^1.0", - "phpunit/phpunit": "^4.8.35 || ^5.4.3", - "satooshi/php-coveralls": "^1.0", - "symfony/phpunit-bridge": "^3.2.2" + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "phpunitgoodpractices/traits": "^1.0", + "symfony/phpunit-bridge": "^3.2.2 || ^4.0" }, "suggest": { "ext-mbstring": "For handling non-UTF8 characters in cache signature.", @@ -447,16 +557,22 @@ "php-cs-fixer" ], "type": "application", + "extra": { + "branch-alias": { + "dev-master": "2.10-dev" + } + }, "autoload": { "psr-4": { "PhpCsFixer\\": "src/" }, "classmap": [ - "tests/Test/Assert/AssertTokensTrait.php", "tests/Test/AbstractFixerTestCase.php", "tests/Test/AbstractIntegrationTestCase.php", + "tests/Test/Assert/AssertTokensTrait.php", "tests/Test/IntegrationCase.php", - "tests/Test/IntegrationCaseFactory.php" + "tests/Test/IntegrationCaseFactory.php", + "tests/TestCase.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -474,7 +590,7 @@ } ], "description": "A tool to automatically fix PHP code style", - "time": "2017-10-02T12:16:05+00:00" + "time": "2018-01-10T17:16:15+00:00" }, { "name": "fzaninotto/faker", @@ -528,23 +644,23 @@ }, { "name": "gecko-packages/gecko-php-unit", - "version": "v2.2", + "version": "v3.0", "source": { "type": "git", "url": "https://github.com/GeckoPackages/GeckoPHPUnit.git", - "reference": "ab525fac9a9ffea219687f261b02008b18ebf2d1" + "reference": "6a866551dffc2154c1b091bae3a7877d39c25ca3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GeckoPackages/GeckoPHPUnit/zipball/ab525fac9a9ffea219687f261b02008b18ebf2d1", - "reference": "ab525fac9a9ffea219687f261b02008b18ebf2d1", + "url": "https://api.github.com/repos/GeckoPackages/GeckoPHPUnit/zipball/6a866551dffc2154c1b091bae3a7877d39c25ca3", + "reference": "6a866551dffc2154c1b091bae3a7877d39c25ca3", "shasum": "" }, "require": { - "php": "^5.3.6 || ^7.0" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.4.3" + "phpunit/phpunit": "^6.0" }, "suggest": { "ext-dom": "When testing with xml.", @@ -552,6 +668,11 @@ "phpunit/phpunit": "This is an extension for it so make sure you have it some way." }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, "autoload": { "psr-4": { "GeckoPackages\\PHPUnit\\": "src/PHPUnit" @@ -568,7 +689,7 @@ "filesystem", "phpunit" ], - "time": "2017-08-23T07:39:54+00:00" + "time": "2017-08-23T07:46:41+00:00" }, { "name": "guzzlehttp/psr7", @@ -637,20 +758,20 @@ }, { "name": "hamcrest/hamcrest-php", - "version": "v1.2.2", + "version": "v2.0.0", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^5.3|^7.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -659,15 +780,18 @@ }, "require-dev": { "phpunit/php-file-iterator": "1.3.3", - "satooshi/php-coveralls": "dev-master" + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "^1.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "hamcrest" - ], - "files": [ - "hamcrest/Hamcrest.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -678,34 +802,134 @@ "keywords": [ "test" ], - "time": "2015-05-11T14:41:42+00:00" + "time": "2016-01-20T08:20:44+00:00" + }, + { + "name": "http-interop/http-factory-guzzle", + "version": "0.3.1", + "source": { + "type": "git", + "url": "https://github.com/http-interop/http-factory-guzzle.git", + "reference": "f723c5e0e1564dcabfcd51a51778995d1da790c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/http-interop/http-factory-guzzle/zipball/f723c5e0e1564dcabfcd51a51778995d1da790c8", + "reference": "f723c5e0e1564dcabfcd51a51778995d1da790c8", + "shasum": "" + }, + "require": { + "guzzlehttp/psr7": "^1.4.2", + "http-interop/http-factory": "^0.3" + }, + "provide": { + "psr/http-factory-implementation": "^1.0" + }, + "require-dev": { + "http-interop/http-factory-tests": "^0.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Factory\\Guzzle\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "An HTTP Factory using Guzzle PSR7", + "keywords": [ + "factory", + "http", + "psr-17", + "psr-7" + ], + "time": "2017-04-06T16:26:14+00:00" + }, + { + "name": "jean85/pretty-package-versions", + "version": "1.1", + "source": { + "type": "git", + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "d457344b6a035ef99236bdda4729ad7eeb233f54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/d457344b6a035ef99236bdda4729ad7eeb233f54", + "reference": "d457344b6a035ef99236bdda4729ad7eeb233f54", + "shasum": "" + }, + "require": { + "ocramius/package-versions": "^1.2.0", + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Jean85\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" + } + ], + "description": "A wrapper for ocramius/pretty-package-versions to get pretty versions strings", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], + "time": "2018-01-21T13:54:22+00:00" }, { "name": "mockery/mockery", - "version": "0.9.9", + "version": "1.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "6fdb61243844dc924071d3404bb23994ea0b6856" + "reference": "1bac8c362b12f522fdd1f1fa3556284c91affa38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/6fdb61243844dc924071d3404bb23994ea0b6856", - "reference": "6fdb61243844dc924071d3404bb23994ea0b6856", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1bac8c362b12f522fdd1f1fa3556284c91affa38", + "reference": "1bac8c362b12f522fdd1f1fa3556284c91affa38", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "~1.1", + "hamcrest/hamcrest-php": "~2.0", "lib-pcre": ">=7.0", - "php": ">=5.3.2" + "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~5.7|~6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.9.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -730,7 +954,7 @@ } ], "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", - "homepage": "http://github.com/padraic/mockery", + "homepage": "http://github.com/mockery/mockery", "keywords": [ "BDD", "TDD", @@ -743,41 +967,44 @@ "test double", "testing" ], - "time": "2017-02-28T12:52:32+00:00" + "time": "2017-10-06T16:20:43+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.6.1", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102" + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8e6e04167378abf1ddb4d3522d8755c5fd90d102", - "reference": "8e6e04167378abf1ddb4d3522d8755c5fd90d102", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", "shasum": "" }, "require": { - "php": ">=5.4.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "doctrine/collections": "1.*", - "phpunit/phpunit": "~4.1" + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^4.1" }, "type": "library", "autoload": { "psr-4": { "DeepCopy\\": "src/DeepCopy/" - } + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "description": "Create deep copies (clones) of your objects", - "homepage": "https://github.com/myclabs/DeepCopy", "keywords": [ "clone", "copy", @@ -785,28 +1012,28 @@ "object", "object graph" ], - "time": "2017-04-12T18:52:22+00:00" + "time": "2017-10-19T19:58:43+00:00" }, { "name": "narrowspark/php-cs-fixer-config", - "version": "v2.0.4", + "version": "v2.1.0", "source": { "type": "git", "url": "https://github.com/narrowspark/php-cs-fixer-config.git", - "reference": "6cd485a4039c544430e882af838e74a431207015" + "reference": "2eb7e71101c7b13bdc071c5d8520aad071121246" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/narrowspark/php-cs-fixer-config/zipball/6cd485a4039c544430e882af838e74a431207015", - "reference": "6cd485a4039c544430e882af838e74a431207015", + "url": "https://api.github.com/repos/narrowspark/php-cs-fixer-config/zipball/2eb7e71101c7b13bdc071c5d8520aad071121246", + "reference": "2eb7e71101c7b13bdc071c5d8520aad071121246", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "~2.5", + "friendsofphp/php-cs-fixer": "~2.8", "php": "^7.1" }, "require-dev": { - "phpstan/phpstan": "^0.7", + "phpstan/phpstan": "^0.8", "phpunit/phpunit": "^6.1" }, "type": "library", @@ -836,7 +1063,7 @@ "narrowspark", "php-cs-fixer" ], - "time": "2017-09-01T19:59:12+00:00" + "time": "2017-11-27T19:03:19+00:00" }, { "name": "nette/bootstrap", @@ -914,75 +1141,6 @@ ], "time": "2017-08-20T17:36:59+00:00" }, - { - "name": "nette/caching", - "version": "v2.5.6", - "source": { - "type": "git", - "url": "https://github.com/nette/caching.git", - "reference": "1231735b5135ca02bd381b70482c052d2a90bdc9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nette/caching/zipball/1231735b5135ca02bd381b70482c052d2a90bdc9", - "reference": "1231735b5135ca02bd381b70482c052d2a90bdc9", - "shasum": "" - }, - "require": { - "nette/finder": "^2.2 || ~3.0.0", - "nette/utils": "^2.4 || ~3.0.0", - "php": ">=5.6.0" - }, - "conflict": { - "nette/nette": "<2.2" - }, - "require-dev": { - "latte/latte": "^2.4", - "nette/di": "^2.4 || ~3.0.0", - "nette/tester": "^2.0", - "tracy/tracy": "^2.4" - }, - "suggest": { - "ext-pdo_sqlite": "to use SQLiteStorage or SQLiteJournal" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.5-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause", - "GPL-2.0", - "GPL-3.0" - ], - "authors": [ - { - "name": "David Grudl", - "homepage": "https://davidgrudl.com" - }, - { - "name": "Nette Community", - "homepage": "https://nette.org/contributors" - } - ], - "description": "⏱ Nette Caching: library with easy-to-use API and many cache backends.", - "homepage": "https://nette.org", - "keywords": [ - "cache", - "journal", - "memcached", - "nette", - "sqlite" - ], - "time": "2017-08-30T12:12:25+00:00" - }, { "name": "nette/di", "version": "v2.4.10", @@ -1370,16 +1528,16 @@ }, { "name": "nikic/php-parser", - "version": "v3.1.1", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a1e8e1a30e1352f118feff1a8481066ddc2f234a" + "reference": "579f4ce846734a1cf55d6a531d00ca07a43e3cda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a1e8e1a30e1352f118feff1a8481066ddc2f234a", - "reference": "a1e8e1a30e1352f118feff1a8481066ddc2f234a", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/579f4ce846734a1cf55d6a531d00ca07a43e3cda", + "reference": "579f4ce846734a1cf55d6a531d00ca07a43e3cda", "shasum": "" }, "require": { @@ -1417,7 +1575,56 @@ "parser", "php" ], - "time": "2017-09-02T17:10:46+00:00" + "time": "2017-12-26T14:43:21+00:00" + }, + { + "name": "ocramius/package-versions", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/Ocramius/PackageVersions.git", + "reference": "ad8a245decad4897cc6b432743913dad0d69753c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/ad8a245decad4897cc6b432743913dad0d69753c", + "reference": "ad8a245decad4897cc6b432743913dad0d69753c", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0", + "php": "~7.0" + }, + "require-dev": { + "composer/composer": "^1.3", + "ext-zip": "*", + "humbug/humbug": "dev-master", + "phpunit/phpunit": "^6.4" + }, + "type": "composer-plugin", + "extra": { + "class": "PackageVersions\\Installer", + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "PackageVersions\\": "src/PackageVersions" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", + "time": "2017-11-24T11:07:03+00:00" }, { "name": "paragonie/random_compat", @@ -1673,29 +1880,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.1.1", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2" + "reference": "66465776cfc249844bde6d117abff1d22e06c2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2d3d238c433cf69caeb4842e97a3223a116f94b2", - "reference": "2d3d238c433cf69caeb4842e97a3223a116f94b2", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/66465776cfc249844bde6d117abff1d22e06c2da", + "reference": "66465776cfc249844bde6d117abff1d22e06c2da", "shasum": "" }, "require": { "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0@dev", + "phpdocumentor/reflection-common": "^1.0.0", "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -1714,7 +1927,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-08-30T18:51:59+00:00" + "time": "2017-11-27T17:38:31+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -1765,16 +1978,16 @@ }, { "name": "phpspec/prophecy", - "version": "v1.7.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6" + "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", - "reference": "c9b8c6088acd19d769d4cc0ffa60a9fe34344bd6", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", + "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", "shasum": "" }, "require": { @@ -1786,7 +1999,7 @@ }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7" }, "type": "library", "extra": { @@ -1824,40 +2037,83 @@ "spy", "stub" ], - "time": "2017-09-04T11:05:03+00:00" + "time": "2017-11-24T13:59:53+00:00" + }, + { + "name": "phpstan/phpdoc-parser", + "version": "0.1", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "08d714b2f0bc0a2bf9407255d5bb634669b7065c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/08d714b2f0bc0a2bf9407255d5bb634669b7065c", + "reference": "08d714b2f0bc0a2bf9407255d5bb634669b7065c", + "shasum": "" + }, + "require": { + "php": "~7.0" + }, + "require-dev": { + "consistence/coding-standard": "^2.0.0", + "jakub-onderka/php-parallel-lint": "^0.9.2", + "phing/phing": "^2.16.0", + "phpstan/phpstan": "^0.9", + "phpunit/phpunit": "^6.3", + "slevomat/coding-standard": "^3.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPDoc parser with support for nullable, intersection and generic types", + "time": "2017-11-22T10:46:07+00:00" }, { "name": "phpstan/phpstan", - "version": "0.7", + "version": "0.9.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "8da03c084b2c8e4a92d48f6926f6191c2c7783ad" + "reference": "ef60e5cc0a32ddb2637523dafef966e0aac1e16f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/8da03c084b2c8e4a92d48f6926f6191c2c7783ad", - "reference": "8da03c084b2c8e4a92d48f6926f6191c2c7783ad", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ef60e5cc0a32ddb2637523dafef966e0aac1e16f", + "reference": "ef60e5cc0a32ddb2637523dafef966e0aac1e16f", "shasum": "" }, "require": { + "jean85/pretty-package-versions": "^1.0.3", "nette/bootstrap": "^2.4 || ^3.0", - "nette/caching": "^2.4 || ^3.0", - "nette/di": "^2.4 || ^3.0", - "nette/robot-loader": "^2.4.2 || ^3.0", - "nette/utils": "^2.4 || ^3.0", - "nikic/php-parser": "^2.1 || ^3.0.2", + "nette/di": "^2.4.7 || ^3.0", + "nette/robot-loader": "^3.0.1", + "nette/utils": "^2.4.5 || ^3.0", + "nikic/php-parser": "^3.1", "php": "~7.0", - "symfony/console": "~2.7 || ~3.0", - "symfony/finder": "~2.7 || ~3.0" + "phpstan/phpdoc-parser": "^0.1", + "symfony/console": "~3.2 || ~4.0", + "symfony/finder": "~3.2 || ~4.0" }, "require-dev": { - "consistence/coding-standard": "~0.13.0", + "consistence/coding-standard": "2.2.1", "jakub-onderka/php-parallel-lint": "^0.9.2", "phing/phing": "^2.16.0", - "phpunit/phpunit": "^6.0.7", - "satooshi/php-coveralls": "^1.0", - "slevomat/coding-standard": "^2.0" + "phpstan/phpstan-php-parser": "^0.9", + "phpstan/phpstan-phpunit": "^0.9", + "phpstan/phpstan-strict-rules": "^0.9", + "phpunit/phpunit": "^6.5.2", + "slevomat/coding-standard": "4.0.0" }, "bin": [ "bin/phpstan" @@ -1865,12 +2121,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "0.7-dev" + "dev-master": "0.9-dev" } }, "autoload": { "psr-4": { - "PHPStan\\": "src/" + "PHPStan\\": [ + "src/", + "build/PHPStan" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -1878,20 +2137,20 @@ "MIT" ], "description": "PHPStan - PHP Static Analysis Tool", - "time": "2017-05-14T20:37:59+00:00" + "time": "2017-12-02T19:34:06+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.2.2", + "version": "5.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b" + "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/8ed1902a57849e117b5651fc1a5c48110946c06b", - "reference": "8ed1902a57849e117b5651fc1a5c48110946c06b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1", + "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1", "shasum": "" }, "require": { @@ -1900,14 +2159,13 @@ "php": "^7.0", "phpunit/php-file-iterator": "^1.4.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^1.4.11 || ^2.0", + "phpunit/php-token-stream": "^2.0.1", "sebastian/code-unit-reverse-lookup": "^1.0.1", "sebastian/environment": "^3.0", "sebastian/version": "^2.0.1", "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": "^2.5", "phpunit/phpunit": "^6.0" }, "suggest": { @@ -1916,7 +2174,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.2.x-dev" + "dev-master": "5.3.x-dev" } }, "autoload": { @@ -1931,7 +2189,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -1942,20 +2200,20 @@ "testing", "xunit" ], - "time": "2017-08-03T12:40:43+00:00" + "time": "2017-12-06T09:29:45+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", "shasum": "" }, "require": { @@ -1989,7 +2247,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2017-11-27T13:52:08+00:00" }, { "name": "phpunit/php-text-template", @@ -2083,16 +2341,16 @@ }, { "name": "phpunit/php-token-stream", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0" + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/9a02332089ac48e704c70f6cefed30c224e3c0b0", - "reference": "9a02332089ac48e704c70f6cefed30c224e3c0b0", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { @@ -2128,20 +2386,20 @@ "keywords": [ "tokenizer" ], - "time": "2017-08-20T05:47:52+00:00" + "time": "2017-11-27T05:48:46+00:00" }, { "name": "phpunit/phpunit", - "version": "6.4.3", + "version": "6.5.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13" + "reference": "83d27937a310f2984fd575686138597147bdc7df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/06b28548fd2b4a20c3cd6e247dc86331a7d4db13", - "reference": "06b28548fd2b4a20c3cd6e247dc86331a7d4db13", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/83d27937a310f2984fd575686138597147bdc7df", + "reference": "83d27937a310f2984fd575686138597147bdc7df", "shasum": "" }, "require": { @@ -2155,12 +2413,12 @@ "phar-io/version": "^1.0", "php": "^7.0", "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^5.2.2", - "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-code-coverage": "^5.3", + "phpunit/php-file-iterator": "^1.4.3", "phpunit/php-text-template": "^1.2.1", "phpunit/php-timer": "^1.0.9", - "phpunit/phpunit-mock-objects": "^4.0.3", - "sebastian/comparator": "^2.0.2", + "phpunit/phpunit-mock-objects": "^5.0.5", + "sebastian/comparator": "^2.1", "sebastian/diff": "^2.0", "sebastian/environment": "^3.1", "sebastian/exporter": "^3.1", @@ -2186,7 +2444,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "6.4.x-dev" + "dev-master": "6.5.x-dev" } }, "autoload": { @@ -2212,33 +2470,33 @@ "testing", "xunit" ], - "time": "2017-10-16T13:18:59+00:00" + "time": "2017-12-17T06:31:19+00:00" }, { "name": "phpunit/phpunit-mock-objects", - "version": "4.0.4", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0" + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/2f789b59ab89669015ad984afa350c4ec577ade0", - "reference": "2f789b59ab89669015ad984afa350c4ec577ade0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.5", "php": "^7.0", "phpunit/php-text-template": "^1.2.1", - "sebastian/exporter": "^3.0" + "sebastian/exporter": "^3.1" }, "conflict": { "phpunit/phpunit": "<6.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^6.5" }, "suggest": { "ext-soap": "*" @@ -2246,7 +2504,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "5.0.x-dev" } }, "autoload": { @@ -2261,7 +2519,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2271,54 +2529,7 @@ "mock", "xunit" ], - "time": "2017-08-03T14:08:16+00:00" - }, - { - "name": "psr/log", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.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" - ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2018-01-06T05:45:45+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -2367,30 +2578,30 @@ }, { "name": "sebastian/comparator", - "version": "2.0.2", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a" + "reference": "11c07feade1d65453e06df3b3b90171d6d982087" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", - "reference": "ae068fede81d06e7bb9bb46a367210a3d3e1fe6a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/11c07feade1d65453e06df3b3b90171d6d982087", + "reference": "11c07feade1d65453e06df3b3b90171d6d982087", "shasum": "" }, "require": { "php": "^7.0", "sebastian/diff": "^2.0", - "sebastian/exporter": "^3.0" + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { @@ -2421,13 +2632,13 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-08-03T07:14:59+00:00" + "time": "2018-01-12T06:34:42+00:00" }, { "name": "sebastian/diff", @@ -2881,44 +3092,44 @@ }, { "name": "symfony/console", - "version": "v3.3.10", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "116bc56e45a8e5572e51eb43ab58c769a352366c" + "reference": "fe0e69d7162cba0885791cf7eea5f0d7bc0f897e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/116bc56e45a8e5572e51eb43ab58c769a352366c", - "reference": "116bc56e45a8e5572e51eb43ab58c769a352366c", + "url": "https://api.github.com/repos/symfony/console/zipball/fe0e69d7162cba0885791cf7eea5f0d7bc0f897e", + "reference": "fe0e69d7162cba0885791cf7eea5f0d7bc0f897e", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", - "symfony/debug": "~2.8|~3.0", + "php": "^7.1.3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/dependency-injection": "<3.3" + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.3", - "symfony/dependency-injection": "~3.3", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/filesystem": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" }, "suggest": { "psr/log": "For using the console logger", "symfony/event-dispatcher": "", - "symfony/filesystem": "", + "symfony/lock": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2945,90 +3156,34 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-10-02T06:42:24+00:00" - }, - { - "name": "symfony/debug", - "version": "v3.3.10", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd", - "reference": "eb95d9ce8f18dcc1b3dfff00cb624c402be78ffd", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" - }, - "require-dev": { - "symfony/http-kernel": "~2.8|~3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2017-10-02T06:42:24+00:00" + "time": "2018-01-03T07:38:00+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.3.10", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423" + "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d7ba037e4b8221956ab1e221c73c9e27e05dd423", - "reference": "d7ba037e4b8221956ab1e221c73c9e27e05dd423", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74d33aac36208c4d6757807d9f598f0133a3a4eb", + "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "conflict": { - "symfony/dependency-injection": "<3.3" + "symfony/dependency-injection": "<3.4" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~3.3", - "symfony/expression-language": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0" + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0" }, "suggest": { "symfony/dependency-injection": "", @@ -3037,7 +3192,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3064,29 +3219,29 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-10-02T06:42:24+00:00" + "time": "2018-01-03T07:38:00+00:00" }, { "name": "symfony/filesystem", - "version": "v3.3.10", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1" + "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/90bc45abf02ae6b7deb43895c1052cb0038506f1", - "reference": "90bc45abf02ae6b7deb43895c1052cb0038506f1", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/760e47a4ee64b4c48f4b30017011e09d4c0f05ed", + "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3113,29 +3268,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2017-10-03T13:33:10+00:00" + "time": "2018-01-03T07:38:00+00:00" }, { "name": "symfony/finder", - "version": "v3.3.10", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "773e19a491d97926f236942484cb541560ce862d" + "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/773e19a491d97926f236942484cb541560ce862d", - "reference": "773e19a491d97926f236942484cb541560ce862d", + "url": "https://api.github.com/repos/symfony/finder/zipball/8b08180f2b7ccb41062366b9ad91fbc4f1af8601", + "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3162,29 +3317,29 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-10-02T06:42:24+00:00" + "time": "2018-01-03T07:38:00+00:00" }, { "name": "symfony/options-resolver", - "version": "v3.3.10", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "ee4e22978fe885b54ee5da8c7964f0a5301abfb6" + "reference": "30d9240b30696a69e893534c9fc4a5c72ab6689b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ee4e22978fe885b54ee5da8c7964f0a5301abfb6", - "reference": "ee4e22978fe885b54ee5da8c7964f0a5301abfb6", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/30d9240b30696a69e893534c9fc4a5c72ab6689b", + "reference": "30d9240b30696a69e893534c9fc4a5c72ab6689b", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3216,7 +3371,7 @@ "configuration", "options" ], - "time": "2017-07-29T21:54:42+00:00" + "time": "2018-01-03T07:38:00+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -3393,25 +3548,25 @@ }, { "name": "symfony/process", - "version": "v3.3.10", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "fdf89e57a723a29baf536e288d6e232c059697b1" + "reference": "2145b3e8137e463b1051b79440a59b38220944f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/fdf89e57a723a29baf536e288d6e232c059697b1", - "reference": "fdf89e57a723a29baf536e288d6e232c059697b1", + "url": "https://api.github.com/repos/symfony/process/zipball/2145b3e8137e463b1051b79440a59b38220944f0", + "reference": "2145b3e8137e463b1051b79440a59b38220944f0", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3438,29 +3593,29 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-10-02T06:42:24+00:00" + "time": "2018-01-03T07:38:00+00:00" }, { "name": "symfony/stopwatch", - "version": "v3.3.10", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "170edf8b3247d7b6779eb6fa7428f342702ca184" + "reference": "d52321f0e2b596bd03b5d1dd6eebe71caa925704" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/170edf8b3247d7b6779eb6fa7428f342702ca184", - "reference": "170edf8b3247d7b6779eb6fa7428f342702ca184", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/d52321f0e2b596bd03b5d1dd6eebe71caa925704", + "reference": "d52321f0e2b596bd03b5d1dd6eebe71caa925704", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -3487,7 +3642,7 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2017-10-02T06:42:24+00:00" + "time": "2018-01-03T07:38:00+00:00" }, { "name": "theseer/tokenizer", diff --git a/phpstan.neon b/phpstan.neon index 43d05d7..096cae4 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,3 +1,2 @@ parameters: ignoreErrors: - - '#Viserio\\HttpFactory\\ResponseFactory#' diff --git a/src/TestingHelper/Middleware/CallableMiddleware.php b/src/TestingHelper/Middleware/CallableMiddleware.php index e4f5fd3..11492bc 100644 --- a/src/TestingHelper/Middleware/CallableMiddleware.php +++ b/src/TestingHelper/Middleware/CallableMiddleware.php @@ -2,13 +2,14 @@ declare(strict_types=1); namespace Narrowspark\TestingHelper\Middleware; -use GuzzleHttp\Psr7\Response; -use Interop\Http\Server\MiddlewareInterface; -use Interop\Http\Server\RequestHandlerInterface; +use Interop\Http\Factory\ResponseFactoryInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\MiddlewareInterface; +use Psr\Http\Server\RequestHandlerInterface; +use RuntimeException; use Throwable; -use Viserio\HttpFactory\ResponseFactory; +use UnexpectedValueException; class CallableMiddleware implements MiddlewareInterface { @@ -18,19 +19,43 @@ class CallableMiddleware implements MiddlewareInterface private $handler; /** - * Constructor. + * A response factory class name. + * + * @var null|\Interop\Http\Factory\ResponseFactoryInterface + */ + private $responseFactoryClassName; + + /** + * Create a new CallableMiddleware instance. * * @param callable $handler + * @param string $responseFactoryClassName + * + * @throws \RuntimeException */ - public function __construct(callable $handler) + public function __construct(callable $handler, string $responseFactoryClassName = null) { - $this->handler = $handler; + $this->handler = $handler; + + if ($responseFactoryClassName !== null) { + $interfaces = \class_implements($responseFactoryClassName); + + if (! \array_key_exists(ResponseFactoryInterface::class, $interfaces)) { + throw new RuntimeException(\sprintf( + 'Class name don\'t implements [%s] interface; [%s] given.', + ResponseFactoryInterface::class, + $responseFactoryClassName + )); + } + + $this->responseFactoryClassName = new $responseFactoryClassName(); + } } /** * {@inheritdoc} */ - public function process(ServerRequestInterface $request, RequestHandlerInterface $handler) + public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { return $this->execute($this->handler, [$request, $handler]); } @@ -41,7 +66,7 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface * @param callable $callable * @param array $arguments * - * @throws Throwable + * @throws \Throwable * * @return \Psr\Http\Message\ResponseInterface */ @@ -51,21 +76,31 @@ private function execute($callable, array $arguments = []): ResponseInterface $level = ob_get_level(); try { - $return = call_user_func_array($callable, $arguments); + $return = \call_user_func_array($callable, $arguments); if ($return instanceof ResponseInterface) { $response = $return; $return = ''; - } else { - if (class_exists(ResponseFactory::class)) { - $response = (new ResponseFactory())->createResponse(); - } else { - $response = new Response(); + } elseif ( + $return === null || + \is_scalar($return) || + (\is_object($return) && \method_exists($return, '__toString')) + ) { + $instance = $this->responseFactoryClassName; + + if ($instance === null) { + throw new RuntimeException('No ResponseFactory class found.'); } + + $response = $instance->createResponse(); + } else { + throw new UnexpectedValueException( + 'The value returned must be scalar or an object with __toString method' + ); } - while (ob_get_level() >= $level) { - $return = ob_get_clean() . $return; + while (\ob_get_level() >= $level) { + $return = \ob_get_clean() . $return; } $body = $response->getBody(); @@ -76,8 +111,8 @@ private function execute($callable, array $arguments = []): ResponseInterface return $response; } catch (Throwable $exception) { - while (ob_get_level() >= $level) { - ob_end_clean(); + while (\ob_get_level() >= $level) { + \ob_end_clean(); } throw $exception; diff --git a/src/TestingHelper/Middleware/Dispatcher.php b/src/TestingHelper/Middleware/Dispatcher.php index 8d42a5b..5834034 100644 --- a/src/TestingHelper/Middleware/Dispatcher.php +++ b/src/TestingHelper/Middleware/Dispatcher.php @@ -2,11 +2,11 @@ declare(strict_types=1); namespace Narrowspark\TestingHelper\Middleware; -use Interop\Http\Server\MiddlewareInterface; -use Interop\Http\Server\RequestHandlerInterface; use LogicException; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\MiddlewareInterface; +use Psr\Http\Server\RequestHandlerInterface; class Dispatcher implements MiddlewareInterface { @@ -16,7 +16,7 @@ class Dispatcher implements MiddlewareInterface private $stack; /** - * @var null|\Interop\Http\Server\RequestHandlerInterface + * @var null|\Psr\Http\Server\RequestHandlerInterface */ private $delegate; @@ -61,7 +61,7 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface * * @throws \LogicException * - * @return \Interop\Http\Server\RequestHandlerInterface + * @return \Psr\Http\Server\RequestHandlerInterface */ private function resolve(int $index): RequestHandlerInterface { @@ -78,7 +78,7 @@ private function resolve(int $index): RequestHandlerInterface } return new RequestHandlerMiddleware(function (): void { - throw new LogicException('unresolved request: middleware stack exhausted with no result'); + throw new LogicException('Unresolved request: middleware stack exhausted with no result.'); }); } } diff --git a/src/TestingHelper/Middleware/RequestHandlerMiddleware.php b/src/TestingHelper/Middleware/RequestHandlerMiddleware.php index c07699a..f479b6c 100644 --- a/src/TestingHelper/Middleware/RequestHandlerMiddleware.php +++ b/src/TestingHelper/Middleware/RequestHandlerMiddleware.php @@ -2,9 +2,9 @@ declare(strict_types=1); namespace Narrowspark\TestingHelper\Middleware; -use Interop\Http\Server\RequestHandlerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; +use Psr\Http\Server\RequestHandlerInterface; class RequestHandlerMiddleware implements RequestHandlerInterface { diff --git a/src/TestingHelper/Phpunit/MockeryTestCase.php b/src/TestingHelper/Phpunit/MockeryTestCase.php index bd3832b..bdcc96a 100644 --- a/src/TestingHelper/Phpunit/MockeryTestCase.php +++ b/src/TestingHelper/Phpunit/MockeryTestCase.php @@ -40,7 +40,7 @@ protected function allowMockingNonExistentMethods($allow = false): void /** * Get a mocked object. * - * @param array $argv + * @param array $argv * * @return \Mockery\MockInterface */ diff --git a/src/TestingHelper/Traits/TimingTrait.php b/src/TestingHelper/Traits/TimingTrait.php index a5acb61..2502033 100644 --- a/src/TestingHelper/Traits/TimingTrait.php +++ b/src/TestingHelper/Traits/TimingTrait.php @@ -17,7 +17,7 @@ public static function assertTiming(int $maxDurationInMs, callable $callable, in { $duration = 0; - for ($a = 0; $a < $iterations; ++$a) { + for ($a = 0; $a < $iterations; $a++) { $start = microtime(true); $callable(); diff --git a/tests/Middleware/CallableMiddlewareTest.php b/tests/Middleware/CallableMiddlewareTest.php new file mode 100644 index 0000000..ec5b59f --- /dev/null +++ b/tests/Middleware/CallableMiddlewareTest.php @@ -0,0 +1,21 @@ +serverRequest = (new ServerRequestFactory())->createServerRequest('GET', '/'); + } + public function testDispatcher(): void { $dispatcher = new Dispatcher([ - new CallableMiddleware(function ($request, $handler) { + new CallableMiddleware(function ($request, RequestHandlerInterface $handler) { $response = $handler->handle($request); $response->getBody()->write('3'); return $response; }), - new CallableMiddleware(function ($request, $handler) { + new CallableMiddleware(function ($request, RequestHandlerInterface $handler) { $response = $handler->handle($request); $response->getBody()->write('2'); return $response; }), - new CallableMiddleware(function ($request, $handler): void { - echo '1'; - }), + new CallableMiddleware( + function (): void { + echo '1'; + }, + ResponseFactory::class + ), ]); - $response = $dispatcher->dispatch(new ServerRequest('GET', '/')); + $response = $dispatcher->dispatch($this->serverRequest); self::assertInstanceOf(ResponseInterface::class, $response); self::assertEquals('123', (string) $response->getBody()); @@ -39,58 +59,81 @@ public function testDispatcher(): void public function testNestedDispatcher(): void { $dispatcher1 = new Dispatcher([ - new CallableMiddleware(function ($request, $handler) { - echo 3; - - return $handler->handle($request); - }), - new CallableMiddleware(function ($request, $handler) { - echo 2; - - return $handler->handle($request); - }), - new CallableMiddleware(function ($request, $handler): void { - echo 1; - }), + new CallableMiddleware( + function ($request, RequestHandlerInterface $handler) { + echo 3; + + return $handler->handle($request); + }, + ResponseFactory::class + ), + new CallableMiddleware( + function ($request, RequestHandlerInterface $handler) { + echo 2; + + return $handler->handle($request); + }, + ResponseFactory::class + ), + new CallableMiddleware( + function (): void { + echo 1; + }, + ResponseFactory::class + ), ]); - $dispatcher2 = new Dispatcher([ - new CallableMiddleware(function ($request, $handler) { - echo 5; - - return $handler->handle($request); - }), - new CallableMiddleware(function ($request, $handler) { - echo 4; - return $handler->handle($request); - }), + $dispatcher2 = new Dispatcher([ + new CallableMiddleware( + function ($request, RequestHandlerInterface $handler) { + echo 5; + + return $handler->handle($request); + }, + ResponseFactory::class + ), + new CallableMiddleware( + function ($request, RequestHandlerInterface $handler) { + echo 4; + + return $handler->handle($request); + }, + ResponseFactory::class + ), $dispatcher1, ]); - $dispatcher3 = new Dispatcher([ - new CallableMiddleware(function ($request, $handler) { - echo 7; - - return $handler->handle($request); - }), - new CallableMiddleware(function ($request, $handler) { - echo 6; - return $handler->handle($request); - }), + $dispatcher3 = new Dispatcher([ + new CallableMiddleware( + function ($request, RequestHandlerInterface $handler) { + echo 7; + + return $handler->handle($request); + }, + ResponseFactory::class + ), + new CallableMiddleware( + function ($request, RequestHandlerInterface $handler) { + echo 6; + + return $handler->handle($request); + }, + ResponseFactory::class + ), $dispatcher2, ]); - $response = $dispatcher3->dispatch(new ServerRequest('GET', '/')); + $response = $dispatcher3->dispatch($this->serverRequest); self::assertInstanceOf(ResponseInterface::class, $response); self::assertEquals('1234567', (string) $response->getBody()); - $response = $dispatcher2->dispatch(new ServerRequest('GET', '/')); + $response = $dispatcher2->dispatch($this->serverRequest); self::assertInstanceOf(ResponseInterface::class, $response); self::assertEquals('12345', (string) $response->getBody()); - $response = $dispatcher1->dispatch(new ServerRequest('GET', '/')); + $response = $dispatcher1->dispatch($this->serverRequest); self::assertInstanceOf(ResponseInterface::class, $response); self::assertEquals('123', (string) $response->getBody());